- Inštalácia súpravy AWS IOT Device SDK pre Python na Raspberry Pi:
- Schéma zapojenia:
- Programovanie vášho Raspberry Pi:
- Testovanie programu python prostredníctvom okna programu Shell:
- Pracovné:
Raspberry Pi bol vždy prvou voľbou pre vývoj aplikácií založených na IoT, ak je zahrnutá určitá úroveň výpočtu. Vďaka flexibilite jazyka python a silnej komunite vývojárov je veľmi ľahké zhromaždiť, zaznamenať, analyzovať alebo nahlásiť súbor údajov pomocou nástroja Pi. V tomto tutoriále sa dozvieme, ako spojiť silu Raspberry Pi so službou Amazon AWS a publikovať údaje online na internete.
V tomto tutoriále použijeme snímač DHT11 na načítanie hodnoty teploty a vlhkosti, potom sa pripojíme k službe AWS IOT a aktualizujeme hodnoty snímača pomocou AWS IOT SDK. Tieto údaje je potom možné vizualizovať v konzole Amazon IOT, aby sme sa ubezpečili, že údaje zverejňujeme na internete.
Môžete tiež použiť AWS Elastic Search Service na získanie týchto hodnôt snímačov a ich uloženie do databázy a potom pomocou služby Kibana Dashboard vizualizujte údaje snímačov ako čistý graf. Dosť zaujímavé? !!! Poďme teda do toho…
Predpoklady:
Tento výukový program predpokladá, že ste si už vytvorili svoj bezplatný účet AWS a poznáte základné informácie o službe AWS IoT, ako napríklad vytváranie vecí, certifikátov, zásad a publikovanie hodnôt pomocou tohto účtu. Ak je to inak, prečítajte si nižšie uvedený návod.
- Začíname s Amazon AWS IOT s MQTT.fx
Tiež predpokladá, že viete, ako prepojiť LCD a DHT11 senzor s Raspberry Pi a knižnice, ktoré to umožňujú, sú už v Pi nainštalované. Ak nie, pokračujte nižšie uvedeným návodom.
- Prepojenie DHT11 s Raspberry Pi
Na konci vyššie uvedeného tutoriálu by ste vytvorili vec na AWS-IOT a mali by ste mať aj adresu sprostredkovateľa pre vašu vec spolu s certifikátmi potrebnými na prístup k vašej veci. Tiež predpokladáme, že vaša Raspberry pi je už nastavená na OS a je pripojená k internetu. Po ich zavedení pokračujeme v tutoriále. Ak ste v Raspberry Pi nováčikom, najskôr si prečítajte časť Začíname s Raspberry Pi.
Inštalácia súpravy AWS IOT Device SDK pre Python na Raspberry Pi:
Aby sme mohli používať službu AWS na Pi, môžeme si nainštalovať jednu z dvoch SDK. Jedným z nich je JavaScript SDK, ktorý používa JavaScript ako programovací jazyk, a druhým je Python SDK, ktorý zjavne používa python ako programovací jazyk. Tu si vyberáme Python ako našu SDK, pretože nám Python vyhovuje viac ako JavaScript.
Kompletné informácie o AWS IOT SDK sú k dispozícii na jeho stránke GitHub.
Krok 1: Ak chcete nainštalovať SDK na svoje Pi, otvorte terminál a zadajte nasledujúci príkaz
git klon
Krok 2: Toto by malo mať nainštalovaný adresár aws na vašom Pi, teraz do neho prejdite pomocou nasledujúceho príkazu.
cd AWS - IoT -device- SDK -python
Krok 3: Vo vnútri adresára nainštalujte inštalačný súbor pomocou riadku nižšie
python setup.py nainštalovať
Schéma zapojenia:
Po hardvérovej stránke máme Raspberry Pi pripojený k senzoru DHT11 a LCD obrazovke. DHT11 sa používa na získanie hodnoty teploty a vlhkosti a LCD sa používa na zobrazenie hodnôt a informácií o odstránení chyby. Schéma zapojenia rovnakých obvodov je uvedená nižšie.
Ako LCD a DHT11 senzor pracuje s + 5V napájanie, takže budeme používať 5V kolíky na Raspberry Pi k moci obaja. Na výstupnom kolíku snímača DHT11 sa používa pull-up odpor s hodnotou 1k. Ak používate modul, môžete sa mu vyhnúť.
Na kolík Vee na LCD displeji je pridaný trimer s veľkosťou 10 tis., Aby sa ovládala úroveň kontrastu LCD. Okrem toho sú všetky spojenia celkom priame. Poznačte si však, ktoré piny GPIO, ktoré na pripojenie pinov používate, pretože ich v našom programe budeme potrebovať. Nasledujúca tabuľka by vám mala umožniť zistiť čísla pinov GPIO.
Použite tabuľku a zapojte podľa schémy zapojenia. Na pripojenie som použil kontaktnú dosku a štartovacie drôty. Pretože som použil modul, zapojil som ho priamo do Raspberry Pi. Môj hardvér vyzeral nižšie
Programovanie vášho Raspberry Pi:
V našom pythonovskom programe musíme načítať hodnotu teploty a vlhkosti, zobraziť ich na LCD obrazovke a tiež zverejniť obe hodnoty k veci Amazon IOT, ktorú sme vytvorili už v predchádzajúcom tutoriále. Takže sa uistite, že ste danú vec vytvorili a že máte všetky tri kľúčové súbory a adresu sprostredkovateľa veci, ktorú ste vytvorili.
V našom pythonovom programe musíme prepojiť tri kľúčové súbory, aby mal Raspberry Pi prístup k zverejňovaniu hodnôt o našej veci. Skopírujte teda všetky tri kľúčové súbory a vložte ich na plochu vášho Raspberry pi, pretože v našom programe budeme potrebovať ich cestu.
Kompletné python programu možno nájsť v dolnej časti tejto stránky, môžete použiť program po úprave kanceláriu adresy a cesty adresára v závislosti na veci, ktoré ste vytvorili. Ďalej som kód vysvetlil malými úryvkami.
Začíname importom knižníc potrebných pre náš projekt. Tri hlavné knižnice sú AWS SDK, LCD knižnica a DHT Library, uistite sa, že máte nainštalované všetky tri svoje Pi. Čas a datetime knižnica bude inštalovaná v predvolenom nastavení.
od AWSIoTPythonSDK.MQTTLib dovozu AWSIoTMQTTClient #import z AWS-IoT knižnice import time # Ak chcete vytvoriť meškanie z datetime dáta importu, datetime #To získať dátum a čas importu Adafruit_CharLCD ako LCD #import knižnicu LCD dovozné Adafruit_DHT #import DHT knižnice pre snímač
V ďalšom riadku musíme uviesť podrobnosti veci, ako je adresa makléra, meno klienta a cesta k súborom certifikátov a kľúčov. Tu som použil meno klienta ako new_Client , kde môžete použiť rovnaké alebo ľubovoľné meno podľa vášho výberu. Adresa sprostredkovateľa by sa mala zmeniť na adresu veci, ktorú ste vytvorili, a adresár cesty by sa mal zmeniť tiež podľa vašej veci. Okrem týchto 2 vecí nemusíte v nasledujúcich riadkoch nič meniť.
myMQTTClient = AWSIoTMQTTClient ("new_Client") myMQTTClient.configureEndpoint ("qwert1234567yuio89.iot.us-east-2.amazonaws.com", 8883 ) myMQTTClient.configureCredentials ("/ home / pi / Desktop / ESP32_Thing" certifikáty / CA. "/ home / pi / Desktop / ESP32_Thing certifikáty / private.pem.key", "/ home / pi / Desktop / ESP32_Thing certifikáty / certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (-1) # Nekonečné offline Publikovanie vo fronte myMQTTClient. configureDrainingFrequency (2) # vyprázdnenie : 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 s myMQTTClient.configureMQTTOperationTimeout (5) # 5 s
Ďalej musíme určiť podrobnosti o kolíku nášho pripojenia. Číslo PIN GPIO každého kolíka je pridelené jeho príslušnému názvu. Tu sme použili snímač DHT na kolíku 17 a LCD v 4-bitovom režime. Kód rovnakého kódu je uvedený nižšie
sensor_name = Adafruit_DHT.DHT11 #we are using the DHT11 sensor sensor_pin = 17 #Sensor je pripojený k GPIO17 na Pi lcd_rs = 7 #RS LCD je pripojený k GPIO 7 na PI lcd_en = 8 #EN LCD je pripojený k GPIO 8 na PI lcd_d4 = 25 # D4 LCD je pripojený k GPIO 25 na PI lcd_d5 = 24 # D5 LCD je pripojený k GPIO 24 na PI lcd_d6 = 23 # D6 LCD je pripojený k GPIO 23 na PI lcd_d7 = 18 # D7 z LCD je pripojený k GPIO 18 na PI lcd_backlight = 0 #LED nie je pripojený, takže priradíme 0
Potom inicializujeme LCD a na obrazovke LCD zobrazíme malú úvodnú správu. Potom sa pokúsime spojiť s vecou AWS pomocou adresy makléra a súborov kľúčov zadaných vyššie. Ak je pripojenie úspešné, na LCD displeji sa zobrazí „ Connected to AWS thing “ ( Pripojené k AWS ) alebo sa to pokúsi o 10 sekúnd. Ak sa zobrazí chybové hlásenie, skontrolujte, či ste vec vytvorili úspešne a či ste ju správne prepojili s kódom. Vždy sa môžete vrátiť k predchádzajúcemu tutoriálu a zistiť, či ste danú vec vytvorili správne v AWS.
if time.time () <connection_time: # vyskúšajte pripojenie k AWS na 10 sekúnd myMQTTClient.connect () myMQTTClient.publish ("DHT11 / info", "connected", 0) vypísať "MQTT pripojenie klienta úspešné!" lcd.message ('Pripojené k \ n veci AWS') #if pripojené inde: tlač "Chyba: Skontrolujte svoje podrobnosti AWS v programe" lcd.message ('Chyba: \ nNeplatné podrobnosti') #if nie je pripojené
Akonáhle je spojenie úspešne naviazané, sme sa vstúpiť do nekonečnej while slučky zverejnenie hodnoty času, teploty a vlhkosti ako užitočné zaťaženie. Užitočným zaťažením by tu mal vždy byť reťazec vo formáte JSON. Najprv teda prečítame aktuálny dátum a čas a uložíme ho do premennej pomocou nasledujúcich riadkov
now = datetime.utcnow () #get dátum a čas current_time = now.strftime ('% Y-% m-% dT% H:% M:% SZ') #get aktuálny čas vo formáte reťazca
Potom načítame hodnoty vlhkosti a teploty zo senzora DHT11 a zobrazíme ich na LCD obrazovke. Premenná vlhkosť a teplota udrží hodnotu vlhkosti a teploty
vlhkosť, teplota = Adafruit_DHT.read_retry (sensor_name, sensor_pin) #read from sensor
a príslušné hodnoty uložte do premennej teploty a vlhkosti
lcd.clear () # Vymazať obrazovku LCD lcd.message ('Temp =%.1f C'% teplota) # Zobraziť hodnotu teploty lcd.message ('\ nHum =%.1f %%'% vlhkosť) #Display hodnotu Humidity time.sleep (2) # Počkajte 2 s, potom aktualizujte hodnoty
Ako už bolo povedané, užitočné zaťaženie by malo mať formu reťazca so zloženými zátvorkami, okolo ktorého pripojíme hodnotu dátumu, času, teploty a vlhkosti po prevedení premennej na reťazce, ako je uvedené nižšie.
# pripraviť dávku vo formáte reťazca payload = '{"timestamp": "' + current_time + '", "temperature":' + str (teplota) + ', "vlhkost":' + str (vlhkost) + '}'
Nakoniec, keď je užitočné zaťaženie pripravené, musíme ho zverejniť v klientovi MQTT. To je možné vykonať pomocou príkazu myMQTTclient.publish . Pri zverejňovaní veci by sme jej mali dať aj názov, tu som ju pomenoval DHT11 / data, ale môžete ju pomenovať, ako chcete. Nezabudnite si však meno pamätať, pretože na zobrazenie údajov sa budeme musieť prihlásiť na odber našej veci.
Testovanie programu python prostredníctvom okna programu Shell:
Keď je program pripravený, spustite ho podľa vlastného výberu. Na spustenie programu v okne shellu som použil Python IDE. Ak je všetko v poriadku, mali by ste dostať pripojenie k správe úspešne a na okne by sa malo zobraziť všetko užitočné zaťaženie. Môžete skontrolovať, či sa hodnoty teploty a vlhkosti načítajú správne. Užitočné zaťaženie sa bude aktualizovať každých 5 sekúnd. Nižšie bude okno shellu vyzerať asi takto
Ak máte problém, uistite sa, že ste uviedli správne kľúčové údaje a adresu sprostredkovateľa, tiež skontrolujte, či je možné vec spojiť s pomocou softvéru MQTT.fx. Ak shell zobrazuje úspešné pripojenie klienta MQTT a visí tam, znamená to, že senzor DHT11 nereaguje, skontrolujte, či ste pripojili správny kolík a senzor je funkčný.
Pracovné:
Akonáhle spustíte program a získate vyššie uvedené podrobnosti v okne shellu, znamená to, že program správne reaguje a hodnoty sa nahrávajú na server Amazon AWS. Môžete si tiež všimnúť, že LCD displej kontroluje, či je každých 5 sekúnd zverejnené hlásenie Publikované na AWS-IoT, ako je uvedené nižšie.
Môžeme sa dostať do aplikácie MQTT.fx a prihlásiť sa na odber témy DHT11 / data . Potom by sme mali byť schopní získať všetky údaje, ktoré zverejňuje Raspberry Pi. Tieto údaje sa tiež aktualizujú každých 5 sekúnd; nižšie bude vaša obrazovka MQTT vyzerať asi takto
Ako vidíte, užitočné zaťaženie sa prijíma v softvéri MQTT tak, ako je zvýraznené modrou farbou. Môžete tiež sledovať video nižšie a zistiť, ako projekt funguje. Keďže teraz máme naše údaje na internete, môžeme ich použiť s ďalšími nástrojmi poskytovanými spoločnosťou Amazon, ako sú Elastic search a Lambda, na ukladanie údajov do databázy alebo ich vizualizáciu v grafe. Existuje oveľa viac aplikácií podľa toho, ako musíme mať z údajov úžitok.
Dúfam, že ste pochopili tento návod a páčilo sa vám budovanie niečoho podobného. Ak máte problém s dokončením, uverejnite ho v sekcii komentárov nižšie alebo použite technickú pomoc na fórach.