Sensor Ambiental

El sensor de partículas (Nova PM Sensor SDS011) es capaz de medir la concentración de partículas en el aire. En este caso, medimos por cada metro cúbico de aire, el número de partículas de 10 µm y 2,5 µm, que se definen como pautas de medición. El tema es extremadamente actual, el sensor permite sus propias mediciones independientes, para averiguar la concentración de partículas en su entorno.

El problema que ahora surge es que se desea instalar el sensor en un lugar adecuado, por ejemplo, en una farola. Aquí entra en juego una solución inalámbrica alimentada por batería. La tarjeta LongRa también puede suministrar la tensión necesaria (5 V) para el sensor PM.

Esquema de pins

Arduino ZeroSensorDescripción
D0 (RX)7 (TX)Datos en serie del sensor a Arduino
D1 (TX)6 (RX)Datos en serie desde Arduino al sensor
GND5 (GND)Tierra
5V0 (5 V)3 (5 V)Alimentación 5 V

Dado que el sensor está equipado con un ventilador, lo que resulta en una corriente de arranque más alta, se recomienda utilizar baterías potentes o una fuente de alimentación externa para el suministro eléctrico.

El software

Hemos desarrollado nuestra propia solución de ejemplo, que acciona el sensor y transmite los datos de medición a través del protocolo RadioShuttle a una segunda estación. Para ello, el ID de la aplicación es 10. Este ID de aplicación define el mensaje que se va a transmitir y lo pone a disposición del público. Encuentra más información sobre este tema en La Estrategia de Applicaciones.

La medición se realiza en el intervalo definido, p. ej. cada 30 minutos. Primero aplicamos la tensión de funcionamiento (5 V), leemos los datos de medición durante 20 segundos para obtener valores estables, y transmitimos los datos desde el nodo a una segunda estación. A continuación, desconectamos la fuente de alimentación de 5 V y ponemos la tarjeta a través de la función deepsleep en reposo, para ahorrar energía, hasta que el ciclo completo comience de nuevo en 30 minutos con la siguiente medición de partículas.

Para la solución inalámbrica del sensor, se aconseja leer la documentación de ejemplo de RadioTest para obtener una comprensión básica y configurar los ID de nodo y de estación.

Los datos de protocolo del PM Sensor (ID de la applicación 10)

struct sensor {
 uint8_t version;
 uint8_t padding;
 uint16_t pm25;
 uint16_t pm10;
 uint16_t id;
} PMAppData;

Los datos de protocolo se definen de forma muy sencilla. Existe una versión de protocolo (actualmente 1). Además, los valores medidos procedentes del sensor son 10 veces mayores y deben dividirse por 10. “id” es el número de serie del sensor. No se requiere una suma de comprobación ya que, según la LoRa, el protocolo RadioShuttle utilizado ya contiene una suma de comprobación CRC de 16 bits.

Ahorro de energía como “Node Offline” (sensor de medición)

Debido a que el nodo normalmente espera al siguiente período de medición, y queremos ahorrar energía debido a la alimentación con pilas, el nodo funciona como un dispositivo fuera de línea. Esto significa que, si no hay nada que hacer, RadioShuttle apaga el módem inalámbrico LoRa y pasa al modo de suspensión MCU. Sin embargo, el reloj RTC sigue funcionando, despertando la tarjeta cada 5 segundos por un momento, para comprobar si hay trabajo por hacer.

rs->Startup(RadioShuttle::RS_Node_Offline);

Inicializando el nodo como RadioShuttle::RS_Node_Offline apaga el módem inalámbrico, siempre que el monitor en serie (USB) no esté activo. Estando en el modo sleep, la recepción de datos no es posible, también pulsando y manteniendo pulsado el botón “A” sólo se reconocerá después de 5 segundos.

Si se dispone de una fuente de alimentación externa, o si se desea vigilar permanentemente los protocolos a través del monitor en serie (USB), el nodo puede definirse como RadioShuttle::RS_Node_Online. Sin embargo, esto consume más energía que en el modo fuera de línea.

Consumo aproximado de energía:

  • Nodo fuera de línea (“deepsleep”): 150 µA
  • Nodo en línea (“sleep”): 15 mA
  • Tiempo de medición: 20 segundos (110 mA)

Indicador led de estado

Los ledes TX y RX parpadean rápidamente cada vez que envían o reciben mensajes de RadioShuttle que fueron enviados al monitor de serie.

En el modo nodo fuera de línea, el led 13 se apaga generalmente, parpadeando sólo durante los 20 segundos del período de medición. En el modo nodo en línea, o con el monitor de serie (USB) activo, se ilumina continuamente porque el protocolo USB está activo 100 veces por segundo.

Encender / apagar 5 V

La solución LongRa, compatible con Arduino Zero, dispone de un convertidor de tensión integrado que transforma la tensión proporcionada por 2 x pilas AA (pilas estándar o recargables) en 5 V (máx. 150 mA).

boost50 = 1;

Este convertidor proporciona 3,3 V o 5 V de la tensión de la batería. Para evitar que funcione continuamente, se puede conectar y desconectar mediante el uso de “boost50 = 1” o “boost50 = 0”, respectivamente. Un control MOSFET activa o desactiva la alimentación, de modo que no se consume energía cuando se apaga. Alternativamente, esto se puede hacer a través de la “digitalOut” de Arduino. El pin correspondiente se define en “PinMap.h”.

El receptor (estación)

#define RADIO_SERVER 1

Esto define la solución como una estación de RadioShuttle (receptor). La estación recibe los datos del sensor y los emite en el monitor de serie (USB).

ParticalData: PM10: 5.3 (µg/m3) PM2.5: 4.1 (µg/m3) ID: 10229

Los datos se emiten de forma sencilla, pero también se pueden utilizar de forma arbitraria, ya que se han transmitido los datos completos del protocolo.

Código fuente de PMSensorRadio

Después de la instalación del software RadioShuttle, el código fuente está completamente disponible en los ejemplos “RadioShuttle > PMSensorRadio”.

Ejemplo de instalación de un sensor de partículas

Más información