Fuktighet, temperatur og trykk er tre grunnleggende parametere for å bygge hvilken som helst værstasjon og for å måle miljøforhold. Vi har tidligere bygget en mini værstasjon ved hjelp av Arduino, og denne gangen utvider vi værstasjonen med Raspberry Pi. Dette IoT-baserte prosjektet har som mål å vise gjeldende fuktighets-, temperatur- og trykkparametere på LCD-skjermen samt på Internett-serveren ved hjelp av Raspberry Pi, noe som gjør den til en Raspberry Pi Weather Station. Du kan installere dette oppsettet hvor som helst og kan overvåke værforholdene til det stedet hvor som helst i verden over internett, det vil ikke bare vise gjeldende data, men kan også vise tidligere verdier i form av grafer.
Vi har brukt DHT11 fuktighets- og temperatursensor for å registrere temperaturen og BM180 trykksensormodul for måling av barometertrykk. Dette Celsius-skalaen Termometer og prosentvise fuktighetsmåler viser omgivelsestemperatur og fuktighet gjennom en LCD-skjerm, og barometertrykket vises i millibar eller hPa (hektopascal). Alle disse dataene blir sendt til ThingSpeak- serveren for liveovervåkning fra hvor som helst i verden over internett. Sjekk Demonstration Video and Python Program, gitt på slutten av denne opplæringen.
Arbeid og ThingSpeak-oppsett:
Dette IoT-baserte prosjektet har fire seksjoner. For det første registrerer DHT11-sensoren fuktighets- og temperaturdata, og BM180-sensoren måler atmosfæretrykket. For det andre leser Raspberry Pi DHT11-sensormodulens utgang ved å bruke enkeltledningsprotokoll og BM180-trykksensorutgang ved å bruke I2C-protokoll og trekker ut begge sensorverdiene til et passende antall i prosent (fuktighet), Celsius-skala (temperatur), hectoPascal eller millibar (trykk). For det tredje sendes disse verdiene til ThingSpeak-serveren ved hjelp av innebygd Wi-Fi av Raspberry Pi 3. Og til slutt analyserer ThingSpeak dataene og viser dem i en grafform. En LCD brukes også til å vise disse verdiene lokalt.
ThingSpeak gir et veldig godt verktøy for IoT-baserte prosjekter. Ved å bruke ThingSpeak-nettstedet kan vi overvåke dataene våre og kontrollere systemet vårt via Internett ved hjelp av kanalene og nettsidene som leveres av ThingSpeak. ThingSpeak 'samler' dataene fra sensorene, 'analyserer og visualiserer' dataene og 'handlinger' ved å utløse en reaksjon. Vi har tidligere forklart om å sende data til ThingSpeak i detalj, du kan sjekke der. Her forklarer vi kort å bruke ThingSpeak til denne Raspberry Pi værstasjonen.
Først må du opprette konto på ThingSpeak-nettstedet og opprette en 'ny kanal' i den. I en ny kanal må du definere noen felt for dataene du vil overvåke, som i dette prosjektet vil vi lage tre felt for data for fuktighet, temperatur og trykk.
Klikk nå på 'API-nøkler' -fanen og lagre Skriv og les API-nøkler, her bruker vi bare Skriv-nøkkel. Du må kopiere denne nøkkelen i "nøkkel" -variabelen i koden.
Deretter klikker du på 'Data Import / Export' og kopier URL-en for GET Request for oppdatering av kanalfeed, som er:
api.thingspeak.com/update?api_key=30BCDSRQ52AOI3UA&field1=0
Nå trenger vi denne "Feed Get Request URL" i vår Python-kode for å åpne "api.thingspeak.com" og deretter sende data ved hjelp av denne Feed Request som spørringsstreng. Og før du sender data, må brukeren oppgi data om temperatur, fuktighet og trykk i denne spørringen Streng ved hjelp av variabler i programmet, sjekk i koden på slutten av denne artikkelen.
URL = 'https://api.thingspeak.com/update?api_key=%s'% key finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (press)
Arbeid med DHT11 er basert på en ledning seriell kommunikasjon for å hente data fra DHT11. Her har vi brukt AdaFruit DHT11-biblioteket for å grensesnitt DHT11 med Raspberry Pi. Raspberry Pi samler her inn fuktighets- og temperaturdataene fra DHT11 og atmosfæretrykk fra BMP180-sensoren og sender den til 16x2 LCD og ThingSpeak-serveren. ThingSpeak viser dataene i form av graf som nedenfor:
Du kan lære mer om DHT11-sensoren og dens grensesnitt med Arduino her.
Kretsdiagram:
Raspberry Pi Configuration and Python Program:
Vi bruker Python-språk her for programmet. Før koding må brukeren konfigurere Raspberry Pi. Du kan sjekke våre tidligere veiledninger for å komme i gang med Raspberry Pi og installere og konfigurere Raspbian Jessie OS i Pi.
Først og fremst trenger vi å installere Adafruit Python DHT Sensor Library-filer for å kjøre dette prosjektet på Raspberry Pi. For å gjøre dette må vi følge gitte kommandoer:
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
Etter dette må brukeren aktivere Raspberry Pi I2C ved å gå inn i RPi Software Configuration Too:
sudo raspi-config
Gå deretter til 'Advance Options', velg 'I2C' og 'Aktiver' den.
Programmeringsdelen av dette prosjektet spiller en veldig viktig rolle for å utføre alle operasjonene. Først og fremst inkluderer vi alle nødvendige biblioteker, initiaze-variabler og definerer pinner for LCD og 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……………..
I def main (): -funksjon brukes koden nedenfor for å sende dataene til serveren og vise dem over LCD-skjermen, kontinuerlig i løpet av en løkke.
def main (): skriv ut 'System Ready…' URL = 'https://api.thingspeak.com/update?api_key=%s'% key print "Vent…." mens True: (humi, temp) = readDHT () (trykk) = readBmp180 () lcdcmd (0x01) lcdstring ("Humi # Temp # P (hPa)") lcdstring (humi + '%' + "% sC% s"% (temp, trykk)) finalURL = URL + "& field1 =% s & field2 =% s"% (humi, temp) + "& field3 =% s"% (press) print finalURL s = urllib2.urlopen (finalURL); skriv ut humi + "" + temp + "" + trykk s.close () time.sleep (10)
For LCD brukes def lcd_init () -funksjonen til å initialisere LCD i fire bit-modus, def lcdcmd (ch) -funksjon brukes til å sende kommando til LCD, def lcddata (ch) -funksjon brukes til å sende data til LCD og def lcdstring (Str ) -funksjonen brukes til å sende datastreng til LCD. Du kan sjekke alle disse funksjonene i Code gitt etterpå.
Gitt def readDHT () -funksjonen brukes til å lese DHT11-sensor:
def readDHT (): humi, temp = Adafruit_DHT.read_retry (Adafruit_DHT.DHT11, DHTpin) retur (str (int (humi)), str (int (temp)))
def readBmp180- funksjonen brukes til å lese trykk fra BM180-sensoren. BM180-sensoren kan også gi temperatur, men her har vi bare brukt den til å beregne trykk.
def readBmp180 (addr = deviceAdd): verdi = bus.read_i2c_block_data (addr, regCall, 22) # Les kalibreringsdata # Konverter byte data til ordverdier AC1 = convert1 (verdi, 0) AC2 = convert1 (verdi, 2) AC3 = convert1 (verdi, 4) AC4 = convert2 (verdi, 6)……………………..
Så dette er den grunnleggende Raspberry Pi Weather Station, du kan utvide den ytterligere for å måle forskjellige værrelaterte parametere som vindhastighet, jordtemperatur, lysstyrke (lux), nedbør, luftkvalitet etc.