Kosteus, lämpötila ja paine ovat kolme perusparametriä minkä tahansa sääaseman rakentamiseen ja ympäristöolosuhteiden mittaamiseen. Olemme aiemmin rakentaneet mini-sääaseman Arduinoa käyttäen ja tällä kertaa laajennamme sääasemaa Raspberry Pi: llä. Tämän IoT-pohjaisen projektin tarkoituksena on näyttää nykyiset kosteus-, lämpötila- ja paineparametrit LCD-näytöllä sekä Internet-palvelimella käyttämällä Raspberry Pi -tekniikkaa, joka tekee siitä Vadelma Pi -aseman. Voit asentaa tämän asennuksen mihin tahansa ja seurata kyseisen paikan sääoloja mistä päin maailmaa tahansa Internetissä. Se näyttää paitsi nykyiset tiedot myös aiemmat arvot kaavioina.
Olemme käyttäneet DHT11 Kosteus- ja lämpötila-anturia lämpötilan tunnistamiseen ja BM180 Paineanturimoduulia ilmanpaineen mittaamiseen. Tämä celsiusasteikko Lämpömittari ja prosenttiosuusaste Kosteusmittari näyttää ympäristön lämpötilan ja kosteuden nestekidenäytön kautta ja ilmanpaine näytetään millibaareina tai hPa: na (hektopascaleina). Kaikki nämä tiedot lähetetään ThingSpeak- palvelimelle suoraa seurantaa varten kaikkialta maailmasta Internetin kautta. Tarkista esittelyvideo- ja Python-ohjelma, jotka on annettu tämän opetusohjelman lopussa.
Työskentely ja ThingSpeak-asennus:
Tässä IoT-pohjaisessa projektissa on neljä osiota. Ensinnäkin DHT11-anturi tunnistaa kosteus- ja lämpötilatiedot ja BM180-anturi mittaa ilmanpaineen. Toiseksi Raspberry Pi lukee DHT11-anturimoduulin lähdön käyttäen yksijohtoprotokollaa ja BM180-paineanturin lähtöä I2C-protokollaa käyttäen ja purkaa molemmat anturiarvot sopivaan lukuun prosentteina (kosteus), Celsius-asteikko (lämpötila), hektopascalina tai millibaareina (paine). Kolmanneksi nämä arvot lähetetään ThingSpeak-palvelimelle käyttämällä Raspberry Pi 3: n sisäänrakennettua Wi-Fi-yhteyttä. Ja lopuksi ThingSpeak analysoi tiedot ja näyttää ne graafisessa muodossa. LCD-näyttöä käytetään myös näiden arvojen näyttämiseen paikallisesti.
ThingSpeak tarjoaa erittäin hyvän työkalun IoT-pohjaisiin projekteihin. ThingSpeak-verkkosivustoa käyttämällä voimme seurata tietojamme ja hallita järjestelmäämme Internetin kautta ThingSpeakin tarjoamien kanavien ja verkkosivujen avulla. ThingSpeak 'kerää' tietoja antureista, 'analysoi ja visualisoi' tiedot ja 'teot' käynnistämällä reaktion. Olemme aiemmin selittäneet tietojen lähettämisestä ThingSpeakille yksityiskohtaisesti, voit tarkistaa ne. Tässä selitämme lyhyesti ThingSpeakin käyttöä tälle Raspberry Pi -sääasemalle.
Ensin sinun on luotava tili ThingSpeak-verkkosivustolle ja luotava siihen uusi kanava. Uudessa kanavassa sinun on määritettävä joitain kenttiä seurattavalle datalle, kuten tässä projektissa luomme kolme kenttää kosteus-, lämpötila- ja painetiedoille.
Napsauta nyt 'API-avaimet' -välilehteä ja tallenna Write and Read API -avaimet, tässä käytämme vain Write-avainta. Sinun on kopioitava tämä avain koodin avainmuuttujaan.
Napsauta sen jälkeen 'Tietojen tuonti / vienti' ja kopioi Päivitä kanavasyöte GET-pyyntö-URL-osoite, joka on:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
Tarvitsemme nyt Python-koodissamme tämän 'Feed Get Request URL' -sivun, jotta voimme avata “api.thingspeak.com” ja lähettää sitten tietoja tällä syötepyynnöllä kyselymerkkijonona. Ja ennen tietojen lähettämistä käyttäjän on syötettävä lämpötila-, kosteus- ja painetiedot tähän kyselymerkkijonoon käyttämällä muuttujia ohjelmassa, tarkista tämän artikkelin lopussa oleva koodi.
URL = 'https://api.thingspeak.com/update?api_key=%s'% key finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (paine)
DHT11: n toiminta perustuu yhden langan sarjaliikenteeseen tietojen hakemiseksi DHT11: ltä. Tässä olemme käyttäneet AdaFruit DHT11 -kirjastoa DHT11: n liittämiseen Raspberry Pi: n kanssa. Vadelma Pi kerää täällä kosteus- ja lämpötilatiedot DHT11: stä ja ilmakehän paine BMP180-anturista ja lähettää sen sitten 16x2 LCD- ja ThingSpeak-palvelimelle. ThingSpeak näyttää tiedot kaaviona seuraavasti:
Voit oppia lisää DHT11-anturista ja sen liittymisestä Arduinoon täältä.
Piirikaavio:
Raspberry Pi -määritys ja Python-ohjelma:
Käytämme tässä Python-kieltä ohjelmassa. Ennen koodaamista käyttäjän on määritettävä Raspberry Pi. Voit tarkistaa edelliset oppaamme Raspberry Pi: n käytön aloittamisesta ja Raspbian Jessie -käyttöjärjestelmän asentamisesta ja määrittämisestä Pi: ssä.
Ensinnäkin meidän on asennettava Adafruit Python DHT Sensor Library -tiedostot tämän projektin suorittamiseksi Raspberry Pi -palvelussa. Tätä varten meidän on noudatettava annettuja komentoja:
sudo apt-get install git-core sudo apt-get update git klooni 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
Tämän jälkeen käyttäjän on otettava Raspberry Pi I2C käyttöön siirtymällä myös RPi-ohjelmiston määrityksiin:
sudo raspi-config
Siirry sitten kohtaan "Advance Options", valitse "I2C" ja "Ota käyttöön" se.
Tämän projektin ohjelmointiosalla on erittäin tärkeä rooli kaikkien toimintojen suorittamisessa. Ensinnäkin sisällytämme kaikki vaaditut kirjastot, aloitamme muuttujat ja määritämme nastat LCD: lle ja DHT11: lle.
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……………..
In def main (): toiminto, alle koodia käytetään lähettää tiedot palvelimelle ja näyttää sen yli LCD, jatkuvasti kun taas silmukka.
def main (): print 'System Ready…' URL = 'https://api.thingspeak.com/update?api_key=%s'% key print "Wait…." while True: (humi, temp) = readDHT () (paine) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Temp # P (hPa)") lcdstring (humi + '%' + "% sC% s"% (lämpötila, paine)) finalURL = URL + "& kenttä1 =% s & kenttä2 =% s"% (humi, lämpötila) + "& kenttä3 =% s"% (paine) tulosta lopullinenURL s = urllib2.urlopen (finalURL); tulosta humi + "" + temp + "" + paine s.close () time.sleep (10)
Nestekidenäytössä def lcd_init () -toimintoa käytetään nestekidenäytön alustamiseen nelibittisessä tilassa, def lcdcmd (ch) -toimintoa käytetään komentojen lähettämiseen nestekidenäyttöön, def lcddata (ch) -toimintoa käytetään tietojen lähettämiseen LCD- näyttöön ja def lcdstring (Str ) -toimintoa käytetään lähettämään merkkijono LCD-näyttöön. Voit tarkistaa kaikki nämä toiminnot jälkikäteen annetusta koodista.
Annettua def readDHT () -toimintoa käytetään DHT11-anturin lukemiseen:
def readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) return (str (int (humi)), str (int (temp)))
def readBmp180 -toimintoa käytetään lukemaan painetta BM180-anturista. BM180-anturi voi myös antaa lämpötilan, mutta tässä olemme käyttäneet sitä vain paineen laskemiseen.
def readBmp180 (addr = deviceAdd): arvo = bus.read_i2c_block_data (addr, regCall, 22) # Lue kalibrointitiedot # Muunna tavutiedot sana-arvoiksi AC1 = muunna1 (arvo, 0) AC2 = muunna1 (arvo, 2) AC3 = muunna1 (arvo, 4) AC4 = muunna2 (arvo, 6)……………………..
Joten tämä on Raspberry Pi -sääasema, voit laajentaa sitä edelleen mittaamaan erilaisia säähän liittyviä parametreja, kuten tuulen nopeus, maaperän lämpötila, valaistusvoima (luksi), sateet, ilmanlaatu jne.