|
Sensor Cooper V3.2 - Medialab_ Lpwan: Sensor ultrasónico de Lora para medir el nivel de agua de San Miguel Creek
Impulsado por
En honor a Martin Cooper, el Premio Princesa de Asturias 2009, y Arlene Harris y su visión de la PIO, Internet de las personas, en Medialab_ Lpwan, queríamos desarrollar un dispositivo IoT que pudiera mejorar la calidad de la Escuela Politécnica de Ingeniería de Gijón. Como resultado, la idea del sensor de Cooper entró como un dispositivo Lora, sincronizable con la red Things, que podría dejarse midiendo el nivel del agua del arroyo de San Miguel sin necesidad de mantenancia.

Con estos sensores, el objetivo es monitorear la posibilidad de una inundación en el edificio principal durante la temporada de fuertes lluvias. Específicamente, en 2018, se produjo una inundación importante que se convirtió en inútiles muchos equipos caros de los pisos inferiores que los estudiantes utilizaron durante las prácticas de laboratorio de muchos subjets:



En este repositorio, encontrará todos los archivos y guías de enseñanza necesarias para comprender completamente e incluso tomar la libertad creativa para mejorar este proyecto. A las carpetas y archivos se les ha dado un nombre de autoexplicación para que la navegación sea más intuitiva.
Características principales ↩️
Desarrollado con Lilygo Lora32 OLED V2.1_1.6 (tablero basado en ESP32 con capacidades LORA incorporadas que admite la recarga solar y la gestión de la batería)

Cambios realizados para JSN-SR04T (sensor de distancia ultrasónica)

Advertencia
Este sensor es extremadamente sensible a las perturbaciones físicas. Asegúrese de alinearlo perfectamente perpendicularmente a la superficie donde el haz ultrasónico rebota y también importarle tener una visión directa.
Implementación de la tasa de transmisión de datos dinámicos: el intervalo de envío cambia dinámicamente su valor entre 20 y 40 minutos, dependiendo de la desviación típica de las últimas 5 distancias enviadas a la red Things (por OTAA; File payload_formatter.json es una sugerencia sobre cómo decodificar los bytes enviados)

PCB personalizado

Consejo
Considere soldar conectores de pin hembra para que los componentes electrónicos se puedan conectar y desconectar si se debe hacer una reparación
Vivienda personalizada para adaptarse a todos los elementos de la manera más eficiente (contenedor + soporte de panel solar + protector USB)



Ejemplo de ensamblaje:

Advertencia
Se recomienda el filamento de impresión 3D de color transparente PETG para sobrevivir a la radiación solar y las deformaciones plásticas. Una junta tórica también es una buena opción para arreglar y estabilizar el sensor dentro de la campana. Se necesitan cuatro tornillos M3 para fijar el ensamblaje
La siguiente lista enumara todas las tareas involucradas en el proceso de investigación de este proyecto y si se han completado estrictamente:
- Some pins are conflictive due to poor manufacturer documentation, so testing is still being
- carried out Comprensión completa del modo de trabajo del sensor y modos alternativos
Implementación del código del sensor
Implementación del código Lora
Implementación del código de energía bajo
Componentes de hardware de baja potencia
- A transistor is being tried to be implemented so the sensor can be powered-on from the
- board's 5V pin and powered-off when going to deep slee, but it is getting tricky 
Esquema eléctrico con el transistor
- As low power hardware has not been fully implemented, PCB has to wait Modelado 3D de carcasa
Aplicación de visualización de datos
Lista de componentes ↩️
| Componente | Modelo |
|---|---|
| Módulo de desarrollo | Lilygo Lora32 OLED V2.1_1.6 |
| Sensor de distancia | JSN-SR04T |
| Mosfet de canal N | Irf540n |
| Resistor | 2k2 |
| Batería | 18650 |
| Panel solar | SYP-S0606 |
| tarjeta de circuito impreso | Personalizado (archivo incluido) |
| Alojamiento | Personalizado (archivo incluido) |
Lista de conexión ↩️
| JSN-SR04T | Transistor | Resistor | Escudo de 18650 | SYP-S0606 | Lilygo |
|---|---|---|---|---|---|
trigger | - | - | - | - | 13 |
echo | - | - | - | - | 12 |
5v | S | - | - | - | - |
GND | - | indifferent | - | - | GND |
| - | G | indifferent | - | - | 15 |
| - | D | - | - | - | 5V |
| - | - | - | USB-In | USB-Out | - |
| - | - | - | USB-Out | - | USB-In |
Esbozado, se ve de la siguiente manera:

Precaución
El modelo de placa utilizado en el boceto anterior es un TTGO T3 V1.3, pero los números de PIN corresponden a los del V2.1_1.6
Diagrama de flujo (¡simplificado!) ↩️
gráfico TD;
A [encender] -> | 1 | B (despierta si duerme profundamente)
B -> | 2 | C (obtenga la distancia y la medición de la batería)
C -> | 3 | D (envíe bytes a TTN)
D -> | 4 | E (tasa de transmisión de datos de tiempo)
E -> | 5 | F (Vaya a dormir profundamente)
F -> | 6 | B
En esta sección, se proporciona una breve descripción de cómo se distribuye el código entre los archivos en medialablpwan/lorawaterlevelmonitoring/main/ , donde el código está disponible y listo para flashear o editar,:
main.ino /*
Definition of global functions
Variables to be stored in the RTC memory
'setup()' and 'loop()' functions
*/sensor.ino /*
Functions and variables needed to make a sensor work
*/ddc.ino /*
Functions and variables for the implementation of the dynamic data transfer rate
*/sleep.ino /*
Functions to activate ESP32's deep sleep mode
*/ttn.ino /*
Functions from LMIC library
*/configuration.h /*
Sensor macros and boolean toggles
*/credentials.h /*
OTAA keys for TTN synchronization
*/lmic_project_config.h /*
LoRa frequency band and radio chip selector
*/Se da un análisis más profundo en el código en sí, ya que los comentarios explican lo que hace cada función.
Consejo
Los archivos más importantes para editar son sensor.ino , donde se puede implementar cualquier sensor, y configuration.h , donde se declaran las macros de los periféricos
Precaución
Se puede necesitar un código adicional si implementa I2C E/S. Las funciones para que funcionen se encuentran en el proyecto original en TTGO-PAXCOUNTER-LoRa32-V2.1-TTN/main/main.ino
Lilygo Board Biblioteca (Pega el enlace en la pestaña Preferences y elige TTGO LoRa32 OLED como Board en Arduino IDE): https://github.com/xinyuan-lilygo/lilygo-lora-series/blob/master/boards/t3_s3_v1_x.json
LMic (copie el contenido del archivo de proyecto main/lmic_project_config.h al archivo de la biblioteca arduino-lmic/project_config/lmic_project_config.h y sin comment la frecuencia adecuada para su región. El boceto siempre busque la carpeta de la biblioteca para la región configurada!): Https://github.com/ccciciCiCi-cholmm.
QuickMedianLib (para obtener valores de distancia más sólidos): https://github.com/luisllamasbinaburo/arduino-quickmedian
ESP Sleep (para reducir el consumo de batería): https://github.com/pycom/pycom-esp-idf/blob/master/components/esp32/include/esp_sleep.h
Nota
Otras bibliotecas, como la biblioteca SPI, se pueden descargar fácilmente desde Arduino IDE
Experimento de implementación ↩️
La primera unidad se ha desplegado cerca de la Escuela Politécnica de Ingeniería de Gijón:



http://4f566df1fed52c6e7fd5f6661f64e3eb.balena-devices.com:8080/d/VjHQnczgz/sensores-jsn-sr04t-arroyo-de-san-miguel?from=now-24h&orgid=1&fo=now&row&refress
Licencia ↩️
Este proyecto tiene licencia bajo la licencia GPL-3.0. Contiene código de rwanrooy/ttgo-paxcounter-lora32-v2.1-ttn
Contacto ↩️
Importante
Responderemos amablemente dudas y leeremos sugerencias:
Más información sobre nuestras actividades:
Autores: Daniel Rodríguez Moya, Óscar Gijón, Ramón Rubio y Medialab_ LPWAN Workgroup
Las instrucciones sobre cómo implementar paneles de Grafana se dan en el repositorio medialablpwan/documentacion . ↩