- Installation af AWS IOT Device SDK til Python på Raspberry Pi:
- Kredsløbsdiagram:
- Programmering af din Raspberry Pi:
- Test af python-programmet gennem Shell Window:
- Arbejder:
Raspberry Pi har altid været det første valg til udvikling af IoT-baserede applikationer, hvis der er tale om et eller andet niveau af beregning. Med fleksibiliteten i python og et stærkt udviklerfællesskab er det meget let at indsamle, logge, analysere eller rapportere et sæt data ved hjælp af Pi. I denne vejledning lærer vi, hvordan man blander Raspberry Pi's kraft med Amazon AWS-tjenesten til at offentliggøre data online til Internettet.
I denne vejledning bruger vi DHT11-sensoren til at læse værdien af temperatur og fugtighed, derefter oprette forbindelse til AWS IOT-tjenesten og opdatere sensorværdierne ved hjælp af AWS IOT SDK. Disse data kan derefter visualiseres i Amazon IOT-konsollen for at sikre, at vi får dataene offentliggjort på internettet.
Du kan også bruge AWS Elastic Search Service til at hente disse sensorværdier og gemme den i en database og derefter bruge Kibana Dashboard- tjenesten til at visualisere sensordataene som en pæn plottet graf. Interessant nok? !!! Så Lets kommer i gang…
Forudsætninger:
Denne vejledning forudsætter, at du allerede har oprettet din gratis AWS-konto og kender det grundlæggende om AWS IoT-tjeneste som at oprette en ting, et certifikat, en politik og at offentliggøre værdier ved hjælp af den. Læs ellers nedenstående tutorial.
- Kom godt i gang med Amazon AWS IOT med MQTT.fx
Det forudsætter også, at du ved, hvordan du interfacer en LCD- og DHT11-sensor til Raspberry Pi, og bibliotekerne til at gøre det samme er allerede installeret på din Pi. Hvis ikke, fortsæt med nedenstående vejledning.
- Interfacing DHT11 med Raspberry Pi
I slutningen af ovenstående vejledning ville du have oprettet en ting på AWS-IOT, og du skulle også have mægleradressen til din ting sammen med de certifikater, der er nødvendige for at få adgang til din ting. Vi antager også, at din Raspberry pi allerede er konfigureret med et operativsystem og er forbundet til internettet. Med disse på plads lad os fortsætte med vejledningen. Hvis du er ny hos Raspberry Pi, skal du først gennemgå Kom godt i gang med Raspberry pi.
Installation af AWS IOT Device SDK til Python på Raspberry Pi:
For at bruge AWS-tjenesten på Pi kan vi installere en af de to SDK'er. Den ene er JavaScript SDK, der bruger JavaScript som programmeringssprog, og den anden er Python SDK, som naturligvis bruger python som programmeringssprog. Her vælger vi Python som vores SDK, da vi er lidt mere komfortable med Python end JavaScript.
Den komplette information om AWS IOT SDK er tilgængelig på GitHub-siden.
Trin 1: For at installere SDK på din Pi skal du åbne terminalen ved at skrive følgende kommando
git-klon
Trin 2: Dette skulle have installeret aws- biblioteket på din Pi, naviger nu ind i det ved hjælp af følgende kommando.
cd aws - iot -device- SDK -python
Trin 3: Installer installationsfilen i biblioteket ved hjælp af nedenstående linje
python setup.py installation
Kredsløbsdiagram:
På hardwaresiden har vi en Raspberry Pi tilsluttet en DHT11-sensor og en LCD-skærm. DHT11 bruges til at få værdien af temperatur og fugtighed, og LCD bruges til at vise værdier og afbugning af oplysninger. Kredsløbsdiagrammet for det samme er vist nedenfor.
Både LCD- og DHT11-sensoren fungerer med + 5V-forsyning, så vi bruger 5V-stifterne på Raspberry Pi til at drive begge dele. En pull-up-modstand med værdi 1k bruges på udgangsstiften på DHT11-sensoren. Hvis du bruger et modul, kan du undgå denne modstand.
En trimmerpotte på 10k tilføjes til Vee-stiften på LCD'et for at kontrollere LCD'ets kontrastniveau. Bortset fra at alle forbindelser er ret ligetil. Men noter hvilke GPIO-ben, du bruger til at forbinde benene, da vi har brug for i vores program. Nedenstående diagram skal give dig mulighed for at finde ud af GPIO-pin-numrene.
Brug diagrammet og lav dine forbindelser i henhold til kredsløbsdiagrammet. Jeg brugte et brødbræt og jumpertråde til at skabe mine forbindelser. Da jeg brugte et modul, kablede jeg det direkte til Raspberry Pi. Min hardware så sådan ud nedenfor
Programmering af din Raspberry Pi:
I vores python-program skal vi læse værdien af temperatur og fugtighed, vise det på LCD-skærmen og også offentliggøre begge værdier til Amazon IOT-ting, som vi allerede har oprettet i den foregående tutorial. Så sørg for at du har oprettet tingen, og at du har alle de tre nøglefiler og mægleradressen på den ting, du har oprettet.
I vores python-program skal vi linke de tre nøglefiler, så Raspberry Pi kan få adgang til at offentliggøre værdier på vores ting. Så kopier alle de tre nøglefiler og indsæt det på skrivebordet på din Raspberry pi, da vi har brug for deres sti-adresse i vores program.
Det komplette pythonprogram findes nederst på denne side, du kan bruge programmet efter redigering af mægleradressen og stifortegnelserne i henhold til den ting, du oprettede. Længere nede har jeg forklaret koden i små uddrag.
Vi starter med at importere de biblioteker, der kræves til vores projekt. De tre hovedbiblioteker er AWS SDK, LCD-bibliotek og DHT-bibliotek, sørg for at du har installeret alle de tre din Pi. Den tid og datetime bibliotek vil blive installeret som standard.
fra AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient #Import fra AWS-IoT Library importtid # For at oprette forsinkelse fra datetime importdato, datetime #To get date and time import Adafruit_CharLCD as LCD #Import LCD library import Adafruit_DHT #Import DHT Library for sensor
I den næste linje skal vi angive tingoplysninger som mægleradresse, klientnavn og sti til certifikatet og nøglefiler. Her har jeg brugt klientnavnet som new_Client, du kan bruge det samme eller ethvert navn efter eget valg. Mægleradressen skal ændres til adressen på den ting, du oprettede, og stemmappen skal også ændres i henhold til din ting. Bortset fra disse 2 ting behøver du ikke ændre noget i de følgende linjer.
myMQTTClient = AWSIoTMQTTClient ("new_Client") myMQTTClient.configureEndpoint ("qwert1234567yuio89.iot.us-east-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home / pi / Desktop / ES32. "/ home / pi / Desktop / ESP32_Thing certifikater / private.pem.key", "/ home / pi / Desktop / ESP32_Thing certifikater / certifikat.pem.crt") myMQTTClient.configureOfflinePublishQueueing (-1) # Uendelig offline Publicer kø myMQTTClient i kø . configureDrainingFrequency (2) # Dræning: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sek myMQTTClient.configureMQTTOperationTimeout (5) # 5 sek
Derefter skal vi specificere pin-detaljerne for vores forbindelse. GPIO-pin-nummeret på hver pin er tildelt sit respektive navn. Her har vi brugt DHT-sensoren på pin 17 og LCD i 4-bit-tilstand. Koden for det samme er vist nedenfor
sensor_name = Adafruit_DHT.DHT11 # vi bruger DHT11-sensoren sensor_pin = 17 # Sensoren er tilsluttet GPIO17 på Pi lcd_rs = 7 #RS af LCD er forbundet til GPIO 7 på PI lcd_en = 8 #EN af LCD er forbundet til GPIO 8 på PI lcd_d4 = 25 # D4 på LCD er tilsluttet GPIO 25 på PI lcd_d5 = 24 # D5 på LCD er tilsluttet til GPIO 24 på PI lcd_d6 = 23 # D6 på LCD er forbundet til GPIO 23 på PI lcd_d7 = 18 # D7 af LCD er tilsluttet GPIO 18 på PI lcd_backlight = 0 # LED er ikke tilsluttet, så vi tildeler 0
Derefter initialiserer vi LCD'et og viser en lille introduktionsmeddelelse på LCD-skærmen. Derefter vil vi forsøge at oprette forbindelse til AWS-ting ved hjælp af mægleradressen og de nøglefiler, der er angivet ovenfor. Hvis forbindelsen er vellykket, viser LCD'et " Forbundet til AWS-ting ", eller det vil prøve i 10 sekunder, og hvis det mislykkes, vises det Fejlmeddelelse. Hvis du modtager en fejlmeddelelse, skal du sørge for, at du har oprettet den med succes og har linket den ordentligt til koden. Du kan altid gå tilbage til den foregående vejledning for at se, om du har oprettet den ting ordentligt i AWS.
hvis time.time () <connection_time: #try tilslutning til AWS i 10 sekunder myMQTTClient.connect () myMQTTClient.publish ("DHT11 / info", "tilsluttet", 0) udskriv "MQTT Client-forbindelses succes!" lcd.message ('Forbundet til \ n AWS-ting') # hvis tilsluttet andet: udskriv "Fejl: Kontroller dine AWS-detaljer i programmet" lcd.message ('Fejl: \ n Ugyldige detaljer') # hvis ikke tilsluttet
Når forbindelsen er etableret med succes, vi træder ind i det uendelige , mens løkke at offentliggøre værdien af tid, temperatur og fugtighed som en nyttelast. Nyttelasten her skal altid være en streng i JSON-format. Så først er vi ved at læse den aktuelle dato og tid og gemme den i en variabel ved hjælp af nedenstående linjer
nu = datetime.utcnow () #get dato og tid current_time = now.strftime ('% Y-% m-% dT% H:% M:% SZ') #get aktuel tid i strengformat
Derefter læser vi fugtigheds- og temperaturværdierne fra DHT11-sensoren og viser den på en LCD-skærm. Den variable fugtighed og temperatur holder henholdsvis fugtigheds- og temperaturværdien
fugtighed, temperatur = Adafruit_DHT.read_retry (sensornavn, sensor_nål) #læs fra sensor
og gem de respektive værdier i temperatur- og fugtighedsvaribale
lcd.clear () #Ryd LCD-skærmen lcd.message ('Temp =%.1f C'% temperatur) # Vis værdien af temperatur lcd.message ('\ nHum =%.1f %%'% fugtighed) #Display værdien af fugtighedstid. sove (2) # Vent i 2 sekunder, og opdater derefter værdierne
Som tidligere fortalt skal nyttelasten være i form af en streng med krøllede parenteser omkring den, vi tilføjer værdien af dato, tid, temperatur og fugtighed efter konvertering af variablen til strenge som vist nedenfor.
#prepare nyttelasten i strengformat nyttelast = '{ "tidsstempel": "' + CURRENT_TIME + '", "temperatur": '+ str (temperatur) +', "fugtighed": '+ str (fugtighed) +'}'
Endelig når nyttelasten er klar, skal vi offentliggøre den til MQTT-klienten. Dette kan gøres ved hjælp af kommandoen myMQTTclient.publish . Mens vi udgiver til en ting, skal vi også give det et navn, her har jeg navngivet det DHT11 / data, men du kan navngive det, hvad du vil. Men sørg for at huske navnet, da vi bliver nødt til at abonnere på vores ting for at se dataene.
Test af python-programmet gennem Shell Window:
Når programmet er klar, skal du starte det ved hjælp af dit valg. Jeg har brugt Python IDE til at starte programmet på shell-vinduet. Hvis alt er i orden, skal du få en meddelelsesforbindelse vellykket, og al nyttelast skal vises i vinduet. Du kan kontrollere, om værdierne for temperatur og fugtighed læses korrekt. Nyttelasten opdateres hvert 5. sekund. Skalvinduet ser sådan ud nedenfor
Hvis du har problemer, skal du sørge for at have angivet de rigtige nøgleoplysninger og mægleradressen, og kontroller også, at hvis tingen kan forbindes til ved hjælp af MQTT.fx-softwaren. Hvis shell viser MQTT Client-forbindelsessucces og hænger der, betyder det, at DHT11-sensoren ikke reagerer, kontroller, om du har tilsluttet den rigtige pin, og sensoren er funktionel.
Arbejder:
Når du starter programmet og får ovenstående detaljer i shell-vinduet, betyder det, at programmet reagerer korrekt, og værdierne uploades til Amazon AWS-serveren. Du kan også bemærke LCD-skærmen for at kontrollere, om der står Udgivet til AWS-IoT hvert 5. sekund som vist nedenfor.
Vi kan komme ind i MQTT.fx-applikationen og abonnere på emnet DHT11 / data . Så skulle vi være i stand til at få alle de data, der udgives af Raspberry Pi. Disse data opdateres også hvert 5. sekund; din MQTT-skærm vil se sådan ud nedenfor
Som du kan se, modtages nyttelasten på MQTT-softwaren som fremhævet med blåt. Du kan også se videoen nedenfor for at vide, hvordan projektet fungerer. Siden nu har vi vores data på internettet, vi kan bruge dem med andre værktøjer leveret af Amazon som Elastic search og Lambda til at gemme dataene i en database eller visualisere dem derefter på en graf. Der er meget flere applikationer baseret på, hvordan vi skal få gavn af dataene.
Håber du har forstået vejledningen og haft glæde af at opbygge noget lignende. Hvis du har problemer med at få dette gjort, skal du sende det i kommentarsektionen nedenfor eller bruge foraerne til teknisk hjælp.