Go to file
f 20bea07870 aclarar el uso de diodos 2022-06-08 12:48:28 -03:00
0x01-temperatura turbidez 2022-04-05 18:42:54 -03:00
0x02-turbidez update 2022-04-06 18:48:19 -03:00
esquematicos update 2022-05-06 16:44:52 -03:00
placa placa lista para producción y documentación 2022-06-08 10:44:49 -03:00
raspberry correcciones 2022-04-05 17:56:40 -03:00
README.md aclarar el uso de diodos 2022-06-08 12:48:28 -03:00

README.md

Sistema Modular para la Captura de Datos y Muestras Ambientales

nombre clave: 'nodemecu'

El Sistema Modular para la Captura de Datos y Muestras Ambientales ('nodemecu') es un desarrollo conjunto de Herramientas para el Buen Vivir A.C. (México), la cooperativa de desarrollo digital SUTTY (Argentina), BarraDev infraestructuras y telemetría (Argentina) y la Cooperativa de Producción Tecnológica, Gráfica y Audiovisual LTDA (Argentina) con el apoyo económico de Witness (USA), como parte del acompañamiento realizado al Frente de Pueblos en Defensa de la Tierra y el Agua de Puebla, Morelos y Tlaxcala en el marco del proyecto de fortalecimiento “Coral”.

'nodemecu' consiste en un sistema electrónico autónomo sumergible con sensores que en tiempo real escanean las condiciones ambientales y envían esa información hacia un servidor web que almacena y despliega los datos de Temperatura, PH, Conductividad y Turbidez. Ante la detección de algún indicador de posible contaminación en el agua captura una muestra líquida de manera automatizada y sin intervención humana.

La intención del proyecto es brindar una herramienta accequible y de bajo costo a las comunidades y organizaciones en defensa del territorio, que necesiten fortalecer su estrategia jurídica con datos y cifras que comprueben la contaminación del medio ambiente.

El sistema, tanto en su hardware como software, ha sido diseñado de manera modular, de tal manera que permite la fácil implementación de otros sensores y sistemas de captura o comportamiento a partir de los diseños originales, todos los cuales serán publicados bajo licencias de software y hardware libre y puestos a disposición de las comunidades que lo necesiten.

Durante los últimos 6 meses se ha trabajado intensamente en el desarrollo del software que permite el registro, transmisión, almacenamiento y despliegue de datos, el control de los sensores, el diseño de placa de montaje de los componentes y en los exteriores del sistema. Actualmente estamos iniciando la etapa de prototipado, que consiste en la construcción real del sistema, para en caso de cumplir con las espectativas de diseño, inicie su replicación y masificación.

Para culminar esta etapa final antes de la implementación real en campo, hemos comprometido el apoyo del Instituto de Desarrollo e Innovación Tecnológica de la Universidad Iberoamericana de Puebla (IDIT - IBERO), quienes nos brindarán acompañamiento y asesoría.

Instalación

Requisitos

  • Raspberry (cualquier versión).
  • Sistema operativo 'Raspberry Pi OS Lite.
  • Instalador 'Raspberry Pi Imager'
  • Una tarjeta MicroSD Clase 10 de al menos 4GB.

Instalación del sistema operativo

Paso 1

Descargar la ultima versión de 'Raspberry Pi OS Lite':

https://www.raspberrypi.com/software/operating-systems/

Paso 2

Descargar el instalador 'Raspberry Pi Imager':

https://downloads.raspberrypi.org/imager/imager_latest.exe

Paso 3

Insertar la tarjeta MicroSD en la computadora.

Paso 4

Abrir 'Raspberry Pi Imager':

  • CHOOSE OS: Seleccionar la imagen 'Raspberry Pi OS Lite' descargada el paso 1.
  • CHOOSE STORAGE: Seleccionar la tarjeta MicroSD.
  • WRITE: Comienza a grabar el sistema operativo en la tarjeta.

Paso 5

Una vez que finaliza la grabación extraer la tarjeta MicroSD y colocarla en la Raspberry.

Instalación de 'nodemecu'

Paso 1

Abra una terminal e instale 'git'.

$ sudo apt update && apt install git

Paso 2

Clonar el repositorio 'nodemecu'.

$ git clone https://gitea.nulo.in/Nodemecu/nodemecu.git

Resultado.

Clonando en 'nodemecu'...
remote: Enumerating objects: 179, done.
remote: Counting objects: 100% (179/179), done.
remote: Compressing objects: 100% (176/176), done.
remote: Total 179 (delta 97), reused 0 (delta 0), pack-reused 0
Recibiendo objetos: 100% (179/179), 394.81 KiB | 933.00 KiB/s, listo.
Resolviendo deltas: 100% (97/97), listo.

Paso 3

Ingresar al directorio 'nodemecu'.

$ cd nodemecu

Lanzar script de instalación.

$ sudo ./instalador

Resultado.

...
Created symlink /etc/systemd/system/multi-user.target.wants/nodemecu.service → /lib/systemd/system/nodemecu.service.

4. Configurar

- Ejecute 'sudo nodemecu configurar' para comenzar.

-Ejecute 'sudo nodemecu modo sensores' para obtener datos desde sensores.

- Ejecute 'sudo nodemecu captura iniciar' para comenzar a tomar datos de sensores o datos de prueba.

- Ejecute 'sudo systemctl start nodemecu.service' para iniciar el envío de datos.

Configurar dispositivo

El 'CLI' es la interfaz de comandos para administrar 'nodemecu', debemos utilizarla para los primeros pasos luego de la instalación del programa:

  • Determinar el nombre del dispositivo.
  • Determinar la URL del servidor donde se enviarán los datos.
  • Intervalo de toma de mediciones.

Paso 1: Configuración

Ejecute el asistente de configuración y complete las preguntas.

$ sudo nodemecu configurar

Resultado.

Complete los cambios a continuación: 
		
Nombre del dispositivo.
nombre: calle falsa 123 
nombre: calle_falsa_123

Servidor de entrega de datos.
servidor (ej. https://url.del/servidor): https://servidor.de.envio                 
Servidor https://servidor.de.envio

Intervalo de toma de muestras, entre 1 y 60 minutos.
intervalo: 5
Intervalo seteado en 5

Creando juego de llaves
Generating public/private ecdsa key pair.
Your identification has been saved in /opt/nodemecu/llaves/calle_falsa_123.pem.
Your public key has been saved in /opt/nodemecu/llaves/calle_falsa_123.pem.pub.
The key fingerprint is:
SHA256:7ZSKlfxybO/ssa63EeGVRDzMjcNKCOI4Kfx++V7o9vg root@raspberrypi
The key's randomart image is:
+---[ECDSA 256]---+
|      . .. . *oo |
| .   + .  . ..O..|
|  o + .    ...oo |
|   o . . o o.o   |
|    .   S + o    |
|   .   + B   .   |
|    . + + B o    |
|     . o.* o.+   |
|       o=oE*O.   |
+----[SHA256]-----+

El modo de operación por defecto es 'test' y se envían datos simulados, cambie a 'sensores' con el comando 'sudo nodemecu modo sensores'

Paso 2: Modo de operación

Determine si los datos a registrar son simulados u obtenidos de sensores físicos, 'nodemecu' por defecto esta configurado para trabajar con datos simulados, si lo prefiere así entonces salte este paso, de lo contrario cambie el modo de operación.

Cambio de modo de operación.

$ sudo nodemecu modo sensores

Paso 3: Captura o toma de datos

Al ser instalado 'nodemecu' no realiza ningún tipo de captura de datos, para ello debe activar la captura.

Activar captura.

$ sudo nodemecu captura iniciar

Resultado.

Iniciando la captura de datos en modo 'sensores'

Desea continuar? Presione 'enter' para continuar o 'ctrl-c' para cancelar...

Se tomarán datos cada 5 minutos.

Paso 4: Envío de datos

Nodemecu utiliza el administrador de servicios 'systemd' para gestionar el programa que se encarga de enviar al servidor los datos registrados, se debe activar e iniciar el servicio para comience el envío de datos.

Activar servicio con el arranque del sistema, si no realiza este paso deberá hacer el inicio manual cada vez que se arranque el sistema.

$ sudo systemctl enable nodemecu.service 

Resultado.

Created symlink /etc/systemd/system/multi-user.target.wants/nodemecu.service → /lib/systemd/system/nodemecu.service.

Iniciar el envío de datos.

$ sudo systemctl start nodemecu.service

Ver estado del servicio.

$ sudo systemctl status nodemecu.service

Resultado (se sale con 'q').

● nodemecu.service - Procesador de pila y transmisor de datos Nodemecu.
   Loaded: loaded (/lib/systemd/system/nodemecu.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2022-03-11 16:25:57 -03; 39s ago
 Main PID: 18283 (registrador)
    Tasks: 2 (limit: 2181)
   CGroup: /system.slice/nodemecu.service
           ├─18283 /bin/bash /opt/nodemecu/registrador
           └─18567 ping -c 1 fsf.org
...

Comandos nodemecu

Lista de comandos de ' nodemecu CLI'

Establecer o cambiar nombre del dispositivo.

Establece o cambia el nombre definido para el dispositivo, se recomienda usar solo caracteres alfanuméricos y sin espacios.

$ sudo nodemecu nombre nombre_del_dispositivo

Servidor de entrega de datos

Establece o modifica el servidor de entrega de datos.

$ sudo nodemecu servidor https://url_o_ip_del.servidor

Modo de operación

Cambia al modo de operación con respecto a la captura de datos:

  • 'test' genera y registra datos simulados.
  • 'sensores' toma datos realoes de los sensores.

Para generar datos simulados.

$ sudo nodemecu modo test

Para tomar datos de sensores.

$ sudo nodemecu modo sensores

Toma de datos

Permite detener la toma o captura de datos ya sean simulados o de sensores.

Para iniciar la captura.

$ sudo nodemecu captura iniciar

Para detener la captura

$ sudo nodemecu captura detener

Intervalo de toma de datos

Cada cuanto tiempo se toman datos, sean simulados o de sensores. Indique en minutos (1~60).

Configurar intervalo, en el ejemplo se configura para que tome datos cada 1 minuto.

$ sudo nodemecu intervalo 1

Llaves

Cada registro va firmado para validar la autenticidad y que no haya sido modificado el envío al servidor, para ello se utilizan llaves digitales, la creación de estas llaves esta automatizada cuando se ejecuta el comando $ sudo nodemecu configurar . Puede generar en cualquier momento una nueva llave, se recomienda esta acción si modifica el nombre del dispositivo.

Generación de llave.

$ sudo nodemecu cllave

Envío de datos

El envío de datos es una operación separada de la captura, el segundo toma datos y los guarda en el dispositivo, el primero envía esos datos a un servidor para procesar y mostrar la información.

Iniciar el envío de datos.

$ sudo systemctl start nodemecu.service

Detener el envío de datos.

$ sudo systemctl stop nodemecu.service

Activar el envío de datos con el arranque del sistema.

$ sudo systemctl enable nodemecu.service

Desactivar el envío de datos con el arranque del sistema.

$ sudo systemctl disable nodemecu.service

Ver el estado del servicio de envío de datos.

$ sudo systemctl status nodemecu.service

Placas (PCB)

La última versión de la placa se encuentra en placas/nodemecu.fz. Es un archivo en el formato de Fritzing que permite editar esquemático, protoboard y PCB en un mismo archivo.

El archivo se guarda en .fz y no en .fzz para que podamos tener registro de cambios con git. El segundo es un formato comprimido.

Para producir las placas físicas, primero se exporta el archivo Fritzing a PDF utilizando el botón "Exportar para PCB".

Los archivos imprimibles son los que tienen el sufijo mirror, con estos se pueden imprimir PCBs de forma casera.

Funcionamiento

Todos los Arduinos se encuentran conectados con la Raspberry en modo "maestro-esclavos" a través de una conexión serie de tipo UART.

Esto permite que la Raspberry pregunte y solo un Arduino responda por vez, usando la misma conexión serie.

Cada Arduino tiene un ID de dispositivo que es único en toda la placa:

Sensor ID
Temperatura 1
Turbidez 2
pH 3
Conductividad 4

La conexión serie se realizó adaptando el modelo "UART/TTL-Serial network with single master and multiple slaves", donde los RX (recepción) y TX (transmisión) de los Arduinos y Raspberry están conectados entre sí. Para activar la transmisión (respuesta) de los Arduinos, los diodos Schottky son activados con un pull-up de 5V a través de una resistencia de 10K.

Para poder activar la recepción de la Raspberry a través de un GPIO de 3.3V, se introdujo un divisor de tensión que baja el voltaje de 5 a 3.3V en la misma línea.

Con esta conexión los Arduinos y la Raspberry pueden hablar entre sí.

Historial

El historial de desarrollo de Nodemecu se encuentra en el directorio esquematicos/.

Gerber

Para generar los archivos Gerber, con el archivo Fritzing abierto, ir al menú Archivo > Exportar > Para producción > Gerber Extendido (RS-274X) y elegir un directorio/carpeta donde guardar los archivos.