Projetos IoT

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 postagem do blog aprendemos como usar o SONOFF Smart Switch para controlar um relé da Ubidots . Neste caso aprenderemos como controlar um Ar Condicionado com o SONOFF TH , uma variação do original que inclui sensores de temperatura e umidade. Usando essas leituras, usaremos Ubidots para ligar ou desligar seu ar condicionado automaticamente, dependendo da temperatura ambiente.

Visão geral

Comparado aos $ 30 disponíveis no mercado, o SONOFF é uma ótima alternativa para fazer projetos domésticos inteligentes e até mesmo industriais IoT em maior escala. Além disso, é baseado no popular chip Wi-Fi ESP8266, tornando-o compatível com o ambiente Arduino e outros recursos como nossas bibliotecas ESP em Ubidots .

O SONOFF vem com seu próprio firmware e aplicativo móvel, mas achamos que seu principal valor está realmente em seu formato e preço. É por isso que decidimos hackear e liberar todo o seu poder!

Requisitos

Configurar

  1. Desmonte o dispositivo SONOFF, para acessar a pinagem SONOFF TTL, que precisaremos para programar o ESP8266 integrado. Você precisará soldar quatro pinos, mostrados na imagem abaixo.
  2. Conecte os pinos UARTbee aos pinos SONOFF, seguindo esta pinagem:

UARTbee FILHO
CCV CCV
Texas RX
RX Texas
GND GND

Vá para o IDE do Arduino, clique em Arquivos -> Preferências e digite esta 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 placas . Este campo suporta múltiplas URLs, separando-as por vírgulas, caso você já tenha outras URLs digitadas.

3. Abra o Boards Manager no Ferramentas -> Placa e instale a plataforma ESP8266. Selecione sua placa ESP8266 no Ferramentas> Placa após a instalação.

4. Baixe a 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 o Arduino IDE e abra-o novamente.

Crie eventos Ubidots

Precisaremos de dois Eventos Ubidots : um para ligar o relé e outro para desligá-lo:

  1. Na sua conta Ubidots 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 disparo para “maior que 25” ou o índice de calor desejado (o SONOFF envia os dados em graus Celsius)
  5. Selecione o tipo de gatilho “Definir uma variável”, selecione a fonte de dados SONOFF novamente e, em seguida, a “Variável de retransmissão”
  6. Defina-o como “1” para que os Eventos definam a variável Relay como “1” quando a condição for atendida.
  7. Repita estes passos para criar um segundo evento, mas desta vez defina a condição como “menos de 20″ e o valor enviado ao Relé como “0”.

Codificando seu SONOFF-TH

Aqui está o código que liga/desliga o dispositivo SONOFF, para usar este código não esqueça de alterar WIFISSID, SENHA e seu Ubidots TOKEN.

Para fazer upload do código no SONOFF você precisará colocá-lo em modo de programação:

  1. Conecte o UARTbee ao PC USB.
  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 .h" #include "DHT.h" / **************************************** * Definir Instâncias e Constantes ***** ***********************************/ #define DHTPIN 14 // a qual pino digital estamos conectados #definir DHTTYPE DHT11 // DHT 11 #define RELAY 12 #define LED 13 const char* UBIDOTS _TOKEN = "..."; //Coloque aqui seu TOKEN Ubidots const char* WIFI_SSID = "..."; //Coloque aqui o SSID do seu Wi-Fi const char* WIFI_PASS = "..."; // Coloque aqui sua senha do Wi-Fi char *macAddrs; DHT dht(DHTPIN, DHTTYPE); Ubidots ubidots ( UBIDOTS _TOKEN, UBI_HTTP); /************************************** *Funções Auxiliares****** ********************************/ // Coloque aqui suas funções auxiliares /******* ********************************* * Funções principais ************** **************************/ void setup() { Serial.begin(115200); dht.begin(); ubidots .wifiConnect(WIFI_SSID, WIFI_PASS); pinMode(RELÉ, SAÍDA); pinMode(LED, SAÍDA); digitalWrite(LED, ALTO); ubidots (true); // Remova o comentário desta linha para imprimir mensagens de depuração } void loop() { // Aguarde alguns segundos entre as medições. atraso(2000); // A leitura da temperatura ou umidade leva cerca de 250 milissegundos! // As leituras do sensor também podem ter até 2 segundos de idade (é um sensor muito lento) float h = dht.readHumidity(); // Lê a temperatura como Celsius (o padrão) float t = dht.readTemperature(); // Verifique se alguma leitura falhou e saia mais cedo (para tentar novamente). if (isnan(h) || isnan(t)) { Serial.println("Falha ao ler o sensor DHT!"); retornar; } // Calcula o índice de calor em Celsius (isFahreheit = false) float hic = dht.computeHeatIndex(t, h, false); ubidots .add("umidade", h); // Mude o nome da sua variável ubidots .add("temperature", t); ubidots .add("calor", hic); bool bufferSent = falso; bufferSent = ubidots (); // Enviará dados para um rótulo de dispositivo que corresponda ao ID do dispositivo if (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 .get(macAddrs, "relay"); if (setRelay == 1,00) { digitalWrite (RELAY, HIGH); //Relé ligado digitalWrite(LED, LOW); //Led ligado } if (setRelay == 0.00) { digitalWrite(RELAY, LOW); //Desliga o relé digitalWrite(LED, HIGH); //LED apagado } delay(5000); }
  1. Ao terminar de enviar o código, desconecte o UARTbee e o SONOFF e conecte o sensor DHT11.

Seu SONOFF está pronto para ser conectado a uma fonte de 110-240V e ao seu ar condicionado.

Juntando tudo

Testamos este projeto com um ventilador “SAMURAI Eole Crystal”. Esta máquina exigia apertar um botão para ligá-la depois de conectá-la à tomada CA, então soldamos o botão LIGA/DESLIGA para que esteja sempre LIGADO:

samurai-top.jpg
samuri-pcb.jpg
samurai-soldado.jpg

Em seguida, remontamos a unidade, conectamos à CA e pronto!

samurai-all-2.jpg

Dando um passo adiante…

Ubidots é um serviço em nuvem que capacita milhares de engenheiros em todo o mundo a construir IoT , tanto na educação quanto na empresa. Para saber como Ubidots pode ajudar o seu negócio confira nossas funcionalidades ou deixe-nos uma mensagem