Monitor temperatura y humedad con control Local y Remoto a traves de Blynk IOT
#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL8GVQ-W-f"
#define BLYNK_DEVICE_NAME "MONITOR H&T"
#include <BlynkSimpleEsp8266.h>
#include "DHT.h"
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define DHTPIN D3 // Digital pin connected to the DHT sensor
char ssid[] = "blynkiot";
char pass[] = "XXXXXXXX";
char auth[] = "DszWmGyPQW1B88JwLWAWrcm9A5DjS1_0";
double mytimer,tref,restmytimer;
int v0;
float bat,tempo;
BLYNK_WRITE(V0){v0=param.asInt();}
BlynkTimer timer1,timer2;
int x=0;
DHT dht(DHTPIN, DHT22);
Adafruit_SSD1306 oled(128,64, &Wire,-1);
void SV1(){
float temperatura = dht.readTemperature(); // reading sensor from analog pin
Blynk.virtualWrite(V1,temperatura ); // sending sensor value to Blynk app
}
void SV2()// enviar datos del hardware a la app
{
float humedad = dht.readHumidity(); // reading sensor from analog pin
Blynk.virtualWrite(V2,humedad ); // sending sensor value to Blynk app
}
void SV3()// enviar datos del hardware a la app
{
Blynk.virtualWrite(V3,bat );
}
void SV4(){
Blynk.virtualWrite(V4,mytimer/60 ); //tempo/60 seria tiempo transcurrido en minutos
}
void setup() {
oled.begin(SSD1306_SWITCHCAPVCC,0x3C);//inicialización de pantalla en direccion 0x3c
oled.clearDisplay();
//oled.setRotation(2);
oled.setTextColor(WHITE);
oled.setTextSize(2);oled.setCursor(1,28); oled.print("wifi net?");
oled.display();
Serial.begin(9600);
dht.begin();
Blynk.begin(auth, ssid, pass);
timer1.setInterval(1000L, SV1);
timer1.setInterval(1000L, SV2);
timer1.setInterval(1000L, SV4);
timer2.setInterval(3000L, SV3);
}
void loop() {
bat=map(analogRead(A0),634,1024,0,100);//EL VALOR 634 HA SIDO MEDIDO EN EL MOMENTO EN QUE LA BATERIA NO DABA LA TENSION SUFICIENTE COMO PARA ALIMENTAR EL MODULO
if (bat<100){
mytimer=(millis()-tref)/1000;}
if (bat==100){tref=millis(),mytimer=0;}
Blynk.run();
timer1.run();
timer2.run();
if (v0){oled.clearDisplay(); oled.setTextSize(1);oled.setCursor(25,1);oled.print(F("REMOTO"));
oled.display();}
else{
delay(1000);
oled.clearDisplay();
float h = dht.readHumidity();
float t = dht.readTemperature();
oled.setTextSize(1);oled.setCursor(25,1);oled.print(F("Humedad"));
oled.setTextSize(2); oled.setCursor(25,15); oled.print(h);oled.setCursor(90,15);oled.print(F("%"));
oled.setTextSize(1); oled.setCursor(25,35);oled.print(F("Temperatura"));
oled.setTextSize(2); oled.setCursor(25,49);oled.print(t);oled.setTextSize(1);oled.setCursor(90,55);oled.print(F("grados"));
oled.display();
}
}