1-Explica primero la placa ESP32 que utilizamos
2-En que lenguaje programamos
3-Que sistema de comunicación se utiliza
4-Explica el código mediante capturas de pantalla del mismo
El ESP32 es una placa de desarrollo basada en un microcontrolador de doble núcleo, que incluye conectividad WiFi y Bluetooth. Algunas características destacadas son:
Procesador: Dual-core a 240 MHz.
Memoria: Cuenta con RAM y flash integrados.
Conectividad: Incluye WiFi 802.11 b/g/n y Bluetooth, lo cual permite aplicaciones de IoT y comunicación inalámbrica.
Entradas/Salidas: Gran cantidad de pines analógicos y digitales, ideal para conectar sensores, módulos de comunicación, y otros periféricos.
Uso en proyectos CANSAT: Se utiliza por su bajo consumo, su potencia de procesamiento y por facilitar la integración de módulos inalámbricos, como los que utilizan la tecnología LoRa para transmisión de datos a larga distancia.
El código se desarrolla en el lenguaje Arduino, que en esencia es C/C++ simplificado. Esto se debe a que:
El entorno Arduino proporciona una serie de librerías y funciones que facilitan el manejo del hardware (como sensores, comunicación serie, etc.).
Permite una curva de aprendizaje accesible y abundante documentación.
Es compatible con la placa ESP32 mediante el uso del ESP32 Arduino Core, lo que significa que se pueden utilizar tanto funciones específicas del hardware del ESP32 como las propias del ecosistema Arduino.
El nombre del archivo y el contexto indican que se utiliza la tecnología LoRa (Long Range), que es un sistema de comunicación inalámbrico de largo alcance y bajo consumo. Sus características principales son:
Largo Alcance: Ideal para aplicaciones en exteriores o en ambientes con obstáculos, donde se requieren distancias grandes sin necesidad de infraestructura de red.
Bajo Consumo: Permite que la solución sea eficiente en términos energéticos, lo cual es crucial en proyectos portátiles o alimentados por batería.
Frecuencia de Operación: Habitualmente se utilizan bandas sub-GHz (por ejemplo, 433 MHz, 868 MHz o 915 MHz dependiendo de la región) para minimizar interferencias y maximizar la penetración de señal.
Explicación:
Se importan las bibliotecas necesarias para la comunicación LoRa, la pantalla OLED, los sensores de presión y temperatura, y el módulo GPS.
Explicación:
Se crean los objetos para el sensor BMP280 y el módulo GPS. Además, se configuran los pines de recepción y transmisión del GPS.
Explicación:
Se define la pantalla OLED con su tamaño y dirección en el bus I2C para mostrar información en tiempo real.
Explicación:
Se especifican los pines utilizados para la conexión con el módulo LoRa SX1276, que se encargará de la transmisión de datos.
Explicación:
Se definen los pines para los sensores de gas MQ135 y MQ9. Además, se configura un buzzer que se activará si la altitud supera los 650 metros.
Explicación:
Se inicializan los sensores, la pantalla OLED y el módulo LoRa. Si alguna de estas inicializaciones falla, el código entra en un bucle infinito para evitar problemas.
Explicación:
Se leen los valores de los sensores (temperatura, altitud, presión, calidad del aire y metano) y se muestran en la pantalla OLED. Luego, si la altitud supera los 650m, se activa el buzzer. Finalmente, se obtiene la ubicación GPS y se envían los datos a través de LoRa.
Explicación:
Se toma la información recolectada y se empaqueta en un mensaje que es enviado de forma inalámbrica a través del módulo LoRa.
Explicación:
En lugar de usar delay(), esta función permite procesar los datos GPS mientras espera, asegurando que la información se mantenga actualizada.
Explicación:
Esta función formatea y muestra los datos en la pantalla OLED, permitiendo visualizar la información en tiempo real.
Explicación:
Convierte los valores GPS en texto legible antes de ser enviados o mostrados en la pantalla.