Alguns meses atrás, publiquei um tutorial sobre o monitoramento de temperatura usando o DS18B20, um sensor digital que se comunica através de um barramento de um único fio (bus do tipo “1-wire”), sendo os dados enviados pela à internet com a ajuda de um módulo NodeMCU e o aplicativo Blynk:
O IoT feito simples: Monitorando a temperatura desde qualquer lugar
Mas o que passamos por cima naquele tutorial, foi uma das grandes vantagens desse tipo de sensor que é a possibilidade de coletar dados múltiplos, provenientes de vários sensores conectados ao mesmo barramento de 1 fio (“1-wire”). 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 Celsius e outro em Fahrenheit (isto somente para explorar a biblioteca, poderiam ser os dois configurados para Celsius). Os dados serão enviados para uma aplicação Blynk, conforme mostra o diagrama de blocos acima.
(*) Qualquer tipo de dispositivo ESP pode ser usado aqui. Os mais comuns são o ESP-01 e o NodeMCU (V2 ou V3). Ambos sempre funcionarão bem. Brevemente publicarei um post explorando também o novíssimo ESP32.
Usaremos neste tutorial uma versão impermeabilizada do sensor DS18B20, a qual é muito útil para se medir remotamente temperaturas remota em condições adversas, por exemplo em um solo úmido. O sensor está isolado e segundo o fabricante, pode medir até 125oC (apesar que a Adafrut não recomenda seu uso em temperaturas superiores a 100oC, devido ao revestimento de PVC do cabo).
O DS18B20 é um sensor digital o que torna ideal so seu uso em longas distâncias! Estes sensores digitais de temperatura de apenas 1 fio, são bastante precisos (± 0,5 °C em grande parte da faixa) fornecendo até 12 bits de precisão a partir de seu conversor digital-analógico integrado.
Eles funcionam muito bem com a família ESP8266, pois utilizam apenas um único pino digital, podendo ser conectados múltiplos sensores neste mesmo pino, pois cada um dos sensores possui um único ID de 64 bits gravado de fábrica para diferenciá-los.
O sensor funciona de 3.0 a 5.0V, o que significa que ele pode ser alimentado diretamente de um dos pinos de 3.3V do NodeMCU.
O sensor possui 3 fios:
Os dados completos do sensor podem ser encontrados no link: DS18B20 Datasheet
Para se poder utilizar o DS18B20 com o IDE do Arduino e o ESP8266, será necessário a instalação de duas bibliotecas:
Instale ambas bibliotecas no diretório de bibliotecas do Arduino IDE.
Observe que a biblioteca OneWire DEVE OBRIGATORIAMENTE ser a especialmente modificada para ser utilizada com o ESP8266, caso contrário ocorrerá erro durante a compilação. Você encontrará a última versão no link acima.
Para testar os sensores, baixe de meu GitHub, o arquivo:
NodeMCU_DS18B20_Dual_Se nsor_test.ino
Olhando para o código, podemos notar que as linhas mais importantes são:
temp_0 = DS18B20.getTempCByIndex(0); // Sensor 0 will capture Temp in Celcius
temp_1 = DS18B20.getTempFByIndex(1); // Sensor 0 will capture Temp in Fahrenheit
A primeira linha retornará um valor para o Sensor[0]. que é o sensor mais próximo fisicamente ao pino D4 (veja o “índice (0)”). O valor retornará em Celsius (veja a parte do código: “getTempC”).
A segunda linha está relacionada com sensor seguinte (Sensor[1]) e retornará dados em Fahrenheit. Você poderia ter aqui “n” sensores, desde que defina um “índice” diferente para cada um deles.
Utilizei um sensor em Fahrenheit e outro em Celsius apenas para mostrar que é possível fazê-lo diretamente da biblioteca. Em casos reais, ambos os sensores coletaram dados de diferentes tipos, mas normalmente usando o mesmo tipo de medição.
Carregue agora o código em seu NodeMCU e monitore a temperatura utilizando o Serial Monitor.
A foto acima mostra o resultado esperado. Segure cada um dos sensores em sua mão, você deve ver a temperatura subir.
Depois de começar a capturar dados de temperatura, é hora de vê-los á partir de qualquer lugar. Vamos fazer isso utilizando-se do App Blynk. Assim, todos os dados capturados serão exibidos em tempo real em seu dispositivo móvel (também construiremos um depósito histórico para isso).
Siga as etapas abaixo:
A aplicação Blynk irá dizer-lhe que o NodeMCU está fora de linha. É hora de carregar o código completo no seu IDE Arduino. Você pode obtê-lo aqui:
NodeMCU_Dual_Sensor_Blynk_Ext.ino
Altere os dados “dummy”, entrando com suas próprias credenciais.
/* Blynk credentials */
char auth[] = "YOUR BLYNK AUTH CODE HERE";
/* WiFi credentials */
char ssid[] = "YOUR SSID";
char pass[] = "YOUR PASSWORD";
E pronto!
Basicamente é o código anterior, onde inserimos os parâmetros Blynk e funções específicas.
Observe as 2 últimas linhas do código, essas são as mais importantes aqui.
Blynk.virtualWrite(10, temp_0); //virtual pin V10
Blynk.virtualWrite(11, temp_1); //virtual pin V11
Se você tiver mais sensores coletando dados, você também deve ter novas linhas equivalentes a estas (com os novos pinos virtuais pertinentes definidos).
Uma vez que o código esteja carregado e em execução, verifique o aplicativo Blynk.
Você deverá ver algo parecido como o mostrado na tela de meu iPhone acima.
Como sempre, espero que este projecto possa ajudar outras pessoas a encontrarem o seu caminho no emocionante mundo da electrónica e do IoT!
Visite minha página do GitHub para verificar se existem arquivos atualizados: NodeMCU Dual Temp Monitor
“Saludos desde el sur del mundo!”
E por favor não deixe de visitar e seguir minha página: MJRoBot.org no Facebook
Até meu próximo tutorial!
Obrigado
Marcelo
Comentar
Muito bom o tutorial, parabéns
Obrigado, Murta. Estava meio longe do NodeMCU e voltado mais para o Arduino/RaspberryPi com o Scratch (estava dando uma força para a moeda que começa na eletrônica). Este post saiu na verdade de perguntas que haviam surgido em meu post anterior. Então comprei mais um sensor para fazer testes e achei melhor compartilhar. Este sensor é bem lega e foi minha primeira experiência com múltiplos sensores no mesmo barramento e funciona bem. Agora estou voltado ao ESP32. Impressionante o garoto! Acho que vai tirar o ESP8266 do cenário.
Abração
Professor Rovai , mais um excelente tutorial !
Parabéns.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!
Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)