Carlos Kwiek
Published

Smart Fan Outlet

One outlet with temperature control for fan.

IntermediateShowcase (no instructions)1 hour680
Smart Fan Outlet

Things used in this project

Story

Read more

Code

Cayenne_Smart_Outlet_Temperature_Control

Arduino
/*  ***************************************************************
 *  Sobre o autor deste projeto:
 *  Engenheiro eletronico com ampla formaçao e pratica em automação                       
 *  
 *  Especializado em equipamentos para cinemas
 *  Brasileiro natural de Sao Paulo mora atualmente em Joao Pessoa
 *  ***************************************************************
 *  Sobre este projeto:
 *  Trata-se de uma aplicacao IoT (Internet das coisas) aproveitando
 *  os recursos do site Cayenne dedicado a este tipo de aplicacoes,
 *  o objetivo foi criar uma tomada inteligente para controlar um ventilador por exemplo, 
 *  de acordo a uma temperatura pre ajustada pelo usuario, atraves de um potenciomento.
 *  \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 *  O sistema usa um ESP8266-12E da DOIT, uma sensor DHT11 que afere a umidade, e a
 *  temperatura ambiente, um transistor BC557 PNP, um resistor de 1k um modulo rele bobina 5VCC 
 *  com um contato inversor de 10A, um dysplay LCD, jumpers diversos, uma fonte 220VAC/9VCC
 *  1 Amper, uma tomada norma brasileira 10A para embutir uma caixa plastica 
 *  trabalhada para conter o projeto em si.
 *  \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 *  Todo o projeto esta disponivel no meu website que aloja o meu Blog
 *  www.carloskwiek.com.br onde existem outros projetos que disponibilizo.
 *  \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 *  Este projeto foi testado e funcionou perfeitamente, mas não existe garantias 
 *  que ele vá funcionar caso você coloque em pratica, fica por conta e risco de quem o faca.
 *  \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 *  ATENCAO A MANIPULACAO DE CORRENTE ELETRICA EXIGE CONHECIMENTO PREVIO,
 *  EU ASSUMO QUE QUEM DECIDA FAZER USO DESTE PROJETO CONHECE OS RISCOS, E
 *  SABE MANIPULAR COM O DEVIDO CUIDADO A REDE ELETRICA.
 *  \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 * Contatos para receber duvidas, criticas, elogios, visite meu Blog. ou ck@carloskwiek.com.br
 * \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 * Espero que desfrute deste projeto, e minha maior recompensa.
 * \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
 */

#include "CayenneDefines.h"
#include "BlynkSimpleEsp8266.h"
#include "CayenneWiFiClient.h"
#include <DHT.h>
#include "Wire.h"
#include <LiquidCrystal_I2C.h>

//#define CAYENNE_DEBUG         // Descomente se quiser ver mensagens de degug
#define CAYENNE_PRINT Serial  // Comente se quiser lieberar espaço
#define DHTTYPE DHT11
#define DHTPIN  14 // Port onde esta conectado o pino data do DHT11
float pot = A0;   // Port onde esta conectado o potenciometro (Setpoint)
float valor = 0;  // Variavel que armazena o valor lido no potencioment







// Uncomment whatever type you're using!
  #define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
// Cayenne token. Voce pode obter esse token na sua dashboard Cayenne.
char token[] = "9oiow7qtem"; // Seu token ID
// Introduza o nome de sua rede local (ssid) e senha de sua rede local (password.
char ssid[] = "Ckwiek";
char password[] = "ck127952*#";

DHT dht(DHTPIN, DHTTYPE);

// Modulo I2C display no endereco 0x27
LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3, POSITIVE);

void setup() {
  lcd.begin(20,4); 
  Serial.begin(9600);
  Cayenne.begin(token, ssid, password); 
  dht.begin();
  float valor = analogRead (pot);
  pinMode(D6, OUTPUT);
  pinMode(D7, INPUT);
  
  
}

void loop() {
  Cayenne.run();

   // Espera um segundo para estabilizar as leituras do sensor
  delay(1000);

  


  // Le a temperatura ou umidade a cada 250 milisegundos!
  float h = dht.readHumidity();
 
  // Le a temperatura em Celsius)
  float t = dht.readTemperature();


  
  // Verifica se o sensor esta funcionando normalmente).
 if (isnan(h) || isnan(t)) {
    Serial.println("Falha na leitura do sensor DHT11!");
    return;
    
  
 }  


  float valor = analogRead (pot); // Armazena o valor de pot na variavel valor
  Serial.print ("Setpoint");
  Serial.println (valor/1023*100); // divide o valor maximo de pot pelo seu valor e multiplica por 100
  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.println(" %\t");
  Serial.print("Temperature:");
  Serial.println(t);
 
  lcd.setCursor (0,0);
  lcd.print("Temperatura:");
  lcd.setCursor (14,0);
  lcd.print((t));
  lcd.setCursor (0,1);
  lcd.print("Umidade:");
  lcd.setCursor (14,1);
  lcd.print((h));
  lcd.setCursor(0,2);
  lcd.print ("Seletor Temp:");
  lcd.setCursor(14,2);
  lcd.print (valor/1023*100);
  lcd.setCursor(1,3);
  lcd.print ("carloskwiek.com.br");
  
  
  Cayenne.virtualWrite(V3,valor/1023*100); // imprime no widget virtual na dashboard a variavel valor divido mil multiplicado por cem
  
  if (valor/1023*100 < (t) ) // Se valor dividido 10 é menor que temperatura
 
  
  {
  digitalWrite(D6, LOW);    // Coloca o GPIO no estado alto (A logica do ESP8266 é invertida)
  //Serial.println ("LOW");  //serve so para debug, você pode comentar se quiser
  
  
  }
  
  else if(valor/1023*100 >(t) )  // Se valor dividido 10 é maior que temperatura
  {
  digitalWrite(D6, HIGH);  // Coloca o GPIO no estado baixo (A logica do ESP8266 é invertida)
  //Serial.println ("HIGH"); //serve so para debug, você pode comentar se quiser
  
  }

 }

// Esaa funcao e chamada quando um widget requer dados do pin virtual
 
CAYENNE_OUT(V0)
{
  Cayenne.virtualWrite(V0, dht.readTemperature()); // Imprime Temperatura em celsius no pin virtual V0
}

CAYENNE_OUT(V1)
{
  Cayenne.virtualWrite(V1, dht.readHumidity()); // Imprime Umidade em porcentagem no pin virtual V1
}

/*
 * FIM
 * www.carloskwiek.com.br 
 */










    

Credits

Carlos Kwiek

Carlos Kwiek

2 projects • 2 followers
I am an electronics engineer, I live in Brazil, I love everything related to technology, especially microcontrollers, automation, and IoT.

Comments