1-Explicación de 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.
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.
Se especifican los pines utilizados para la conexión con el módulo LoRa SX1276, que se encargará de la transmisión de datos.
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.
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.
Explicación del codigo
Se incluyen las librerías necesarias para el funcionamiento del ESP32-CAM. La librería esp_camera.h es la encargada de gestionar la cámara y capturar imágenes. La librería SD_MMC.h permite la comunicación con la tarjeta microSD para almacenar las imágenes capturadas.
En este apartado, se define el modelo de la cámara utilizada. El código incluye varias opciones comentadas, pero se ha seleccionado el modelo AI-Thinker, que cuenta con PSRAM (memoria RAM externa). El uso de PSRAM permite capturar imágenes en mayor resolución sin afectar el rendimiento del ESP32.
Se definen dos variables globales para manejar el almacenamiento de las imágenes. La variable photoPrefix contiene el prefijo utilizado para nombrar las imágenes. La variable photoNumber se usa como un contador que se incrementa después de cada captura para asegurar que cada imagen tenga un nombre único.
La función setup() es ejecutada una vez al inicio del ESP32. En primer lugar, se establece la comunicación serial con Serial.begin(115200); para permitir la depuración.
1-Se configura la cámara mediante la estructura camera_config_t. En este bloque de código se establecen los pines específicos de conexión entre el ESP32 y la cámara, además de la frecuencia del reloj y el formato de imagen.
1-La cámara se inicializa utilizando esp_camera_init(). En caso de error, se imprime un mensaje en la consola.
2-Se obtiene el sensor de la cámara y se ajustan algunos parámetros para mejorar la calidad de imagen.
3-Si el modelo de la cámara requiere un ajuste de orientación, se aplica una corrección en la imagen.
Antes de capturar y guardar imágenes, es necesario inicializar la tarjeta SD con SD_MMC.begin(). Si la tarjeta no es detectada o hay un problema, se imprime un mensaje de error y se detiene el programa.
1-El loop() se ejecuta de forma continua, capturando y guardando imágenes cada 2.5 segundos.
2-Se genera el nombre del archivo de imagen utilizando el número de la foto actual.
3-Se abre el archivo en la tarjeta SD en modo escritura y se guarda la imagen.
4-Después de guardar la imagen, se libera la memoria utilizada por la imagen capturada y se espera 2.5 segundos antes de repetir el proceso.