Hola a todos.
Primero agradecer a todas aquellas personas que hacen posible este y otros foros, y que ponen a disposición de los demás su código y muestran sus proyectos.
Soy profe de un colegio en españa, tengo algo de experiencias escribiendo código, y desde siempre me ha gustado programar, pero hace años que no he desarrollado ningún proyecto de software.
Como colegio nos hemos propuestos construir 18 estaciones con Arduino, que midan los siguientes valores por todo el colegio: Temperature, Humidity, CO2eq, TVOC, General Air quality, PM1.0 concentration, PM2.5 concentration, PM10 concentration, noise, Illuminance. Las estaciones estarán en el interior (aulas y espacios comunes) y una estará en el exterior, y medirá también la presión. La idea es medir la calidad del aire y del entorno en las aulas y espacios comunes del colegio, sobre todo mientras están los chicos en clase. Las estaciones estarán el colegio, estarán alimentadas por un cargador conectado a la red, y acceden al WIFI del colegio.
Soy nuevo en el tema de Arduino, y Hardware, pero llevo dos meses (ya sé que es poco), probando, y sobre todo leyendo documentación y ejemplos.
Como Hardware nos hemos decidido por: Placa Arduino mkr 1010, con MKR EnvShield y MKR Grove Carrier, y sensores Grove a 3.3V de Seedstudio.
- ARDUINO MKR WIFI 1010: Arduino MKR WiFi 1010 — Arduino Official Store
-ARDUINO MKR ENV SHIELD: Arduino MKR ENV Shield rev2 — Arduino Official Store
-ARDUINO MKR CONNECTOR CARRIER (GROVE COMPATIBLE): Arduino MKR Connector Carrier (Grove compatible) — Arduino Official Store
-Grove - VOC and eCO2 Gas Sensor (SGP30): https://www.seeedstudio.com/Grove-VOC-and-eCO2-Gas-Sensor-SGP30.html
-Grove - Air quality sensor v1.3: Grove - Air quality sensor v1.3 - Arduino Compatible - Seeed Studio
-Grove - Sound Sensor: https://www.seeedstudio.com/Grove-Sound-Sensor.html
-Grove - Laser PM2.5 Sensor (HM3301): Grove - Laser PM2.5 Sensor (HM3301) | Seeed Studio Wiki
Al tratarse de un proyecto escolar, empezaremos con proyectos con el MKR 1010 sencillos, e iremos escalando poco a poco. Al final montaremos la estación completa, aplicando cosas que los chicos y chicas han trabajado antes.
Mi idea es: son 10 valores a medir, en 18 estaciones, y quiero subirlo a Internet y guardarlo en la SD, cada medición con su hora de medición.
- Las placas se conectan la primera vez a Internet para obtener la hora. Esa hora la administran internamente, hasta que haya pasado un día, y al cabo de un día, vuelven a leer la hora de Internet. (evitar overflow)
- La frecuencia de las mediciones depende de la hora (ya que sé que hora es). Evito realizar demasiadas mediciónes (p.ej. por la noche no debería haber muchos cambios; cada 5 minutos de 8.30 a 17.30; cada 45 minutos en las demás franjas de tiempo).
- Como sé la hora y el día, creo un fichero por sensor al día, con el nombre del día e id del sensor, escribiendo tras cada medición la hora de medición, la id del sensor (sensor1, sensor2, ...), y los valores de medición.
- Exporto tras cada medición los datos directamente a GoogleSheet: la id del sensor (sensor1, sensor2, ...), y los valores de medición. La hora, la sabe Google al enviarle los datos.
- Nota: todos los sensores mandan su información a un mismo Google Sheet. Ver Script de Trieu Le o propio de Arduino, de Marco Passarello, encontrado a través de los ejemplos de MKR 1010, y al enviar por WebHook. Así todos los sensores tienen el mismo software, y se diferencian únicamente por una constante, que es su identificador de sensor (sensor1, sensor2, ...). También podría crear para cada sensor, un GoogleSheet, y luego hacer un merge de los datos... Pro: Puedo almacenar más datos. Contra: Mayor cantidad de ficheros.
Un quebradero de cabeza que he tenido, es dónde guardar los datos. Lo más seguro es guardarlo en la SD, pero quiero tener los sensores monitorizados, y no llevarme sustos de que uno o varios no hayan escrito los datos. Por eso es muy importante exportarlos a Internet. Si lo hago usando la página de Arudino, guay, pero solamente puedo medir 5 sensores. Además, cada sensor se tendría que asociar a una cuenta diferente (realizable, pero tengo que controlar las 18 cuentas). Eso lo podemos hacer para ejercicios al principio. Pero cuando tengamos todos los sensores funcionando, debo poder verlos de un plumazo. Por eso enviar todos los datos al mismo GoogleSheet.
En un GoogleSheet puedo almacenar 5 millones de valores. Si guardo más datos cuando los alumnos están en el colegio, y menos las demás horas, puedo llegar a almacenar datos durante un mes en un GoogleSheet. Desde ahí puedo crear gráficas, o exportarlos a otros sheets.
¿Qué os parece el proyecto?
Hasta ahora he probado cada parte por separada, y se ha podido. Además, mi único problema creo que es a nivel de Software, porque en Aruduino y SeedStudio está todo muy bien encapsulado, y las conexiones son tipo clip sin opción a error. Además, he encontrado multitud de ejemplos para cada problema.
¿Creeis que subir los datos a GSheet directamente es una buena opción? Esto todavía no lo tengo muy claro, y no sé que hace la gente cuando tiene millones y millones de datos. Usa una base de datos, claro, pero no quiero subir a ese siguiente nivel...
Muchas gracias, y saludos,
Harut.