Vlaga, temperatura i tlak tri su osnovna parametra za izgradnju bilo koje meteorološke stanice i za mjerenje uvjeta okoliša. Prethodno smo izgradili mini meteorološku stanicu koristeći Arduino, a ovaj put produžujemo meteorološku stanicu s Raspberry Pi. Ovaj projekt zasnovan na IoT-u želi pokazati trenutne parametre vlažnosti, temperature i tlaka na LCD-u, kao i na internetskom poslužitelju pomoću Raspberry Pi, što ga čini meteorološkom stanicom Raspberry Pi. Ovu postavku možete instalirati bilo gdje i putem interneta možete pratiti vremenske prilike tog mjesta s bilo kojeg mjesta na svijetu, ne samo da će prikazati trenutne podatke, već može prikazati i prošle vrijednosti u obliku grafikona.
Za mjerenje temperature koristili smo senzor vlage i temperature DHT11 i modul osjetnika tlaka BM180 za mjerenje barometarskog tlaka. Ovaj termometr i Celzijusova skala Termometar i mjerač vlage u postotcima prikazuje okolnu temperaturu i vlažnost putem LCD zaslona, a barometarski tlak prikazan je u milibarima ili hPa (hektopaskalnim). Svi se ti podaci šalju na ThingSpeak poslužitelj za praćenje uživo s bilo kojeg mjesta na svijetu putem interneta. Provjerite Demonstracijski video i program Python, dani na kraju ovog vodiča.

Postavljanje rada i ThingSpeak:
Ovaj IoT projekt zasnovan na četiri dijela. Prvo senzor DHT11 osjeti podatke o vlažnosti i temperaturi, a senzor BM180 mjeri atmosferski tlak. Kao drugo, Raspberry Pi očitava izlaz modula DHT11 pomoću jednožičnog protokola i izlaz osjetnika tlaka BM180 pomoću I2C protokola i ekstrahira vrijednosti oba senzora u prikladan broj u postocima (vlažnost), Celzijevoj skali (temperatura), hektoPaskalu ili milibarima (tlak). Treće, ove se vrijednosti šalju poslužitelju ThingSpeak pomoću ugrađenog Wi-Fi-ja Raspberry Pi 3. I na kraju ThingSpeak analizira podatke i prikazuje ih u obliku grafikona. LCD se također koristi za lokalni prikaz ovih vrijednosti.

ThingSpeak pruža vrlo dobar alat za projekte temeljene na IoT-u. Korištenjem ThingSpeak web stranice možemo nadzirati svoje podatke i kontrolirati svoj sustav putem Interneta, koristeći kanale i web stranice koje pruža ThingSpeak. ThingSpeak "prikuplja" podatke od senzora, "analizira i vizualizira" podatke i "djeluje" pokretanjem reakcije. Prethodno smo detaljno objasnili slanje podataka na ThingSpeak, tamo možete provjeriti. Ovdje ukratko objašnjavamo upotrebu ThingSpeak-a za ovu vremensku stanicu Raspberry Pi.
Prvo morate stvoriti račun na web mjestu ThingSpeak i na njemu stvoriti 'Novi kanal'. U novom kanalu morate definirati neka polja za podatke koje želite nadzirati, kao što ćemo u ovom projektu stvoriti tri polja za podatke o vlažnosti, temperaturi i tlaku.
Sada kliknite karticu 'API ključevi' i spremite API ključeve Write and Read API, ovdje koristimo samo tipku Write. Morate kopirati ovaj ključ u varijablu 'key' u kodu.

Nakon toga kliknite na "Uvoz / izvoz podataka" i kopirajte URL ažuriranja feeda GET Zahtjev, a to je:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0

Sada nam treba ovaj 'URL za dobivanje zahtjeva za feed' u našem Python kodu da bismo otvorili "api.thingspeak.com" i zatim poslali podatke koristeći ovaj zahtjev za feed kao niz upita. Prije nego što pošalje podatke, korisnik mora unijeti podatke o temperaturi, vlažnosti i tlaku u ovaj upit String koristeći varijable u programu, provjerite kod na kraju ovog članka.
URL = 'https://api.thingspeak.com/update?api_key=%s'% key finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (pritisak)
Rad DHT11 temelji se na jednožičnoj serijskoj komunikaciji za dohvaćanje podataka s DHT11. Ovdje smo koristili biblioteku AdaFruit DHT11 za povezivanje DHT11 s Raspberry Pi. Raspberry Pi ovdje prikuplja podatke o vlažnosti i temperaturi s DHT11 i atmosferskog tlaka s BMP180 senzora, a zatim ih šalje na LCD 16x2 i ThingSpeak poslužitelj. ThingSpeak prikazuje podatke u obliku grafikona kao dolje:


Ovdje možete saznati više o DHT11 senzoru i njegovom povezivanju s Arduinom.
Kružni dijagram:

Raspberry Pi konfiguracija i program Python:
Za Program ovdje koristimo jezik Python. Prije kodiranja, korisnik mora konfigurirati Raspberry Pi. Možete provjeriti naše prethodne vodiče za početne korake s Raspberry Pi i instaliranje i konfiguriranje Raspbian Jessie OS u Pi.
Prije svega trebamo instalirati datoteke knjižnice senzora Adafruit Python DHT da bismo pokrenuli ovaj projekt na Raspberry Pi. Da bismo to učinili trebamo slijediti zadane naredbe:
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-bitni python-dev sudo python setup.py install

Nakon toga, korisnik treba omogućiti Raspberry Pi I2C tako što će ući i u konfiguraciju softvera RPi:
sudo raspi-config
Zatim idite na "Advance Options", odaberite "I2C" i "Enable".


Programski dio ovog projekta igra vrlo važnu ulogu za izvođenje svih operacija. Prije svega uključujemo sve potrebne knjižnice, inicijaliziramo varijable i definiramo pinove za 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……………..
U funkciji def main (): donji kod koristi se za slanje podataka na poslužitelj i prikaz preko LCD zaslona, neprekidno u while petlji.
def main (): print 'System Ready…' URL = 'https://api.thingspeak.com/update?api_key=%s'% key print "Wait…." while True: (humi, temp) = readDHT () (tlak) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Temp # P (hPa)") lcdstring (humi + '%' + "% sC% s"% (temp, pressure)) finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (pritisak) ispis finalURL s = urllib2.urlopen (finalURL); ispis humi + "" + temp + "" + pritisak s.close () time.sleep (10)
Za LCD se funkcija def lcd_init () koristi za inicijalizaciju LCD-a u četverobitnom načinu, funkcija def lcdcmd (ch) koristi se za slanje naredbe na LCD, funkcija def lcddata (ch) koristi se za slanje podataka na LCD i def lcdstring (Str ) funkcija koristi se za slanje niza podataka na LCD. Sve ove funkcije možete provjeriti u kodu danom kasnije.
Dana funkcija def readDHT () koristi se za očitavanje senzora DHT11:
def readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) return (str (int (humi)), str (int (temp)))
funkcija def readBmp180 koristi se za očitavanje tlaka s BM180 senzora. BM180 senzor također može davati temperaturu, ali ovdje smo ga koristili samo za izračunavanje tlaka.
def readBmp180 (addr = deviceAdd): value = bus.read_i2c_block_data (addr, regCall, 22) # Čitanje podataka o kalibraciji # Pretvaranje podataka bajta u vrijednosti riječi AC1 = convert1 (value, 0) AC2 = convert1 (value, 2) AC3 = convert1 (vrijednost, 4) AC4 = convert2 (vrijednost, 6)……………………..
Dakle, ovo je osnovna meteorološka stanica Raspberry Pi, možete je dodatno proširiti za mjerenje različitih parametara povezanih s vremenom poput brzine vjetra, temperature tla, osvjetljenja (luksa), kiše, kvalitete zraka itd.
