- Installere AWS IOT Device SDK for Python på Raspberry Pi:
- Kretsdiagram:
- Programmering av Raspberry Pi:
- Testing av python-programmet gjennom Shell Window:
- Jobber:
Raspberry Pi har alltid vært førstevalget for å utvikle IoT-baserte applikasjoner hvis det er noe beregningsnivå involvert. Med fleksibiliteten til python og det sterke utviklerfellesskapet er det veldig enkelt å samle, logge, analysere eller rapportere et datasett ved hjelp av Pi. I denne opplæringen vil vi lære å blande inn kraften til Raspberry Pi med Amazon AWS-tjenesten for å publisere data online til Internett.
I denne opplæringen vil vi bruke DHT11-sensoren til å lese verdien av temperatur og fuktighet, og deretter koble til AWS IOT-tjenesten og oppdatere sensorverdiene ved hjelp av AWS IOT SDK. Disse dataene kan deretter visualiseres i Amazon IOT-konsollen for å sikre at vi får dataene publisert på internett.
Du kan også bruke AWS Elastic Search Service til å hente disse sensorverdiene og lagre den i en database, og deretter bruke Kibana Dashboard- tjenesten til å visualisere sensordataene som et pent tegnet diagram. Interessant nok? !!! Så, Lets kommer i gang…
Forutsetninger:
Denne opplæringen forutsetter at du allerede har opprettet din gratis AWS-konto og kjenner det grunnleggende om AWS IoT-tjenesten som å lage en ting, sertifikat, policy og å publisere verdier ved hjelp av den. Les ellers nedenfor veiledningen.
- Komme i gang med Amazon AWS IOT med MQTT.fx
Det forutsetter også at du vet hvordan du kobler en LCD- og DHT11-sensor til Raspberry Pi, og bibliotekene for å gjøre det samme er allerede installert på din Pi. Hvis ikke, fortsett med veiledningen nedenfor.
- Grensesnitt DHT11 med Raspberry Pi
På slutten av opplæringen ovenfor ville du ha opprettet en ting på AWS-IOT, og du bør også ha megleradressen for din ting sammen med sertifikatene som trengs for å få tilgang til tingene dine. Vi antar også at Raspberry pi allerede er konfigurert med et operativsystem og er koblet til internett. Med disse på plass, la oss fortsette med opplæringen. Hvis du er ny i Raspberry Pi, så gå gjennom Komme i gang med Raspberry pi først.
Installere AWS IOT Device SDK for Python på Raspberry Pi:
For å bruke AWS-tjenesten på Pi, kan vi installere en av de to SDK-ene. Den ene er JavaScript SDK som bruker JavaScript som programmeringsspråk, og den andre er Python SDK som åpenbart bruker python som programmeringsspråk. Her velger vi Python som SDK siden vi er litt mer komfortable med Python enn JavaScript.
Den komplette informasjonen om AWS IOT SDK er tilgjengelig på GitHub-siden.
Trinn 1: For å installere SDK på Pi, åpner du terminalen ved å skrive inn følgende kommando
git klone
Trinn 2: Dette burde ha installert aws- katalogen på din Pi, naviger nå til den ved hjelp av følgende kommando.
cd aws - iot -enhet- sdk -python
Trinn 3: Installer installasjonsfilen i katalogen ved hjelp av linjen nedenfor
python setup.py install
Kretsdiagram:
På maskinvaresiden har vi en Raspberry Pi koblet til en DHT11-sensor og en LCD-skjerm. DHT11 brukes til å få verdien av temperatur og fuktighet, og LCD brukes til å vise verdiene og avfeilinformasjonen. Kretsskjemaet for det samme er vist nedenfor.
Både LCD- og DHT11-sensoren fungerer med + 5V-forsyning, så vi bruker 5V-pinnene på Raspberry Pi til å drive begge deler. En opptrekksmotstand med verdi 1k brukes på utgangspinnen til DHT11-sensoren. Hvis du bruker en modul, kan du unngå denne motstanden.
En trimmerpotte på 10k er lagt til Vee-pinnen på LCD-skjermen for å kontrollere kontrastnivået på LCD-skjermen. Annet enn at alle forbindelsene er ganske rett frem. Men noter hvilke GPIO-pinner du bruker for å koble til pinnene siden vi trenger i programmet vårt. Tabellen nedenfor skal tillate deg å finne ut GPIO-pin-tallene.
Bruk diagrammet og koble til i henhold til kretsskjemaet. Jeg brukte et brødbrett og jumperledninger for å få forbindelse. Siden jeg brukte en modul, koblet jeg den direkte til Raspberry Pi. Maskinvaren min så slik ut nedenfor
Programmering av Raspberry Pi:
I vårt python-program må vi lese verdien av temperatur og fuktighet, vise den på LCD-skjermen og også publisere begge verdiene til Amazon IOT-tingen som vi har opprettet allerede i forrige opplæring. Så sørg for at du har opprettet tingen, og at du har alle de tre nøkkelfilene og megleradressen til tingen du har opprettet.
I vårt pythonprogram må vi koble de tre nøkkelfilene slik at Raspberry Pi kan få tilgang til å publisere verdier på tingene våre. Så kopier alle de tre nøkkelfilene og lim inn på skrivebordet til Raspberry pi, ettersom vi trenger stien deres adresse i programmet vårt.
Det komplette pythonprogrammet finner du nederst på denne siden, du kan bruke programmet etter å ha redigert megleradressen og banekatalogene i henhold til det du opprettet. Videre nedenfor har jeg forklart koden i små utdrag.
Vi starter med å importere bibliotekene som kreves for prosjektet vårt. De tre hovedbibliotekene er AWS SDK, LCD-bibliotek og DHT-bibliotek, sørg for at du har installert alle de tre Pi-enhetene dine. Den tid og datetime biblioteket vil bli installert som standard.
fra AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient #Import from AWS-IoT Library import time # For å skape 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 neste linje må vi oppgi tinginformasjon som megleradresse, klientnavn og bane til sertifikatet og nøkkelfilene. Her har jeg brukt klientnavnet som new_Client, du kan bruke det samme eller hvilket som helst navn du ønsker. Megleradressen skal endres til adressen til tingen du opprettet, og banekatalogen bør også endres i henhold til din ting. Annet enn disse to tingene trenger du ikke endre noe i de følgende linjene.
myMQTTClient = AWSIoTMQTTClient ("new_Client") myMQTTClient.configureEndpoint ("qwert1234567yuio89.iot.us-east-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home / pi / Desktop / ESP32. "/ home / pi / Desktop / ESP32_Thing Certificate / private.pem.key", "/ home / pi / Desktop / ESP32_Thing Certificate / Certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (-1) # Infinite offline Publiser kø myMQTTClient. configureDrainingFrequency (2) # Drenering: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sek myMQTTClient.configureMQTTOperationTimeout (5) # 5 sek
Deretter må vi spesifisere pinnedetaljene for forbindelsen vår. GPIO-pin-nummeret til hver pin er tildelt sitt respektive navn. Her har vi brukt DHT-sensoren på pin 17 og LCD i 4-biters modus. Koden for det samme er vist nedenfor
sensor_name = Adafruit_DHT.DHT11 # vi bruker DHT11 sensor sensor_pin = 17 # Sensoren er koblet til GPIO17 på Pi lcd_rs = 7 #RS av LCD er koblet til GPIO 7 på PI lcd_en = 8 #EN av LCD er koblet til GPIO 8 på PI lcd_d4 = 25 # D4 på LCD er koblet til GPIO 25 på PI lcd_d5 = 24 # D5 på LCD er koblet til GPIO 24 på PI lcd_d6 = 23 # D6 på LCD er koblet til GPIO 23 på PI lcd_d7 = 18 # D7 av LCD er koblet til GPIO 18 på PI lcd_backlight = 0 # LED er ikke koblet så vi tildeler til 0
Deretter initialiserer vi LCD-skjermen og viser en liten intro-melding på LCD-skjermen. Etter det vil vi prøve å koble til AWS-tingen ved hjelp av megleradressen og nøkkelfilene som er angitt ovenfor. Hvis tilkoblingen er vellykket, vil LCD-skjermen vise " Connected to AWS thing ", eller den vil prøve i 10 sekunder, og hvis den mislyktes, vil den vise feilmelding. Hvis du får feilmelding, må du sørge for at du har opprettet tingen med suksess og har koblet den riktig til koden. Du kan alltid gå tilbake til forrige opplæring for å se om du har opprettet tingen ordentlig i AWS.
hvis tid.tid () <tilkoblingstid: # prøve å koble til AWS i 10 sekunder myMQTTClient.connect () myMQTTClient.publish ("DHT11 / info", "tilkoblet", 0) skriv ut "MQTT klienttilkobling vellykket!" lcd.message ('Koblet til \ n AWS-ting') # hvis tilkoblet annet: skriv ut "Feil: Sjekk AWS-detaljene dine i programmet" lcd.message ('Feil: \ n Ugyldige detaljer') # hvis ikke tilkoblet
Når forbindelsen er opprettet, går vi inn i det uendelige mens sløyfen for å utgi verdien av tid, temperatur og fuktighet som en nyttelast. Nyttelasten her skal alltid være en streng i JSON-format. Så først er vi ved å lese nåværende dato og klokkeslett og lagre det i en variabel ved å bruke linjene nedenfor
now = datetime.utcnow () #get date and time current_time = now.strftime ('% Y-% m-% dT% H:% M:% SZ') #get nåværende tid i strengformat
Deretter leser vi fuktighets- og temperaturverdiene fra DHT11-sensoren og viser den på en LCD-skjerm. Den variable fuktigheten og temperaturen vil holde verdien av henholdsvis fuktighet og temperatur
fuktighet, temperatur = Adafruit_DHT.read_retry (sensor_name, sensor_pin) #les fra sensor
og lagre respektive verdier i temperatur- og fuktighetsvaribale
lcd.clear () #Rydd LCD-skjermen lcd.message ('Temp =%.1f C'% temperatur) # Vis verdien av temperatur lcd.message ('\ nHum =%.1f %%'% fuktighet) #Display verdien av fuktighetstid. sove (2) # Vent i 2 sekunder, og oppdater deretter verdiene
Som fortalt tidligere skal nyttelasten være i form av en streng med krøllete parenteser rundt, vi legger til verdien av dato, klokkeslett, temperatur og fuktighet etter å ha konvertert variabelen til strenger som vist nedenfor.
#prepare the payload in string format payload = '{"timestamp": "' + current_time + '", "temperature":' + str (temperature) + ', "fuktighet":' + str (fuktighet) + '}'
Når nyttelasten er klar, må vi endelig publisere den til MQTT-klienten. Dette kan gjøres ved å bruke kommandoen myMQTTclient.publish . Mens vi publiserer for en ting, bør vi også gi den et navn, her har jeg kalt den DHT11 / data, men du kan gi den navn til alt du vil. Men sørg for at du husker navnet, siden vi må abonnere på tingene våre for å se dataene.
Testing av python-programmet gjennom Shell Window:
Når programmet er klart, kan du starte det ved hjelp av ditt valg. Jeg har brukt Python IDE til å starte programmet på skallvinduet. Hvis alt er i orden, bør du få en meldingsforbindelse vellykket, og all nyttelast skal vises i vinduet. Du kan sjekke om verdiene til temperatur og fuktighet leses riktig. Nyttelasten oppdateres hvert 5. sekund. Skjermvinduet vil se ut som dette nedenfor
Hvis du har problemer, må du sørge for at du har oppgitt de riktige nøkkelopplysningene og megleradressen. Sjekk også at hvis tingen kan kobles til ved bruk av MQTT.fx-programvaren. Hvis skallet viser MQTT Client-tilkobling, og henger der, betyr det at DHT11-sensoren ikke svarer, sjekk om du har koblet til riktig pin og sensoren er funksjonell.
Jobber:
Når du har startet programmet og får detaljene ovenfor i skallvinduet, betyr det at programmet reagerer riktig og verdiene blir lastet opp til Amazon AWS-serveren. Du kan også legge merke til LCD-skjermen for å sjekke om det står Publisert til AWS-IoT hvert 5. sekund som vist nedenfor.
Vi kan komme inn på MQTT.fx-applikasjonen og abonnere på emnet DHT11 / data . Da skal vi kunne få alle dataene som blir publisert av Raspberry Pi. Disse dataene vil også oppdateres hvert 5. sekund; din MQTT-skjerm vil se omtrent slik ut nedenfor
Som du ser, mottas nyttelasten på MQTT-programvaren som fremhevet i blått. Du kan også se videoen nedenfor for å vite hvordan prosjektet fungerer. Siden nå har vi dataene våre på internett, og vi kan bruke dem med andre verktøy levert av Amazon som Elastic search og Lambda for å lagre dataene i en database eller visualisere dem på en graf. Det er mye flere applikasjoner, basert på hvordan vi må dra nytte av dataene.
Håper du forsto opplæringen og likte å bygge noe lignende, hvis du har noen problemer med å få dette gjort, legg det ut på kommentarseksjonen nedenfor eller bruk forumene for teknisk hjelp.