Controle de temperatura com Ubidots MQTT e NodeMcu
Este guia detalha como fazer um controle de temperatura com Ubidots e um NodeMCU simples para enviar alertas por email ou SMS quando sua “variável” (neste caso, a temperatura) fica muito quente, muito fria ou atinge uma determinada regra de design.
Usaremos uma versão pré-cabeada e à prova d’água do sensor DS18B20 (sensor de temperatura OneWire). É útil quando você precisa medir algo distante ou em condições úmidas. O sensor de temperatura OneWire possui diferentes versões; um deles tem resistor integrado e outros não, então certifique-se de que a versão que você está usando está correta antes de iniciar o projeto. Para o controle, usaremos um NodeMcu utilizando um pino digital.
Requisitos
- NodeMcu versão 1.0
- Sensor de temperatura DS18B20 OneWire
- Biblioteca Ubidots ESPMQTT
- Biblioteca OneWire
- Biblioteca de Temperatura Dallas
- Um resistor de 4,7kΩ (caso seu DS18B20 não tenha um)
- Cabos
Configurar
- Primeiro, devemos escolher uma versão. Se o seu sensor possui o resistor integrado, basta conectá-lo ao NodeMcu assim:
DS18B20 | NodeMCU |
---|---|
FIO PRETO | GND |
FIO VERMELHO | Vin |
FIO AMARELO | D3 |
Caso contrário, você deve alimentar o pino DATA através da resistência de 4,7kΩ, e os pinos Vin e GND devem ser conectados entre si e ao terra.
- Vá para o IDE do Arduino, clique em Arquivos -> Preferências e insira o seguinte URL no campo “URLs adicionais do gerenciador de placa”. Você pode adicionar vários URLs, separando-os por vírgulas.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
-
Abra o “Boards Manager” em Ferramentas -> menu Placa e instale a plataforma esp8266 (e não se esqueça de selecionar sua placa NodeMCU 1.0 no menu Ferramentas> Placa após a instalação).
-
Baixe a biblioteca Ubidots , OneWire Library e DallasTemperature Library usando estes hiperlinks.
-
Agora clique em Sketch -> Incluir Biblioteca -> Adicionar Biblioteca .ZIP .
-
Selecione os arquivos .ZIP de Ubidots ESPMQTT, OneWire e DallasTemperature e depois “Aceitar” ou “Escolher” para todas as bibliotecas. Se você não conseguir adicionar as bibliotecas, tente manualmente: descompacte o rar/zip baixado e copie a pasta da biblioteca para o caminho C:Users ubidots DocumentsArduinolibraries .
-
Feche o IDE do Arduino e abra-o novamente.
Código
Assim que tudo estiver conectado corretamente, iremos ao IDE e escreveremos o seguinte código:
/**************************************** * Incluir bibliotecas ****** **********************************/ #include " Ubidots ESPMQTT.h" #include<OneWire.h> #incluir<DallasTemperature.h> /**************************************** * Definir constantes ****** **********************************/ #define TOKEN "....." // Seu TOKEN Ubidots #define WIFINAME "....." //Seu SSID #define WIFIPASS "....." // Seu passe Wifi #define MQTTCLIENTNAME "..." // Seu nome de cliente MQTT, deve ser exclusivo portanto, recomendamos escolher um nome ASCCI aleatório #define Pin D3 float temp; OneWire nossoWire(Pino); Sensores de temperatura Dallas(&ourWire); Cliente Ubidots (TOKEN, MQTTCLIENTNAME); /************************************** *Funções Auxiliares****** **********************************/ void callback(char* topic, byte* payload, unsigned int length) { Serial.print("A mensagem chegou ["); Serial.print(tópico); Serial.print("] "); para (int i=0;i <length;i++) { Serial.print((char)payload[i]); } Serial.println(); } /**************************************** * Main Functions ****************************************/ void setup() { // put your setup code here, to run once: Serial.begin(115200); client.wifiConnection(WIFINAME, WIFIPASS); sensors.begin(); client.begin(callback); } void loop() { // put your main code here, to run repeatedly: if(!client.connected()){ client.reconnect(); } sensors.requestTemperatures(); //Prepare the sensor for reading temp = sensors.getTempCByIndex(0); Serial.print(sensors.getTempCByIndex(0)); //Read and print the temperature in Celsius client.add("temperature", temp); //Insert your variable Labels and the value to be sent delay(1000); Serial.println("Grados Centigrados"); client.<a i=3> ubidots Publicar("controle"); cliente.loop(); }
Resultados
Agora, abra sua conta Ubidots Fonte . Você verá um novo DataSource chamado “controle”. clique nele.
Aqui, você verá o valor da temperatura:
Criando um Alerta
Além disso, você pode criar um Evento que avisa quando a temperatura está irregular. Vá para Eventos , clique em Adicionar Evento e selecione sua Fonte de Dados e uma Variável .
Os Eventos podem notificá-lo por e-mail, sms, Telegram ou WebHook. Você também pode definir uma variável:
Quando seu evento estiver pronto, você deverá ver estas janelas:
Neste exemplo, se da temperatura for >= 28 , Ubidots enviará um e-mail conforme configurado anteriormente, como tal:
É muito simples! Com apenas alguns cabos você pode observar o comportamento da temperatura da sua casa, esteja ela dentro ou fora. Você pode até acionar alertas via e-mail/SMS em caso de incêndio.
Agora você tenta!
… ainda Ubidots Não se preocupe, você pode chegar aqui em menos de 30 segundos.