Índice:

IoT simplificado: monitoramento de vários sensores: 7 etapas
IoT simplificado: monitoramento de vários sensores: 7 etapas

Vídeo: IoT simplificado: monitoramento de vários sensores: 7 etapas

Vídeo: IoT simplificado: monitoramento de vários sensores: 7 etapas
Vídeo: Webinar: Monitorando sensores IoT: Do ESP32 ao Grafana 2024, Julho
Anonim
IoT simplificado: monitoramento de vários sensores
IoT simplificado: monitoramento de vários sensores
IoT simplificado: monitoramento de vários sensores
IoT simplificado: monitoramento de vários sensores

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

Sensor de Temperatura DS18B20
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

Conectando os sensores ao NodeMCU
Conectando os sensores ao NodeMCU
  1. 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.
  2. 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
  3. 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:

  1. OneWire
  2. 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

Testando os Sensores
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

Usando Blynk
Usando Blynk
Usando Blynk
Usando 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:

  1. Crie um novo projeto.
  2. Dê um nome (no meu caso, "Monitor de temperatura duplo")
  3. Selecione Novo Dispositivo - ESP8266 (WiFi) como "Meus Dispositivos"
  4. Copie o TOKEN DE AUTOR a ser utilizado no código (você pode enviar para seu e-mail).
  5. 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
  6. Inclui um widget "History Graph", definindo V10 e V11 como pinos virtuais
  7. 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

Conclusão
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: