domingo, 5 de octubre de 2025

Diseño de CANSAT

CANSAT

Este proyecto de CANSAT incluye una placa de control ESP32 TYPE-C CH340C, termohigrómetro DHT-11, sensor de presión atmosférica BMP280, acelerómetro y giroscopio MPU6050, GPS NEO-6M, y un módulo transceptor LoRa RFM95, que se comunica con una estación en tierra que dispone del mismo modelo de transceptor para enviar los datos recogidos por los sensores. A continuación se puede ver como queda el conjunto sin la cubierta protectora ni el paracaídas.

El giroscopio y el sensor de presión atmosférica se conectan sobre los dos mismos cables del bus I2C.

Las piezas de la estructura de plástico se pueden encontrar en Thingiverse. El peso total del CANSAT con su cubierta y la pila de 9 voltios es de 204 gramos.

Estación de seguimiento

Mediante un transceptor LoRa el CANSAT envía sus datos a tierra a un módulo que también dispone de una placa de control ESP32 TYPE-C CH340C, una pantalla OLED en donde se van mostrando los datos recibidos y otro transceptor LoRa RFM95, que se comunica el CANSAT. 
 

La estación de seguimiento está montada en una caja de plástico cuyas piezas se pueden encontrar en Thingiverse.

ESP32D N4XX TYPE-C CH340C

Para el control del CANSAT utilizaremos un conjunto de microcontrolador ESP32 TYPE-C CH340C de 30 pines y zócalo de desarrollo en donde conectaremos todos los sensores y el módulo de comunicaciones LoRa.

En el entorno de programación SteamakersBlocks se ha de seleccionar la placa ESP32 / WROOM y en el IDE de Arduino la placa ESP32-WROOM-DA Module.

Las funciones de los diferentes pines se puede ver en la siguiente imagen.

Para poder ver la similitud en los pines a continuación se muestra la distribución de pines de la ESP32 STEAMakers.

Termohigrómetro DHT-11

El termohigrómetro DHT-11 puede funcionar a 3,3 y a 5 voltios. Lo he conectado a 3,3 voltios y funciona perfectamente. Se puede conectar en cualquiera de los pines digitales.



A continuación se muestra un programa para el entorno SteamakersBlocks. El pin DATA del termohigrómetro está conectada al pin 21 del ESP32.

Sensor de presión atmosférica BMP280

El sensor de presión atmosférica BMP280 funciona con 3,3 voltios y tiene la dirección (0x76) para el bus I2C. El sensor proporciona los valores de la presión atmosférica, la altitud y la temperatura. A continuación se pueden ver los pines del mismo como han de estar conectados.


El BMP280 se conecta al puerto I2C y en el ESP32 las conexiones han de ser las que se muestran a continuación. El pin SDA del puerto I2C al pin D21 del microcontrolador y el SCL al pin D22.

A continuación se muestra un programa para el entorno SteamakersBlocks.

De la disposición de bloques anterior el código correspondiente es el que se muestra a continuación:

#include <Wire.h>

#include <Adafruit_BMP280.h>

Adafruit_BMP280 bmp280;

void setup()

{

Serial.begin(115200);

Serial.flush();

while(Serial.available()>0)Serial.read();

bmp280.begin(0x76);

bmp280.setSampling(Adafruit_BMP280::MODE_NORMAL,Adafruit_BMP280::SAMPLING_X2,Adafruit_BMP280::SAMPLING_X16,Adafruit_BMP280::FILTER_X16,Adafruit_BMP280::STANDBY_MS_500);

}

void loop()

{

yield();

   Serial.print(String("Presión: "));

   Serial.print((bmp280.readPressure()/100.0));

   Serial.println(String(" mb"));

   Serial.print(String("Altitud: "));

   Serial.print(bmp280.readAltitude());

   Serial.println(String(" m"));

   delay(4000);

}

Si se abre la consola el programa va enviando cada cuatro segundos el valor de la presión atmosférica y la altitud.

Acelerómetro y Giroscopio MPU6050

El MPU6050 es una unidad de medición inercial o IMU (Inertial Measurment Units) de 6 grados de libertad (DoF) pues combina un acelerómetro de 3 ejes y un giroscopio de 3 ejes. Se ha de alimentar a 3,3 voltios.


El giroscopio se conecta al puerto I2C y en el ESP32 las conexiones han de ser las que se muestran a continuación. El pin SDA del puerto I2C al pin D21 del microcontrolador y el SCL al pin D22.

GPS NEO-6M

El módulo GPS NEO-6M nos permite obtener datos GPS en formato NMEA. Se pueden obtener fácilmente la latitud, la longitud, la altitud, la velocidad y la hora UTC usando la biblioteca TinyGPSPlus. Se ha de alimentar a 3,3 voltios.


Las conexiones al ESP32 son las que se muestran a continuación. En este caso el pin RX del GPS está conectado al pin TX2 (GPIO17) del ESP32 y el pin TX del GPS al pin RX2 (GPIO16) del ESP32.

Módulo transceptor LoRa RFM95

A continuación se muestra el esquema de patillaje del módulo transceptor LoRa RFM95.


El módulo LoRa RFM95 se puede conectar al ESP32 por los pines: DIO0 conectado al GPIO2 del ESP32, RESET al GPIO14, NSS al GPIO5, SCK al GPIO18, MOSI al GPIO23 y MISO al GPIO19, tal como se muestra a continuación.

En este proyecto se ha variado un poco esta disposición, de forma que DIO0 ha sido conectado al GPIO12 del ESP32, RESET al GPIO13, NSS al GPIO5, SCK al GPIO18, MOSI al GPIO23 y MISO al GPIO19.

En las pruebas realizadas se ha alcanzado en tierra una distancia máxima de 340 metros de forma no muy estable, ya que frecuentemente la comunicación era errónea, con una RSSI (Indicador de Intensidad de la Señal Recibida) de -103 dBm. El emisor se situó en el balcón de un segundo piso, colocado en posición vertical sobre una silla, y el receptor en un paso elevado sobre las vías del tren. Entre los dos puntos solamente existen unos árboles que tapan la fachada del edificio. El paso elevado está montado sobre una estructura de hierro que posiblemente también se queda con parte de la señal.

Al ir bajando el receptor desde el segundo no ha perdido la señal en el interior del ascensor. Curiosamente hay un punto de sombra en la planta baja a la salida del ascensor y después vuelve a coger señal. Durante el recorrido hacia el paso elevado del ferrocarril hay muchas zonas en donde no se recibe señal, dependiendo de los obstáculos que se encuentre a su paso.

Cuando el emisor y el receptor están uno junto a otro el RSSI del receptor es de -45 dBm. 

Módulo transceptor LoRa SX1262

El módulo LoRa Core1262-868M incorpora un chip RF SX1262 de nueva generación, mayor eficiencia energética y mayor distancia de transmisión que el SX1278 tradicional, con una alta capacidad anti interferencia.





Con esta disposición de pines, de forma que DIO1 esté conectado al GPIO12 del ESP32, RESET al GPIO13, CS al GPIO5, CLK al GPIO18, MOSI al GPIO23 y MISO al GPIO19 y el entorno de programación de STEAMakers Blocks no he conseguido que funcione. 
 
También he probado que DIO1 esté conectado al GPIO14 del ESP32, RESET al GPIO12, CS al GPIO5, CLK al GPIO18, BUSY al GPIO 13, MOSI al GPIO23 y MISO al GPIO19, pero tampoco he conseguido que funcione en el entorno de programación de STEAMakers Blocks.

En Github podemos encontrar unos sencillos programas para este transceptor. 

CONEXIONES SX1262 ↔ ESP32

Función SX1262 Pin del SX1262 Conectar al pin ESP32 Descripción

NSS / CS         CS / NSS     GPIO 5 (recomendado) Chip Select SPI

SCK         SCK     GPIO 18                         SPI Clock

MOSI         MOSI     GPIO 23                         SPI Master Out

MISO         MISO     GPIO 19                         SPI Master In

DIO1         DIO1     GPIO 14                         Interrupciones / eventos

BUSY         BUSY     GPIO 13                         Señal de ocupado

NRST         RESET     GPIO 12                         Reset del SX1262

3.3V         VCC     3V3 ESP32                         Alimentación

GND         GND     GND                                 Tierra común


Almacenamiento de datos en una tarjeta Micro SD

Para almacenar los datos de los diferentes sensores se utiliza una tarjeta Micro SD. En la placa ESP32 STEAMakers el pin CLK (SCK) del tarjetero está unido al pin GPIO15 del ESP32, el pin MISO al GPIO32, el pin MOSI al GPIO33 y el CS no está conectado. He probado un tarjetero con la misma disposición de pines conectados al microcontrolador ESP32D N4XX, pero no he conseguido comunicarme  con la tarjeta SD. He obtenido el mismo resultado conectando también el pin CS. También he probado a conectar en la placa ESP32 STEAMakers el pin CLK (SCK) del tarjetero está unido al pin GPIO18 del ESP32, el pin MISO al GPIO19, el pin MOSI al GPIO23 y el CS al GPIO5, que son las que tiene la placa ESP32D N4XX, pero tampoco ha tenido éxito. 

Por esta razón en la estación de tierra utilizaré una ESP32 STEAMakers que ya lleva incorporado el tarjetero.

Conexión de los pines de diferentes versiones de ESP32 a un tarjetero  Micro SD

SPI Pin NameESP8266ESP32ESP32‑S2ESP32‑S3ESP32‑C3ESP32‑C6ESP32‑H2
CS (SS)GPIO15GPIO5GPIO34GPIO10GPIO7GPIO18GPIO0
DI (MOSI)GPIO13GPIO23GPIO35GPIO11GPIO6GPIO19GPIO25
DO (MISO)GPIO12GPIO19GPIO37GPIO13GPIO5GPIO20GPIO11
SCK (SCLK)GPIO14GPIO18GPIO36GPIO12GPIO4GPIO21GPIO10

Programa de prueba

Satélite

Para cargar el programa he seleccionado en STEAMakersBlocks la placa ESP32 STEAMakers, que es la que dispone de bloques para LORA. El programa se carga sin problemas y todo ello funciona perfectamente como si se tratara en realidad de esta placa, aunque la placa que se utiliza en realidad es la ESP32 TYPE-C CH340C.

El GPS lo he conectado en un primer momento de forma que su pin RX esté unido al pin TX (D1)(GPIO1) del microcontrolador y el TX al pin RX (D0)(GPIO3) del microcontrolador. Como que este puerto serie es el que se usa para comunicarse con el ordenador, para poder cargar el programa o conectarse por la consola se han de desconectar los dos cables que unen el GPS y el microcontrolador mientras dure esta operación.


A continuación he cambiado la conexión del GPS del puerto serie RX0, TX0 al RX2, TX2. De esta forma el GPS conecta su pin RX al pin TX2 (D4)(GPIO17) del microcontrolador y el TX al pin RX2 (D5)(GPIO16) del microcontrolador. 

Ahora el programa queda de la siguiente manera:


 

Estación de seguimiento

Con este programa he probado el módulo transceptor LoRa RFM95, conectado tanto a las placas ESP32D N4XX, como a la ESP32 STEAMakers, y con las dos ha funcionado perfectamente.





Montaje

Todos loes elementos electrónicos y la pila de 9 voltios van alojados en una carcasa de plástico formada por tres piezas unidas con tornillos.

A continuación se puede ver arriba la parte que correspondería a la base del CANSAT con el alojamiento del interruptor.

El primer elemento que se ha atornillado, tal como se puede ver al continuación es el termohigrómetro DHT-11.


Aquí ya están todos los elementos montados.


En esta cara se puede ver el microcontrolador con el conector de alimentación eléctrica.


Desde aquí se aprecian arriba la antena del GPS, algo más abajo la placa de la electrónica del GPS, que se comunica con el microcontrolador por el puerto serie. Más abajo se encuentran, a la izquierda el sensor de presión atmosférica BMP280 y el acelerómetro y giroscopio MPU6050, y a la derecha el termohigrómetro DHT-11.


Desde aquí se aprecia mejor el acelerómetro y giroscopio MPU6050.


Aquí se ve la electrónica del GPS NEO-6M con su conexión para la antena cerámica. Esta parte queda tapada después por la placa del microcontrolador. Cuando el GPS funciona correctamente y recibe señal de los satélites el LED rojo parpadea, pero este led queda pues detrás del microcontrolador por lo que se ha de fijarse uno bien para apreciarlo.


Aquí se ve la misma placa del GPS por su parte de atrás.


Esta es la antena cerámica del GPS y la anilla de alambre para fijar el paracaídas.


La misma anilla vista de cerca.


Para fijar bien la anilla se coloca silicona en los extremos de alambre que quedan en el interior.


Esta es la zona inferior antes de colocar el interruptor.

Ahora ya se ha cableado completamente todo el conjunto. Aquí se ve el alojamiento de la pila.


Vista del acelerómetro.


De este lado se aprecia el GPS con su antena a la derecha.


Vista del interruptor y la antena del transceptor LORA.


En este lado se encuentra el microcontrolador.

Otros elementos

A continuación se pueden ver las dimensiones de otros elementos como la pila de 9 voltios y el interruptor.





















No hay comentarios: