- Instal·lació de l’SDK del dispositiu AWS IOT per a Python a Raspberry Pi:
- Esquema de connexions:
- Programació del vostre Raspberry Pi:
- Prova del programa python mitjançant la finestra de Shell:
- Treball:
Raspberry Pi sempre ha estat la primera opció per desenvolupar aplicacions basades en IoT si es tracta d’un cert nivell de càlcul. Amb la flexibilitat de Python i la comunitat de desenvolupadors sòlida, és molt fàcil recopilar, registrar, analitzar o informar d'un conjunt de dades mitjançant Pi. En aquest tutorial aprendrem a combinar el poder de Raspberry Pi amb el servei Amazon AWS per publicar dades en línia a Internet.
En aquest tutorial, utilitzarem el sensor DHT11 per llegir el valor de la temperatura i la humitat, a continuació, connectarem al servei AWS IOT i actualitzarem els valors del sensor mitjançant l’ SDK AWS IOT. Aquestes dades es poden visualitzar a la consola Amazon IOT per assegurar-nos que publiquem les dades a Internet.
També podeu utilitzar AWS Elastic Search Service per obtenir aquestes vàlvules de sensor i emmagatzemar-les en una base de dades i, a continuació, utilitzar el servei Kibana Dashboard per visualitzar les dades del sensor com a gràfic gràfic ordenat. Prou interessant? !!! Per tant, comença…
Requisits previs:
Aquest tutorial suposa que ja heu creat el vostre compte AWS gratuït i coneixeu els conceptes bàsics sobre el servei AWS IoT, com ara crear una cosa, un certificat, una política i publicar-ne valors. Si en cas contrari, llegiu el tutorial següent.
- Introducció a Amazon AWS IOT amb MQTT.fx
També suposa que sabeu com connectar un sensor LCD i DHT11 amb Raspberry Pi i que les biblioteques per fer el mateix ja estan instal·lades al vostre Pi. Si no, seguiu el tutorial següent.
- Interfície DHT11 amb Raspberry Pi
Al final del tutorial anterior, hauríeu creat una cosa a AWS-IOT i també hauríeu de tenir l'adreça del corredor de la vostra cosa juntament amb els certificats necessaris per accedir-hi. També suposem que el vostre Raspberry pi ja està configurat amb un sistema operatiu i està connectat a Internet. Amb aquests al seu lloc, continuem amb el tutorial. Si no coneixeu Raspberry Pi, primer heu de començar a utilitzar Raspberry pi.
Instal·lació de l’SDK del dispositiu AWS IOT per a Python a Raspberry Pi:
Per utilitzar el servei AWS a Pi, podem instal·lar qualsevol dels dos SDK. Un és l’SDK de JavaScript que utilitza JavaScript com a llenguatge de programació i l’altre és l’SDK de Python que, òbviament, utilitza el python com a llenguatge de programació. Aquí escollim Python com a SDK, ja que estem una mica més còmodes amb Python que JavaScript.
La informació completa sobre AWS IOT SDK està disponible a la seva pàgina GitHub.
Pas 1: per instal·lar l'SDK al vostre Pi, obriu el terminal i escriviu l'ordre següent
git clone

Pas 2: hauria d'haver instal·lat el directori aws al vostre Pi; ara navegueu-hi mitjançant l'ordre següent.
cd aws - iot -device- sdk -python

Pas 3: dins del directori, instal·leu el fitxer de configuració mitjançant la línia següent
instal·lar python setup.py

Esquema de connexions:
Pel que fa al maquinari, tenim un Raspberry Pi connectat a un sensor DHT11 i una pantalla LCD. El DHT11 s’utilitza per obtenir el valor de la temperatura i la humitat i el LCD s’utilitza per mostrar els valors i la informació d’error. El diagrama del circuit per al mateix es mostra a continuació.

Tant el sensor LCD com el DHT11 funcionen amb subministrament de + 5V, de manera que fem servir els pins de 5V del Raspberry Pi per alimentar tots dos. Al pin de sortida del sensor DHT11 s’utilitza una resistència pull up de valor 1k, si utilitzeu un mòdul podeu evitar aquesta resistència.
S'afegeix un pot de tall de 10 k al pin Vee de la pantalla LCD per controlar el nivell de contrast de la pantalla LCD. A part d'això, totes les connexions són bastant senzilles. Però anoteu els pins GPIO que esteu utilitzant per connectar-los, ja que necessitarem al nostre programa. El gràfic següent us permetrà esbrinar els números de pin GPIO.

Utilitzeu el gràfic i feu les vostres connexions segons el diagrama del circuit. Vaig utilitzar una placa de connexió i cables de pont per fer les meves connexions. Com que vaig utilitzar un mòdul, el vaig connectar directament a Raspberry Pi. El meu maquinari semblava a continuació

Programació del vostre Raspberry Pi:
Al nostre programa Python hem de llegir el valor de la temperatura i la humitat, mostrar-lo a la pantalla LCD i publicar els dos valors a la cosa IOT d’Amazon que ja hem creat al tutorial anterior. Assegureu-vos que heu creat la cosa i que teniu els tres fitxers clau i l'adreça del corredor de la cosa que heu creat.
Al nostre programa Python hem d’enllaçar els tres fitxers clau perquè Raspberry Pi pugui accedir a publicar valors sobre la nostra cosa. Per tant, copieu els tres fitxers clau i enganxeu-los a l’escriptori del vostre Raspberry pi, ja que necessitarem l’adreça del camí al nostre programa.
El programa complet de Python es troba a la part inferior d’aquesta pàgina; podeu utilitzar el programa després d’editar l’adreça del corredor i els directoris de camins d’acord amb el que heu creat. A continuació he explicat el codi en petits fragments.
Comencem per importar les biblioteques necessàries per al nostre projecte. Les tres biblioteques principals són AWS SDK, biblioteca LCD i biblioteca DHT. Assegureu-vos que heu instal·lat totes tres el vostre Pi. El temps i la data i hora de la biblioteca s'instal·len per defecte.
AWSIoTPythonSDK.MQTTLib d'importació import AWSIoTMQTTClient de AWS-IO Biblioteca temps d'importació # Per crear retard de data i hora data d'importació, data i hora # Per obtenir la data i l'hora Adafruit_CharLCD importació com LCD import biblioteca LCD importació import Adafruit_DHT Biblioteca DHT per al sensor
A la següent línia haurem de proporcionar els detalls de la cosa, com ara l'adreça del corredor, el nom i la ruta del client al fitxer de certificats i claus. Aquí he utilitzat el nom del client com a new_Client , podeu utilitzar el mateix o qualsevol nom que trieu. L'adreça del corredor s'ha de canviar per l'adreça del que heu creat i el directori del camí d'accés també s'ha de canviar d'acord amb el vostre. A part d'aquestes dues coses, no heu de canviar res a les línies següents.
myMQTTClient = AWSIoTMQTTClient ("client_nou") myMQTTClient.configureEndpoint ("qwert1234567yuio89.iot.us-east-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home / pi / Desktop / ESP32_ "/ home / pi / Desktop / ESP32_Thing certificats / private.pem.key", "/ home / pi / Desktop / ESP32_Thing certificats / certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (-1) # Infinite offline Publish queueing myMQTTClient. configureDrainingFrequency (2) # Drenatge: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 seg myMQTTClient.configureMQTTOperationTimeout (5) # 5 seg
A continuació, hem d’ especificar els detalls de la connexió. El número de pin GPIO de cada pin s’assigna al seu nom respectiu. Aquí hem utilitzat el sensor DHT del pin 17 i la pantalla LCD en mode de 4 bits. A continuació es mostra el codi del mateix
sensor_name = Adafruit_DHT.DHT11 # estem utilitzant el sensor DHT11 sensor_pin = 17 #El sensor està connectat a GPIO17 a Pi lcd_rs = 7 #RS de LCD està connectat a GPIO 7 a PI lcd_en = 8 #EN de LCD està connectat a GPIO 8 a PI lcd_d4 = 25 # D4 de LCD està connectat a GPIO 25 a PI lcd_d5 = 24 # D5 de LCD està connectat a GPIO 24 a PI lcd_d6 = 23 # D6 de LCD està connectat a GPIO 23 a PI lcd_d7 = 18 # D7 de La pantalla LCD està connectada a GPIO 18 a PI lcd_backlight = 0 #LED no està connectat, de manera que l'assignem a 0
A continuació , inicialitzem la pantalla LCD i mostrem un petit missatge d'introducció a la pantalla LCD. Després d’això, provarem de connectar-nos amb allò d’AWS mitjançant l’adreça del corredor i els fitxers clau introduïts anteriorment. Si la connexió té èxit, la pantalla LCD mostrarà " Connected to AWS thing " o s'intentarà durant 10 segons i, si falla, apareixerà el missatge d'error. Si rebeu un missatge d'error, assegureu-vos que heu creat la cosa amb èxit i l'heu enllaçat correctament amb el codi. Sempre podeu tornar al tutorial anterior per veure si heu creat la cosa correctament a AWS.
if time.time () <connection_time: #try connecting to AWS for 10 seconds myMQTTClient.connect () myMQTTClient.publish ("DHT11 / info", "connected", 0) print "MQTT Client connection success!" lcd.message ('Connectat a \ n cosa AWS') #if connected else: print "Error: comproveu els detalls de AWS al programa" lcd.message ('Error: \ nDetalls no vàlids') #if no està connectat
Un cop establerta la connexió amb èxit, entrem al bucle while infinit per publicar el valor del temps, la temperatura i la humitat com a càrrega útil. La càrrega útil aquí sempre ha de ser una cadena en format JSON. Per tant, primer estem llegint la data i l’hora actuals i desant-les en una variable mitjançant les línies següents
now = datetime.utcnow () #get data and time current_time = now.strftime ('% Y-% m-% dT% H:% M:% SZ') #obteniu l'hora actual en format de cadena
A continuació, llegim els valors d’humitat i temperatura del sensor DHT11 i el mostrem en una pantalla LCD. La humitat i la temperatura variables mantindran el valor de la humitat i la temperatura respectivament
humitat, temperatura = Adafruit_DHT.read_retry (sensor_name, sensor_pin) #read from sensor
i guardeu els valors respectius de temperatura i humitat varibale
lcd.clear () #Clear la pantalla LCD lcd.message ('Temp =%.1f C'% temperature) # Mostra el valor de la temperatura lcd.message ('\ nHum =%.1f %%'% humity) #Display el valor de Humidity time.sleep (2) # Espereu 2 segons i actualitzeu els valors
Com es va dir anteriorment, la càrrega útil hauria de ser en forma de cadena amb claudàtors al voltant, afegim el valor de data, hora, temperatura i humitat després de convertir la variable en cadenes, tal com es mostra a continuació.
#prepare la càrrega útil en format de cadena payload = '{"timestamp": "' + current_time + '", "temperature":' + str (temperature) + ', "moist":' + str (humity) + '}'
Finalment, un cop preparada la càrrega útil, l’hem de publicar al client MQTT. Això es pot fer mitjançant l' ordre myMQTTclient.publish . Mentre publiquem una cosa, també li hauríem de donar un nom, aquí l’he anomenat DHT11 / data, però podeu posar-li el nom que vulgueu. Però assegureu-vos de recordar el nom, ja que haurem de subscriure-us a la nostra pàgina per veure les dades.
Prova del programa python mitjançant la finestra de Shell:
Un cop el programa estigui llest, inicieu-lo amb la vostra elecció. He utilitzat l'IDE de Python per iniciar el programa a la finestra de l'intèrpret d'ordres. Si tot està bé, hauríeu d'obtenir una connexió de missatges satisfactòria i tota la càrrega útil s'hauria de mostrar a la finestra. Podeu comprovar si els valors de temperatura i humitat es llegeixen correctament. La càrrega útil s’actualitzarà cada 5 segons. La finestra de l'intèrpret d'ordres tindrà un aspecte semblant a continuació

Si teniu algun problema, assegureu-vos que heu proporcionat les dades de la clau i l'adreça del corredor correctes, comproveu també que si la cosa es pot connectar amb el programari MQTT.fx. Si l'intèrpret d'ordres mostra l'èxit de connexió del client MQTT i es queda allà, vol dir que el sensor DHT11 no respon comproveu si heu connectat el pin correcte i el sensor és funcional.

Treball:
Una vegada que inicieu el programa i obteniu els detalls anteriors a la finestra de l'intèrpret d'ordres, significa que el programa està responent correctament i que els valors s'estan carregant al servidor d'Amazon AWS. També podeu notar la pantalla LCD per comprovar si diu Publicat a AWS-IoT cada 5 segons, tal com es mostra a continuació.

Podem entrar a l’aplicació MQTT.fx i subscriure-us al tema DHT11 / data . Després hauríem de poder obtenir totes les dades que publica Raspberry Pi. Aquestes dades també s’actualitzaran cada 5 segons; la vostra pantalla MQTT tindrà un aspecte semblant a continuació

Com podeu veure, la càrrega útil s'està rebent al programari MQTT tal com es ressalta en blau. També podeu veure el vídeo següent per saber com funciona el projecte. Com que ara tenim les nostres dades a Internet, les podem utilitzar amb altres eines proporcionades per Amazon, com ara Elastic search i Lambda, per desar les dades en una base de dades o visualitzar-les en un gràfic. Hi ha moltes més aplicacions en funció de com ens hem de beneficiar de les dades.
Espero que hàgiu entès el tutorial i us hagi agradat construir alguna cosa similar, si teniu algun problema per fer-ho, publiqueu-lo a la secció de comentaris de sota o utilitzeu els fòrums per obtenir ajuda tècnica.
