- Instalace sady AWS IOT Device SDK pro Python na Raspberry Pi:
- Kruhový diagram:
- Programování Raspberry Pi:
- Testování programu python prostřednictvím okna Shell:
- Pracovní:
Raspberry Pi byl vždy první volbou pro vývoj aplikací založených na IoT, pokud je zahrnuta určitá úroveň výpočtu. Díky flexibilitě pythonu a silné komunitě vývojářů je velmi snadné sbírat, protokolovat, analyzovat nebo hlásit sadu dat pomocí Pi. V tomto tutoriálu se naučíme, jak spojit sílu Raspberry Pi se službou Amazon AWS a publikovat data online na internetu.
V tomto kurzu použijeme snímač DHT11 ke čtení hodnoty teploty a vlhkosti, poté se připojíme ke službě AWS IOT a aktualizujeme hodnoty snímače pomocí AWS IOT SDK. Tato data lze poté vizualizovat v konzole Amazon IOT, abychom se ujistili, že získáváme data publikovaná na internetu.
Můžete také použít AWS Elastic Search Service k načtení těchto hodnot senzorů a jejich uložení do databáze a poté pomocí služby Kibana Dashboard vizualizovat data senzoru jako čistý graf. Dost zajímavé? !!! Pojďme tedy začít…
Předpoklady:
Tento kurz předpokládá, že jste si již vytvořili svůj bezplatný účet AWS a znáte základní informace o službě AWS IoT, jako je vytváření věcí, certifikátů, zásad a publikování hodnot pomocí něj. Pokud není uvedeno jinak, přečtěte si níže uvedený návod.
- Začínáme s Amazon AWS IOT s MQTT.fx
Předpokládá také, že víte, jak propojit LCD a DHT11 senzor s Raspberry Pi a že knihovny pro to samé jsou již na vašem Pi nainstalovány. Pokud ne, pokračujte níže uvedeným návodem.
- Propojení DHT11 s Raspberry Pi
Na konci výše uvedeného tutoriálu byste vytvořili věc na AWS-IOT a měli byste mít také adresu brokera pro vaši věc spolu s certifikáty potřebnými pro přístup k vaší věci. Rovněž předpokládáme, že váš Raspberry pi je již nastaven na operační systém a je připojen k internetu. S těmito na místě pokračujeme v tutoriálu. Pokud jste v Raspberry Pi noví, projděte si nejprve Začínáme s Raspberry Pi.
Instalace sady AWS IOT Device SDK pro Python na Raspberry Pi:
Chcete-li použít službu AWS na Pi, můžeme nainstalovat kteroukoli ze dvou SDK. Jedním z nich je JavaScript SDK, který používá JavaScript jako programovací jazyk a druhý je Python SDK, který samozřejmě používá Python jako programovací jazyk. Tady jsme si vybrali Python jako naši SDK, protože jsme s Pythonem trochu spokojenější než JavaScript.
Kompletní informace o AWS IOT SDK jsou k dispozici na jeho stránce GitHub.
Krok 1: Chcete-li nainstalovat sadu SDK na svůj počítač Pi, otevřete terminál a zadejte následující příkaz
git clone
Krok 2: Tím by měl být nainstalován adresář aws na vašem Pi, nyní do něj přejděte pomocí následujícího příkazu.
cd aws - IoT -device- SDK -python
Krok 3: Uvnitř adresáře nainstalujte instalační soubor pomocí níže uvedeného řádku
python setup.py nainstalovat
Kruhový diagram:
Na straně hardwaru máme Raspberry Pi připojený k senzoru DHT11 a LCD obrazovce. DHT11 se používá k získání hodnoty teploty a vlhkosti a LCD se používá k zobrazení hodnot a informací o odstraňování chyb. Schéma zapojení stejného schématu je uvedeno níže.
Jak LCD a DHT11 senzor pracuje s + 5V napájení, takže budeme používat 5V kolíky na Raspberry Pi k moci oba. Na výstupním pinu senzoru DHT11 se použije pull up rezistor o hodnotě 1k, pokud používáte modul, můžete se tomuto rezistoru vyhnout.
Ke kolíku Vee LCD je přidán trimr 10k pro ovládání úrovně kontrastu LCD. Kromě toho jsou všechna spojení docela přímá. Všimněte si ale, které piny GPIO používáte k připojení pinů, protože to v našem programu budeme potřebovat. Níže uvedená tabulka by vám měla umožnit zjistit čísla pinů GPIO.
Použijte tabulku a proveďte připojení podle schématu zapojení. Pro připojení jsem použil prkénko a propojovací vodiče. Protože jsem použil modul, připojil jsem ho přímo k Raspberry Pi. Můj hardware vypadal níže
Programování Raspberry Pi:
V našem pythonovém programu musíme načíst hodnotu teploty a vlhkosti, zobrazit ji na LCD obrazovce a také obě hodnoty zveřejnit do věci Amazon IOT, kterou jsme vytvořili již v předchozím tutoriálu. Ujistěte se tedy, že jste věc vytvořili, a že máte všechny tři klíčové soubory a adresu brokera věci, kterou jste vytvořili.
V našem pythonovém programu musíme propojit tři klíčové soubory, aby Raspberry Pi mohl získat přístup k publikování hodnot o naší věci. Takže zkopírujte všechny tři klíčové soubory a vložte je na plochu vašeho Raspberry pi, protože budeme potřebovat jejich cestu v našem programu.
Kompletní python programu lze nalézt v dolní části této stránky, můžete použít program po úpravě kancelář adresy a cesty adresáře v závislosti na věci, které jste vytvořili. Dále jsem vysvětlil kód v malých úryvcích.
Začneme importem knihoven potřebných pro náš projekt. Tři hlavní knihovny jsou AWS SDK, knihovna LCD a knihovna DHT, ujistěte se, že máte nainstalovány všechny tři vaše Pi. Čas a datetime knihovna bude instalována ve výchozím nastavení.
od AWSIoTPythonSDK.MQTTLib dovozu AWSIoTMQTTClient #import z AWS-IoT knihovny import time # Chcete-li vytvořit zpoždění z datetime data importu, datetime #To získat datum a čas importu Adafruit_CharLCD jako LCD #import knihovnu LCD dovozní Adafruit_DHT #import DHT knihovny pro snímač
V dalším řádku musíme uvést podrobnosti věci, jako je adresa makléře, jméno klienta a cesta k souborům certifikátů a klíčů. Zde jsem použil jméno klienta jako new_Client , můžete použít stejné nebo libovolné jméno podle vašeho výběru. Adresa makléře by měla být změněna na adresu věci, kterou jste vytvořili, a adresář cesty by měl být také změněn podle vaší věci. Kromě těchto 2 věcí nemusíte v následujících řádcích nic měnit.
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 Publikování ve frontě myMQTTClient. configureDrainingFrequency (2) # vypouštění: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 s myMQTTClient.configureMQTTOperationTimeout (5) # 5 s
Dále musíme určit podrobnosti o kolíku našeho připojení. Číslo PINu GPIO každého pinu je přiděleno jeho příslušnému jménu. Zde jsme použili senzor DHT na pinu 17 a LCD ve 4bitovém režimu. Kód stejné je uveden níže
sensor_name = Adafruit_DHT.DHT11 #we using the DHT11 sensor sensor_pin = 17 #Sensor je připojen k GPIO17 na Pi lcd_rs = 7 #RS LCD je připojen k GPIO 7 na PI lcd_en = 8 #EN LCD je připojen k GPIO 8 na PI lcd_d4 = 25 # D4 LCD je připojeno k GPIO 25 na PI lcd_d5 = 24 # D5 LCD je připojeno k GPIO 24 na PI lcd_d6 = 23 # D6 LCD je připojeno k GPIO 23 na PI lcd_d7 = 18 # D7 z LCD je připojen k GPIO 18 na PI lcd_backlight = 0 #LED není připojen, takže přiřadíme 0
Poté inicializujeme LCD a zobrazíme malou úvodní zprávu na LCD obrazovce. Poté se pokusíme spojit s věcí AWS pomocí adresy makléře a klíčových souborů zadaných výše. Pokud je připojení úspěšné, na LCD displeji se zobrazí „ Připojeno k věci AWS “ nebo se pokusí o 10 sekund, a pokud se nezdařilo, zobrazí se chybová zpráva. Pokud se zobrazí chybová zpráva, ujistěte se, že jste věc vytvořili úspěšně a správně ji propojili s kódem. Vždy se můžete vrátit k předchozímu tutoriálu a zjistit, zda jste věc vytvořili správně v AWS.
pokud time.time () <connection_time: # vyzkoušejte připojení k AWS na 10 sekund myMQTTClient.connect () myMQTTClient.publish ("DHT11 / info", "connected", 0) vytisknout "Úspěch připojení klienta MQTT!" lcd.message ('Připojeno k \ n věci AWS') #if připojeno jinde: tisk "Chyba: Zkontrolujte podrobnosti AWS v programu" lcd.message ('Chyba: \ nNeplatné podrobnosti') #if není připojeno
Jakmile je připojení úspěšně navázáno, vstoupíme do nekonečné smyčky while, abychom publikovali hodnotu času, teploty a vlhkosti jako užitečné zatížení. Užitečným datem by zde vždy měl být řetězec ve formátu JSON. Nejprve tedy přečtěte aktuální datum a čas a uložte jej do proměnné pomocí níže uvedených řádků
now = datetime.utcnow () #get datum a čas current_time = now.strftime ('% Y-% m-% dT% H:% M:% SZ') #get aktuální čas ve formátu řetězce
Poté načteme hodnoty vlhkosti a teploty ze snímače DHT11 a zobrazíme je na LCD obrazovce. Proměnná vlhkost a teplota udrží hodnotu vlhkosti a teploty
vlhkost, teplota = Adafruit_DHT.read_retry (sensor_name, sensor_pin) #read from sensor
a příslušné hodnoty uložit do proměnné teploty a vlhkosti
lcd.clear () # Vymazat LCD obrazovku lcd.message ('Temp =%.1f C'% teplota) # Zobrazit hodnotu teploty lcd.message ('\ nHum =%.1f %%'% vlhkost) #Display hodnotu Humidity time.sleep (2) # Počkejte 2 s, poté aktualizujte hodnoty
Jak již bylo řečeno dříve, užitečné zatížení by mělo být ve formě řetězce se složenými závorkami kolem něj, připojíme hodnotu data, času, teploty a vlhkosti po převedení proměnné na řetězce, jak je uvedeno níže.
#prepare the payload in string format payload = '{"timestamp": "' + current_time + '", "temperature":' + str (temperature) + ', "vlhkost":' + str (vlhkost) + '}'
A konečně, jakmile je užitečné zatížení připraveno, musíme jej publikovat v MQTT klientovi. To lze provést pomocí příkazu myMQTTclient.publish . Při publikování k věci bychom jí měli také dát jméno, zde jsem to pojmenoval DHT11 / data, ale můžete ji pojmenovat, kamkoli chcete. Nezapomeňte si ale toto jméno zapamatovat, protože k zobrazení údajů se budeme muset přihlásit k odběru naší věci.
Testování programu python prostřednictvím okna Shell:
Jakmile je program připraven, spusťte jej podle svého výběru. Ke spuštění programu v okně shellu jsem použil Python IDE. Pokud je vše v pořádku, měli byste získat připojení ke zprávě úspěšné a veškeré užitečné zatížení by se mělo zobrazit v okně. Můžete zkontrolovat, zda se hodnoty teploty a vlhkosti načítají správně. Užitečné zatížení bude aktualizováno každých 5 sekund. Níže bude okno shellu vypadat nějak takto
Pokud máte nějaký problém, ujistěte se, že jste zadali správné klíčové údaje a adresu makléře, také zkontrolujte, zda je možné věc spojit pomocí softwaru MQTT.fx. Pokud shell zobrazuje úspěšné připojení klienta MQTT a visí tam, znamená to, že senzor DHT11 nereaguje, zkontrolujte, zda jste připojeni ke správnému kolíku a senzor je funkční.
Pracovní:
Jakmile spustíte program a získáte výše uvedené podrobnosti v okně shellu, znamená to, že program správně reaguje a hodnoty se nahrávají na server Amazon AWS. Můžete si také všimnout LCD displeje a zkontrolovat, zda je každých 5 sekund uvedeno Publikováno na AWS-IoT, jak je uvedeno níže.
Můžeme se dostat do aplikace MQTT.fx a přihlásit se k odběru tématu DHT11 / data . Pak bychom měli být schopni získat všechna data, která jsou publikována Raspberry Pi. Tato data budou také aktualizována každých 5 sekund; vaše obrazovka MQTT bude níže vypadat nějak takto
Jak vidíte, užitečné zatížení je přijímáno v softwaru MQTT, jak je zvýrazněno modře. Můžete také sledovat video níže a zjistit, jak projekt funguje. Vzhledem k tomu, že nyní máme naše data na internetu, můžeme je použít s dalšími nástroji poskytovanými Amazonem, jako je Elastic search a Lambda, k uložení dat do databáze nebo vizualizaci poté na grafu. Existuje mnohem více aplikací podle toho, jak musíme mít z dat prospěch.
Doufám, že jste pochopili výukový program a bavilo vás budování něčeho podobného. Pokud máte problém s jeho provedením, pošlete jej do sekce komentářů níže nebo použijte technickou podporu na fórech.