O IOT FEITO SIMPLES: MONITORANDO MÚLTIPLOS SENSORES
Alguns meses atrás, publiquei aqui 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
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.
1: BoM – Lista de materiais
- NodeMCU ESP 12-E (*)
- 2 X DS18B20 Temperature Sensor
- 1 x Resistor de 4.7K Ohms
- BreadBoard
- fios
(*) 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.
2: DS18B20 – Sensor digital de temperatura
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:
- Preto: GND
- Vermelho: VCC
- Amarelo: 1-Wire Data
Os dados completos do sensor podem ser encontrados no link: DS18B20 Datasheet
3: Conectando os sensores ao NodeMCU
- Conecte os 3 fios de cada sensor no Mini Breadboard, conforme mostrado na foto acima.
- Usei conectores especiais para melhor fixação do sensor.
- Observe que ambos os sensores estão em paralelo. Se você tiver mais de 2 sensores, você deve fazer o mesmo.
- Conecte o cabo vermelho ==> NodeMCU Pin 3.3V
- Conecte o cabo preto ==> NodeMCU Pin GND
- Conecte o cabo amarelo ==>NodeMCU Pin D4
- Use um resistor de 4.7K ohm entre VCC (3.3V) e Dados (D4)
4: Instalando as bibliotecas
Para se poder utilizar o DS18B20 com o IDE do Arduino e o ESP8266, será necessário a instalação de duas bibliotecas:
- OneWire
- DallasTemperature
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.
5: Testando os sensores
Para testar os sensores, baixe de meu GitHub, o arquivo:
NodeMCU_DS18B20_Dual_Se nsor_test.ino
/************************************************************** * Multiple Temperature Sendor Test * * 2 x OneWire Sensor: DS18B20 * Connected to NodeMCU D4 (or Arduino Pin 2) * * Developed by Marcelo Rovai - 25 August 2017 **************************************************************/ #include #include #define ONE_WIRE_BUS 2 // DS18B20 on NodeMCU pin D4 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature DS18B20(&oneWire); void setup() { Serial.begin(115200); DS18B20.begin(); Serial.println("Testing Dual Sensor data"); } void loop() { float temp_0; float temp_1; DS18B20.requestTemperatures(); temp_0 = DS18B20.getTempCByIndex(0); // Sensor 0 will capture Temp in Celcius temp_1 = DS18B20.getTempFByIndex(1); // Sensor 0 will capture Temp in Fahrenheit Serial.print("Temp_0: "); Serial.print(temp_0); Serial.print(" oC . Temp_1: "); Serial.print(temp_1); Serial.println(" oF"); delay(1000); }
Olhando para o código acima, 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.
6: Utilizando o Blynk
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:
- Crie um novo projeto.
- Dê um nome (em meu caso “Dual Temperature Monitor”)
- Selecione New Device – ESP8266 (WiFi) como “Meus dispositivos”
- Copie o AUTH TOKEN para ser utilizado em seu código (você pode enviá-lo diretamente para o e-mail que tenha cadastrado no Blynk).
- Inclui dois Widgets “Gauge”, 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 para ler dados: 1 segundo
- Inclui um widget “Gráfico de histórico”, definindo V10 e V11 como pinos virtuais
- Pressione “Play” (o triângulo no canto direito acima)
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!
Abaixo do código completo. 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. Se você tiver mais sensores coletando dados, você também deve ter novas linhas equivalentes a estas (com os novos pinos virtuais pertinentes definidos).
/************************************************************** * IoT Multiple Temperature Monitor with Blynk * Blynk library is licensed under MIT license * This example code is in public domain. * * Multiple OneWire Sensor: DS18B20 * Developed by Marcelo Rovai - 25 August 2017 **************************************************************/ /* ESP & Blynk */ #include #include #define BLYNK_PRINT Serial // Comment this out to disable prints and save space /* Blynk credentials */ char auth[] = "YOUR BLYNK AUTH CODE HERE"; /* WiFi credentials */ char ssid[] = "YOUR SSID"; char pass[] = "YOUR PASSWORD"; /* TIMER */ #include SimpleTimer timer; /* DS18B20 Temperature Sensor */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 on arduino pin2 corresponds to D4 on physical board 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("Testing Dual Sensor data"); } void loop() { timer.run(); // Initiates SimpleTimer Blynk.run(); } /*************************************************** * Send Sensor data to Blynk **************************************************/ void getSendData() { DS18B20.requestTemperatures(); temp_0 = DS18B20.getTempCByIndex(0); // Sensor 0 will capture Temp in Celcius temp_1 = DS18B20.getTempFByIndex(1); // Sensor 0 will capture Temp in 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); //virtual pin V10 Blynk.virtualWrite(11, temp_1); //virtual pin V11 }
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.
7: Conclusão
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!
Matérias relacionadas
IOT FEITO FÁCIL”: BRINCANDO COM O ESP32 NO ARDUINO IDE
este tutorial, exploraremos o ESP32, o mais novo dispositivo para uso no campo do IoT. Esta placa, desenvolvida pela Espressif, deverá ser a sucessora do ESP8266, devido ao seu baixo preço e excelentes recursos.
Em 29/11/2022 às 16h06 - Atualizado em 08/05/2024 às 15h52
Soluções para o Transporte Inteligente de Cargas e Pessoas
No mundo dinâmico da mobilidade industrial e urbana, a necessidade de soluções robustas, fiáveis e eficientes é fundamental.
Em 29/02/2024 às 14h10 - Atualizado em 29/02/2024 às 14h12
Diversidade, Equidade e Inclusão: o que isso tem a ver com Tecnologia?
O mercado de trabalho está cada vez mais conectados a debates importantes como a necessidade de construção de empresas plurais.
Em 28/03/2023 às 08h40 - Atualizado em 29/03/2023 às 08h15
Como você contrata e o que espera de um profissional de TI
Veja as principais discussões sobre as exigências do profissional de IT.
Em 02/12/2022 às 06h01 - Atualizado em 07/02/2023 às 15h03
COMO CRIAR A SUA REDE LORA | TUDO SOBRE IOT
Entenda as principais diferenças entre LoRa e LoRaWAN e como criar sua própria rede.
Em 02/12/2022 às 05h09 - Atualizado em 07/02/2023 às 15h03
ROBÔ CONTROLADO POR VOZ VIA WIFI
Como desenvolver um robô controlado por voz via WiFi e utilizando como microcontrolador nosso velho amigo, o NodeMCU!
Em 01/12/2022 às 13h31 - Atualizado em 07/02/2023 às 15h03
IOT FEITO SIMPLES: CONTROLANDO SERVOS COM O NODEMCU E O BLYNK
Neste tutorial, exploraremos como controlar um servo através da Internet. Para isso, lançaremos mão de uma importante dupla de dispositivos no mundo do IoT:
Em 01/12/2022 às 14h20 - Atualizado em 07/02/2023 às 15h03
IOT FEITO SIMPLES: ESTAÇÃO METEOROLÓGICA DOMÉSTICA COM NODEMCU E OLED
Continuemos nossa exploração pelo mundo do IoT, nas asas do NodeMCU! Vamos desenvolver uma estação meteorológica doméstica!
Em 01/12/2022 às 11h25 - Atualizado em 07/02/2023 às 15h02
“IOT FEITO FÁCIL”: CONECTANDO COISAS DESDE QUALQUER CANTO DO MUNDO!
Nosso objetivo neste tutorial será basicamente coletar informações de uma unidade local, enviando-as à internet.
Em 30/11/2022 às 13h21 - Atualizado em 07/02/2023 às 15h02
IOT FEITO FÁCIL: ESP-MICROPYTHON-MQTT-THINGSPEAK
Com a ajuda do protocolo MQTT, enviaremos dados capturados de sensores, à um serviço de IoT, o ThingSpeak.com e a um aplicativo móvel, o Thingsview.
Em 30/11/2022 às 10h13 - Atualizado em 07/02/2023 às 15h02
IOT FEITO FÁCIL”: BRINCANDO COM O ESP32 NO ARDUINO IDE
este tutorial, exploraremos o ESP32, o mais novo dispositivo para uso no campo do IoT. Esta placa, desenvolvida pela Espressif, deverá ser a sucessora do ESP8266, devido ao seu baixo preço e excelentes recursos.
Em 29/11/2022 às 16h06 - Atualizado em 08/05/2024 às 15h52
Soluções para o Transporte Inteligente de Cargas e Pessoas
No mundo dinâmico da mobilidade industrial e urbana, a necessidade de soluções robustas, fiáveis e eficientes é fundamental.
Em 29/02/2024 às 14h10 - Atualizado em 29/02/2024 às 14h12
Diversidade, Equidade e Inclusão: o que isso tem a ver com Tecnologia?
O mercado de trabalho está cada vez mais conectados a debates importantes como a necessidade de construção de empresas plurais.
Em 28/03/2023 às 08h40 - Atualizado em 29/03/2023 às 08h15
Como você contrata e o que espera de um profissional de TI
Veja as principais discussões sobre as exigências do profissional de IT.
Em 02/12/2022 às 06h01 - Atualizado em 07/02/2023 às 15h03
COMO CRIAR A SUA REDE LORA | TUDO SOBRE IOT
Entenda as principais diferenças entre LoRa e LoRaWAN e como criar sua própria rede.
Em 02/12/2022 às 05h09 - Atualizado em 07/02/2023 às 15h03
ROBÔ CONTROLADO POR VOZ VIA WIFI
Como desenvolver um robô controlado por voz via WiFi e utilizando como microcontrolador nosso velho amigo, o NodeMCU!
Em 01/12/2022 às 13h31 - Atualizado em 07/02/2023 às 15h03
IOT FEITO SIMPLES: CONTROLANDO SERVOS COM O NODEMCU E O BLYNK
Neste tutorial, exploraremos como controlar um servo através da Internet. Para isso, lançaremos mão de uma importante dupla de dispositivos no mundo do IoT:
Em 01/12/2022 às 14h20 - Atualizado em 07/02/2023 às 15h03
IOT FEITO SIMPLES: ESTAÇÃO METEOROLÓGICA DOMÉSTICA COM NODEMCU E OLED
Continuemos nossa exploração pelo mundo do IoT, nas asas do NodeMCU! Vamos desenvolver uma estação meteorológica doméstica!
Em 01/12/2022 às 11h25 - Atualizado em 07/02/2023 às 15h02
“IOT FEITO FÁCIL”: CONECTANDO COISAS DESDE QUALQUER CANTO DO MUNDO!
Nosso objetivo neste tutorial será basicamente coletar informações de uma unidade local, enviando-as à internet.
Em 30/11/2022 às 13h21 - Atualizado em 07/02/2023 às 15h02
IOT FEITO FÁCIL: ESP-MICROPYTHON-MQTT-THINGSPEAK
Com a ajuda do protocolo MQTT, enviaremos dados capturados de sensores, à um serviço de IoT, o ThingSpeak.com e a um aplicativo móvel, o Thingsview.
Em 30/11/2022 às 10h13 - Atualizado em 07/02/2023 às 15h02