Tabla de contenido:

Sistema de monitoreo de clima interior basado en Raspberry Pi: 6 pasos
Sistema de monitoreo de clima interior basado en Raspberry Pi: 6 pasos

Video: Sistema de monitoreo de clima interior basado en Raspberry Pi: 6 pasos

Video: Sistema de monitoreo de clima interior basado en Raspberry Pi: 6 pasos
Video: Arduino IoT Cloud con ESP32, Relé (relay) y Sensor DHT22. Guía completa paso a paso desde cero 2024, Noviembre
Anonim
Sistema de monitoreo de clima interior basado en Raspberry Pi
Sistema de monitoreo de clima interior basado en Raspberry Pi

Lea este blog y cree su propio sistema para que pueda recibir alertas cuando su habitación esté demasiado seca o húmeda.

¿Qué es un sistema de monitoreo del clima interior y por qué lo necesitamos?

Los sistemas de monitoreo del clima interior brindan un vistazo rápido a las estadísticas clave relacionadas con el clima, como la temperatura y la humedad relativa. Poder ver estas estadísticas y recibir alertas en su teléfono cuando la habitación está demasiado húmeda o seca puede ser muy útil. Con las alertas, puede tomar las acciones necesarias rápidas para lograr el máximo confort en la habitación encendiendo el calentador o abriendo las ventanas. En este proyecto, veremos cómo utilizar Simulink para:

1) trae estadísticas climáticas (temperatura, humedad relativa y presión) desde el Sense HAT a la Raspberry Pi

2) muestra los datos medidos en la matriz LED de 8x8 del Sense HAT

3) diseñar un algoritmo para decidir si la humedad interior es "buena", "mala" o "fea".

4) registre los datos en la nube y envíe una alerta si los datos están categorizados como "Feos" (demasiado húmedos o secos).

Suministros

Raspberry Pi 3 Modelo B

SOMBRERO Raspberry Pi Sense

Paso 1: software necesario

Software necesario
Software necesario

Necesita MATLAB, Simulink y complementos seleccionados para seguir adelante y construir su propio sistema de monitoreo del clima interior.

Abra MATLAB con acceso de administrador (haga clic con el botón derecho en el icono de MATLAB y seleccione Ejecutar como administrador). Seleccione Complementos de MATLAB Toolstrip y haga clic en Obtener complementos.

Busque aquí los paquetes de soporte con sus nombres enumerados a continuación y "Añádalos".

una. Paquete de soporte de MATLAB para hardware Raspberry Pi: Adquiera entradas y envíe salidas a placas Raspberry Pi y dispositivos conectados

B. Paquete de soporte de Simulink para hardware Raspberry Pi: Ejecute modelos Simulink en placas Raspberry Pi

C. RPi_Indoor_Climate_Monitoring_System: modelos de ejemplo necesarios para este proyecto

Nota: durante la instalación, siga las instrucciones en pantalla para configurar su Pi para que funcione con MATLAB y Simulink.

Paso 2: lleve los datos del sensor a Raspberry Pi con Simulink

Lleve los datos del sensor a Raspberry Pi con Simulink
Lleve los datos del sensor a Raspberry Pi con Simulink

Para aquellos que no están familiarizados con Simulink, es un entorno de programación gráfica que se utiliza para modelar y simular sistemas dinámicos. Una vez que haya diseñado su algoritmo en Simulink, puede generar código automáticamente e incrustarlo en una Raspberry Pi u otro hardware.

Escriba lo siguiente en la ventana de comandos de MATLAB para abrir el primer modelo de ejemplo. Usaremos este modelo para traer datos de temperatura, presión y humedad relativa a la Raspberry Pi.

> rpiSenseHatBringSensorData

Los bloques Sensor de presión LPS25H y Sensor de humedad HTS221 son de la biblioteca Sense HAT en el Paquete de soporte de Simulink para bibliotecas de hardware Raspberry Pi.

Los bloques de alcance son de la biblioteca Sinks en las bibliotecas de Simulink. Para asegurarse de que su modelo esté configurado correctamente, haga clic en el icono de engranaje en su modelo de Simulink. Vaya a Implementación de hardware> Configuración de la placa de hardware> Recursos de hardware de destino.

Nota: no es necesario que realice la configuración si siguió las instrucciones de configuración al instalar el paquete de soporte de Simulink para Raspberry Pi. La dirección del dispositivo se completa automáticamente con la de su Pi.

Asegúrese de que la dirección del dispositivo aquí coincida con la dirección IP que escucha cuando arranca su Pi. Es posible que deba volver a encender su Pi con un auricular conectado al conector para escuchar la dirección del dispositivo.

Haga clic en Aceptar y presione el botón Ejecutar como se muestra a continuación. Asegúrese de que su Pi esté físicamente conectado a la PC mediante un cable USB o esté en la misma red Wi-Fi que su PC.

Cuando presiona el botón Ejecutar en modo Externo, Simulink genera automáticamente el código C equivalente a su modelo y descarga un ejecutable a la Raspberry Pi. Ambos bloques de osciloscopio están configurados para abrirse una vez que el modelo comienza a ejecutarse. Cuando Simulink termine de implementar el código en Raspberry Pi, verá los datos de presión, temperatura y humedad relativa en los osciloscopios como se muestra a continuación.

Nota: el código se está ejecutando en la Raspberry Pi y está viendo las señales reales a través de los bloques de alcance de Simulink, tal como lo haría si tuviera un osciloscopio conectado al hardware. Los valores de temperatura de los dos sensores están ligeramente separados entre sí. Siéntase libre de elegir el que refleje más de cerca la temperatura real de su habitación y utilícelo en las secciones siguientes. En todas las pruebas con el Sense HAT que tuvimos, los valores de temperatura del sensor de humedad HTS221 estaban más cerca de la temperatura real en la habitación. Con eso, hemos visto los conceptos básicos de cómo incorporar datos de sensores del Sense HAT a la Raspberry Pi.

Paso 3: Visualice los datos del sensor en la matriz de LED de 8x8

Mostrar datos del sensor en la matriz de LED de 8x8
Mostrar datos del sensor en la matriz de LED de 8x8
Mostrar datos del sensor en la matriz de LED de 8x8
Mostrar datos del sensor en la matriz de LED de 8x8

En esta sección, veremos cómo se agregó la parte de visualización visual de este proyecto al último modelo. Los elementos Sense HAT que se utilizan en esta sección son el sensor de humedad (para obtener la humedad relativa y la temperatura), el sensor de presión, la matriz de LED y el joystick. El joystick se utiliza para seleccionar qué sensor queremos mostrar.

Para abrir el siguiente modelo de ejemplo, escriba lo siguiente en la ventana de comandos de MATLAB.

> rpiSenseHatDisplay

El bloque de Joystick es de la biblioteca Sense HAT. Nos ayuda a llevar los datos del joystick a la Raspberry Pi, al igual que lo hicieron los bloques de sensores de presión y humedad en el ejemplo anterior. Por ahora, estamos usando el bloque Test Comfort para mostrar "bueno" (cuando el valor del bloque es 1) en la matriz de LED. Mostrará "malo" cuando el valor de bloqueo sea 2 o "feo" cuando el valor sea 3 o 4. En la siguiente sección, veremos el algoritmo real que decide si la humedad interior es buena, mala o fea. Exploremos el bloque Selector haciendo doble clic en él. Los bloques de funciones de MATLAB se utilizan para integrar el código de MATLAB en su modelo de Simulink. En este caso, traemos SelectorFcn que se indica a continuación.

función [valor, estado] = SelectorFcn (JoyStickIn, presión, humedad, temperatura, ihval)

JoyStickCount persistente

si está vacío (JoyStickCount)

JoyStickCount = 1;

fin

si JoyStickIn == 1

JoyStickCount = JoyStickCount + 1;

si JoyStickCount == 6

JoyStickCount = 1;

fin

fin

cambiar JoyStickCount

caso 1% Visualización de la temperatura en C

valor = temp;

Estado = 1;

caso 2% Presión de visualización en atm

valor = presión / 1013.25;

Estado = 2;

caso 3% Muestra la humedad relativa en%

valor = humedad;

Estado = 3;

caso 4% Mostrar temperatura en F

valor = temp * (9/5) +32;

Estado = 4;

caso 5% Visualización Bueno / Malo / Feo

valor = ihval;

Estado = 5;

de lo contrario% No mostrar / Mostrar 0

valor = 0;

Estado = 6;

fin

Las sentencias de cambio de caso se utilizan generalmente como un mecanismo de control de selección. En nuestro caso, queremos que la entrada del joystick sea el control de selección y seleccionar los siguientes datos para mostrar cada vez que se presiona el botón del joystick. Para esto, configuramos un bucle if que incrementa la variable JoyStickCount con cada botón que se presiona (el valor de JoyStickIn es 1 si se presiona un botón). En el mismo ciclo, para asegurarnos de que solo estamos alternando entre las cinco opciones dadas anteriormente, agregamos otra condición que restablece el valor de la variable a 1. Con esto, seleccionamos qué valor se mostrará en la matriz de LED. El caso 1 será el predeterminado ya que definimos JoyStickCount para comenzar en 1, y esto significa que la matriz de LED mostrará la temperatura en grados Celsius. El bloque de datos de desplazamiento utiliza la variable de estado para comprender qué valor de sensor se muestra actualmente y qué unidad debe mostrarse. Ahora que sabemos cómo seleccionar el sensor correcto para mostrar, veamos cómo funciona la pantalla real.

Visualización de caracteres y números

Para mostrar en la matriz LED Sense HAT, creamos matrices 8x8 para:

1) todos los números (0-9)

2) todas las unidades (° C, A,% y ° F)

3) punto decimal

4) alfabetos de las palabras bueno, malo y feo.

Estas matrices de 8x8 se utilizaron como entrada para el bloque de matriz de LED RGB de 8x8. Este bloque enciende los LED correspondientes a aquellos elementos de la matriz que tienen un valor de 1 como se muestra a continuación.

Desplazamiento del texto

El bloque de datos de desplazamiento en nuestro modelo se desplaza a través de cadenas que pueden tener hasta 6 caracteres de longitud. Se eligió el valor 6 ya que es la cadena más larga que generaremos en este proyecto, por ejemplo, 23,8 ° C o 99,1 ° F. Tenga en cuenta que aquí ° C se considera un carácter. La misma idea también se puede extender para desplazar cadenas de otras longitudes.

Aquí hay un-g.webp

www.element14.com/community/videos/29400/l/gif

Para mostrar una cadena de 6 caracteres cada uno en la matriz de 8x8, necesitamos una imagen de tamaño 8x48 en total. Para mostrar una cadena de 4 caracteres como máximo, necesitaremos crear una matriz de 8x32. Ahora veamos toda la inacción presionando el botón Ejecutar. La pantalla predeterminada en la matriz de LED es el valor de temperatura en ° C. El bloque de alcance mostrará el estado y el valor del bloque de selección. Presione el botón del joystick en el Sense HAT y manténgalo presionado durante un segundo para verificar que el valor cambie a la siguiente salida del sensor y repita este proceso hasta que alcance el valor de estado de 5. Para observar el cambio del algoritmo en todos los casos de la categorización de humedad interior, cambie el valor del bloque Test Comfort a cualquier número entre 1 y 4. Observe cómo cambiar el valor de un bloque en el modelo de Simulink cambia inmediatamente la forma en que el código se comporta en el hardware. Esto puede ser útil en situaciones en las que se desea cambiar el comportamiento del código desde una ubicación remota. Con eso, hemos visto los elementos clave detrás del aspecto de visualización del sistema de monitoreo climático. En la siguiente sección aprenderemos cómo completar nuestro sistema de monitoreo de clima interior.

Paso 4: Diseñe un algoritmo en Simulink para decidir si la humedad interior es "buena", "mala" o "fea"

Diseñe un algoritmo en Simulink para decidir si la humedad interior es "buena", "mala" o "fea"
Diseñe un algoritmo en Simulink para decidir si la humedad interior es "buena", "mala" o "fea"

Para saber si su habitación es demasiado húmeda / seca o para saber qué nivel de humedad interior se considera cómodo, existen varios métodos. Con este artículo, establecimos una curva de área para conectar la humedad relativa interior y la temperatura exterior como se muestra arriba.

Cualquier valor de humedad relativa en esta área significa que su habitación se encuentra en un entorno cómodo. Por ejemplo, si la temperatura exterior es de -30 ° F, cualquier valor de humedad relativa inferior al 15% es aceptable. Asimismo, si la temperatura exterior es de 60 ° F, cualquier humedad relativa por debajo del 50% es aceptable. Para clasificar la humedad interior en máxima comodidad (buena), comodidad media (mala) o demasiado húmeda / seca (fea), necesita la temperatura exterior y la humedad relativa. Hemos visto cómo introducir humedad relativa en la Raspberry Pi. Por lo tanto, centrémonos en incorporar la temperatura exterior. Escriba lo siguiente en la ventana de comandos de MATLAB para abrir el modelo:

> rpiOutdoorWeatherData

El bloque WeatherData se usa para traer la temperatura externa de su ciudad (en K) usando https://openweathermap.org/. Para configurar este bloque, necesita una clave API del sitio web. Después de crear su cuenta gratuita en este sitio web, vaya a la página de su cuenta. La pestaña de claves API que se muestra a continuación le proporciona la clave.

El bloque WeatherData necesita la entrada del nombre de su ciudad en un formato específico. Visite esta página e ingrese el nombre de su ciudad, luego el símbolo de coma seguido de 2 letras para indicar el país. Ejemplos: Natick, EE. UU. Y Chennai, IN. Si la búsqueda devuelve un resultado para su ciudad, utilícelo en el bloque WeatherData en ese formato específico. En caso de que su ciudad no esté disponible, use una ciudad vecina cuyas condiciones climáticas sean más cercanas a las suyas. Ahora haga doble clic en el bloque WeatherData e ingrese el nombre de su ciudad y su clave API del sitio web.

Presione Ejecutar en este modelo de Simulink para verificar que el bloque pueda llevar la temperatura de su ciudad a la Raspberry Pi. Ahora veamos el algoritmo que decide si la humedad interior es buena, mala o fea. Escriba lo siguiente en la ventana de comandos de MATLAB para abrir el siguiente ejemplo:

> rpisenseHatIHval

Es posible que haya notado que falta el bloque Test Comfort del modelo anterior y un nuevo bloque llamado FindRoom Comfort proporciona el bloque ihval to Selector. Haga doble clic en este bloque para abrir y explorar.

Estamos usando el bloque WeatherData para traer la temperatura exterior. El subsistema de límites de humedad representa la tabla de humedad relativa frente a temperatura exterior que vimos anteriormente. Dependiendo de la temperatura exterior, dará como resultado el valor límite de humedad máximo que debería ser. Abramos el bloque de funciones DecideIH MATLAB haciendo doble clic en él.

Si el valor de humedad relativa excede el límite máximo de humedad, entonces el signo será positivo según la forma en que restemos los datos, lo que implica que la habitación es demasiado húmeda. Estamos generando un 3 (feo) para este escenario. La razón detrás del uso de números en lugar de cadenas es que es fácil de mostrar en gráficos y crear alertas a partir de. El resto de las clasificaciones en la función MATLAB se basan en criterios arbitrarios que se nos ocurrieron. Cuando la diferencia es menor a 10 se categoriza máximo confort y cuando es menor a 20 es confort medio y arriba que es demasiado seco. No dude en ejecutar este modelo y comprobar el nivel de comodidad de su habitación.

Paso 5: Registre los datos climáticos interiores y los datos categorizados en la nube

Registre los datos climáticos interiores y los datos categorizados en la nube
Registre los datos climáticos interiores y los datos categorizados en la nube

En esta próxima sección veremos cómo registrar datos en la nube. Para abrir este ejemplo, escriba lo siguiente en la ventana de comandos de MATLAB.

> rpiSenseHatLogData

En este modelo, la parte de visualización del modelo de ejemplo anterior se elimina intencionalmente, ya que no necesitamos que el sistema de monitoreo muestre las estadísticas mientras registra datos y envía alertas. Estamos utilizando ThingSpeak, una plataforma de IoT de código abierto gratuita que incluye análisis de MATLAB, para el aspecto de registro de datos. Elegimos ThingSpeak porque hay formas directas de programar Raspberry Pi y otras placas de hardware de bajo costo para enviar datos a ThingSpeak usando Simulink. El bloque ThingSpeak Write es del paquete de soporte de Simulink para la biblioteca de hardware Raspberry Pi y se puede configurar utilizando la clave Write API de su canal ThingSpeak. A continuación, se proporcionan instrucciones detalladas sobre cómo crear el canal. Para registrar datos continuamente en la nube, desea que su Pi funcione de forma independiente de Simulink. Para ello, puede presionar el botón "Implementar en hardware" en su modelo de Simulink.

Crea tu propio canal ThingSpeak

Aquellos que no tienen una cuenta pueden registrarse en el sitio web de ThingSpeak. Si tiene una cuenta de MathWorks, automáticamente tendrá una cuenta de ThingSpeak.

  • Una vez que haya iniciado sesión, puede crear un canal yendo a Canales> Mis canales y haciendo clic en Nuevo canal.
  • Todo lo que necesita es un nombre para el canal y nombres para los campos que va a registrar como se muestra a continuación.
  • La opción Mostrar ubicación del canal necesita la latitud y longitud de su ciudad como entrada y puede mostrar la ubicación dentro del canal en un mapa. (Los valores de ejemplo utilizados aquí son para Natick, MA)
  • Luego presione Guardar canal para terminar de crear su canal.

4a. Alerta si los datos están categorizados como "feos"

Para completar nuestro sistema de monitoreo del clima interior, debemos ver cómo recibir alertas basadas en datos de la nube. Esto es fundamental porque, sin él, no podrá realizar las acciones necesarias para cambiar el nivel de comodidad en la habitación. En esta sección, veremos cómo recibir una notificación en su teléfono cada vez que los datos de la nube indiquen que la habitación es demasiado húmeda o seca. Lo lograremos utilizando dos servicios: IFTTT Webhooks y ThingSpeak TimeControl. IFTTT (siglas de If this, then that) es un servicio en línea que puede manejar eventos y desencadenar acciones basadas en los eventos.

Pasos para configurar los webhooks IFTTT

Nota: Pruébelos en una computadora para obtener mejores resultados.

1) Cree una cuenta en ifttt.com (si no tiene una) y cree un nuevo subprograma desde la página Mis subprogramas.

2) Haga clic en el botón azul "esto" para seleccionar su servicio de activación.

3) Busque y elija Webhooks como servicio.

4) Seleccione Recibir una solicitud web y proporcione un nombre para el evento.

5) Seleccione crear disparador.

6) Seleccione "eso" en la página siguiente y busque notificaciones.

7) Seleccione enviar una notificación desde la aplicación IFTTT.

8) Ingrese el nombre del evento que creó en el Paso 2 de IFTTT y seleccione crear acción.

9) Continúe hasta llegar al último paso, revise y presione finalizar.

10) Vaya a https://ifttt.com/maker_webhooks y haga clic en el botón Configuración en la parte superior de la página.

11) Vaya a la URL en la sección Información de la cuenta.

12) Ingrese el nombre de su evento aquí y haga clic en "Probarlo".

13) Copie la URL en la última línea para uso futuro (con la clave).

Pasos para configurar ThingSpeak TimeControl

1) Seleccione Aplicaciones> Análisis MATLAB

2) Haga clic en Nuevo en la página siguiente y elija Activar correo electrónico de IFTTT y haga clic en Crear.

Las piezas importantes aquí en el código de la plantilla son:

ID de canal: ingrese su canal ThingSpeak que tiene la información del "valor de humedad interior".

IFTTTURL: ingrese la URL copiada del paso 13 de la sección anterior.

readAPIKey: clave de entrada de la sección ThingSpeak Channel. Action: la que actúa sobre el último valor. Cámbielo a lo siguiente para activar alertas.

3) En el sitio web de ThingSpeak, haga clic en Aplicaciones> TimeControl.

4) Seleccione Recurrente y elija una frecuencia de tiempo.

5) Haga clic en Save TimeControl.

Ahora MATLAB Analysis se ejecuta automáticamente cada media hora y envía un disparador al servicio IFTTT Webhooks si el valor es mayor o igual a 3. Luego, la aplicación de teléfono IFTTT alertará al usuario con una notificación como se muestra al comienzo de esta sección.

Paso 6: Conclusión

Con eso, hemos visto todos los aspectos importantes de cómo construir su propio sistema de monitoreo climático. En este proyecto, vimos cómo se puede utilizar Simulink para:

  • programe una Raspberry Pi para traer datos de Sense HAT. Resaltado: visualice los datos en Simulink ya que el código aún se está ejecutando en la Raspberry Pi.
  • Construya la pantalla visual del sistema de monitoreo del clima interior. Resaltado: cambie la forma en que su código se comporta en el hardware de Simulink.
  • diseñar el algoritmo del sistema de monitoreo del clima interior.
  • Registre los datos de la Raspberry Pi en la nube y cree alertas a partir de los datos registrados.

¿Cuáles son algunos de los cambios que le haría a este sistema de monitoreo del clima interior? Comparta sus sugerencias a través de comentarios.

Recomendado: