Proyecto basado en: alexcorvis84/mini-lora-weatherstation
Introducción ↩️
Como parte de mi Trabajo de Fin de Grado sobre drones y sensorización, en Medialab_ LPWAN, se me dio a conocer la tecnología de LoRaWAN. Con ella, entendí rápidamente el potencial de trabajar en un sensor de calidad de aire que montar en un drone de long range para ser usado como plataforma móvil y medir a kilómetros de distancia atmósferas hostiles en caso de accidente donde fuese peligroso enviar a un equipo de personas. Como resultado, nació el sensor on-board que os voy a mostrar como un nodo conectado por LoRa, sincronizable con The Things Network, que montarle al drone que construí sin que la cobertura fuese un factor limitante.
En este repositorio, encontrarás todos los archivos y guías educativas necesarias para entender con totalidad e incluso tomarte la libertad creativa de mejorar este proyecto. Las carpetas y archivos han sido llamados con nombres que se explican a ellos mismos para hacer la navegación más intuitiva.
Características principales ↩️
-
Desarrollado usando la HelTec CubeCell HTCC-AB01 (Una placa de muy bajo consumo con LoRa implementado y que soporta recarga con panel solar y gestión de batería)
-
Cambios realizados para añadirle, además, un sensor CCS811 (Sensor de partículas volátiles)
-
Carcasa a medida para encapsular todos los componentes a un tamaño similar al de la batería del drone (Envase + Recipiente)
Ejemplo de ensamblaje:
Warning
Hacen falta seis tornillos M3 para fijar el ensamblado y dos bridas para ajustarlo al frame del drone
Lista de componentes ↩️
Componente | Modelo |
---|---|
Placa | CubeCell HTCC-AB01 |
Sensor atmosférico | BME280 |
Sensor de partículas volátiles | CCS811 |
Batería | LiPo 1S 300mAh |
Carcasa | A medida (archivo inlcuido) |
Lista de conexiones ↩️
BME280 | CCS811 | LiPo | CubeCell |
---|---|---|---|
SDA |
SDA |
- | SDA |
SCL |
SCL |
- | SCL |
VIN |
- | - | VEXT |
GND |
GND |
- | GND |
- | VCC |
- | VDD |
- | WAK |
- | GPIO0 |
- | - | Con Bat |
Con Bat |
En una protoboard se ve de la siguienta forma:
Note
Teniendo en cuenta que el programa hace uso del deep sleep de la CubeCell, el sensor BME280 se pone en sleep entre mensajes gracias a que el pin VEXT
se puede gobernar (HIGH/LOW), mientras que el CCS811, por su uso de agentes químicos para obtener las medidas, se conecta al pin VDD
estático (incluso en deep sleep aporta corriente), y es el pin GPIO0
,conectado al pin WAK
del sensor, el que emite una señal digital (HIGH/LOW) el que lo echa a sleep
Flujograma (¡Simplificado!) ↩️
graph TD;
A[Encender] -->|1| B(Conectarse a una red LoRaWAN)
B -->|2| C(Obtener las medidas de la batería y de los sensores BME y CCS)
C -->|3| D(Mandar los bytes a TTN)
D -->|4| E(Temporizar la tasa de transmisión de datos)
E -->|5| F(Ir a deep sleep)
F -->|6| B
Archivos de código ↩️
En esta sección, se da una descripción breve a cómo está distribuido el código entre los archivos en medialablpwan/droneloraminiairqualitystation/main/src/
, donde el código está disponible para flashear o editar:
main.cpp
/* Algoritmo completo */
credentials.h
/* Claves OTAA para sincronizarse en TTN */
Un análisis más en profundidad viene dado en el propio código ya que cada función está explicada con comentarios.
Ejemplos consultados ↩️
En esta sección se listan los ejemplos de código oficiales de HelTec usados para adaptar el proyecto original a los objetivos de éste y si han sido finalmente útiles:
Experimento de implementación ↩️
Accede al panel de Grafana1 por medio de este código QR o el link de debajo:
Licencia ↩️
Este proyecto está licenciado bajo la GPL-3.0 license. Contiene código de alexcorvis84/mini-lora-weatherstation
Contacto ↩️
Autores: Daniel Rodríguez Moya, Iván Graña y el grupo de trabajo de MediaLab_ LPWAN
Footnotes
-
Instrucciones sobre como desplegar paneles de Grafana en el siguiente repo
medialablpwan/documentacion
. ↩