//#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_TSL2561_U.h>
#include <DHT.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <WiFi.h>
#include <WiFiMulti.h>
#define DHT_PIN 4 // Pin del sensor DHT22
#define DS18B20_PIN 5 // Pin del sensor DS18B20
#define DHT_TYPE DHT22 // Tipo de sensor DHT22
DHT dht(DHT_PIN, DHT_TYPE);
OneWire oneWire(DS18B20_PIN);
DallasTemperature ds18b20(&oneWire);
const float TEMP_MIN = 20.0; // Valor mínimo de temperatura permitido
const float TEMP_MAX = 30.0; // Valor máximo de temperatura permitido
const float HUMIDITY_MIN = 40.0; // Valor mínimo de humedad permitido
const float HUMIDITY_MAX = 60.0; // Valor máximo de humedad permitido
/// CONFIGURACION RED WIFI//
///Variables de WIFI
String apiKey = "FBJ25CEZICEAQVLK";//"MPHZ63I0U9ZR9DG5";//
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* server = "api.thingspeak.com";
int port = 80;
int contwifi=0;
WiFiClient client;
float humidity;
float tempDs18b20;
float temperature;
void setup() {
Serial.begin(115200); // We'll send debugging information via the Serial monitor
////Configuracion WIFI
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED && contwifi < 20) {
delay(500);
Serial.print(".");
contwifi++;
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
String str(server);
//Final Configuracion WIFI
dht.begin();
ds18b20.begin();
}
void loop() {
// Leer temperatura y humedad
temperature = dht.readTemperature();
humidity = dht.readHumidity();
// Leer temperatura DS18B20
ds18b20.requestTemperatures();
tempDs18b20 = ds18b20.getTempCByIndex(0);
// Imprimir los valores leídos
Serial.print("Temperatura DHT22: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("Humedad DHT22: ");
Serial.print(humidity);
Serial.println(" %");
Serial.print("Temperatura DS18B20: ");
Serial.print(tempDs18b20);
Serial.println(" °C");
// Verificar si los valores están fuera de rango
if (temperature < TEMP_MIN || temperature > TEMP_MAX) {
// Tomar una acción si la temperatura está fuera de rango
// Ejemplo: activar un dispositivo, enviar una alerta, etc.
Serial.println("Temperatura fuera de rango");
}
if (humidity < HUMIDITY_MIN || humidity > HUMIDITY_MAX) {
// Tomar una acción si la humedad está fuera de rango
// Ejemplo: activar un dispositivo, enviar una alerta, etc.
Serial.println("Humedad fuera de rango");
}
// Esperar un segundo antes de tomar nuevas lecturas
delay(1000);
Send_Datos();
}
void Send_Datos()
{
if (client.connect(server,port)) {
Serial.println("connected to server");
String postStr = apiKey;
postStr +="&field1=";
postStr += String(humidity,2);//(sensor,cifras significativas)
postStr +="&field2=";
postStr += String(tempDs18b20);
postStr +="&field3=";
postStr += String(temperature,2);
//agregar mas campos si es necesario
postStr += "\r\n\r\n";
Serial.println(postStr);
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);
Serial.println("% send to Server");
String line = client.readStringUntil('\r');
Serial.println(line);
String cadena = client.readString();
Serial.println(cadena);
}
client.stop();
Serial.println("Waiting…");
delay(10000);//tasa muestreo
}
Loading
ds18b20
ds18b20