Tutorial SONOFF: um controlador de temperatura ambiente Wi-Fi por $10

Mateo Vélez
· 5 min de leitura
Enviar por e-mail

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

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

  1. Na sua Ubidots , acesse Eventos e clique em “Adicionar novo evento”.
  2. Selecione a fonte de dados SONOFF que você acabou de criar.
  3. Selecione a Índice de Calor .
  4. 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)
  5. Selecione o tipo de gatilho “Definir uma variável”, depois selecione novamente a fonte de dados SONOFF e, em seguida, “Variável de relé”
  6. Defina-o como “1” para que o evento “Eventos” defina a variável “Relay” como “1” quando a condição for atendida.
  7. 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:

  1. Conecte o UARTbee à porta USB do PC.
  2. Pressione o botão SONOFF e desconecte o USB ao mesmo tempo.
  3. 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); }
  1. 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

samurai-top.jpg
samuri-pcb.jpg
samurai-vendido.jpg

Em seguida, remontamos a unidade, conectamos à corrente alternada e pronto!

samurai-todos-2.jpg

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.