Programación de Sensores IoT con Arduino y API REST

Clase 21 de 27Curso de Introducción al IoT

Resumen

¿Cómo iniciar la programación de un script en Arduino?

Comenzar un nuevo proyecto en Arduino puede parecer desalentador, pero con un enfoque paso a paso se simplifica mucho. Al iniciar un proyecto en IDE de Arduino, siempre verás las funciones básicas setup() y loop(). Sin embargo, es clave marcar y documentar tu código desde el principio, señalando detalles relevantes como fechas o un sistema de identificación, que ayudan a mantener el control y referencia del proyecto. Aquí, te explicaré cómo comenzar de manera exitosa tu código.

  • Comentarios y librerías:
    • Utiliza // para añadir comentarios en Arduino.
    • Comienza incluyendo las librerías necesarias para tu proyecto. Por ejemplo, para trabajar con redes Wi-Fi y ciertas tarjetas, necesitarás <ESP8266WiFi.h>. Si trabajas con sensores específicos como el DHT22, incluye su librería correspondiente de Adafruit. Esto se hace así:
    #include <ESP8266WiFi.h>
    #include <DHT.h>
    #include <Adafruit_Sensor.h>
    

¿Qué definiciones iniciales son necesarias?

Para cualquier proyecto, es crucial definir los pines en los que se conectarán los sensores y el tipo de dispositivo que estás utilizando. Esto se realiza en la sección de definiciones:

  • Definiciones básicas:

    • Define el pin del sensor, por ejemplo, si el DHT está en el pin D5:
    #define DHTPIN D5
    
    • Define el tipo de sensor DHT:
    #define DHTTYPE DHT22
    
  • Red Wi-Fi:

    • Define las credenciales de la red a la que se conectará el dispositivo:
    const char* ssid = "TuSSID";
    const char* password = "TuContraseña";
    

¿Cómo trabajar con la configuración setup?

El bloque setup se ejecuta una vez al inicio del código, por lo tanto, en él inicializamos todas las configuraciones necesarias.

  • Inicialización del sensor DHT:

    DHT dht(DHTPIN, DHTTYPE);
    
    • Inicializa también la conexión serie para poder monitorizar e imprimir mensajes de depuración:
    Serial.begin(9600);
    dht.begin();
    
  • Conexión Wi-Fi:

    • Crea una conexión Wi-Fi utilizando las credenciales suministradas y verifica que es exitoso antes de continuar con más procesos:
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    

¿Por qué es fundamental el bloque loop?

La función loop es donde se realiza el ciclo infinito de ejecución, es decir, todo el trabajo persistente o las acciones repetitivas.

  • Lectura de sensores en el loop:

    • Usa el loop para leer y procesar los datos de tus sensores:
    float h = dht.readHumidity();
    float t = dht.readTemperature();
    
    • Agrega cualquier lógica que necesites para procesar y manejar estos valores, como validaciones o conversiones.
  • Actualización de datos y comunicación:

    • Aquí estableces cualquier función de actualización o lógica de control que se ejecute de manera cíclica, como enviar datos a través de API:
    if (isnan(h) || isnan(t)) {
      Serial.println("Failed to read from DHT sensor!");
    } else {
      Serial.print("Humidity: "); 
      Serial.print(h);
      Serial.print("% Temperature: "); 
      Serial.print(t);
      Serial.println(" *C ");
    }
    

Finalmente, asegúrate de revisar constantemente tu código en busca de errores sintácticos, siendo los puntos y comas y las llaves las áreas más frecuentes de problemas en programación en Arduino. Nunca olvides guardar y verificar el código antes de subirlo, ya que esto ayudará a prevenir errores potenciales durante la carga en el dispositivo. Con estas bases sólidas, estarás listo para dar los primeros pasos en un proyecto IoT con Arduino.