1#include <WiFi.h>
2#include <HTTPClient.h>
3#include <Adafruit_Sensor.h>
4#include <Adafruit_BME280.h>
5
6#define PRESION_NIVEL_MAR_HPA (1013.25)
7
8const char* red_wifi = "Tu_Red_Wifi";
9const char* contrasena_wifi = "Tu_Contraseña";
10
11const char* clave_api = "Tu_Clave_Api";
12
13const char* servidor_thingspeak = "http://api.thingspeak.com/update";
14
15Adafruit_BME280 sensor_bme;
16void setup() {
17 Serial.begin(115200);
18
19 WiFi.begin(red_wifi, contrasena_wifi);
20 Serial.print("Conectando a WiFi");
21 while (WiFi.status() != WL_CONNECTED) {
22 delay(500);
23 Serial.print(".");
24 }
25 Serial.println("\nConectado a WiFi");
26
27 if (!sensor_bme.begin(0x76)) {
28 Serial.println("No se encuentra el sensor BME280. Revisa la conexión.");
29 while (1);
30 }
31}
32void loop() {
33
34 float temperatura = sensor_bme.readTemperature();
35 float humedad = sensor_bme.readHumidity();
36 float presion = sensor_bme.readPressure() / 100.0F;
37
38 Serial.print("Temperatura = ");
39 Serial.print(temperatura);
40 Serial.println(" *C");
41 Serial.print("Humedad = ");
42 Serial.print(humedad);
43 Serial.println(" %");
44 Serial.print("Presión = ");
45 Serial.print(presion);
46 Serial.println(" hPa");
47
48 if(WiFi.status() == WL_CONNECTED) {
49 HTTPClient http;
50 String url = String(servidor_thingspeak) + "?api_key=" + clave_api + "&field1=" + String(temperatura) + "&field2=" + String(humedad) + "&field3=" + String(presion);
51 http.begin(url);
52 int codigo_http = http.GET();
53 if(codigo_http > 0) {
54 Serial.printf("Código de respuesta: %d\n", codigo_http);
55 if(codigo_http == HTTP_CODE_OK) {
56 String respuesta = http.getString();
57 Serial.println("Datos enviados a ThingSpeak");
58 }
59 } else {
60 Serial.printf("Error en la conexión: %s\n", http.errorToString(codigo_http).c_str());
61 }
62 http.end();
63 } else {
64 Serial.println("Error de conexión WiFi");
65 }
66
67 delay(15000);
68}