- Instaliranje AWS IOT uređaja SDK za Python na Raspberry Pi:
- Kružni dijagram:
- Programiranje vašeg Raspberry Pi:
- Testiranje programa python kroz Shell Window:
- Radno:
Raspberry Pi je uvijek bio prvi izbor za razvoj aplikacija temeljenih na IoT-u ako je uključena neka razina izračunavanja. Zahvaljujući fleksibilnosti pythona i jakoj zajednici programera vrlo je jednostavno prikupiti, evidentirati, analizirati ili prijaviti skup podataka koristeći Pi. U ovom uputstvu naučit ćemo kako spojiti snagu Raspberry Pi-a s uslugom Amazon AWS za objavljivanje podataka na mreži na Internetu.
U ovom uputstvu koristit ćemo senzor DHT11 za očitavanje vrijednosti temperature i vlažnosti, zatim se povezati s uslugom AWS IOT i ažurirati vrijednosti senzora pomoću AWS IOT SDK. Ti se podaci tada mogu vizualizirati na Amazon IOT konzoli kako bismo bili sigurni da podatke objavljujemo na internetu.
Također možete upotrijebiti AWS Elastic Search Service da biste dohvatili ove dolje senzora i spremili ih u bazu podataka, a zatim pomoću usluge Kibana Nadzorna ploča vizualizirali podatke senzora kao uredan iscrtani grafikon. Dosta zanimljivo? !!! Dakle, Krenimo…
Preduvjeti:
Ovaj vodič pretpostavlja da ste već kreirali svoj besplatni AWS račun i da znate osnove AWS IoT usluge poput stvaranja stvari, certifikata, pravila i objavljivanja vrijednosti pomoću nje. Ako je drugačije pročitajte donji vodič.
- Početak rada s Amazon AWS IOT s MQTT.fx
Također se pretpostavlja da znate kako povezati LCD i DHT11 senzor s Raspberry Pi, a biblioteke za to isto već su instalirane na vašem Pi. Ako nije, nastavite sa donjim uputstvom.
- Povezivanje DHT11 s Raspberry Pi
Na kraju gornjeg vodiča stvorili biste stvar na AWS-IOT-u, a trebali biste imati i adresu brokera za svoju stvar zajedno sa certifikatima potrebnim za pristup vašoj stvari. Također pretpostavljamo da je vaš Raspberry pi već postavljen s OS-om i povezan je s internetom. S tim na mjestu, nastavimo s vodičem. Ako ste novi u Raspberry Pi, prvo prođite kroz Prvi koraci s Raspberry pi.
Instaliranje AWS IOT uređaja SDK za Python na Raspberry Pi:
Da bismo koristili uslugu AWS na Pi, možemo instalirati bilo koji od dva SDK-a. Jedan je JavaScript SDK koji koristi JavaScript kao programski jezik, a drugi je Python SDK koji očito koristi python kao programski jezik. Ovdje odabiremo Python kao svoj SDK jer nam je Python ugodniji od JavaScript-a.
Cjelovite informacije o AWS IOT SDK dostupne su na njegovoj GitHub stranici.
Korak 1: Da biste instalirali SDK na svoj Pi, otvorite terminal na upišite sljedeću naredbu
git klon

Korak 2: Ovo je trebalo instalirati aws direktorij na vaš Pi, a sada navigirajte u njega pomoću sljedeće naredbe.
cd AWS - IOT -device- SDK -python

Korak 3: Unutar direktorija instalirajte datoteku za postavljanje pomoću donjeg retka
python setup.py instalacija

Kružni dijagram:
S hardverske strane imamo Raspberry Pi povezan s DHT11 senzorom i LCD zaslon. DHT11 se koristi za dobivanje vrijednosti temperature i vlažnosti, a LCD se koristi za prikaz vrijednosti i podataka o uklanjanju pogrešaka. Dijagram sklopa za isti prikazan je u nastavku.

I LCD i DHT11 senzor rade s napajanjem od + 5V, tako da koristimo 5V pinove na Raspberry Pi za napajanje oba. Otpor za povlačenje vrijednosti 1k koristi se na izlaznom zatiču senzora DHT11, ako koristite modul, ovaj otpor možete izbjeći.
Trimer pot 10k dodaje se Vee pin LCD za kontrolu razine kontrasta na LCD zaslonu. Osim toga, sve su veze prilično ravne. Ali zabilježite koje GPIO pinove upotrebljavate za spajanje pinova jer će nam trebati u našem programu. Grafikon u nastavku trebao bi vam omogućiti da otkrijete GPIO brojeve pinova.

Koristite tablicu i uspostavite veze prema shemi spojeva. Za povezivanje sam koristio ploču za pločice i kratkospojnike. Budući da sam koristio modul, spojio sam ga izravno na Raspberry Pi. Moj hardver je izgledao ovako u nastavku

Programiranje vašeg Raspberry Pi:
U našem python programu moramo očitati vrijednost temperature i vlažnosti, prikazati je na LCD zaslonu i također objaviti obje vrijednosti na Amazon IOT stvari koju smo stvorili već u prethodnom vodiču. Pazite da ste stvorili stvar i imate li sve tri ključne datoteke i adresu brokera stvari koju ste stvorili.
U našem python programu moramo povezati tri ključne datoteke kako bi Raspberry Pi mogao dobiti pristup za objavljivanje vrijednosti na našoj stvari. Dakle, kopirajte sve tri ključne datoteke i zalijepite ih na radnu površinu vašeg Raspberry pi jer će nam trebati njihova adresa puta u našem programu.
Kompletan Python programa mogu se pronaći na dnu ove stranice, možete koristiti program nakon uređivanja brokera adresu i put koji vodi prema stvar koju ste napravili. Dalje u nastavku objasnio sam kod u malim isječcima.
Mi početi uvoziti knjižnice potrebne za naš projekt. Tri glavne knjižnice su AWS SDK, LCD knjižnica i DHT knjižnica, pobrinite se da ste instalirali sve tri svoje Pi. Vrijeme i datetime knjižnica će biti instaliran po defaultu.
iz AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient #Import from AWS-IoT Library import time # Da bi se stvorilo kašnjenje od datuma i datuma uvoza, datetime # Da biste dobili datum i vrijeme uvoza Adafruit_CharLCD kao LCD # Uvoz LCD biblioteke import Adafruit_DHT #Import DHT Library
U sljedećem retku moramo navesti detalje o stvari kao što su adresa brokera, ime klijenta i put do datoteka certifikata i ključeva. Ovdje sam koristio ime klijenta kao new_Client možete koristiti isto ili bilo koje ime po vašem izboru. Adresu posrednika treba promijeniti u adresu stvari koju ste stvorili, a direktorij puta također treba promijeniti prema vašoj stvari. Osim ove dvije stvari, u sljedećim redovima ne morate ništa mijenjati.
myMQTTClient = AWSIoTMQTTClient ("new_Client") myMQTTClient.configureEndpoint ("qwert1234567yuio89.iot.us-east-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home / certifikat / ESP / CA / certifikati / ESP / CA. "/ home / pi / Desktop / ESP32_Thing certifikati / private.pem.key", "/ home / pi / Desktop / ESP32_Thing certifikati / certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (-1) # Beskonačno izvanmrežno Objavi u redu čekanja myMQTTClient. configureDrainingFrequency (2) # Ispuštanje: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout (5) # 5 sec
Dalje moramo navesti detalje pin-a naše veze. GPIO broj svakog pin-a dodijeljen je odgovarajućem imenu. Ovdje smo koristili DHT senzor na pinu 17 i LCD u 4-bitnom načinu. Kôd za isti prikazan je u nastavku
sensor_name = Adafruit_DHT.DHT11 # koristimo DHT11 senzor sensor_pin = 17 #Senzor je povezan na GPIO17 na Pi lcd_rs = 7 #RS LCD-a spojen je na GPIO 7 na PI lcd_en = 8 #EN LCD-a povezan je na GPIO 8 na PI lcd_d4 = 25 # D4 LCD-a spojen je na GPIO 25 na PI lcd_d5 = 24 # D5 LCD-a spojen je na GPIO 24 na PI lcd_d6 = 23 # D6 LCD-a spojen je na GPIO 23 na PI lcd_d7 = 18 # D7 od LCD je spojen na GPIO 18 na PI lcd_backlight = 0 #LED nije povezan pa dodjeljujemo 0
Zatim inicijaliziramo LCD i prikazujemo malu uvodnu poruku na LCD zaslonu. Nakon toga pokušat ćemo se povezati sa AWS-om koristeći gore navedenu adresu brokera i ključne datoteke. Ako je veza uspješna, na LCD-u će se prikazati " Connected to AWS thing " ili će pokušati 10 sekundi, a ako nije uspjela, prikazat će se poruka o pogrešci. Ako primite poruku o pogrešci, provjerite jeste li stvar uspješno stvorili i pravilno je povezali s kodom. Uvijek se možete vratiti na prethodni vodič da biste provjerili jeste li stvar pravilno stvorili u AWS-u.
if time.time () <connection_time: #pokušajte se spojiti na AWS na 10 sekundi myMQTTClient.connect () myMQTTClient.publish ("DHT11 / info", "connected", 0) print "MQTT Client connection connection!" lcd.message ('Connected to \ n AWS thing') #ako je spojen drugačije: print "Pogreška: provjeri svoje detalje AWS-a u programu" lcd.message ('Pogreška: \ nNevažeći detalji') #iko nije povezan
Kada se veza uspješno je uspostavljena, ulazimo u beskonačnu while petlje objaviti vrijednost vremena, temperature i vlage kao teret. Korisni teret ovdje uvijek treba biti niz u JSON formatu. Prvo smo čitali trenutni datum i vrijeme i spremali ga u varijablu pomoću donjih redaka
now = datetime.utcnow () #get datum i vrijeme current_time = now.strftime ('% Y-% m-% dT% H:% M:% SZ') #get trenutno vrijeme u formatu niza
Zatim očitamo vrijednosti vlage i temperature s DHT11 senzora i prikazujemo ih na LCD zaslonu. Promjenjiva vlažnost i temperatura zadržavat će vrijednost vlažnosti odnosno temperature
vlaga, temperatura = Adafruit_DHT.read_retry (naziv_senzora, pin_senzora) #čitaj sa senzora
i spremite odgovarajuće vrijednosti u temperaturi i vlažnosti
lcd.clear () # Očistite LCD zaslon lcd.message ('Temp =%.1f C'% temperature) # Prikažite vrijednost temperature lcd.message ('\ nHum =%.1f %%'% vlage) #Display vrijednost vremena vlage.spavanje (2) # Pričekajte 2 sekunde, a zatim ažurirajte vrijednosti
Kao što je ranije rečeno, korisni teret trebao bi biti u obliku niza s kovrčavim zagradama oko njega, a dodamo vrijednost datuma, vremena, temperature i vlažnosti nakon pretvorbe varijable u nizove kao što je prikazano dolje.
#prepare payload u string formatu payload = '{"timestamp": "' + current_time + '", "temperature":' + str (temperatura) + ', "vlažnost":' + str (vlažnost) + '}'
Napokon, kada je nosivost spremna, moramo je objaviti na MQTT klijentu. To se može učiniti pomoću naredbe myMQTTclient.publish . Dok objavljujemo na nekoj stvari, također bismo joj trebali dati ime, ovdje sam je nazvao DHT11 / data, ali možete je imenovati kako god želite. Ali obavezno upamtite ime jer ćemo se morati pretplatiti na našu stvar da bismo vidjeli podatke.
Testiranje programa python kroz Shell Window:
Kad je program spreman, pokrenite ga prema vlastitom izboru. Koristio sam Python IDE za pokretanje programa na prozoru ljuske. Ako je sve u redu, trebali biste uspješno uspostaviti vezu s porukom i sav korisni teret trebao bi biti prikazan na prozoru. Možete provjeriti čitaju li se ispravno vrijednosti temperature i vlage. Korisni teret ažurirat će se svakih 5 sekundi. Prozor ljuske u nastavku će izgledati otprilike ovako

Ako imate bilo kakvih problema, provjerite jeste li dali točne ključne detalje i adresu brokera, također provjerite može li se stvar povezati pomoću softvera MQTT.fx. Ako ljuska prikazuje uspjeh MQTT klijentske veze i visi tamo, to znači da senzor DHT11 ne reagira provjerite jeste li spojili ispravni pin i je li senzor u funkciji.

Radno:
Jednom kada pokrenete program i dobijete gore navedene detalje na prozoru ljuske, to znači da program pravilno reagira i vrijednosti se prenose na Amazon AWS poslužitelj. Također možete primijetiti da LCD zaslon provjerava piše li Objavljeno u AWS-IoT svakih 5 sekundi, kao što je prikazano u nastavku.

Možemo ući u aplikaciju MQTT.fx i pretplatiti se na temu DHT11 / podaci . Tada bismo trebali moći dobiti sve podatke koje objavljuje Raspberry Pi. Ovi će se podaci također ažurirati svakih 5 sekundi; vaš MQTT zaslon u nastavku će izgledati otprilike ovako

Kao što vidite, korisni teret prima se na MQTT softver označen plavom bojom. Također možete pogledati video u nastavku kako biste znali kako projekt funkcionira. Budući da sada imamo svoje podatke na Internetu, možemo ih koristiti s drugim alatima Amazona, poput Elastic search i Lambda, za spremanje podataka u bazu podataka ili vizualizaciju zatim na grafikonu. Postoji mnogo više aplikacija, na temelju toga kako moramo dobiti koristi od podataka.
Nadam se da ste razumjeli udžbenik i uživali ste u izradi nečeg sličnog, ako imate bilo kakvih problema s postizanjem ovoga, objavite ga u odjeljku za komentare u nastavku ili koristite forume za tehničku pomoć.
