- Lucrul și configurarea ThingSpeak:
- Diagrama circuitului:
- Configurare Raspberry Pi și program Python:
Umiditatea, temperatura și presiunea sunt trei parametri de bază pentru a construi orice stație meteo și pentru a măsura condițiile de mediu. Am construit anterior o mini stație meteo folosind Arduino și de această dată extindem stația meteo cu Raspberry Pi. Acest proiect bazat pe IoT își propune să afișeze parametrii actuali de umiditate, temperatură și presiune pe ecranul LCD, precum și pe serverul de internet utilizând Raspberry Pi, ceea ce îl face o stație meteo Raspberry Pi. Puteți instala această configurație oriunde și puteți monitoriza condițiile meteorologice ale acelui loc de oriunde din lume, pe internet, nu numai că va afișa datele curente, ci poate afișa și valorile anterioare sub formă de Grafice.
Am folosit senzorul de umiditate și temperatură DHT11 pentru detectarea temperaturii și modulul senzor de presiune BM180 pentru măsurarea presiunii barometrice. Acest termometru la scară Celsius și scara procentuală Umidometru afișează temperatura și umiditatea ambientală printr-un afișaj LCD, iar presiunea barometrică este afișată în milibar sau hPa (hectopascal). Toate aceste date sunt trimise către serverul ThingSpeak pentru monitorizare live de oriunde din lume prin internet. Verificați programul video demonstrativ și Python, oferit la sfârșitul acestui tutorial.
Lucrul și configurarea ThingSpeak:
Acest proiect bazat pe IoT are patru secțiuni. În primul rând, senzorul DHT11 detectează datele privind umiditatea și temperatura, iar senzorul BM180 măsoară presiunea atmosferică. În al doilea rând, Raspberry Pi citește ieșirea modulului senzorului DHT11 utilizând protocolul cu un singur fir și ieșirea senzorului de presiune BM180 utilizând protocolul I2C și extrage ambele valori ale senzorilor într-un număr adecvat în procente (umiditate), scară Celsius (temperatură), hectoPascal sau milibar (presiune). În al treilea rând, aceste valori sunt trimise către serverul ThingSpeak utilizând Wi-Fi încorporat al Raspberry Pi 3. Și, în cele din urmă, ThingSpeak analizează datele și le arată într-o formă grafică. Un LCD este, de asemenea, utilizat pentru a afișa aceste valori la nivel local.
ThingSpeak oferă un instrument foarte bun pentru proiectele bazate pe IoT. Prin utilizarea site-ului web ThingSpeak, ne putem monitoriza datele și ne putem controla sistemul prin internet, utilizând canalele și paginile web furnizate de ThingSpeak. ThingSpeak „Colectează” datele de la senzori, „Analizează și vizualizează” datele și „Acționează” declanșând o reacție. Am explicat anterior despre trimiterea de date către ThingSpeak în detaliu, puteți verifica acolo. Aici vă explicăm pe scurt să utilizați ThingSpeak pentru această stație meteo Raspberry Pi.
Mai întâi trebuie să creați un cont pe site-ul web ThingSpeak și să creați un „canal nou” în acesta. În noul canal trebuie să definiți câteva câmpuri pentru datele pe care doriți să le monitorizați, ca în acest proiect vom crea trei câmpuri pentru datele privind umiditatea, temperatura și presiunea.
Acum faceți clic pe fila „Chei API” și salvați tastele API de scriere și citire, aici folosim doar cheia de scriere. Trebuie să copiați această cheie în variabila „cheie” din cod.
După aceasta, faceți clic pe „Importarea / Exportarea datelor” și copiați URL-ul de solicitare GET Feed Feed Channel Actualizare, care este:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
Acum avem nevoie de acest „Feed Get Request URL” în codul nostru Python pentru a deschide „api.thingspeak.com” și apoi pentru a trimite date folosind această Feed Request ca șir de interogare. Și înainte de a trimite date, utilizatorul trebuie să introducă datele de temperatură, umiditate și presiune în această interogare Șir folosind variabile în program, verificați codul de la sfârșitul acestui articol.
URL = 'https://api.thingspeak.com/update?api_key=%s'% key finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (presiune)
Funcționarea DHT11 se bazează pe comunicații seriale cu un singur fir pentru preluarea datelor din DHT11. Aici am folosit biblioteca AdaFruit DHT11 pentru interfațarea DHT11 cu Raspberry Pi. Raspberry Pi aici colectează datele privind umiditatea și temperatura de la DHT11 și presiunea atmosferică de la senzorul BMP180 și apoi le trimite către serverul LCD 16x2 și ThingSpeak. ThingSpeak afișează datele sub formă de grafic după cum urmează:
Puteți afla mai multe despre senzorul DHT11 și interfața acestuia cu Arduino aici.
Diagrama circuitului:
Configurare Raspberry Pi și program Python:
Aici folosim limbajul Python pentru program. Înainte de codificare, utilizatorul trebuie să configureze Raspberry Pi. Puteți consulta tutorialele noastre anterioare pentru Noțiuni introductive despre Raspberry Pi și Instalarea și configurarea sistemului de operare Raspbian Jessie în Pi.
În primul rând, trebuie să instalăm fișierele Adafruit Python DHT Sensor Library pentru a rula acest proiect pe Raspberry Pi. Pentru a face acest lucru, trebuie să urmăm comenzile date:
sudo apt-get install git-core sudo apt-get update git clone https://github.com/adafruit/Adafruit_Python_DHT.git cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
După aceasta, utilizatorul trebuie să activeze Raspberry Pi I2C accesând RPi Software Configuration Too:
sudo raspi-config
Apoi accesați „Opțiuni avansate”, selectați „I2C” și „Activați”.
Programarea unei părți a acestui proiect joacă un rol foarte important pentru a efectua toate operațiunile. În primul rând, includem toate bibliotecile necesare, inițiam variabile și definim pini pentru LCD și DHT11.
import sys import RPi.GPIO as GPIO import os import Adafruit_DHT import urllib2 import smbus import time from ctypes import c_short #Register Address regCall = 0xAA……………..
În def main (): funcția, codul de mai jos este utilizată pentru trimiterea datelor către server și afișarea lor pe ecranul LCD, continuu în bucla while .
def main (): print 'System Ready…' URL = 'https://api.thingspeak.com/update?api_key=%s'% cheie tipăriți „Așteptați….” în timp ce este True: (humi, temp) = readDHT () (pressure) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Temp # P (hPa)") lcdstring (humi + '%' + "% sC% s"% (temp, pressure)) finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (presiune) print finalURL s = urllib2.urlopen (finalURL); print humi + "" + temp + "" + press s.close () time.sleep (10)
Pentru LCD, funcția def lcd_init () este utilizată pentru inițializarea LCD în modul pe patru biți, funcția def lcdcmd (ch) este utilizată pentru trimiterea comenzilor către LCD, funcția def lcddata (ch) este utilizată pentru trimiterea de date la LCD și def lcdstring ) funcția este utilizată pentru a trimite șiruri de date la LCD. Puteți verifica toate aceste funcții în Codul dat ulterior.
Funcția dată readDHT () este utilizată pentru citirea senzorului DHT11:
read readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) return (str (int (humi)), str (int (temp)))
Funcția def readBmp180 este utilizată pentru citirea presiunii de la senzorul BM180. Senzorul BM180 poate da și temperatură, dar aici l-am folosit doar pentru calcularea presiunii.
read readBmp180 (addr = deviceAdd): value = bus.read_i2c_block_data (addr, regCall, 22) # Citește datele de calibrare # Convertește datele de octet în valorile cuvintelor AC1 = convert1 (valoare, 0) AC2 = convert1 (valoare, 2) AC3 = convert1 (valoare, 4) AC4 = convert2 (valoare, 6)……………………..
Deci, aceasta este stația meteo de bază Raspberry Pi, o puteți extinde și mai mult pentru a măsura diferiți parametri legați de vreme, cum ar fi viteza vântului, temperatura solului, iluminarea (lux), precipitațiile, calitatea aerului etc.