Skip to content

Latest commit

 

History

History
379 lines (270 loc) · 18.6 KB

README_ES.md

File metadata and controls

379 lines (270 loc) · 18.6 KB

english | spanish

Static Badge

SENSOR COOPER V3.2 - MEDIALAB_ LPWAN: SENSOR ULTRASÓNICO CONECTADO POR LORA PARA MEDIR EL NIVEL DE AGUA DEL ARROYO DE SAN MIGUEL

Hecho con

made-in-ArduinoIDE programmed-for-LilyGOLoRa32



Introducción ↩️

En homenaje a Martin Cooper, inventor del teléfono móvil en 1973 y Premio Princesa de Asturias 2009, y Arlene Harris y su visión del Internet de las Personas, en MediaLab LPWAN quisimos desarrollar un dispositivo IoT que pudiese mejorar la calidad del campus de la Escuela Politécnica de Ingeniería de Gijón. Como resultado, la idea del Sensor Cooper nació como un nodo conectado por LoRa, sincronizable con The Things Network, que pudiese quedar midiendo el nivel de agua del Arroyo de San Miguel sin ninguna necesidad de hacerle mantenimientos.


Con estos sensores, el objetivo es monitorizar la posibilidad de una inundación en el Edificio Polivalente durante la temporada de lluvias intensas. Específicamente, en 2018, una gran inundación tuvo lugar dejando inservible multitud de equipamiento valorado en decenas de miles de euros que estaban siendo usados por los estudiantes durante las prácticas de laboratorio de diversas asignaturas. Por ello, ésta es una situación que no podemos dejar que se repita:




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 LilyGO LoRa32 OLED v2.1_1.6 (Una placa basada en ESP32 con LoRa implementado y que soporta recarga con panel solar y gestión de batería)


  • Cambios realizados para JSN-SR04T (Sensor ultrasónico de distancia)


Warning

Este sensor es extremádamente sensible a perturbaciones físicas. Estate seguro de alinearlo perfectamente de forma perpendicular con la superficie donde rebote el haz y de tener visión directa a ella

  • Tasa dinámica de transmisión de datos: el intervalo de envío cambia automáticamente su valor entre 20 y 40 minutos en función de la desviación típica de las últimas 5 medidas enviadas a TTN. (Por OTAA, payload_formatter.json es una sugerencia de cómo decodificar los bytes enviados)


  • PCB a medida


Tip

Considera soldar conectores hembra para pines para que los componentes se puedan conectar y desconectar de forma simple en caso de tener que hacer una reparación

  • Carcasa a medida para encajar todos los componentes de la forma más eficiente (Recipiente + Soporte del panel solar + Protector del conector USB)




    Ejemplo de ensamblaje:


Warning

Es muy recomendable emplear filamento de impresión 3D de PETG de color claro para sobrevivir a la radiación solar y a las deformaciones plásticas. Una tórica es una buena opción para fijar y estabilizar el sensor dentro de la campana. Hacen falta cuatro tornillos M3 para fijar el ensamblado


Lista de tareas ↩️

La lista siguiente enumera todas las tareas que conforman el proceso de investigación del proyecto y si se han completado de forma estricta:

  • Entendimiento total de la placa de desarrollo y sus pines
- Algunos pines son conflictivos debido a la falta de documentación del fabricante, por
- lo que aún se están haciendo pruebas
  • Entendimiento total del modo de trabajo del sensor y modos alternativos

  • Implementación por código del sensor

  • Implementación por código de LoRa

  • Implementación por código del modo de bajo consumo

  • Componentes para el modo de bajo consumo

- Se está intentando implementar un transistor para dejar sin 5V de alimentación al
- sensor durante el deep sleep, pero está siendo "retorcido"

Esquema eléctrico con el transistor


  • Diseño de la PCB
- Ya que el hardware para el modo de bajo consumo aún no se ha implementado con
- éxito, la PCB debe esperar
  • Modelado 3D de la carcasa

  • Aplicación para visualizar los datos


Lista de componentes ↩️

Componente Modelo
Placa LilyGO LoRa32 OLED v2.1_1.6
Sensor de distancia JSN-SR04T
MOSFET Canal-N -
Resistencia 2k2
Batería 18650
Panel solar SYP-S0606
PCB A medida (archivo incluido)
Carcasa A medida (archivo inlcuido)

Lista de conexiones ↩️

JSN-SR04T Transistor Resistor 18650 Shield SYP-S0606 LilyGO
trigger - - - - 13
echo - - - - 12
5v S - - - -
GND - indiferente - - GND
- G indiferente - - 15
- D - - - 5V
- - - USB-In USB-Out -
- - - USB-Out - USB-In

Esbozado se ve de la siguienta forma:


Caution

El modelo de placa usado en el boceto de encima es una TTGO T3 v1.3, pero sus pines corresponden con los de la v2.1_1.6


Flujograma (¡Simplificado!) ↩️

graph TD;
  A[Encender] -->|1| B(Despertarse si se está en deep sleep)
  B -->|2| C(Obtener la medida de la distancia y batería)
  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
Loading

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/lorawaterlevelmonitoring/main/, donde el código está disponible para flashear o editar:

  • main.ino
    /*
    Definición de funciones globales
    Variables a ser almacenadas en la memoria RTC
    Funciones 'setup()' y 'loop()'
    */
  • sensor.ino
    /*
    Funciones y variables necesarias para hacer funcionar el sensor
    */
  • ddc.ino
    /*
    Funciones y variables para la implementación de la tasa dinámica de transferencia de datos
    */
  • sleep.ino
    /*
    Funciones para activar el modo deep sleep de la ESP32
    */
  • ttn.ino
    /*
    Funciones de la librería LMIC
    */
  • configuration.h
    /*
    Macros de los sensores y opciones ON/OFF
    */
  • credentials.h
    /*
    Claves OTAA para la sincronización en TTN
    */
  • lmic_project_config.h
    /*
    Banda de frecuencia LoRa y selector del chip de radio
    */

Un análisis más en profundidad viene dado en el propio código ya que cada función está explicada con comentarios.

Tip

Los archivos más importantes a editar son sensor.ino, donde se puede implementar cualquier sensor, y configuration.h, donde se declaran las macros de los periféricos

Caution

Se necesita código adicional para implementar I/O por I2C. Las funciones para hacerlo funcionar están en el proyecto original en TTGO-PAXCOUNTER-LoRa32-V2.1-TTN/main/main.ino


Librerías ↩️

Note

Otras librerías, como la librería SPI, son descargables de forma fácil desde Arduino IDE



Experimento de despliegue ↩️

La primera unidad se ha desplegado cerca de la Escuela Politécnica de Ingeniería de Gijón:




Accede al panel de Grafana1 por medio de este código QR o el link de debajo:


http://4f566df1fed52c6e7fd5f661f64ae3eb.balena-devices.com:8080/d/vJhQNCZgz/sensores-jsn-sr04t-arroyo-de-san-miguel?from=now-24h&orgId=1&to=now&refresh=1m



Licencia ↩️

Este proyecto está licenciado bajo la GPL-3.0 license. Contiene código de rwanrooy/TTGO-PAXCOUNTER-LoRa32-V2.1-TTN


Contacto ↩️

Important

Responderemos amablemente a dudas y leeremos sugerencias: Gmail Badge

Más información sobre nuestras actividades: Linkedin Badge

Autores: Daniel Rodríguez Moya, Óscar Gijón, Ramón Rubio y el grupo de trabajo de MediaLab_ LPWAN :shipit:

Footnotes

  1. Instrucciones sobre como desplegar paneles de Grafana en el siguiente repo medialablpwan/documentacion.