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.
4. Explicación del código mediante capturas de pantalla
SPI: Se usa para la comunicación con el módulo LoRa.
LoRa: Permite la comunicación de largo alcance.
Wire: Maneja el protocolo I2C para la pantalla OLED.
Adafruit_GFX y Adafruit_SSD1306: Permiten mostrar gráficos y texto en la pantalla OLED.
Se definen las dimensiones de la pantalla.
Se asigna la dirección I2C del display (0x3C es común en módulos OLED).
Se usa para definir un estado "apagado" o “encendido” de un LED sin necesidad de usar 0 o 1 directamente.
Configura los pines del ESP32 para la comunicación con el módulo LoRa SX1276.
ledVerde: Controla el LED integrado en la placa.
contador: Variable de propósito general.
Define el identificador del satélite con el que se comunica.
Establece la frecuencia de operación de LoRa.
Variables para almacenar datos recibidos de sensores, como temperatura, presión y altitud.
rssi: Fuerza de la señal recibida.
paquete: Contenido del mensaje recibido.
metricas: Datos de telemetría extraídos del paquete.
Otras variables para almacenar información de sensores y GPS:
Activa el LED cuando recibe un paquete.
Lee el contenido del paquete recibido y lo almacena en paquete.
Guarda la intensidad de la señal (rssi).
Si el paquete proviene del satélite correcto, extrae los datos de telemetría.
Muestra datos en la pantalla OLED en la línea especificada.
Permite limpiar la pantalla (Clear) o actualizarla (Display).
Divide la cadena metricas usando comas como separadores.
Extrae valores de sensores y los muestra en la pantalla OLED.
Ejemplo:
"Temp: 25°C"
"Alt: 300m"
"Pres: 1013Pa"
Inicializa la pantalla OLED.
Configura la comunicación LoRa y SPI.
Muestra un mensaje de error si la inicialización de LoRa falla.
Revisa si hay paquetes LoRa entrantes.
Si recibe un paquete, lo procesa y muestra los datos en la pantalla.
Imprime los datos por el puerto serie.