- Installazione di AWS IOT Device SDK per Python su Raspberry Pi:
- Schema elettrico:
- Programmazione del tuo Raspberry Pi:
- Testare il programma python tramite Shell Window:
- Lavorando:
Raspberry Pi è sempre stata la prima scelta per lo sviluppo di applicazioni basate su IoT se è coinvolto un certo livello di calcolo. Con la flessibilità di Python e una forte comunità di sviluppatori è molto facile raccogliere, registrare, analizzare o segnalare un set di dati utilizzando Pi. In questo tutorial impareremo come fondere la potenza di Raspberry Pi con il servizio Amazon AWS per pubblicare i dati online su Internet.
In questo tutorial, utilizzeremo il sensore DHT11 per leggere il valore di temperatura e umidità, quindi connettersi al servizio AWS IOT e aggiornare i valori del sensore utilizzando AWS IOT SDK. Questi dati possono quindi essere visualizzati nella console Amazon IOT per assicurarci che i dati vengano pubblicati su Internet.
Puoi anche utilizzare AWS Elastic Search Service per recuperare questi valori dei sensori e archiviarli in un database, quindi utilizzare il servizio Kibana Dashboard per visualizzare i dati dei sensori come grafici tracciati. Abbastanza interessante? !!! Quindi, iniziamo…
Prerequisiti:
Questo tutorial presuppone che tu abbia già creato il tuo account AWS gratuito e che tu conosca le basi del servizio AWS IoT come la creazione di una cosa, un certificato, una policy e la pubblicazione di valori che lo utilizzano. In caso contrario, leggi il tutorial di seguito.
- Introduzione a Amazon AWS IOT con MQTT.fx
Presuppone inoltre che tu sappia come interfacciare un sensore LCD e DHT11 a Raspberry Pi e che le librerie per fare lo stesso siano già installate sul tuo Pi. In caso contrario, procedi con il tutorial sottostante.
- Interfacciamento DHT11 con Raspberry Pi
Alla fine del tutorial sopra, avresti creato una cosa su AWS-IOT e dovresti anche avere l'indirizzo del broker per la tua cosa insieme ai certificati necessari per accedere alla tua cosa. Supponiamo inoltre che il tuo Raspberry pi sia già configurato con un sistema operativo e sia connesso a Internet. Con questi a posto procediamo con il tutorial. Se sei nuovo su Raspberry Pi, passa prima a Come iniziare con Raspberry pi.
Installazione di AWS IOT Device SDK per Python su Raspberry Pi:
Per utilizzare il servizio AWS su Pi, possiamo installare uno dei due SDK. Uno è l'SDK JavaScript che utilizza JavaScript come linguaggio di programmazione e l'altro è l'SDK Python che ovviamente utilizza Python come linguaggio di programmazione. Qui stiamo scegliendo Python come nostro SDK poiché siamo un po 'più a nostro agio con Python che con JavaScript.
Le informazioni complete su AWS IOT SDK sono disponibili sulla sua pagina GitHub.
Passaggio 1: per installare l'SDK sul tuo Pi, apri il terminale e digita il seguente comando
git clone
Passaggio 2: questo dovrebbe aver installato la directory aws sul tuo Pi, ora accedici usando il seguente comando.
cd AWS - iot -device- sdk -python
Passaggio 3: all'interno della directory, installare il file di installazione utilizzando la riga seguente
installazione di python setup.py
Schema elettrico:
Sul lato hardware abbiamo un Raspberry Pi collegato a un sensore DHT11 e uno schermo LCD. Il DHT11 viene utilizzato per ottenere il valore di temperatura e umidità e il display LCD viene utilizzato per visualizzare i valori e le informazioni di eliminazione dei bugg. Lo schema del circuito per lo stesso è mostrato di seguito.
Sia il sensore LCD che il sensore DHT11 funzionano con alimentazione + 5V, quindi usiamo i pin 5V sul Raspberry Pi per alimentarli entrambi. Un resistore pull up di valore 1k viene utilizzato sul pin di uscita del sensore DHT11, se si utilizza un modulo è possibile evitare questo resistore.
Un potenziometro trimmer di 10k viene aggiunto al perno a V dell'LCD per controllare il livello di contrasto dell'LCD. A parte questo, tutte le connessioni sono piuttosto semplici. Ma prendi nota di quali pin GPIO stai utilizzando per collegare i pin poiché avremo bisogno nel nostro programma. Il grafico sottostante dovrebbe consentire di capire i numeri dei pin GPIO.
Usa lo schema e fai i tuoi collegamenti secondo lo schema del circuito. Ho usato una breadboard e cavi jumper per effettuare i miei collegamenti. Da quando ho usato un modulo l'ho collegato direttamente a Raspberry Pi. Il mio hardware aveva questo aspetto qui sotto
Programmazione del tuo Raspberry Pi:
Nel nostro programma python dobbiamo leggere il valore di temperatura e umidità, visualizzarlo sullo schermo LCD e anche pubblicare entrambi i valori sull'Amazon IOT cosa che abbiamo creato già nel precedente tutorial. Quindi assicurati di aver creato la cosa e di avere tutti e tre i file chiave e l'indirizzo del broker della cosa che hai creato.
Nel nostro programma python dobbiamo collegare i tre file chiave in modo che Raspberry Pi possa accedere per pubblicare i valori sulla nostra cosa. Quindi copia tutti e tre i file chiave e incollali sul desktop del tuo Raspberry pi poiché avremo bisogno del loro indirizzo di percorso nel nostro programma.
Il programma python completo si trova in fondo a questa pagina, puoi usare il programma dopo aver modificato l'indirizzo del broker e le directory dei percorsi in base alla cosa che hai creato. Più avanti ho spiegato il codice in piccoli frammenti.
Iniziamo importando le librerie richieste per il nostro progetto. Le tre librerie principali sono AWS SDK, libreria LCD e libreria DHT, assicurati di aver installato tutte e tre le tue Pi. Il tempo e datetime biblioteca verranno installati di default.
da AWSIoTPythonSDK.MQTTLib importazione AWSIoTMQTTClient # import da AWS-IoT Biblioteca momento dell'importazione # Per creare ritardo da datetime data di importazione, datetime #Per ottenere la data e l'ora di importazione Adafruit_CharLCD come LCD #import libreria LCD importazione Adafruit_DHT #import DHT Biblioteca per il sensore
Nella riga successiva dobbiamo fornire i dettagli della cosa come l'indirizzo del broker, il nome del cliente e il percorso del certificato e dei file chiave. Qui ho usato il nome del client come new_Client puoi usare lo stesso o qualsiasi nome a tua scelta. L'indirizzo del broker dovrebbe essere cambiato nell'indirizzo della cosa che hai creato e anche la directory del percorso dovrebbe essere cambiata in base alla tua cosa. Oltre a queste 2 cose non devi cambiare nulla nelle righe seguenti.
myMQTTClient = AWSIoTMQTTClient ("new_Client") myMQTTClient.configureEndpoint ("qwert1234567yuio89.iot.us-east-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home / ESpem_ certificates. "/ home / pi / Desktop / ESP32_Thing certificates / private.pem.key", "/ home / pi / Desktop / ESP32_Thing certificates / certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (-1) # Infinite offline Pubblica in coda myMQTTClient. configureDrainingFrequency (2) # Draining: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout (5) # 5 sec
Successivamente dobbiamo specificare i dettagli del pin della nostra connessione. Il numero di pin GPIO di ogni pin è assegnato al rispettivo nome. Qui abbiamo utilizzato il sensore DHT sul pin 17 e LCD in modalità 4 bit. Il codice per lo stesso è mostrato di seguito
sensor_name = Adafruit_DHT.DHT11 # stiamo usando il sensore DHT11 sensor_pin = 17 # Il sensore è collegato a GPIO17 su Pi lcd_rs = 7 #RS dell'LCD è collegato a GPIO 7 su PI lcd_en = 8 #EN dell'LCD è collegato a GPIO 8 su PI lcd_d4 = 25 # D4 dell'LCD è collegato a GPIO 25 su PI lcd_d5 = 24 # D5 di LCD è collegato a GPIO 24 su PI lcd_d6 = 23 # D6 di LCD è collegato a GPIO 23 su PI lcd_d7 = 18 # D7 di L'LCD è connesso a GPIO 18 su PI lcd_backlight = 0 #LED non è connesso quindi assegniamo a 0
Quindi inizializziamo l'LCD e visualizziamo un piccolo messaggio di introduzione sullo schermo LCD. Dopodiché proveremo a connetterci con la cosa AWS utilizzando l'indirizzo del broker e i file chiave inseriti sopra. Se la connessione ha esito positivo, il display LCD visualizzerà " Connected to AWS thing " o proverà per 10 secondi e se non è riuscito, verrà visualizzato un messaggio di errore. Se ricevi un messaggio di errore assicurati di aver creato la cosa con successo e di averla collegata correttamente con il codice. Puoi sempre tornare al tutorial precedente per vedere se hai creato l'oggetto correttamente in AWS.
if time.time () <connection_time: #try la connessione ad AWS per 10 secondi myMQTTClient.connect () myMQTTClient.publish ("DHT11 / info", "connected", 0) print "MQTT Client connection success!" lcd.message ('Connesso a \ n cosa AWS') #se connesso else: print "Errore: controlla i tuoi dettagli AWS nel programma" lcd.message ('Errore: \ nDettagli non validi') #se non connesso
Una volta stabilita la connessione, entriamo nel ciclo while infinito per pubblicare il valore di tempo, temperatura e umidità come carico utile. Il payload qui dovrebbe essere sempre una stringa in formato JSON. Quindi per prima cosa dobbiamo leggere la data e l'ora correnti e salvarle in una variabile utilizzando le righe seguenti
now = datetime.utcnow () #get data e ora current_time = now.strftime ('% Y-% m-% dT% H:% M:% SZ') #get ora corrente in formato stringa
Quindi leggiamo i valori di umidità e temperatura dal sensore DHT11 e li visualizziamo su uno schermo LCD. L'umidità e la temperatura variabili manterranno rispettivamente il valore di umidità e temperatura
umidità, temperatura = Adafruit_DHT.read_retry (sensor_name, sensor_pin) #leggi dal sensore
e salvare i rispettivi valori di temperatura e umidità varibale
lcd.clear () #Cancella lo schermo LCD lcd.message ('Temp =%.1f C'% temperature) # Visualizza il valore della temperatura lcd.message ('\ nHum =%.1f %%'% umidità) #Display il valore di Umidità time.sleep (2) #Attendere 2 sec quindi aggiornare i valori
Come detto in precedenza, il payload dovrebbe essere sotto forma di stringa con parentesi graffe attorno ad esso, aggiungiamo il valore di data, ora, temperatura e umidità dopo aver convertito la variabile in stringhe come mostrato di seguito.
#prepara il payload in formato stringa payload = '{"timestamp": "' + current_time + '", "temperature":' + str (temperature) + ', "umidità":' + str (umidità) + '}'
Infine, una volta che il payload è pronto, dobbiamo pubblicarlo sul client MQTT. Questa operazione può essere eseguita utilizzando il comando myMQTTclient.publish . Durante la pubblicazione di una cosa dovremmo anche dargli un nome, qui l'ho chiamata DHT11 / data ma puoi nominarla come preferisci. Ma assicurati di ricordare il nome poiché dovremo iscriverti alla nostra cosa per visualizzare i dati.
Testare il programma python tramite Shell Window:
Una volta che il programma è pronto, avvialo utilizzando la tua scelta. Ho usato l'IDE Python per avviare il programma sulla finestra della shell. Se tutto è a posto dovresti ricevere un messaggio di connessione riuscita e tutto il payload dovrebbe essere visualizzato nella finestra. È possibile verificare se i valori di temperatura e umidità vengono letti correttamente. Il carico utile verrà aggiornato ogni 5 secondi. La finestra della shell sarà simile a questa di seguito
Se hai qualche problema assicurati di aver fornito i dettagli chiave corretti e l'indirizzo del broker, controlla anche che se la cosa può essere collegata utilizzando il software MQTT.fx. Se la shell visualizza la connessione client MQTT riuscita e si blocca lì, significa che il sensore DHT11 non risponde controlla se sei connesso al pin corretto e il sensore funziona.
Lavorando:
Una volta avviato il programma e ottenuto i dettagli di cui sopra nella finestra della shell, significa che il programma risponde correttamente e i valori vengono caricati sul server Amazon AWS. Puoi anche notare il display LCD per verificare se dice Pubblicato su AWS-IoT ogni 5 secondi come mostrato di seguito.
Possiamo entrare nell'applicazione MQTT.fx e iscriverci all'argomento DHT11 / data . Quindi dovremmo essere in grado di ottenere tutti i dati pubblicati dal Raspberry Pi. Anche questi dati verranno aggiornati ogni 5 secondi; il tuo schermo MQTT sarà simile a questo sotto
Come puoi vedere, il carico utile viene ricevuto sul software MQTT come evidenziato in blu. Puoi anche guardare il video qui sotto per sapere come funziona il progetto. Dato che ora abbiamo i nostri dati su Internet possiamo utilizzarli con altri strumenti forniti da Amazon come Elastic search e Lambda per salvare i dati in un database o visualizzarli poi su un grafico. Ci sono molte più applicazioni, in base a come dobbiamo trarre vantaggio dai dati.
Spero che tu abbia capito il tutorial e ti sia piaciuto creare qualcosa di simile, se hai qualche problema nel farlo, pubblicalo nella sezione commenti qui sotto o usa i forum per assistenza tecnica.