Índice:
- Etapa 1: lista de materiais
- Etapa 2: Sensor de Temperatura DS18B20
- Etapa 3: Conectando os sensores ao NodeMCU
- Etapa 4: instalando as bibliotecas apropriadas
- Etapa 5: Testando os Sensores
- Etapa 6: usando o Blynk
- Etapa 7: Conclusão
Vídeo: IoT simplificado: monitoramento de vários sensores: 7 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
Algumas semanas atrás, publiquei aqui um tutorial sobre monitoramento de temperatura usando um DS18B20, um sensor digital que se comunica por um barramento de 1 fio, enviando dados pela internet com NodeMCU e Blynk:
IoT simplificado: monitoramento de temperatura em qualquer lugar
Mas o que faltou na exploração, foi uma das grandes vantagens desse tipo de sensor que é a possibilidade de coletar vários dados, de vários sensores conectados ao mesmo barramento de 1 fio. E agora é hora de também explorá-lo.
Vamos expandir o que foi desenvolvido no último tutorial, monitorando agora dois sensores DS18B20, configurados um em Celcius e outro em Fahrenheit. Os dados serão enviados para um aplicativo Blynk, conforme mostrado no diagrama de blocos acima.
Etapa 1: lista de materiais
- NodeMCU ESP 12-E (*)
- 2 x sensor de temperatura DS18B20
- Resistor 4.7K Ohms
- BreadBoard
- Fiação
(*) Qualquer tipo de dispositivo ESP pode ser usado aqui. Os mais comuns são o NodeMCU V2 ou V3. Ambos sempre funcionarão bem.
Etapa 2: Sensor de Temperatura DS18B20
Usaremos neste tutorial uma versão à prova d'água do sensor DS18B20. É muito útil para temperaturas remotas em condições úmidas, por exemplo, em um solo úmido. O sensor é isolado e pode fazer medições até 125oC (Adafrut não recomenda seu uso acima de 100oC devido ao seu revestimento de PVC do cabo).
O DS18B20 é um sensor digital, o que o torna bom para uso mesmo em longas distâncias! Esses sensores de temperatura digitais de 1 fio são bastante precisos (± 0,5 ° C em grande parte da faixa) e podem fornecer até 12 bits de precisão do conversor digital para analógico integrado. Eles funcionam muito bem com o NodeMCU usando um único pino digital, e você pode até conectar vários pinos ao mesmo pino, cada um com um ID de 64 bits exclusivo gravado na fábrica para diferenciá-los.
O sensor funciona de 3,0 a 5,0 V, o que significa que pode ser alimentado diretamente de um dos pinos NodeMCU de 3,3 V.
O sensor tem 3 fios:
- Preto: GND
- Vermelho: VCC
- Amarelo: Dados de 1 fio
Aqui, você pode encontrar os dados completos: Folha de Dados DS18B20
Etapa 3: Conectando os sensores ao NodeMCU
- Conecte os 3 fios de cada sensor no mini breadboard como mostrado na foto acima. Usei conectores especiais para fixar melhor o cabo do sensor nele.
-
Observe que os dois sensores estão em paralelo. Se você tiver mais de 2 sensores, deve fazer o mesmo.
- Vermelho ==> 3,3 V
- Preto ==> GND
- Amarelo ==> D4
- Use um resistor de 4,7 K ohms entre VCC (3,3 V) e Dados (D4)
Etapa 4: instalando as bibliotecas apropriadas
Para usar o DS18B20 adequadamente, duas bibliotecas serão necessárias:
- OneWire
- DallasTemperature
Instale as duas bibliotecas em seu depósito de bibliotecas do IDE do Arduino.
Observe que a biblioteca OneWire DEVE ser a biblioteca especial, modificada para ser usada com ESP8266, caso contrário, você receberá um erro durante a compilação. Você encontrará a última versão no link acima.
Etapa 5: Testando os Sensores
Para testar os sensores, baixe o arquivo abaixo do meu GitHub:
NodeMCU_DS18B20_Dual_Se nsor_test.ino
/**************************************************************
* Teste Sendor de Temperatura Múltipla * * 2 x Sensor OneWire: DS18B20 * Conectado ao NodeMCU D4 (ou Arduino Pin 2) * * Desenvolvido por Marcelo Rovai - 25 de agosto de 2017 **************** **********************************************/ #incluir # incluir #define ONE_WIRE_BUS 2 // DS18B20 no pino NodeMCU D4 OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); void setup () {Serial.begin (115200); DS18B20.begin (); Serial.println ("Testando dados do sensor duplo"); } void loop () {float temp_0; float temp_1; DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Sensor 0 irá capturar Temp em Celcius temp_1 = DS18B20.getTempFByIndex (1); // Sensor 0 irá capturar Temp em Fahrenheit Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); atraso (1000); }
Olhando para o código acima, devemos notar que as linhas mais importantes são:
temp_0 = DS18B20.getTempCByIndex (0); // Sensor 0 irá capturar a temperatura em Celsius
temp_1 = DS18B20.getTempFByIndex (1); // Sensor 0 irá capturar Temp em Fahrenheit
O primeiro retornará um valor do Sensor [0] (veja o "índice (0)") em Celsius (veja a parte do código: "getTempC". A segunda linha está relacionada ao Sensor [1] e retornará os dados em Fahrenheit. Você poderia ter aqui "n" sensores, já que tem um "índice" diferente para cada um deles.
Carregue agora o código em seu NodeMCU e monitore a temperatura usando o Serial Monitor.
A foto acima mostra o resultado esperado. Segure cada um dos sensores em sua mão, você verá a temperatura subindo.
Etapa 6: usando o Blynk
Depois de começar a capturar os dados de temperatura, é hora de ver de qualquer lugar. Faremos isso usando Blynk. Assim, todos os dados capturados serão exibidos em tempo real no seu dispositivo móvel e também construiremos um depósito histórico para isso.
Siga as etapas abaixo:
- Crie um novo projeto.
- Dê um nome (no meu caso, "Monitor de temperatura duplo")
- Selecione Novo Dispositivo - ESP8266 (WiFi) como "Meus Dispositivos"
- Copie o TOKEN DE AUTOR a ser utilizado no código (você pode enviar para seu e-mail).
-
Inclui dois Widgets de "Medidor", definindo:
- Pino virtual a ser usado com cada sensor: V10 (Sensor [0]) e V11 (Sensor [1])
- A faixa de temperatura: -5 a 100 oC para Sensor [0]
- A faixa de temperatura: 25 a 212 oC para Sensor [1]
- A frequência de leitura de dados: 1 segundo
- Inclui um widget "History Graph", definindo V10 e V11 como pinos virtuais
- Pressione "Play" (O triângulo no canto superior direito)
Claro, o Blynk App irá dizer que o NodeMCU está off-line. É hora de fazer o upload do código completo em seu IDE Arduino. Você pode obtê-lo aqui:
NodeMCU_Dual_Sensor_Blynk_Ext.ino
Altere os "dados fictícios" com suas próprias credenciais.
/ * Blynk credentials * /
char auth = "SEU CÓDIGO BLYNK AUTH AQUI"; / * Credenciais de WiFi * / char ssid = "SEU SSID"; char pass = "SUA SENHA";
E é isso!
Abaixo do código completo. É basicamente o código anterior, onde entramos com parâmetros de Blynk e funções específicas. Observe as 2 últimas linhas do código. Esses são os mais importantes aqui. Se você tiver mais sensores coletando dados, você também deve ter novas linhas equivalentes a essas (com novos pinos virtuais pertinentes definidos).
/**************************************************************
* Monitor de temperatura múltipla IoT com Blynk * A biblioteca Blynk está licenciada sob a licença MIT * Este código de exemplo é de domínio público. * * Multiple OneWire Sensor: DS18B20 * Desenvolvido por Marcelo Rovai - 25 de agosto de 2017 ********************************** ***************************** / / * ESP & Blynk * / #include #include #define BLYNK_PRINT Serial // Comente para desabilitar impressões e economizar espaço / * credenciais Blynk * / char auth = "SEU CÓDIGO BLYNK AUTH AQUI"; / * Credenciais de WiFi * / char ssid = "SEU SSID"; char pass = "SUA SENHA"; / * TIMER * / #include SimpleTimer timer; / * Sensor de temperatura DS18B20 * / #include #include #define ONE_WIRE_BUS 2 // DS18B20 no arduino pino 2 corresponde a D4 na placa física OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); int temp_0; int temp_1; void setup () {Serial.begin (115200); Blynk.begin (auth, ssid, pass); DS18B20.begin (); timer.setInterval (1000L, getSendData); Serial.println (""); Serial.println ("Testando dados do sensor duplo"); } void loop () {timer.run (); // Inicia SimpleTimer Blynk.run (); } / ************************************************ *** * Enviar dados do Sensor para Blynk ****************************************** ********* / void getSendData () {DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Sensor 0 irá capturar Temp em Celcius temp_1 = DS18B20.getTempFByIndex (1); // Sensor 0 irá capturar Temp em Fahrenheit Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); Blynk.virtualWrite (10, temp_0); // pino virtual V10 Blynk.virtualWrite (11, temp_1); // pino virtual V11}
Assim que o código for carregado e executado, verifique o aplicativo Blynk. Ele também deve estar funcionando como mostrado na tela de impressão acima do meu iPhone.
Etapa 7: Conclusão
Como sempre, espero que este projeto possa ajudar outras pessoas a encontrar seu caminho no emocionante mundo da eletrônica, robótica e IoT!
Visite meu GitHub para arquivos atualizados: NodeMCU Dual Temp Monitor
Para mais projetos, visite meu blog: MJRoBot.org
Saludos do sul do mundo!
Vejo você no meu próximo instrutível!
Obrigado, Marcelo
Recomendado:
Arduino controlando vários sensores P.I.R no mesmo limite: 3 etapas
Arduino controlando vários sensores PIR no mesmo limite: Hoje vou dizer a você como conectar vários sensores PIR com um único Arduino Bord > aqui também usei módulo de relé de 4 canais para alguma funcionalidade extra. Módulo de relé de 4 canaisARDUINO + 4 + sensor PIR (OU você pode usar quantos pinos seu arduin
Mecanismo de olho duplo animado 3D simplificado impresso: 4 etapas (com imagens)
Mecanismo de olho duplo animado 3D simplificado impresso: Tendo construído um mecanismo de olho único simples no passado, eu queria melhorar o design, além de torná-lo mais acessível para a comunidade de criadores. A montagem atualizada usa peças que podem ser facilmente compradas online, e quase todos os componentes ca
Vários sensores de temperatura IR - MLX90614: 4 etapas
Vários sensores de temperatura IR - MLX90614: este é um guia rápido sobre como configurar vários sensores de temperatura sem contato MLX90614B por meio do barramento I2C com um Arduino uno e exibir as leituras no monitor serial do Arduino IDE. Estou usando as placas pré-construídas, mas se você comprar o sensor b
CONECTANDO VÁRIOS SENSORES A UMA PORTA SERIAL ARDUINO UNO: 4 etapas
CONECTANDO VÁRIOS SENSORES A UMA PORTA SERIAL ARDUINO UNO: Neste tutorial, iremos expandir uma única porta serial Arduino UNO UART (Rx / Tx) para que vários sensores Atlas possam ser conectados. A expansão é feita usando placa de expansão de porta serial 8: 1. A porta do Arduino é ligada ao expansor após o
2.4 Estação meteorológica TFT Arduino com vários sensores: 7 etapas
2.4 Estação meteorológica TFT Arduino com vários sensores: uma estação meteorológica portátil Arduino com um LCD TFT e alguns sensores