codigo
// Importamos las librerías necesarias#include <WiFi.h> // Librería para la conexión WiFi en ESP32#include "ThingSpeak.h" // Librería para conectarnos a ThingSpeak// Configuración de la conexión WiFiconst char* ssid = "el nombre de tu red wifi"; // Nombre de tu red WiFiconst char* password = "tu clave"; // Contraseña de tu red WiFi// Configuración de ThingSpeak, copiar los datos de la páginaunsigned long myChannelNumber = 123456; // Reemplaza con tu número de canal en ThingSpeakconst char* myWriteAPIKey = "copia y pega tu clave write manten las comillas"; // Reemplaza con tu API Write Key de ThingSpeak// Variables para manejar la conexiónWiFiClient client; // Cliente para la conexión WiFi// Pin analógico del ESP32 que queremos leer (puedes usar cualquier otro pin analógico disponible)const int Pinadc = 34; // En este ejemplo, usamos el pin GPIO 34 del ESP32// Tiempo de espera entre envíos de datos (15 segundos como mínimo por restricciones de ThingSpeak)unsigned long Tiempo_inicio = 0; // Inicializamos el tiempo inicialunsigned long Tiempo_final = 15000; // 15000 ms = 15 segundosvoid setup() {// Inicializamos la comunicación serial para depuraciónSerial.begin(115200); // Velocidad del puerto serial// Configuramos el pin como entrada analógicapinMode(Pinadc, INPUT);// Conectamos a la red WiFiWiFi.begin(ssid, password); // Inicia la conexión a la red WiFiSerial.print("Conectando a WiFi...");while (WiFi.status() != WL_CONNECTED) {// Esperamos hasta que se establezca la conexióndelay(1000);Serial.print(".");}// Imprimimos la dirección IP obtenidaSerial.println("Conectado a la red WiFi.");Serial.println("Dirección IP: ");Serial.println(WiFi.localIP());// Inicializamos ThingSpeak con el cliente WiFiThingSpeak.begin(client); // Inicializamos la comunicación con ThingSpeakdelay(2000);}void loop() {// Verificamos si ha pasado el tiempo suficiente desde el último envíoif (millis() - Tiempo_inicio >= Tiempo_final) {// Leemos el valor analógico desde el pin configuradoint bits = analogRead(Pinadc); // Leemos el valor desde el pin// Calculamos el voltaje correctamentefloat voltaje = (float(bits) / 4095.0) * 3.3; // Corrección del cálculo del voltaje// Mostramos el valor leído en la consola serialSerial.print("Valor voltaje leído: ");Serial.println(voltaje);// Enviamos los datos a ThingSpeakThingSpeak.setField(1, voltaje); // Configuramos el valor leído en el campo 1 del canal// Intentamos enviar los datos a ThingSpeakint estado_codigo = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);// Verificamos el código de estadoif (estado_codigo == 200) {// Si los datos se envían correctamente, lo indicamos en la consola serialSerial.println("Datos enviados a ThingSpeak con éxito.");} else {// Si hubo un error, mostramos el código de errorSerial.print("Error al enviar los datos. Código de error: ");Serial.println(estado_codigo);}// Actualizamos el tiempo de la última actualización correctamenteTiempo_inicio = millis(); // Actualizamos el tiempo inicial correctamente}}
No hay comentarios:
Publicar un comentario