- Pythonin AWS IOT Device SDK: n asentaminen Raspberry Pi: lle:
- Piirikaavio:
- Vadelma Pi: n ohjelmointi:
- Python-ohjelman testaaminen Shell-ikkunan kautta:
- Työskentely:
Vadelma Pi on aina ollut ensimmäinen valinta IoT-pohjaisten sovellusten kehittämisessä, jos kyseessä on jonkinasteinen laskenta. Pythonin ja vahvan kehittäjäyhteisön joustavuuden avulla on erittäin helppoa kerätä, kirjata, analysoida tai raportoida tietojoukko Pi: n avulla. Tässä opetusohjelmassa opitaan, miten Raspberry Pi yhdistetään Amazon AWS -palvelun voimaan tietojen julkaisemiseksi verkossa Internetissä.
Tässä opetusohjelmassa käytämme DHT11-anturia lämpötilan ja kosteuden arvon lukemiseen, muodostamme sitten yhteyden AWS IOT -palveluun ja päivitämme anturiarvot AWS IOT SDK: lla. Nämä tiedot voidaan sitten visualisoida Amazon IOT -konsolissa varmistaaksemme, että tiedot julkaistaan Internetissä.
Voit myös hakea nämä anturiventtiilit AWS Elastic Search Service -palvelun avulla ja tallentaa ne tietokantaan ja visualisoida sitten anturitiedot siististi piirrettynä kaaviona Kibana Dashboard -palvelun avulla. Tarpeeksi mielenkiintoista? !!! Joten, Aloitetaan…
Edellytykset:
Tässä opetusohjelmassa oletetaan, että olet jo luonut ilmaisen AWS-tilisi ja tunnet AWS IoT -palvelun perusteet, kuten kohteen, varmenteen, käytännön luomisen ja arvojen julkaisemisen sitä käyttämällä. Jos muuten lue alla oleva opetusohjelma.
- Aloittaminen Amazon AWS IOT: n ja MQTT.fx: n kanssa
Siinä oletetaan myös, että osaat liittää LCD- ja DHT11-anturin Raspberry Pi -laitteeseen ja kirjastot samalla tavoin on jo asennettu Pi-laitteeseesi. Jos ei, jatka alla olevaa opetusohjelmaa.
- DHT11: n ja Raspberry Pi: n liitäntä
Yllä olevan opetusohjelman lopussa olisit luonut asian AWS-IOT: lle, ja sinulla tulisi olla myös esineesi välittäjäosoite yhdessä tarvitsemiesi varmenteiden kanssa. Oletamme myös, että Raspberry pi -laitteellasi on jo käyttöjärjestelmä ja että se on yhteydessä Internetiin. Kun nämä ovat paikoillaan, jatketaan opetusohjelmaa. Jos olet uusi Raspberry Pi -ohjelmassa, käy ensin läpi Vadelma-piin käytön aloittaminen.
Pythonin AWS IOT Device SDK: n asentaminen Raspberry Pi: lle:
AWS-palvelun käyttämiseksi Pi: ssä voimme asentaa jommankumman kahdesta SDK: sta. Yksi on JavaScript SDK, joka käyttää JavaScriptiä ohjelmointikielenä ja toinen on Python SDK, joka ilmeisesti käyttää pythonia ohjelmointikielenä. Tässä valitsemme Pythonin SDK: ksi, koska olemme hieman mukavampia Pythonin kuin JavaScriptin kanssa.
AWS IOT SDK: n täydelliset tiedot ovat saatavana sen GitHub-sivulla.
Vaihe 1: Jos haluat asentaa SDK: n Pi: ään, avaa pääte kirjoittamalla seuraava komento
git-klooni
Vaihe 2: Tämän olisi pitänyt asentaa aws- hakemisto Piisi , siirry nyt siihen seuraavalla komennolla.
cd aws - iot -device- sdk -python
Vaihe 3: Asenna asennustiedosto hakemiston sisälle alla olevalla rivillä
python setup.py asennus
Piirikaavio:
Laitteistopuolella meillä on Raspberry Pi, joka on kytketty DHT11-anturiin ja LCD-näyttöön. DHT11: tä käytetään lämpötilan ja kosteuden arvon saamiseen ja nestekidenäyttöä käytetään arvojen näyttämiseen ja virheenkorjauksen poistamiseen. Saman kytkentäkaavio on esitetty alla.
Sekä LCD- että DHT11-anturi toimii + 5 V: n virtalähteellä, joten käytämme Raspberry Pi: n 5 V: n nastoja molempien virtalähteeseen. DHT11-anturin lähtötapissa käytetään arvoa 1k vetovastusta, jos käytät moduulia, voit välttää tämän vastuksen.
Leikkuri potin 10k lisätään Vee pin LCD valvoa kontrasti LCD. Muutoin kaikki yhteydet ovat melko suoraviivaisia. Mutta kirjoita muistiin ne GPIO-nastat, joita käytät nastojen liittämiseen, koska tarvitsemme ohjelmasi. Alla olevan kaavion pitäisi antaa sinun selvittää GPIO-pin-numerot.
Käytä kaaviota ja tee liitännät piirikaavion mukaisesti. Käytin leipälevyä ja hyppyjohtoja liitäntöjen tekoon. Koska käytin moduulia, johdin sen suoraan Raspberry Pi: hen. Laitteeni näytti tältä alla
Vadelma Pi: n ohjelmointi:
Python-ohjelmassa meidän on luettava lämpötilan ja kosteuden arvo, näytettävä se LCD-näytöllä ja julkaistava molemmat arvot myös Amazon IOT -asiaan, jonka olemme luoneet jo edellisessä opetusohjelmassa. Joten varmista, että olet luonut asian ja sinulla on kaikki kolme avaintiedostoa ja luomasi asian välittäjäosoite.
Meidän python ohjelma meidän on yhdistää kolme keskeistä tiedostot niin, että Raspberry Pi pääsevät julkaise meidän juttu. Joten kopioi kaikki kolme avaintiedostoa ja liitä se Vadelma pi -laitteen työpöydälle, koska tarvitsemme heidän polkuosoitteensa ohjelmassa.
Täydellinen python ohjelma löytyy alareunassa tällä sivulla voit käyttää ohjelmaa muokkaamisen jälkeen välittäjä osoite ja polku hakemistoja mukaan asia loit. Lisäksi olen selittänyt koodin pienissä katkelmissa.
Aloitamme tuomalla projektiimme tarvittavat kirjastot. Kolme pääkirjastoa ovat AWS SDK, LCD-kirjasto ja DHT-kirjasto. Varmista, että olet asentanut kaikki kolme Pi: täsi. Aika ja Datetime kirjasto asennetaan oletuksena.
alkaen AWSIoTPythonSDK.MQTTLib tuonti AWSIoTMQTTClient #Import päässä AWS-esineiden internetin kirjasto tuonti aika # luominen viive alkaen datetime tuonti mennessä datetime #To saada päivämäärä ja kellonaika tuonnin Adafruit_CharLCD kuten LCD #Import LCD kirjaston tuonti Adafruit_DHT #Import DHT kirjasto anturi
Seuraavalla rivillä meidän on annettava asia-yksityiskohdat, kuten välittäjän osoite, asiakkaan nimi ja polku varmenteeseen ja avaintiedostoihin. Täällä olen käyttänyt asiakkaan nimeä uutena_asiakkaana. Voit käyttää samaa tai mitä tahansa valitsemaasi nimeä. Välittäjän osoite tulisi vaihtaa luomasi asian osoitteeksi ja myös polkuhakemisto tulisi vaihtaa omasi mukaan. Muita kuin näitä 2 asiaa, sinun ei tarvitse muuttaa mitään seuraavilla riveillä.
myMQTTClient = AWSIoTMQTTClient ("new_Client") myMQTTClient.configureEndpoint ("qwert1234567yuio89.iot.us-east-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home / CA / pi / Desktop "/ home / pi / Desktop / ESP32_Thing-varmenteet / private.pem.key", "/ home / pi / Desktop / ESP32_Thing-sertifikaatit / certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (-1) # Infinite offline Julkaise jonossa myMQTTClient. configureDrainingFrequency (2) # Tyhjennys: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout (5) # 5 s
Seuraavaksi meidän on määritettävä yhteyden yksityiskohdat. Jokaisen nastan GPIO-pin-numero on varattu vastaavalle nimelleen. Tässä olemme käyttäneet DHT-anturia nastassa 17 ja nestekidenäyttöä 4-bittisessä tilassa. Saman koodi näkyy alla
sensor_name = Adafruit_DHT.DHT11 # käytämme DHT11-anturia sensor_pin = 17 # Sensori on kytketty GPIO17: een Pi: llä lcd_rs = 7 # LCD: n RSRS on kytketty GPIO 7: ään PI: ssä lcd_en = 8 # EN LCD: tä on kytketty GPIO 8: een PI: ssä lcd_d4 = 25 # LCD: n D4 on kytketty GPIO 25: een PI: ssä lcd_d5 = 24 # LCD: n D5 on kytketty GPIO 24: een PI lcd_d6 = 23 # LCD: n D6 on kytketty GPIO 23: een PI lcd_d7 = 18 # D7 / LCD on kytketty GPIO 18: een PI: ssä lcd_backlight = 0 #LED ei ole kytketty, joten osoitamme 0: lle
Sitten me alustaa LCD ja näyttää pienen intro viesti LCD-näytöllä. Sen jälkeen yritämme muodostaa yhteyden AWS-asiaan käyttämällä yllä annettuja välittäjäosoitteita ja avaintiedostoja. Jos yhteys onnistuu, nestekidenäytössä näkyy " Connected to AWS thing " tai se yrittää 10 sekunnin ajan ja jos se epäonnistui, se näyttää virheilmoituksen. Jos saat virheilmoituksen, varmista, että olet luonut asian onnistuneesti ja linkittänyt sen oikein koodiin. Voit aina palata edelliseen opetusohjelmaan nähdäksesi, oletko luonut asian oikein AWS: ssä.
jos time.time () <connect_time: # yritä muodostaa yhteys AWS: ään 10 sekunniksi myMQTTClient.connect () myMQTTClient.publish ("DHT11 / info", "connected", 0) tulosta "MQTT Client connection success!" lcd.message ('Yhdistetty \ n AWS-asiaan') # jos liitetty muuhun: tulosta "Virhe: Tarkista AWS-tiedot ohjelmassa" lcd.message ('Virhe: \ nVäärät tiedot') # jos ei yhdistetty
Kun yhteys on luotu onnistuneesti, me tulla ääretön , kun silmukka julkaista ajan arvo, lämpötila ja kosteus, kuten hyötykuorman. Tällöin hyötykuorman tulee aina olla merkkijono JSON-muodossa. Joten ensin luemme nykyisen päivämäärän ja kellonajan ja tallennamme sen muuttujaan käyttämällä alla olevia rivejä
now = datetime.utcnow () #get date and time current_time = now.strftime ('% Y-% m-% dT% H:% M:% SZ') # get current time string format
Sitten luemme DHT11-anturin kosteus- ja lämpötila-arvot ja näytämme sen LCD-näytöllä. Vaihteleva kosteus ja lämpötila pitävät kosteuden ja lämpötilan arvon
kosteus, lämpötila = Adafruit_DHT.read_retry (anturin_nimi, anturin_nasta) #luettu anturista
ja tallenna vastaavat arvot lämpötilan ja kosteuden vaihteluihin
lcd.clear () #Poista LCD-näyttö lcd.message ('Lämpötila =%.1f C'% lämpötila) # Näytä lämpötilan lcd.message arvo ('\ nHum =%.1f %%'% kosteus) #Display Kosteuden kesto. uni (2) # Odota 2 sekuntia ja päivitä sitten arvot
Kuten aikaisemmin kerrottiin, hyötykuorman tulisi olla merkkijono, jonka ympärillä on kiharaiset sulkeet, lisäämme päivämäärän, ajan, lämpötilan ja kosteuden arvon muunnettuasi muuttujan merkkijonoiksi alla olevan kuvan mukaisesti.
#valmista hyötykuorma merkkijonomuodossa hyötykuorma = '{"aikaleima": "' + nykyinen aika + '", "lämpötila":' + str (lämpötila) + ', "kosteus":' + str (kosteus) + '}'
Lopuksi kun hyötykuorma on valmis, meidän on julkaistava se MQTT-asiakkaalle. Tämä voidaan tehdä käyttämällä myMQTTclient.publish- komentoa. Kun julkaisemme asiaa, meidän on myös annettava sille nimi, tässä olen nimennyt sen DHT11 / data, mutta voit nimetä sen mitä haluat. Mutta muista muistaa nimi, koska meidän on tilattava juttuamme nähdäksesi tiedot.
Python-ohjelman testaaminen Shell-ikkunan kautta:
Kun ohjelma on valmis, käynnistä se valitsemallasi tavalla. Olen käyttänyt Python IDE: tä käynnistääksesi ohjelman kuori-ikkunassa. Jos kaikki on kunnossa, sinun on saatava viestiyhteys onnistuneesti ja kaiken hyötykuorman pitäisi näkyä ikkunassa. Voit tarkistaa, luetaanko lämpötila- ja kosteusarvoja oikein. Hyötykuorma päivitetään 5 sekunnin välein. Kuori-ikkuna näyttää tältä alla
Jos sinulla on ongelmia, varmista, että olet antanut oikeat avaintiedot ja välittäjän osoitteen, tarkista myös, että jos asia voidaan yhdistää MQTT.fx-ohjelmistolla. Jos kuori näyttää MQTT Client -yhteyden onnistumisen ja jumittuu siellä, se tarkoittaa, että DHT11-anturi ei vastaa tarkista, oletko liittänyt oikean nastan ja anturi toimii.
Työskentely:
Kun käynnistät ohjelman ja saat yllä olevat tiedot kuori-ikkunaan, se tarkoittaa, että ohjelma reagoi oikein ja arvoja ladataan Amazon AWS -palvelimeen. Voit myös huomata nestekidenäytön tarkistaaksesi , lukeeko se Julkaistu AWS-IoT: lle 5 sekunnin välein, kuten alla on esitetty.
Voimme päästä MQTT.fx-sovellukseen ja tilata aiheen DHT11 / data . Sitten meidän pitäisi pystyä saamaan kaikki tiedot, joita Raspberry Pi julkaisee. Nämä tiedot päivitetään myös 5 sekunnin välein; MQTT-näyttösi näyttää tältä alla
Kuten näette, hyötykuorma vastaanotetaan MQTT-ohjelmistolla sinisellä korostettuna. Voit myös katsoa alla olevan videon saadaksesi tietää, miten projekti toimii. Koska meillä on nyt tietoja Internetissä, voimme käyttää niitä muiden Amazonin tarjoamien työkalujen, kuten Elastic-haun ja Lambdan kanssa, tietojen tallentamiseksi tietokantaan tai visualisoimiseksi sitten kaaviossa. Sovelluksia on paljon enemmän, perustuen siihen, miten tiedoista on hyötyä.
Toivottavasti ymmärrät opetusohjelman ja nautit jotain samanlaisen rakentamisesta, jos sinulla on ongelmia tämän tekemisessä, lähetä se alla olevaan kommenttiosioon tai käytä foorumeita tekniseen apuun.