Tabla de contenido:

Humedad en la nube: 5 pasos
Humedad en la nube: 5 pasos

Video: Humedad en la nube: 5 pasos

Video: Humedad en la nube: 5 pasos
Video: Arduino IoT Cloud con ESP32, Relé (relay) y Sensor DHT22. Guía completa paso a paso desde cero 2024, Noviembre
Anonim
Humedad en la nube
Humedad en la nube

Se acerca el verano, y quienes no tengan aire acondicionado deben estar preparados para controlar manualmente la atmósfera en el interior. En esta publicación, estoy describiendo la forma moderna de medir los parámetros más importantes para el confort humano: temperatura y humedad. Estos datos recopilados se envían a la nube y se procesan allí.

Suministros

Estoy usando una placa Raspberry Pi y el sensor DHT22. Puede hacer lo mismo en cualquier computadora que tenga Internet, GPIO y Python. El sensor DHT11 más económico también funciona bien.

Paso 1: preparación del hardware

Preparación del hardware
Preparación del hardware
Preparación del hardware
Preparación del hardware
Preparación del hardware
Preparación del hardware
Preparación del hardware
Preparación del hardware

Comencemos desde el principio, ya que no usé mi Raspberry Pi durante bastante tiempo.

Necesitaremos:

  • Placa Raspberry Pi (u otra plataforma orientada a IoT).
  • Tarjeta SD o microSD (según plataforma).
  • 5V / 1A mediante cable micro-USB. LAN, que proporciona la conexión a Internet.
  • Pantalla HDMI, pantalla RCA o puerto UART (para habilitar SSH).

El primer paso es descargar Raspbian. Elegí la versión Lite, ya que usaré SSH en lugar de la pantalla.

Las cosas han cambiado desde la última vez que lo hice: ahora hay un gran software de grabación llamado Etcher, que funciona perfectamente y tiene un diseño impresionante.

Después de que se completó la grabación de la imagen, inserté la tarjeta SD en mi Pi, enchufé los cables de alimentación y LAN, y después de un tiempo, mi enrutador registró el nuevo dispositivo.

¡Excelente! Sigamos y SSH en él.

La seguridad está bien, me gusta, pero esto dificulta un poco las cosas. Usaré el adaptador UART-USB para acceder al shell y habilitar SSH …

Usar una pantalla en lugar de UART lo hace mucho más fácil.

Después de reiniciar, finalmente estoy dentro.

Lo primero es lo primero, vamos a actualizar:

sudo apt update && sudo apt upgrade -y

Ahora conectemos este nuevo dispositivo a la nube.

Paso 2: Instalación de Cloud4RPi

Instalación de Cloud4RPi
Instalación de Cloud4RPi

Decidí probar la plataforma en la nube llamada Cloud4RPi, que está diseñada para IoT.

De acuerdo con los documentos, necesitamos los siguientes paquetes para que se ejecute:

sudo apt install git python3 python3-pip -y

La biblioteca cliente se puede instalar con un solo comando:

sudo pip3 instalar cloud4rpi

Ahora necesitamos un código de muestra.

clon de git https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python && cd cloud4rpi-raspberrypi-python

El script ejecutable es control.py.

Necesitamos un token que permita a Cloud4RPi vincular los dispositivos con las cuentas. Para obtener uno, cree una cuenta en cloud4rpi.io y presione el botón Nuevo dispositivo en esta página. Reemplaza la cadena _YOUR_DEVICE_TOKEN_ en el archivo control.py con el token de tu dispositivo y guarda el archivo. Ahora estamos listos para el primer lanzamiento.

sudo python3 control.py

Abra la página del dispositivo y verifique que los datos estén allí.

Pasemos ahora a los datos del mundo real.

Paso 3: Conexión del sensor

Conexión del sensor
Conexión del sensor

Necesitaremos:

  • Sensor de humedad DHT22 o DHT11
  • Resistencia pull-up (5-10 KΩ)
  • Alambres

El sensor DHT22 mide la temperatura y la humedad simultáneamente. El protocolo de comunicación no está estandarizado, por lo que no es necesario habilitarlo en raspi-config; un simple pin GPIO es más que suficiente.

Para adquirir los datos, usaré la gran biblioteca de Adafruit para sensores DHT, pero es posible que no funcione como está. Una vez encontré un extraño retraso constante en el código, que no funcionó para mi hardware, y después de dos años mi solicitud de extracción aún está pendiente. También cambié las constantes de detección de la placa porque mi Raspberry Pi 1 con BCM2835 fue sorprendentemente detectada como Raspberry Pi 3. Desearía que fuera cierto… Por lo tanto, recomiendo usar mi fork. Si tiene algún problema con él, pruebe el repositorio original, tal vez funcione para alguien, pero yo no soy uno de ellos.

clon de git https://github.com/Himura2la/Adafruit_Python_DHT.gitcd Adafruit_Python_DHT

Como la biblioteca está escrita en C, requiere compilación, por lo que necesita los paquetes build-essential y python-dev.

sudo apt install build-essential python-dev -ysudo python setup.py install

Mientras se instalan los paquetes, conecte el DHT22 como se muestra en la imagen.

Y pruébalo:

cd ~ python -c "importar Adafruit_DHT como d; imprimir d.read_retry (d. DHT22, 4)"

Si ve algo como (39.20000076293945, 22.600000381469727), debe saber que esta es la humedad en porcentajes y la temperatura en grados Celsius.

¡Ahora, montemos todo junto!

Paso 4: Envío de lecturas de sensores a la nube

Envío de lecturas de sensores a la nube
Envío de lecturas de sensores a la nube
Envío de lecturas de sensores a la nube
Envío de lecturas de sensores a la nube

Usaré control.py como base y agregaré la interacción DHT22 en él.

cp cloud4rpi-raspberrypi-python / control.py./cloud_dht22.pycp cloud4rpi-raspberrypi-python / rpi.py./rpi.pyvi cloud_dht22.py

Elimine el código de muestra como en la imagen de arriba.

Como DHT22 devuelve tanto la temperatura como la humedad en una sola llamada, los almacenaré globalmente y los actualizaré solo una vez en una solicitud, asumiendo que la demora entre ellos es de más de 10 segundos. Considere el siguiente código, que adquiere los datos DHT22:

importar Adafruit_DHT

temp, hum = Ninguno, Ninguno

last_update = time.time () - 20

def update_data ():

global last_update, hum, temp if time.time () - last_update> 10: hum, temp = Adafruit_DHT.read_retry (Adafruit_DHT. DHT22, 4) last_update = time.time ()

def get_t ():

update_data () return round (temp, 2) si temp no es Ninguno más Ninguno def get_h (): update_data () return round (hum, 2) si hum no es Ninguno más Ninguno

Inserte este código después de las importaciones existentes y edite la sección de variables para que use las nuevas funciones:

variables = {'DHT22 Temp': {'type': 'numeric', 'bind': get_t}, 'DHT22 Humidity': {'type': 'numeric', 'bind': get_h}, 'CPU Temp': {'type': 'numeric', 'bind': cpu_temp}}

Si encuentra que las manipulaciones son confusas, tome la versión final de este archivo y presione el botón rojo para iniciar la transferencia de datos:

Entonces puedes consultar la página del dispositivo.

python3 cloud_dht22.py

Entonces puedes consultar la página del dispositivo.

Puedes dejarlo como está, pero prefiero tener un servicio para todo. Esto asegura que el script siempre se esté ejecutando. Creando un servicio con el script completamente automatizado que ya tiene en el directorio cloud4rpi-raspberrypi-python:

service_install.sh cloud_dht22.py

Iniciar el servicio:

sudo service cloud4rpi start

Y comprobándolo:

pi @ raspberrypi: ~ $ sudo service cloud4rpi status -l ● cloud4rpi.service - Demonio Cloud4RPi Cargado: cargado (/lib/systemd/system/cloud4rpi.service; habilitado) Activo: activo (en ejecución) desde el miércoles 17-05-2017 20: 22: 48 UTC; Hace 1 minuto PID principal: 560 (python) CGroup: /system.slice/cloud4rpi.service └─560 / usr / bin / python /home/pi/cloud_dht22.py

17 de mayo 20:22:51 raspberrypi python [560]: Publicando iot-hub / messages: {'type': 'config', 'ts': '2017-05-17T20… y'}]}

17 de mayo 20:22:53 raspberrypi python [560]: Publicando iot-hub / messages: {'type': 'data', 'ts': '2017-05-17T20: 2… 40'}} 17 de mayo 20: 22:53 raspberrypi python [560]: Publicando iot-hub / messages: {'type': 'system', 'ts': '2017-05-17T20….4'}}

Si todo funciona como se esperaba, podemos continuar y usar las capacidades de la plataforma Cloud4RPi para manipular los datos.

Paso 5: Gráficos y alarmas

Gráficos y alarmas
Gráficos y alarmas
Gráficos y alarmas
Gráficos y alarmas
Gráficos y alarmas
Gráficos y alarmas

En primer lugar, grafiquemos las variables para ver cómo cambian. Esto se puede hacer agregando un nuevo Panel de control y colocando los gráficos requeridos en él.

Otra cosa que podemos hacer aquí es configurar una alerta. Esta función le permite configurar el rango seguro para una variable. Tan pronto como se sobrepasa el rango, envía una notificación por correo electrónico. En la página de edición del Panel de control, puede cambiar a Alertas y configurar una.

Inmediatamente después de eso, la humedad en mi habitación comenzó a disminuir rápidamente sin ninguna razón aparente, y la alarma pronto siguió.

Puedes usar Cloud4RPi gratis con cualquier hardware que sea capaz de ejecutar Python. En cuanto a mí, ahora siempre sé cuándo encender el humidificador de aire, e incluso puedo conectarlo a un relé para control remoto a través de Cloud4RPi. ¡Estoy preparado para el calor! ¡Bienvenido Verano!

Con Cloud4RPi, puede controlar su Raspberry Pi y otros dispositivos IoT de forma remota en tiempo real. Visite nuestro sitio y conecte un número ilimitado de dispositivos de forma gratuita.

Recomendado: