Tabla de contenido:

Monitoreo de temperatura y humedad con Raspberry Pi: 6 pasos (con imágenes)
Monitoreo de temperatura y humedad con Raspberry Pi: 6 pasos (con imágenes)

Video: Monitoreo de temperatura y humedad con Raspberry Pi: 6 pasos (con imágenes)

Video: Monitoreo de temperatura y humedad con Raspberry Pi: 6 pasos (con imágenes)
Video: Como leer sensor DHT11 (Humedad y temperatura) con la raspberry pi (rpi) 2024, Noviembre
Anonim
Monitoreo de temperatura y humedad con Raspberry Pi
Monitoreo de temperatura y humedad con Raspberry Pi
Monitoreo de temperatura y humedad con Raspberry Pi
Monitoreo de temperatura y humedad con Raspberry Pi

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í.

Estoy usando una placa Raspberry Pi 1 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

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 a través de micro-USB.
  • Cable 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 voy a usar SSH en lugar de display. 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.

Paso 2: Habilitación de SSH

Habilitando SSH
Habilitando SSH
Habilitando SSH
Habilitando SSH
Habilitando SSH
Habilitando SSH

SSH está deshabilitado de forma predeterminada. Puedo usar el convertidor UART-USB o simplemente conectar una pantalla para acceder al shell y habilitar SSH.

Después de reiniciar, finalmente estoy dentro. Lo primero es lo primero, actualice:

sudo apt update && sudo apt upgrade -y

Ahora conectemos este nuevo dispositivo a la nube.

Paso 3: 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 python python-pip -y

La biblioteca cliente se puede instalar con un solo comando:

sudo pip instalar cloud4rpi

Ahora necesitamos un código de muestra para asegurarnos de que funcione.

clon de git https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python && cd cloud4rpi-raspberrypi-python clon de git https://gist.github.com/f8327a1ef09ceb1ef142fa68701270de.git e && mv e / minimal.py minimal.py && rmdir -re

Decidí ejecutar minimal.py, pero no me gustan los datos falsos. Afortunadamente, noté una manera fácil de hacer que los datos de diagnóstico sean reales en este ejemplo. Agregue una importación más a la sección de importaciones:

de importación rpi *

Luego elimine estas funciones que proporcionan datos falsos (el rpi.py las define ahora):

def cpu_temp ():

return 70 def dirección_ip (): return '8.8.8.8' def nombre_host (): regresa 'nombre_host' def nombre_o_s (): regresa 'osx'

Ahora necesitamos un token, que permite 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 minimal.py con el token de tu dispositivo y guarda el archivo. Ahora estamos listos para el primer lanzamiento.

python minimal.py

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

Pasemos ahora a los datos del mundo real.

Paso 4: 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…. 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 5: 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é minimal.py como base y agregaré la interacción DHT22 en él.

cd cloud4rpi-raspberrypi-python

cp minimal.py ~ / cloud_dht22.py cp rpi.py ~ / rpi.py cd vi cloud_dht22.py

Como DHT22 devuelve tanto la temperatura como la humedad en una sola llamada, los almaceno globalmente y los actualizo 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 = None, None 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 ':' numérico ',' enlazar ': cpu_temp}}

Presione el botón rojo para iniciar la transferencia de datos:

python 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 totalmente automatizado:

wget -O https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python/blob/master/service_install.sh | sudo bash -s 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': 'sistema', '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 6: 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!

Recomendado: