Taula de continguts:

Monitorització de temperatura i humitat mitjançant Raspberry Pi: 6 passos (amb imatges)
Monitorització de temperatura i humitat mitjançant Raspberry Pi: 6 passos (amb imatges)

Vídeo: Monitorització de temperatura i humitat mitjançant Raspberry Pi: 6 passos (amb imatges)

Vídeo: Monitorització de temperatura i humitat mitjançant Raspberry Pi: 6 passos (amb imatges)
Vídeo: Основы горизонтально масштабируемых вычислений Джеймса Каффа 2024, De novembre
Anonim
Monitorització de temperatura i humitat mitjançant Raspberry Pi
Monitorització de temperatura i humitat mitjançant Raspberry Pi
Monitorització de temperatura i humitat mitjançant Raspberry Pi
Monitorització de temperatura i humitat mitjançant Raspberry Pi

Arriba l’estiu i els que no disposin d’aire condicionat haurien d’estar preparats per controlar manualment l’atmosfera a l’interior. En aquest post, descric la forma moderna de mesurar els paràmetres més importants per a la comoditat humana: temperatura i humitat. Aquestes dades recollides s’envien al núvol i s’hi processen.

Estic fent servir una placa Raspberry Pi 1 i el sensor DHT22. Podeu fer el mateix en qualsevol equip que tingui Internet, GPIO i Python. El sensor DHT11 més barat també funciona bé.

Pas 1: Preparació del maquinari

Preparació del maquinari
Preparació del maquinari
Preparació del maquinari
Preparació del maquinari

Comencem des del primer moment, ja que fa temps que no vaig fer servir el meu Raspberry Pi.

Necessitarem:

  • Taula Raspberry Pi (o una altra plataforma orientada a l'IoT).
  • Targeta SD o microSD (segons la plataforma).
  • 5V / 1A mitjançant micro-USB.
  • Cable LAN, que proporciona connexió a Internet.
  • Pantalla HDMI, pantalla RCA o port UART (per habilitar SSH).

El primer pas és descarregar Raspbian. He triat la versió Lite, ja que utilitzaré SSH en lloc de mostrar-la. Les coses han canviat des de la darrera vegada que ho vaig fer: ara hi ha un gran programari de gravació anomenat Etcher, que funciona perfectament i té un disseny impressionant..

Un cop finalitzada la gravació de la imatge, vaig introduir la targeta SD al meu Pi, vaig connectar la LAN i els cables d’alimentació i, al cap d’un temps, el router va registrar el nou dispositiu.

Pas 2: activació de SSH

Habilitació de SSH
Habilitació de SSH
Habilitació de SSH
Habilitació de SSH
Habilitació de SSH
Habilitació de SSH

SSH està desactivat per defecte. Puc utilitzar un convertidor UART-USB o simplement connectar una pantalla per accedir a l'intèrpret d'ordres i activar SSH.

Després de reiniciar-me, finalment hi sóc. Primer de tot, actualitzem:

sudo apt update && sudo apt upgrade -y

Ara connectem aquest nou dispositiu al núvol.

Pas 3: Instal·lació de Cloud4RPi

Instal·lació de Cloud4RPi
Instal·lació de Cloud4RPi

Vaig decidir provar la plataforma de núvol anomenada Cloud4RPi, que està dissenyada per a IoT.

Segons els documents, necessitem els paquets següents per executar-lo:

sudo apt install git python python-pip -y

La biblioteca client es pot instal·lar en una sola ordre:

sudo pip instal·la cloud4rpi

Ara necessitem algun codi de mostra per garantir que funcioni.

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

Vaig decidir executar minimal.py, però no m'agraden les dades falses. Afortunadament, he vist una manera senzilla de fer reals les dades de diagnòstic en aquest exemple. Afegiu una importació més a la secció d’importacions:

des de la importació de rpi *

A continuació, suprimiu aquestes funcions que proporcionen dades falses (el rpi.py les defineix ara):

def cpu_temp ():

return 70 def ip_address (): return '8.8.8.8' def host_name (): return 'hostname' def os_name (): return 'osx'

Ara necessitem un testimoni que permeti a Cloud4RPi enllaçar els dispositius amb els comptes. Per obtenir-ne un, creeu un compte a cloud4rpi.io i premeu el botó Nou dispositiu en aquesta pàgina. Substituïu la cadena _YOUR_DEVICE_TOKEN_ del fitxer minimal.py pel testimoni del vostre dispositiu i deseu-lo. Ara estem preparats per al primer llançament.

python minimal.py

Obriu la pàgina del dispositiu i comproveu que hi hagi dades.

Ara passem a les dades del món real.

Pas 4: Connexió del sensor

Connexió del sensor
Connexió del sensor

Necessitarem:

  • Sensor d’humitat DHT22 o DHT11
  • Resistència de tracció (5-10 KΩ)
  • Filferros

El sensor DHT22 mesura la temperatura i la humitat simultàniament. El protocol de comunicació no està estandarditzat, de manera que no necessitem habilitar-lo a raspi-config: un simple pin GPIO és més que suficient.

Per adquirir les dades, faré servir la gran biblioteca d’Adafruit per a sensors DHT, però potser no funcioni tal com és. Una vegada vaig trobar un estrany retard constant en el codi, que no funcionava per al meu maquinari i, al cap de dos anys, la meva sol·licitud d'extracció encara està pendent. També he canviat les constants de detecció de la placa perquè el meu Raspberry Pi 1 amb BCM2835 es va detectar sorprenentment com a Raspberry Pi 3. M'agradaria que fos cert … Per tant, recomano utilitzar la meva forquilla. Si teniu algun problema, proveu el repositori original, potser funciona per a algú, però jo no en sóc cap.

git clon https://github.com/Himura2la/Adafruit_Python_DHT…. Adafruit_Python_DHT

Com que la biblioteca està escrita en C, requereix una compilació, de manera que necessiteu els paquets build-essential i python-dev.

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

Mentre s’instal·len els paquets, connecteu el DHT22 tal com es mostra a la imatge.

I proveu-ho:

cd ~ python -c "importa Adafruit_DHT com a d; imprimeix d.read_retry (d. DHT22, 4)"

Si veieu alguna cosa com (39.20000076293945, 22.600000381469727), heu de saber que aquesta és la humitat en percentatges i la temperatura en centígrads.

Ara, muntem-ho tot junts!

Pas 5: enviament de lectures del sensor al núvol

Enviament de lectures de sensors al núvol
Enviament de lectures de sensors al núvol

Faré servir el minimal.py com a base i hi afegiré la interacció DHT22.

cd cloud4rpi-raspberrypi-python

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

Com que DHT22 retorna la temperatura i la humitat en una sola trucada, les emmagatzemo globalment i les actualitzo només una vegada en una sol·licitud, suposant que el retard entre elles és de més de 10 segons. Penseu en el codi següent, que adquireix les dades DHT22:

importa 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) if temp is not None else None def get_h (): update_data () return round (hum, 2) if hum is not Cap més Cap

Inseriu aquest codi després de les importacions existents i editeu la secció de variables perquè utilitzi les noves funcions:

variables = {

'DHT22 Temp': {'type': 'numeric', 'bind': get_t}, 'DHT22 Humidity': {'type': 'numeric', 'bind': get_h}, 'CPU Temp': {'type ':' numèric ',' bind ': cpu_temp}}

Premeu el botó vermell per iniciar la transferència de dades:

python cloud_dht22.py

A continuació, podeu consultar la pàgina del dispositiu.

Podeu deixar-ho tal qual, però prefereixo tenir un servei per a tot. Això garanteix que l'script sempre s'està executant. Creació d'un servei amb l'script totalment automatitzat:

wget -O https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python/blob/master/service_install.sh | sudo bash -s cloud_dht22.py

Inici del servei:

sudo service cloud4rpi start

I comprovant-ho:

pi @ raspberrypi: ~ $ sudo service cloud4rpi status -l

● cloud4rpi.service - Dimoni Cloud4RPi Carregat: carregat (/lib/systemd/system/cloud4rpi.service; activat) Actiu: actiu (en execució) des de dc 2017-05-17 20:22:48 UTC; Fa 1 minut PID principal: 560 (python) CGroup: /system.slice/cloud4rpi.service └─560 / usr / bin / python /home/pi/cloud_dht22.py 17 de maig 20:22:51 python raspberrypi [560]: Publicació iot -hub / messages: {'type': 'config', 'ts': '2017-05-17T20 … y'}]} 17 de maig 20:22:53 raspberrypi python [560]: Publicació de iot-hub / missatges: {'type': 'data', 'ts': '2017-05-17T20: 2 … 40'}} 17 de maig 20:22:53 raspberrypi python [560]: Publicació de iot-hub / missatges: {'type': 'sistema', 'ts': '2017-05-17T20 ….4'}}

Si tot funciona com s’esperava, podem continuar i utilitzar les capacitats de la plataforma Cloud4RPi per manipular les dades.

Pas 6: gràfics i alarmes

Gràfics i alarmes
Gràfics i alarmes
Gràfics i alarmes
Gràfics i alarmes
Gràfics i alarmes
Gràfics i alarmes

En primer lloc, representem les variables per veure com canvien. Això es pot fer afegint un nou tauler de control i posant-hi els gràfics necessaris.

Una altra cosa que podem fer aquí és establir una alerta. Aquesta característica us permet configurar l'abast segur d'una variable. Tan bon punt l’abast es superi, envia una notificació per correu electrònic. A la pàgina d'edició del tauler de control, podeu canviar a Alertes i configurar-ne una.

Just després, la humitat de la meva habitació va començar a disminuir ràpidament sense cap motiu notable, i l’alarma va succeir aviat.

Podeu utilitzar Cloud4RPi de forma gratuïta amb qualsevol maquinari capaç d’executar Python. Pel que fa a mi, ara sempre sé quan heu d’encendre l’humidificador d’aire i fins i tot el puc connectar a un relé de control remot mitjançant Cloud4RPi. Estic preparat per la calor! Benvingut estiu!

Recomanat: