Tutorial SONOFF: um controlador de temperatura ambiente Wi-Fi por $10
Em nossa última publicação no blog, aprendemos como usar o interruptor inteligente SONOFF para controlar um relé do Ubidots . Neste caso, aprenderemos como controlar um ar-condicionado com o SONOFF TH , uma variação do modelo original que inclui sensores de temperatura e umidade. Usando essas leituras, utilizaremos Ubidots para ligar ou desligar o ar-condicionado automaticamente, dependendo da temperatura ambiente.
Visão geral
Comparado aos $ 30 disponíveis no mercado, o SONOFF é uma ótima alternativa para IoT em larga escala. Além disso, ele é baseado no popular chip Wi-Fi ESP8266, o que o torna compatível com o ambiente Arduino e outros recursos, como nossas bibliotecas ESP na Ubidots .
O SONOFF vem com seu próprio firmware e aplicativo para celular, mas acreditamos que seu principal valor reside em seu formato compacto e preço. Por isso, decidimos fazer algumas modificações e liberar todo o seu potencial!
Requisitos
Configurar
- Desmonte o dispositivo SONOFF para acessar a pinagem TTL, necessária para programar o ESP8266 integrado. Você precisará soldar quatro pinos, conforme mostrado na imagem abaixo.
- Conecte os pinos UARTbee aos pinos SONOFF, seguindo este esquema de pinagem:
| UARTbee | FILHO DA PUTA |
|---|---|
| CCV | CCV |
| Texas | RX |
| RX | Texas |
| GND | GND |
Acesse a IDE do Arduino, clique em Arquivo -> Preferências e insira este URL para poder acessar as bibliotecas do ESP8266 para Arduino:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
No "URLs adicionais do Gerenciador de Quadros" . Este campo aceita vários URLs, separando-os por vírgulas, caso você já tenha outros URLs digitados.
3. Abra o Gerenciador de Placas em Ferramentas -> Menu Placa Após a instalação, selecione sua placa ESP8266 em Ferramentas > Menu Placa
4. Faça o download da biblioteca Ubidots aqui .
5. Agora, clique em Sketch -> Incluir Biblioteca -> Adicionar Biblioteca .ZIP.
6. Selecione o arquivo .ZIP do Ubidots e clique em “Aceitar” ou “Escolher” .
7. Feche a IDE do Arduino e abra-a novamente.
Criar eventos Ubidots
Precisaremos de dois eventos Ubidots : um para ligar o relé e outro para desligá-lo:
- Na sua Ubidots , acesse Eventos e clique em “Adicionar novo evento”.
- Selecione a fonte de dados SONOFF que você acabou de criar.
- Selecione a Índice de Calor .
- Defina a condição de ativação para "maior que 25" ou para o Índice de Calor desejado (o SONOFF envia os dados em graus Celsius)
- Selecione o tipo de gatilho “Definir uma variável”, depois selecione novamente a fonte de dados SONOFF e, em seguida, “Variável de relé”
- Defina-o como “1” para que o evento “Eventos” defina a variável “Relay” como “1” quando a condição for atendida.
- Repita esses passos para criar um segundo evento, mas desta vez defina a condição como “menor que 20” e o valor enviado ao Relay como “0”.
Programando seu SONOFF-TH
Aqui está o código que liga/desliga o dispositivo SONOFF. Para usar este código, não se esqueça de alterar o WIFISSID, a SENHA e o seu TOKEN Ubidots .
Para carregar o código no SONOFF, você precisará colocá-lo no modo de programação:
- Conecte o UARTbee à porta USB do PC.
- Pressione o botão SONOFF e desconecte o USB ao mesmo tempo.
- Enquanto pressiona o botão, conecte o USB novamente.
/**************************************** * Incluir Bibliotecas ****************************************/ #include "Ubidots" #include "DHT.h" /**************************************** * Definir Instâncias e Constantes ****************************************/ #define DHTPIN 14 // pino digital ao qual estamos conectados #define DHTTYPE DHT11 // DHT 11 #define RELAY 12 #define LED 13 const char* UBIDOTS= "..."; // Insira aqui seu TOKEN Ubidots const char* WIFI_SSID = "..."; // Insira aqui seu SSID do Wi-Fi const char* WIFI_PASS = "..."; // Insira aqui sua senha do Wi-Fi char *macAddrs; DHT dht(DHTPIN, DHTTYPE); Ubidots ubidots(UBIDOTS_TOKEN, UBI_HTTP); /**************************************** * Funções Auxiliares ****************************************/ // Insira aqui suas funções auxiliares /**************************************** * Funções Principais ****************************************/ void setup() { Serial.begin(115200); dht.begin(); ubidots.wifiConnect(WIFI_SSID, WIFI_PASS); pinMode(RELAY, OUTPUT); pinMode(LED, OUTPUT); digitalWrite(LED, HIGH); ubidots.setDebug(true); // Descomente esta linha para imprimir mensagens de depuração } void loop() { // Aguarde alguns segundos entre as medições. delay(2000); // A leitura da temperatura ou umidade leva cerca de 250 milissegundos! // As leituras do sensor podem ter até 2 segundos de atraso (é um sensor muito lento) float h = dht.readHumidity(); // Lê a temperatura em Celsius (o padrão) float t = dht.readTemperature(); // Verifica se alguma leitura falhou e encerra antecipadamente (para tentar novamente). if (isnan(h) || isnan(t)) { Serial.println("Falha ao ler do sensor DHT!"); return; } // Calcula o índice de calor em Celsius (isFahreheit = false) float hic = dht.computeHeatIndex(t, h, false); ubidots("humidity", h); // Altere para o nome da sua variável ubidots("temperature", t); ubidots("heat", hic); bool bufferSent = false; bufferSent = ubidots(); // Enviará dados para um rótulo de dispositivo que corresponda ao ID do dispositivo se (bufferSent) { // Faça algo se os valores foram enviados corretamente Serial.println("Valores enviados pelo dispositivo"); } ubidots(macAddrs); /* Obtém o último valor de uma variável como float usando HTTP */ float setRelay = ubidots(macAddrs, "relay"); if (setRelay == 1.00) { digitalWrite(RELAY, HIGH); // Relé ligado digitalWrite(LED, LOW); // LED ligado } if (setRelay == 0.00) { digitalWrite(RELAY, LOW); // Relé desligado digitalWrite(LED, HIGH); // LED desligado } delay(5000); }- Após concluir o carregamento do código, desconecte o UARTbee e o SONOFF e, em seguida, conecte o sensor DHT11.
Seu SONOFF está pronto para ser conectado a uma fonte de alimentação de 110-240V e ao seu ar-condicionado.
Juntando tudo
Testamos este projeto com um ventilador “SAMURAI Eole Crystal”. Este aparelho exigia que um botão fosse pressionado para ligá-lo após ser conectado à tomada, então soldamos o botão liga/desliga para que ele fique sempre ligado
Em seguida, remontamos a unidade, conectamos à corrente alternada e pronto!
Dando um passo além…
Ubidots é um serviço em nuvem que capacita milhares de engenheiros em todo o mundo a desenvolver IoT , tanto na área educacional quanto corporativa. Para saber como Ubidots pode ajudar sua empresa, confira nossos recursos ou deixe uma mensagem.