- Instalarea dispozitivului SDS AWS IOT pentru Python pe Raspberry Pi:
- Diagrama circuitului:
- Programarea Raspberry Pi:
- Testarea programului python prin fereastra Shell:
- Lucru:
Raspberry Pi a fost întotdeauna prima alegere pentru dezvoltarea aplicațiilor bazate pe IoT dacă este implicat un anumit nivel de calcul. Cu flexibilitatea Python și a comunității puternice de dezvoltatori, este foarte ușor să colectați, să jucați, să analizați sau să raportați un set de date folosind Pi. În acest tutorial vom învăța cum să ne amestecăm în puterea Raspberry Pi cu serviciul Amazon AWS pentru a publica date online pe Internet.
În acest tutorial, vom folosi senzorul DHT11 pentru a citi valoarea temperaturii și umidității, apoi ne vom conecta la serviciul AWS IOT și vom actualiza valorile senzorului folosind AWS IOT SDK. Aceste date pot fi apoi vizualizate în consola Amazon IOT pentru a ne asigura că primim datele publicate pe internet.
De asemenea, puteți utiliza AWS Elastic Search Service pentru a prelua aceste supape senzor și a le stoca într-o bază de date și apoi utilizați serviciul Kibana Dashboard pentru a vizualiza datele senzorului ca un grafic curat. Destul de interesant? !!! Deci, Lets începe…
Cerințe prealabile:
Acest tutorial presupune că v-ați creat deja contul AWS gratuit și cunoașteți elementele de bază despre serviciul AWS IoT, cum ar fi crearea unui lucru, certificat, politică și publicarea valorilor folosind acesta. Dacă altfel citiți tutorialul de mai jos.
- Noțiuni introductive despre Amazon AWS IOT cu MQTT.fx
De asemenea, presupune că știți cum să interfațați un senzor LCD și DHT11 cu Raspberry Pi, iar bibliotecile pentru a face același lucru sunt deja instalate pe Pi. Dacă nu, continuați cu tutorialul de mai jos.
- Interfațarea DHT11 cu Raspberry Pi
La sfârșitul tutorialului de mai sus, ați fi creat un lucru pe AWS-IOT și ar trebui să aveți, de asemenea, adresa brokerului pentru lucrul dvs. împreună cu certificatele necesare pentru a vă accesa lucrul. De asemenea, presupunem că Raspberry pi dvs. este deja configurat cu un sistem de operare și este conectat la internet. Cu acestea la locul lor, să continuăm cu tutorialul. Dacă sunteți nou în Raspberry Pi, treceți mai întâi la Noțiuni introductive despre Raspberry Pi.
Instalarea dispozitivului SDS AWS IOT pentru Python pe Raspberry Pi:
Pentru a utiliza serviciul AWS pe Pi, putem instala oricare dintre cele două SDK-uri. Unul este JavaScript SDK care folosește JavaScript ca limbaj de programare și celălalt este Python SDK care, evident, folosește python ca limbaj de programare. Aici alegem Python ca SDK-ul nostru, deoarece suntem puțin mai confortabili cu Python decât JavaScript.
Informațiile complete despre AWS IOT SDK sunt disponibile pe pagina sa GitHub.
Pasul 1: Pentru a instala SDK-ul pe Pi, deschideți terminalul la tastați următoarea comandă
git clone
Pasul 2: Acesta ar fi trebuit să instaleze directorul aws pe Pi, navigați acum în el folosind următoarea comandă.
cd aws - iot -device- sdk -python
Pasul 3: În interiorul directorului instalați fișierul de configurare folosind linia de mai jos
instalare python setup.py
Diagrama circuitului:
Pe partea hardware avem un Raspberry Pi conectat la un senzor DHT11 și un ecran LCD. DHT11 este utilizat pentru a obține valoarea de temperatură și umiditate, iar ecranul LCD este utilizat pentru a afișa valorile și informațiile de deblocare. Schema circuitului pentru același lucru este prezentată mai jos.
Atât senzorul LCD, cât și senzorul DHT11 funcționează cu o sursă de + 5V, astfel încât să folosim pinii de 5V de pe Raspberry Pi pentru a le alimenta pe amândoi. Pe rezerva de ieșire a senzorului DHT11 se folosește un rezistor de tracțiune de valoare 1k, dacă utilizați un modul puteți evita acest rezistor.
Un pot de tundere de 10k este adăugat la pinul Vee al LCD-ului pentru a controla nivelul de contrast al LCD-ului. În afară de asta, toate conexiunile sunt destul de simple. Dar notați care sunt pinii GPIO pe care îi utilizați pentru a conecta pinii, deoarece vom avea nevoie în programul nostru. Graficul de mai jos ar trebui să vă permită să aflați numerele PIN GPIO.
Utilizați graficul și faceți conexiunile conform schemei de circuit. Am folosit o panou și fire jumper pentru a-mi face conexiunile. De când am folosit un modul, l-am conectat direct la Raspberry Pi. Hardware-ul meu arăta așa mai jos
Programarea Raspberry Pi:
În programul nostru Python trebuie să citim valoarea temperaturii și umidității, să o afișăm pe ecranul LCD și, de asemenea, să publicăm ambele valori în chestiunea IOT Amazon pe care am creat-o deja în tutorialul anterior. Deci, asigurați-vă că ați creat lucrul și că aveți toate cele trei fișiere cheie și adresa brokerului lucrului pe care l-ați creat.
În programul nostru Python trebuie să conectăm cele trei fișiere cheie, astfel încât Raspberry Pi să aibă acces la publicarea valorilor pe lucrurile noastre. Deci, copiați toate cele trei fișiere cheie și lipiți-le pe desktopul Raspberry pi, deoarece vom avea nevoie de adresa căii lor în programul nostru.
Programul complet Python poate fi găsit în partea de jos a acestei pagini, puteți utiliza programul după ce ați modificat adresa brokerului și directoarele căii în funcție de ceea ce ați creat. Mai jos, am explicat codul în fragmente mici.
Începem prin importarea bibliotecilor necesare proiectului nostru. Cele trei biblioteci principale sunt AWS SDK, bibliotecă LCD și bibliotecă DHT, asigurați-vă că ați instalat toate cele trei Pi. Biblioteca de timp și datetime va fi instalată implicit.
de la AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient #import din AWS-Library, IO timp de import # Pentru a crea întârziere de la datetime data de import, datetime #Pentru obține data și ora de import Adafruit_CharLCD ca LCD #import biblioteca LCD de import Adafruit_DHT #import DHT Biblioteca pentru senzor
În rândul următor trebuie să furnizăm detaliile lucrului, cum ar fi adresa brokerului, numele clientului și calea către certificatul și fișierele cheie. Aici am folosit numele clientului ca new_Client, puteți utiliza același nume sau orice alt nume la alegere. Adresa brokerului ar trebui schimbată la adresa lucrului pe care l-ați creat, iar directorul căii ar trebui, de asemenea, modificat în funcție de lucrul dvs. În afară de aceste 2 lucruri, nu trebuie să schimbați nimic în rândurile următoare.
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 Publicare coadă myMQTTClient. configureDrainingFrequency (2) # Draining: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout (5) # 5 sec
În continuare trebuie să specificăm detaliile pinului conexiunii noastre. Numărul pinului GPIO al fiecărui pin este alocat denumirii sale respective. Aici am folosit senzorul DHT pe pinul 17 și LCD în modul 4 biți. Codul pentru același lucru este prezentat mai jos
sensor_name = Adafruit_DHT.DHT11 # utilizăm senzorul DHT11 sensor_pin = 17 # Senzorul este conectat la GPIO17 pe Pi lcd_rs = 7 #RS de LCD este conectat la GPIO 7 pe PI lcd_en = 8 #EN de LCD este conectat la GPIO 8 pe PI lcd_d4 = 25 # D4 de LCD este conectat la GPIO 25 pe PI lcd_d5 = 24 # D5 de LCD este conectat la GPIO 24 pe PI lcd_d6 = 23 # D6 de LCD este conectat la GPIO 23 pe PI lcd_d7 = 18 # D7 din LCD este conectat la GPIO 18 pe PI lcd_backlight = 0 #LED nu este conectat, așa că atribuim lui 0
Apoi inițializăm ecranul LCD și afișăm un mic mesaj introductiv pe ecranul LCD. După aceea, vom încerca să ne conectăm cu chestiunea AWS folosind adresa brokerului și fișierele cheie introduse mai sus. Dacă conexiunea are succes, ecranul LCD va afișa „ Connected to AWS thing ” sau va încerca timp de 10 secunde și, dacă a eșuat, va afișa mesajul de eroare. Dacă primiți un mesaj de eroare, asigurați-vă că ați creat lucrul cu succes și că l-ați conectat corect cu codul. Puteți reveni oricând la tutorialul anterior pentru a vedea dacă ați creat lucrul în mod corespunzător în AWS.
if time.time () <connection_time: #try connection to AWS for 10 seconds myMQTTClient.connect () myMQTTClient.publish ("DHT11 / info", "connected", 0) print "MQTT Client connection success!" lcd.message ('Conectat la \ n chestia AWS') #if este conectat altfel: tipăriți "Eroare: Verificați detaliile AWS în program" lcd.message ('Eroare: \ nDetalii nevalide') # dacă nu este conectat
Odată ce conexiunea este stabilită cu succes, intrăm în bucla infinită de timp pentru a publica valoarea timpului, temperaturii și umidității ca o sarcină utilă. Sarcina utilă aici ar trebui să fie întotdeauna un șir în format JSON. Deci, mai întâi, citim data și ora curente și le salvăm într-o variabilă folosind liniile de mai jos
now = datetime.utcnow () #get date and time current_time = now.strftime ('% Y-% m-% dT% H:% M:% SZ') #obține ora curentă în format șir
Apoi citim valorile de umiditate și temperatură din senzorul DHT11 și îl afișăm pe un ecran LCD. Umiditatea și temperatura variabile vor menține valoarea umidității și, respectiv, a temperaturii
umiditate, temperatură = Adafruit_DHT.read_retry (senzor_nume, senzor_pin) #citire din senzor
și salvați valorile respective în temperatură și umiditate varibale
lcd.clear () #Clear the LCD screen lcd.message ('Temp =%.1f C'% temperature) # Afișează valoarea temperaturii lcd.message ('\ nHum =%.1f %%'% umiditate) #Display valoarea Umidității timp.sleep (2) # Așteptați 2 secunde, apoi actualizați valorile
Așa cum am spus mai devreme, sarcina utilă ar trebui să fie sub formă de șir cu paranteze cretate în jurul său, adăugăm valoarea datei, orei, temperaturii și umidității după convertirea variabilei în șiruri, după cum se arată mai jos.
#prepare sarcina utilă în format șir payload = '{"timestamp": "' + current_time + '", "temperature":' + str (temperature) + ', "umiditate":' + str (umiditate) + '}'
În cele din urmă, odată ce sarcina utilă este gata, trebuie să o publicăm clientului MQTT. Acest lucru se poate face folosind comanda myMQTTclient.publish . În timp ce publicăm un lucru, ar trebui să-i dăm și un nume, aici l-am numit DHT11 / data, dar îl puteți numi oricum doriți. Dar asigurați-vă că vă amintiți numele, deoarece va trebui să ne abonăm la lucrarea noastră pentru a vedea datele.
Testarea programului python prin fereastra Shell:
Odată ce programul este gata, lansați-l folosind alegerea dvs. Am folosit Python IDE pentru a lansa programul pe fereastra shell. Dacă totul este în regulă, ar trebui să obțineți o conexiune de mesaj cu succes și toată încărcătura utilă ar trebui să fie afișată pe fereastră. Puteți verifica dacă valorile temperaturii și umidității sunt citite corect. Sarcina utilă va fi actualizată la fiecare 5 secunde. Fereastra shell va arăta cam așa mai jos
Dacă aveți vreo problemă, asigurați-vă că ați dat detaliile corecte ale cheii și adresa brokerului, verificați și dacă acest lucru poate fi conectat la utilizarea software-ului MQTT.fx. Dacă shell-ul afișează succesul conexiunii Client MQTT și se blochează acolo, înseamnă că senzorul DHT11 nu răspunde verificați dacă v-ați conectat la pinul corect și senzorul este funcțional.
Lucru:
Odată ce lansați programul și obțineți detaliile de mai sus pe fereastra shell, înseamnă că programul răspunde corect și valorile sunt încărcate pe serverul Amazon AWS. De asemenea, puteți observa afișajul LCD pentru a verifica dacă scrie „ Publicat pe AWS-IoT” la fiecare 5 secunde, după cum se arată mai jos.
Putem intra în aplicația MQTT.fx și să ne abonăm la subiectul DHT11 / date . Apoi ar trebui să putem obține toate datele publicate de Raspberry Pi. Aceste date vor fi, de asemenea, actualizate la fiecare 5 secunde; ecranul MQTT va arăta cam așa mai jos
După cum puteți vedea, sarcina utilă este primită pe software-ul MQTT, așa cum este evidențiat în albastru. De asemenea, puteți viziona videoclipul de mai jos pentru a afla cum funcționează proiectul. Deoarece avem datele noastre pe internet, le putem folosi cu alte instrumente furnizate de Amazon, cum ar fi Elastic search și Lambda, pentru a salva datele într-o bază de date sau pentru a le vizualiza apoi pe un grafic. Există mult mai multe aplicații, bazate pe modul în care trebuie să fim beneficiați de date.
Sper că ai înțeles tutorialul și ți-a plăcut să construiești ceva similar, dacă ai vreo problemă în realizarea acestui lucru, postează-l în secțiunea de comentarii de mai jos sau folosește forumurile pentru ajutor tehnic.