#include "WiFi.h" //libreria wifi
#include <DHTesp.h> //libreria sensor dht22
#include <DallasTemperature.h> //libreria sensor DS18B20
#include "ThingSpeak.h" //libreria ThingSpeak
const int DHT1_PIN = 15; //Declarar pin del primer sensor DHT22
const int DHT2_PIN = 5; //Declarar pin del segundo sensor DHT22
//const int D18B20_PIN = 4; //Declarar pin del sensor DS18B20
const int LED_PIN = 2; //Declarar pin del LED
WiFiClient client; //Objeto de wifi
DHTesp DHT1; //Objeto primer Sensor DHT22
DHTesp DHT2; //Objeto segundo Sensor DHT22
//OneWire oneWire(D18B20_PIN); //Inicializar comunicación OneWire
//DallasTemperature SensorD18(&oneWire);//Configurar comunicacion OneWire al sensor
//Credenciales de conexion a la API de ThingSpeak
const char* WIFI_NAME = "Wokwi-GUEST";
const char* WIFI_PASSWORD = "";
const int myChannelNumber = 2297731;
const char* myApiKey = "AY9VLRJL4Z4WEYAT";
const char* server = "api.thingspeak.com";
void setup() {
Serial.begin(115200);
//Realizar conexion Wifi y esperar mientras conecta
WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED){
delay(1000);
Serial.println("Wifi not connected");
}
Serial.println("Wifi connected !");
WiFi.mode(WIFI_STA);
DHT1.setup(DHT1_PIN, DHTesp::DHT22); //inicializar primer sensor DHT22
DHT2.setup(DHT2_PIN, DHTesp::DHT22); //inicializar segundo sensor DHT22
pinMode(LED_PIN, OUTPUT);//Inicializar pin
//SensorD18.begin();//Inicializar sensor SensorD18B20
ThingSpeak.begin(client);//Inicializar conexion a ThingSpeak
}
void loop() {
TempAndHumidity dht1 = DHT1.getTempAndHumidity(); //Obtiene valores del sensor DHT22
TempAndHumidity dht2 = DHT2.getTempAndHumidity(); //Obtiene valores del sensor DHT22
//SensorD18.requestTemperatures(); //Obtiene valores del sensor D18B20
float t = dht1.temperature; // Guarda valor de temperatura en Celsius
float h = dht1.humidity; // Guarda valor de humedad del aire
float s = dht2.humidity; // Guarda valor de humedad del aire
float b = 0; // Guarda el valor de los segundos que la bomba funciono
//float s = SensorD18.getTempCByIndex(0);// Guarda valor de humedad del suelo
// Impresión de los resultados de temperatura en el monitor serial
Serial.print("Temperatura = ");
Serial.print(t);
Serial.print(" ");
Serial.print((char)176);//Muestra el carácter de los grados
Serial.println("C");
// Impresión de los resultados de humedad del aire en el monitor serial
Serial.print("Humedad del aire = ");
Serial.print(h); // Imprime el valor de humedad
Serial.println("%");
// Impresión de los resultados de humedad del suelo en el monitor serial
Serial.print("Humedad del suelo = ");
Serial.print(s); // Imprime el valor de humedad
Serial.println("%");
/*-----------Condiciones para sensores según tabla de verdad ----------*/
//S1 = YL69 sensor de temperatura entre 0 a 40 °C
//S2 = DHT22 sensor de humedad del aire
//S3 = DS18B20 sensor de humedad del suelo
// (S1 + S2 + S3) * (S1 + S2’ + S3) * (S1’ + S2 + S3)
// s = 50;
// Condicionales para activar bomba de agua
if((t>25 || h<40 || s<40) && (t>25 || h>40 || s<40) && (t<25 || h<40 || s<40))
{
// Activar la bomba de agua por 4 segundos
digitalWrite(LED_PIN, HIGH);
delay(8000);
b = 8;
}
//Guarda los valores en cada campo del tablero de la API
ThingSpeak.setField(1,t);
ThingSpeak.setField(2,h);
ThingSpeak.setField(3,s);
ThingSpeak.setField(4,b);
//envia los valores en cada campo del tablero de la API
int x = ThingSpeak.writeFields(myChannelNumber,myApiKey);
//Verifica si el envio fue exitoso
if(x == 200){
Serial.println("Datos enviados correctamente");
}else{
Serial.println("Codigo de error del envio: " + String(x));
}
Serial.println("---");
digitalWrite(LED_PIN, LOW);// Apagar la bomba de agua
delay(12000); // Hacer la lectura cada 10 segundos
}
Loading
ds18b20
ds18b20