Mitrums, temperatūra un spiediens ir trīs galvenie parametri, lai izveidotu jebkuru meteoroloģisko staciju un mērītu vides apstākļus. Iepriekš mēs esam izveidojuši mini laika staciju, izmantojot Arduino, un šoreiz mēs paplašinām laika staciju ar Raspberry Pi. Šī IoT balstītā projekta mērķis ir parādīt pašreizējos mitruma, temperatūras un spiediena parametrus LCD, kā arī interneta serverī, izmantojot Raspberry Pi, kas padara to par Raspberry Pi meteostaciju. Jūs varat instalēt šo iestatījumu jebkur un internetā kontrolēt šīs vietas laika apstākļus no jebkuras vietas pasaulē, tas ne tikai parādīs pašreizējos datus, bet arī parādīs iepriekšējās vērtības grafiku veidā.
Temperatūras noteikšanai mēs izmantojām mitruma un temperatūras sensoru DHT11 un barometriskā spiediena mērīšanai BM180 spiediena sensora moduli. Šis Celsija skalas termometrs un procentuālā mitruma mērītājs, izmantojot LCD displeju, parāda apkārtējās vides temperatūru un mitrumu, un barometriskais spiediens tiek parādīts milibāros vai hPa (hektopascālos). Visi šie dati tiek nosūtīti uz ThingSpeak serveri tiešraides uzraudzībai no jebkuras vietas pasaulē, izmantojot internetu. Pārbaudiet demonstrācijas video un Python programmu, kas sniegta šīs apmācības beigās.
Darbs un ThingSpeak iestatīšana:
Šim IoT projektam ir četras sadaļas. Pirmkārt, DHT11 sensors uztver mitruma un temperatūras datus, un BM180 sensors mēra atmosfēras spiedienu. Otrkārt, Raspberry Pi nolasa DHT11 sensora moduļa izvadi, izmantojot viena stieples protokolu un BM180 spiediena sensora izvadi, izmantojot I2C protokolu, un iegūst abu sensoru vērtības piemērotā skaitā procentos (mitrums), pēc Celsija skalas (temperatūra), hektopascālā vai milibārā (spiediens). Treškārt, šīs vērtības tiek nosūtītas uz ThingSpeak serveri, izmantojot iebūvēto Raspberry Pi 3 Wi-Fi. Visbeidzot, ThingSpeak analizē datus un parāda tos Grafika formā. LCD tiek izmantots arī šo vērtību lokālai parādīšanai.
ThingSpeak nodrošina ļoti labu rīku IoT balstītiem projektiem. Izmantojot ThingSpeak vietni, mēs varam uzraudzīt savus datus un kontrolēt sistēmu internetā, izmantojot ThingSpeak nodrošinātos kanālus un tīmekļa lapas. ThingSpeak “apkopo” datus no sensoriem, “analizē un vizualizē” datus un “darbojas”, izraisot reakciju. Mēs iepriekš esam detalizēti izskaidrojuši par datu sūtīšanu uz ThingSpeak, jūs varat to pārbaudīt. Šeit mēs īsi paskaidrojam, kā izmantot ThingSpeak šai Raspberry Pi laika stacijai.
Vispirms jums ir jāizveido konts ThingSpeak vietnē un tajā jāizveido “Jauns kanāls”. Jaunajā kanālā jums jānosaka daži lauki datiem, kurus vēlaties uzraudzīt, piemēram, šajā projektā mēs izveidosim trīs laukus mitruma, temperatūras un spiediena datiem.
Tagad noklikšķiniet uz cilnes API atslēgas un saglabājiet API rakstīšanas un lasīšanas atslēgas, šeit mēs izmantojam tikai rakstīšanas atslēgu. Šī atslēga ir jākopē koda mainīgajā “key”.
Pēc tam noklikšķiniet uz Datu importēšana / eksportēšana un nokopējiet kanāla plūsmas atjaunināšanas GET pieprasījuma URL, kas ir:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
Tagad mums ir nepieciešams šis “Feed Get Request URL” mūsu Python kodā, lai atvērtu “api.thingspeak.com” un pēc tam nosūtītu datus, izmantojot šo plūsmas pieprasījumu kā vaicājuma virkni. Un pirms datu nosūtīšanas lietotājam šajā vaicājumā jāievada temperatūras, mitruma un spiediena dati, izmantojot programmā mainīgos, pārbaudiet šī raksta beigās esošo kodu.
URL = 'https://api.thingspeak.com/update?api_key=%s'% key finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (spiediens)
DHT11 darbība ir balstīta uz vienas stieples sērijveida sakariem, lai iegūtu datus no DHT11. Šeit mēs izmantojām AdaFruit DHT11 bibliotēku, lai sasaistītu DHT11 ar Raspberry Pi. Aveņu Pi šeit apkopo mitruma un temperatūras datus no DHT11 un atmosfēras spiedienu no BMP180 sensora un pēc tam nosūta tos uz 16x2 LCD un ThingSpeak serveri. ThingSpeak parāda datus diagrammas veidā, kā norādīts zemāk:
Šeit varat uzzināt vairāk par DHT11 sensoru un tā saskarni ar Arduino.
Ķēdes shēma:
Aveņu Pi konfigurācija un Python programma:
Mēs šeit Programmai izmantojam Python valodu. Pirms kodēšanas lietotājam jākonfigurē Raspberry Pi. Jūs varat pārbaudīt mūsu iepriekšējās apmācības par darba sākšanu ar Raspberry Pi un Raspbian Jessie OS instalēšanu un konfigurēšanu Pi.
Vispirms mums jāinstalē Adafruit Python DHT Sensor Library faili, lai palaistu šo projektu Raspberry Pi. Lai to izdarītu, mums jāievēro norādītās komandas:
sudo apt-get install git-core sudo apt-get update git klons https://github.com/adafruit/Adafruit_Python_DHT.git cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py instalēt
Pēc tam lietotājam ir jāiespējo Raspberry Pi I2C, pārejot arī uz RPi programmatūras konfigurāciju:
sudo raspi-config
Pēc tam dodieties uz sadaļu “Avansa iespējas”, atlasiet “I2C” un “Iespējot”.
Programmēšana daļa no šī projekta ir ļoti svarīga loma, lai veiktu visas darbības. Vispirms mēs iekļaujam visas nepieciešamās bibliotēkas, iniciējam mainīgos un definējam LCD un DHT11 tapas.
importēt sys importēt RPi.GPIO kā GPIO importēt OS importēt Adafruit_DHT importēt urllib2 importēt smbus importēšanas laiku no ctypes importēt c_short # Reģistrēties Adrese regCall = 0xAA……………..
In def main (): funkcija, zemāk esošais kods tiek izmantots, lai datus nosūtītu uz serveri un parādītu tos LCD, nepārtraukti iekšā kamēr cikls.
def main (): print 'System Ready…' URL = 'https://api.thingspeak.com/update?api_key=%s'% key print "Wait…." while True: (humi, temp) = readDHT () (spiediens) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Temp # P (hPa)") lcdstring (humi + '%' + "% sC% s"% (temp, spiediens)) finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (spiediens) print finalURL s = urllib2.urlopen (finalURL); drukāt humi + "" + temp + "" + spiediens s.close () time.sleep (10)
LCD, def lcd_init () funkcija tiek izmantota, lai inicializētu LCD četru bitu režīmā, def lcdcmd (ch) funkcija tiek izmantota komandu nosūtīšanai uz LCD, def lcddata (ch) funkcija tiek izmantota datu nosūtīšanai uz LCD un def lcdstring (Str ) funkciju izmanto, lai nosūtītu datu virkni uz LCD. Visas šīs funkcijas varat pārbaudīt pēc tam dotajā kodeksā.
DHT11 sensora nolasīšanai tiek izmantota funkcija def readDHT () :
def readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) atgriešanās (str (int (humi)), str (int (temp)))
def readBmp180 funkcija tiek izmantota BM180 sensora spiediena nolasīšanai. BM180 sensors var arī dot temperatūru, bet šeit mēs to izmantojām tikai spiediena aprēķināšanai.
def readBmp180 (addr = deviceAdd): vērtība = autobuss.read_i2c_block_data (addr, regCall, 22) # Lasīt kalibrēšanas datus # Baitdatu konvertēšana vārdu vērtībās AC1 = konvertēšana1 (vērtība, 0) AC2 = konvertēšana1 (vērtība, 2) AC3 = konvertēšana1 (vērtība, 4) AC4 = konvertēt2 (vērtība, 6)……………………..
Tātad šī ir pamata Raspberry Pi meteostacija, kuru varat vēl paplašināt, lai izmērītu dažādus ar laika apstākļiem saistītus parametrus, piemēram, vēja ātrumu, augsnes temperatūru, apgaismojumu (luksus), nokrišņus, gaisa kvalitāti utt.