- Az AWS IOT Device SDK Python telepítése a Raspberry Pi alkalmazásra:
- Kördiagramm:
- A Raspberry Pi programozása:
- A python program tesztelése a Shell Window segítségével:
- Dolgozó:
A Raspberry Pi mindig is az első választás volt az IoT-alapú alkalmazások fejlesztésében, ha valamilyen szintű számítást igényel. A python rugalmasságával és az erős fejlesztői közösséggel nagyon egyszerű adatgyűjtést, naplózást, elemzést vagy jelentést készíteni a Pi használatával. Ebben az oktatóanyagban megtudhatjuk, hogyan keveredhet a Raspberry Pi ereje az Amazon AWS szolgáltatással az adatok online közzétételéhez az interneten.
Ebben az oktatóanyagban a DHT11 érzékelőt használjuk a hőmérséklet és páratartalom értékének kiolvasására, majd csatlakozzunk az AWS IOT szolgáltatáshoz, és frissítsük az érzékelő értékeit az AWS IOT SDK segítségével. Ezeket az adatokat az Amazon IOT konzolon lehet megjeleníteni, hogy megbizonyosodjon arról, hogy az adatokat közzétesszük az interneten.
Az AWS Elastic Search Service használatával lekérheti ezeket az érzékelőtáblákat, és tárolhatja őket egy adatbázisban, majd a Kibana Dashboard szolgáltatással megjelenítheti az érzékelő adatait tiszta ábrázolt grafikonként. Elég érdekes? !!! Tehát, kezdjük…
Előfeltételek:
Ez az oktatóanyag feltételezi, hogy már létrehozta az ingyenes AWS-fiókot, és ismeri az AWS IoT szolgáltatás alapjait, például egy dolog, tanúsítvány, házirend létrehozása és értékek közzététele annak használatával. Ha másképp olvassa el az alábbi oktatóanyagot.
- Az Amazon AWS IOT és az MQTT.fx használatának megkezdése
Azt is feltételezi, hogy tudja, hogyan kell egy LCD és DHT11 érzékelőt csatlakoztatni a Raspberry Pi-hez, és a könyvtárak ugyanezek érdekében már telepítve vannak a Pi-jére. Ha nem, folytassa az alábbi oktatóanyaggal.
- A DHT11 összekapcsolása a Raspberry Pi-vel
A fenti oktatóanyag végén létrehozott volna egy dolgot az AWS-IOT-on, és meg kell adnia a dolog bróker címét, valamint a dologhoz való hozzáféréshez szükséges tanúsítványokat. Feltételezzük azt is, hogy a Raspberry pi már telepítve van egy operációs rendszerrel, és csatlakozik az internethez. Ezekkel a helyükön folytassuk az oktatóanyaggal. Ha még nem ismeri a Raspberry Pi alkalmazást, akkor először tanulmányozza át a Raspberry pi használatának megkezdését.
Az AWS IOT Device SDK Python telepítése a Raspberry Pi alkalmazásra:
Az AWS szolgáltatás Pi-n való használatához telepíthetjük a két SDK-t. Az egyik a JavaScript SDK, amely programozási nyelvként használja a JavaScript-et, a másik pedig a Python SDK, amely nyilvánvalóan a pythont használja programozási nyelvként. Itt a Python-t választjuk SDK-nak, mivel valamivel jobban érezzük magunkat a Pythonban, mint a JavaScriptben.
Az AWS IOT SDK teljes információ a GitHub oldalán érhető el.
1. lépés: Az SDK telepítéséhez a Pi-re nyissa meg a terminált, írja be a következő parancsot
git klón
2. lépés: Ennek telepítenie kellett az aws könyvtárat a Pi-jére, most navigáljon a következő paranccsal.
cd AWS - a tárgyak internete -device- sdk -python
3. lépés: A könyvtárban telepítse a telepítőfájlt az alábbi sor segítségével
python setup.py telepítés
Kördiagramm:
A hardver oldalon van egy Raspberry Pi, amely egy DHT11 érzékelőhöz és egy LCD képernyőhöz csatlakozik. A DHT11 a hőmérséklet és páratartalom értékének meghatározására szolgál, az LCD pedig az értékek és a hibakeresési információk megjelenítésére szolgál. Az alábbiakban a kapcsolási rajz látható.
Az LCD és a DHT11 érzékelő + 5 V tápellátással működik, ezért mindkettő áramellátásához a Raspberry Pi 5 V-os csatlakozóit használjuk. 1k értékű felhúzási ellenállást használnak a DHT11 érzékelő kimeneti tűjén, ha modult használ, elkerülheti ezt az ellenállást.
Az LCD kontrasztszintjének szabályozásához egy 10k méretű trimmer edényt adnak az LCD Vee tűjéhez. Ezen kívül az összes kapcsolat elég egyenes. De jegyezze fel, hogy mely GPIO csapokat használja a csapok összekapcsolásához, mivel a programunkban szükségünk lesz rá. Az alábbi diagramnak lehetővé kell tennie a GPIO PIN-kódok kitalálását.
Használja a diagramot, és kösse össze a kapcsolási rajz szerint. A kapcsolataimhoz kenyérlapot és áthidaló vezetékeket használtam. Mivel egy modult használtam, közvetlenül a Raspberry Pi-hez csatlakoztattam. A hardverem alább nézett ki így
A Raspberry Pi programozása:
Python programunkban le kell olvasnunk a hőmérséklet és a páratartalom értékét, meg kell jelenítenünk az LCD képernyőn, és mindkét értéket közzé kell tennünk az Amazon IOT dologban is, amelyet már az előző oktatóanyagban létrehoztunk. Tehát győződjön meg róla, hogy létrehozta a dolgot, és rendelkezik mind a három kulcsfájllal, valamint a létrehozott dolog közvetítői címével.
A mi python programot meg kell kapcsolni a három legfontosabb fájlokat, hogy Raspberry Pi is hozzáférhetnek közzé értékek a dolog. Tehát másolja mind a három kulcsfájlt, és illessze be a Raspberry pi asztalára, mivel programunkban szükség lesz az útvonaluk címére.
A teljes python program megtalálható ennek az oldalnak az alján. Használhatja a programot, miután szerkesztette a bróker címet és az elérési útvonalakat az Ön által létrehozott dolognak megfelelően. Továbbá magyarázom a kódot apró részletekben.
Először a projektünkhöz szükséges könyvtárak importálásával kezdjük. A három fő könyvtár az AWS SDK, az LCD könyvtár és a DHT könyvtár. Győződjön meg arról, hogy telepítette mindhárom Pi-t. Az idő és a dátum könyvtár alapértelmezés szerint telepítésre kerül.
innen: AWSIoTPythonSDK.MQTTLib importálás AWSIoTMQTTClient #Importálás az AWS-IoT könyvtár importálási idejéből # A késleltetés létrehozásához a dátumidő importálás dátumától, a dátumidőtől # A dátum és az idő importálásához importálni kell Adafruit_CharLCD-t LCD-ként #import LCD-könyvtár importálása Adafruit_DHT #Import DHT Library for sensor
A következő sorban meg kell adnunk a Thing adatait, például a közvetítő címét, az ügyfél nevét, valamint a tanúsítvány és a kulcsfájlok elérési útját. Itt az ügyfél nevét használtam új_kliensnek , használhatja ugyanazt vagy bármelyik nevet, amelyet választott. A bróker címét meg kell változtatni az Ön által létrehozott dolog címére, és az útvonal könyvtárat is meg kell változtatni a dolgának megfelelően. Ezen a két dolgon kívül nem kell változtatnia a következő sorokban.
myMQTTClient = AWSIoTMQTTClient ("new_Client") myMQTTClient.configureEndpoint ("qwert1234567yuio89.iot.us-east-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home / PI / Desktop "/ home / pi / Desktop / ESP32_Thing tanúsítványok / private.pem.key", "/ home / pi / Desktop / ESP32_Thing tanúsítványok / certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (-1) # Végtelen offline közzététel a myMQTTClient sorban . configureDrainingFrequency (2) # Lecsapolás: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout (5) # 5 sec
Ezután meg kell adnunk a kapcsolatunk PIN adatait. Az egyes csapok GPIO PIN-kódja a megfelelő nevekhez van rendelve. Itt használtuk a DHT érzékelőt a 17. csapon és az LCD-t 4 bites módban. Ugyanennek a kódja az alábbiakban látható
sensor_name = Adafruit_DHT.DHT11 # kilépünk használ DHT11 érzékelő sensor_pin = 17 # A szenzor össze van kötve GPIO17 a Pi lcd_rs = 7 #RS LCD van kötve GPIO 7 PI lcd_en = 8 #EN LCD van kötve GPIO 8 a PI lcd_d4 = 25 # D4 LCD van kötve GPIO 25 a PI lcd_d5 = 24 # D5 LCD van kötve GPIO 24 a PI lcd_d6 = 23 # D6 LCD van kötve GPIO 23 a PI lcd_d7 = 18 # D7 Az LCD csatlakoztatva van a GPIO 18-hoz a PI-n lcd_backlight = 0 # A LED nincs csatlakoztatva, ezért 0-hoz rendeljük
Ezután inicializáljuk az LCD-t, és egy kis bevezető üzenetet jelenítünk meg az LCD képernyőn. Ezt követően megpróbálunk kapcsolatba lépni az AWS dologgal a bróker cím és a fent megadott kulcsfájlok segítségével. Ha a kapcsolat sikeres, az LCD-n a „ Connected to AWS thing ” felirat jelenik meg, vagy 10 másodpercig próbálkozik, és ha nem sikerült, akkor megjelenik a Hibaüzenet. Ha hibaüzenetet kap, győződjön meg arról, hogy sikeresen létrehozta a dolgot, és megfelelően összekapcsolta a kóddal. Mindig visszatérhet az előző oktatóanyagra, és megnézheti, hogy megfelelően hozta-e létre a dolgot az AWS-ben.
ha time.time () <connect_time: #próbáljon csatlakozni az AWS-hez 10 másodpercig myMQTTClient.connect () myMQTTClient.publish ("DHT11 / info", "csatlakoztatott", 0) nyomtassa ki az "MQTT kliens kapcsolat sikert!" lcd.message ('Csatlakoztatva \ n AWS dologhoz') # Ha másra van csatlakoztatva : print "Hiba: Ellenőrizze az AWS adatait a programban" lcd.message ('Hiba: \ n Érvénytelen részletek') # ha nincs csatlakoztatva
Miután a kapcsolat sikeresen létrejött, belépünk a végtelen idő ciklusba, hogy hasznos időként közzétegyük az idő, a hőmérséklet és a páratartalom értékét. A hasznos teher itt mindig JSON formátumú karakterlánc legyen. Tehát először az aktuális dátum és idő beolvasásával, és az alábbi sorok használatával egy változóba történő mentéssel végzünk
now = datetime.utcnow () #get date and time current_time = now.strftime ('% Y-% m-% dT% H:% M:% SZ') #get current time string format
Ezután leolvassuk a DHT11 érzékelő nedvességtartalmának és hőmérsékletének értékét, és megjelenítjük egy LCD képernyőn. A változó páratartalom és hőmérséklet megtartja a páratartalom és a hőmérséklet értékét
páratartalom, hőmérséklet = Adafruit_DHT.read_retry (érzékelő_neve, érzékelő_csapja) # olvasni az érzékelőből
és mentse el a megfelelő értékeket a hőmérséklet és a páratartalom változóban
lcd.clear () # Törölje az LCD képernyőt lcd.message ('Temp =%.1f C'% hőmérséklet) # Jelenítse meg a hőmérséklet értékét lcd.message ('\ nHum =%.1f %%'% páratartalom) #Display a Páratartalom ideje.alvás (2) értéke # Várjon 2 másodpercet, majd frissítse az értékeket
Mint korábban elmondtuk, a hasznos tehernek karakterlánc formájában kell lennie, körülötte göndör zárójelekkel. A változó karakterláncokká alakítása után hozzáadjuk a dátum, az idő, a hőmérséklet és a páratartalom értékét.
#preparare the load load string format payload = '{"timestamp": "' + current_time + '", "temperature":' + str (hőmérséklet) + ', "páratartalom":' + str (páratartalom) + '}'
Végül, amikor a hasznos teher elkészült, közzé kell tennünk az MQTT kliensnél. Ezt a myMQTTclient.publish paranccsal teheti meg . Miközben közzéteszünk egy dolgot, nevet is kell adnunk neki, itt DHT11 / data-nak neveztem el, de bármit megnevezhet, amit csak akar. De mindenképpen emlékezzen a névre, mivel fel kell iratkoznunk a dolgunkról az adatok megtekintéséhez.
A python program tesztelése a Shell Window segítségével:
Miután a program elkészült, indítsa el a saját választása szerint. A Python IDE segítségével indítottam el a programot a shell ablakban. Ha minden rendben van, akkor sikeres üzenetkapcsolatot kell létrehoznia, és az összes hasznos terhet meg kell jeleníteni az ablakon. Ellenőrizheti, hogy a hőmérséklet és a páratartalom értékeit helyesen olvassák-e be. A hasznos teher 5 másodpercenként frissül. A héjablak az alábbiak szerint fog kinézni
Ha bármilyen problémája van, győződjön meg arról, hogy megadta a megfelelő kulcsadatokat és a közvetítő címét, ellenőrizze azt is, hogy a dolog összekapcsolható-e az MQTT.fx szoftverrel. Ha a héj megjeleníti az MQTT kliens csatlakozás sikerét, és ott lóg, az azt jelenti, hogy a DHT11 érzékelő nem válaszol, ellenőrizze, hogy a megfelelő tűhöz csatlakozott-e, és az érzékelő működőképes-e.
Dolgozó:
Miután elindította a programot, és megkapta a fenti részleteket a shell ablakban, ez azt jelenti, hogy a program megfelelően reagál, és az értékeket feltöltik az Amazon AWS szerverre. Észreveheti az LCD-kijelzőt is, hogy ellenőrizze, az 5 másodpercenként az AWS-IoT-hez való közzétételt írja -e az alábbiak szerint.
Beléphetünk az MQTT.fx alkalmazásba, és feliratkozhatunk a DHT11 / data témára. Ezután képesnek kell lennünk megszerezni az összes olyan adatot, amelyet a Raspberry Pi publikál. Ezeket az adatokat 5 másodpercenként frissítjük; az MQTT képernyőd az alábbiak szerint fog kinézni
Amint láthatja, a hasznos teher az MQTT szoftveren érkezik, kékkel kiemelve. Az alábbi videót is megnézheti, hogy megtudja, hogyan működik a projekt. Mivel mostanra rendelkezünk adatainkkal az interneten, felhasználhatjuk azokat az Amazon által biztosított egyéb eszközökkel, például az Elastic search és a Lambda segítségével az adatok adatbázisba mentéséhez vagy grafikonon történő megjelenítéséhez. Sokkal több alkalmazás van, annak alapján, hogy nekünk hogyan kell hasznot húznunk az adatokból.
Remélem, megértette az oktatóanyagot, és élvezett valami hasonlót. Ha bármilyen problémája van ennek megvalósításával, tegye közzé az alábbi megjegyzés részben, vagy használja a fórumokat technikai segítségre.