- AWS IOT ierīces SDK instalēšana Python uz Raspberry Pi:
- Ķēdes shēma:
- Raspberry Pi programmēšana:
- Python programmas pārbaude, izmantojot Shell Window:
- Darbs:
Aveņu Pi vienmēr ir bijusi pirmā izvēle IoT balstītu lietojumprogrammu izstrādē, ja ir iesaistīts zināms skaitļošanas līmenis. Izmantojot pitona un spēcīgas izstrādātāju kopienas elastību, ir ļoti viegli apkopot, reģistrēt, analizēt vai ziņot par datu kopu, izmantojot Pi. Šajā apmācībā mēs uzzināsim, kā apvienot Raspberry Pi spēku ar Amazon AWS pakalpojumu, lai tiešsaistē publicētu datus internetā.
Šajā apmācībā mēs izmantosim sensoru DHT11, lai nolasītu temperatūras un mitruma vērtību, pēc tam izveidojiet savienojumu ar AWS IOT pakalpojumu un atjauniniet sensora vērtības, izmantojot AWS IOT SDK. Pēc tam šos datus var vizualizēt Amazon IOT konsolē, lai pārliecinātos, ka dati tiek publicēti internetā.
Varat arī izmantot AWS Elastic Search Service, lai ielādētu šīs sensoru lāpstiņas un uzglabātu tās datu bāzē, un pēc tam izmantojiet pakalpojumu Kibana Dashboard, lai vizualizētu sensora datus kā kārtīgu grafiku. Pietiekami interesanti? !!! Tātad, ļauj sākt darbu…
Priekšnosacījumi:
Šajā apmācībā tiek pieņemts, ka esat jau izveidojis savu bezmaksas AWS kontu un zināt pamatus par AWS IoT pakalpojumu, piemēram, lietas, sertifikāta, politikas izveidi un vērtību publicēšanu, izmantojot to. Ja citādi izlasiet šo apmācību.
- Darba sākšana ar Amazon AWS IOT ar MQTT.fx
Tas arī pieņem, ka jūs zināt, kā saskarni LCD un DHT11 sensoru savienot ar Raspberry Pi, un bibliotēkas, lai to izdarītu, jau ir instalētas jūsu Pi. Ja nē, turpiniet tālāk sniegto apmācību.
- DHT11 saskarne ar Aveņu Pi
Iepriekš minētās apmācības beigās jūs būtu izveidojis lietu AWS-IOT, un jums vajadzētu būt arī savas lietas brokera adresei, kā arī sertifikātiem, kas nepieciešami, lai piekļūtu jūsu lietai. Mēs arī pieņemam, ka jūsu Raspberry pi jau ir iestatīts ar OS un ir savienots ar internetu. Kad tie ir ievietoti, turpināsim apmācību. Ja esat jauns Raspberry Pi lietotājs, vispirms vispirms veiciet darba sākšanu ar Raspberry pi.
AWS IOT ierīces SDK instalēšana Python uz Raspberry Pi:
Lai izmantotu AWS pakalpojumu Pi, mēs varam instalēt jebkuru no abiem SDK. Viens ir JavaScript SDK, kas izmanto JavaScript kā programmēšanas valodu, un otrs ir Python SDK, kas acīmredzami izmanto pitonu kā programmēšanas valodu. Šeit mēs izvēlamies Python kā savu SDK, jo mums Python ir mazliet ērtāk nekā JavaScript.
Pilnīga informācija par AWS IOT SDK ir pieejama tās GitHub lapā.
1. solis: Lai instalētu SDK savā Pi, atveriet termināli, ierakstot šādu komandu
git klons
2. solis: Tam vajadzēja instalēt direktoriju aws jūsu Pi, tagad dodieties uz to, izmantojot šādu komandu.
cd aws - iot -device- sdk -python
3. solis: direktorijā instalējiet iestatīšanas failu, izmantojot zemāk esošo līniju
python setup.py instalēt
Ķēdes shēma:
Aparatūras pusē mums ir Raspberry Pi, kas savienots ar DHT11 sensoru un LCD ekrānu. DHT11 tiek izmantots, lai iegūtu temperatūras un mitruma vērtību, un LCD tiek izmantots, lai parādītu vērtības un noņemtu informāciju. Tā paša shēma ir parādīta zemāk.
Gan LCD, gan DHT11 sensors darbojas ar + 5 V barošanu, tāpēc mēs izmantojam Raspberry Pi 5 V tapas, lai darbinātu abus. DHT11 sensora izejas tapā tiek izmantots pievilkšanas rezistors 1k vērtībā. Ja izmantojat moduli, jūs varat izvairīties no šī rezistora.
Lai kontrolētu LCD kontrasta līmeni, LCD Vee tapai tiek pievienots trimmeris ar 10k. Izņemot to, ka visi savienojumi ir diezgan taisni uz priekšu. Bet atzīmējiet, kuras GPIO tapas jūs izmantojat, lai savienotu tapas, jo mums tas būs nepieciešams mūsu programmā. Zemāk redzamajā diagrammā jāļauj noskaidrot GPIO tapu numurus.
Izmantojiet diagrammu un izveidojiet savienojumus saskaņā ar shēmu. Lai izveidotu savienojumus, es izmantoju maizes dēli un džempera vadus. Tā kā es izmantoju moduli, es to tieši pievienoju Raspberry Pi. Mana aparatūra izskatījās šādi zemāk
Raspberry Pi programmēšana:
Mūsu pitona programmā mums ir jāizlasa temperatūras un mitruma vērtība, jāparāda tā LCD ekrānā un jāpublicē abas vērtības arī Amazon IOT lietai, kuru esam izveidojuši jau iepriekšējā apmācībā. Tāpēc pārliecinieties, ka esat izveidojis lietu, un jums ir visi trīs galvenie faili un izveidotās lietas starpnieka adrese.
Mūsu python programmā mums ir jāsaista trīs galvenie faili, lai Raspberry Pi varētu piekļūt mūsu lietas vērtību publicēšanai. Tātad kopējiet visus trīs galvenos failus un ielīmējiet to savā Raspberry pi darbvirsmā, jo mums būs nepieciešama viņu ceļa adrese mūsu programmā.
Pilnīga python programmu var atrast pie šīs lapas apakšā, varat izmantot programmu pēc rediģējot brokeris adresi un ceļu katalogi atbilstoši lieta jūs izveidojāt. Tālāk es esmu izskaidrojis kodu mazos fragmentos.
Mēs sākam ar mūsu projektam nepieciešamo bibliotēku importēšanu. Trīs galvenās bibliotēkas ir AWS SDK, LCD bibliotēka un DHT bibliotēka. Pārliecinieties, vai esat instalējis visas trīs savas Pi. Laiks un datetime bibliotēkas tiks uzstādīta pēc noklusējuma.
No AWSIoTPythonSDK.MQTTLib importa AWSIoTMQTTClient #import no AWS-IoT Library imports laika # Lai izveidotu kavēšanos no datetime importa dienas, datetime #To saņemt datumu un laiku importa Adafruit_CharLCD kā LCD #import LCD bibliotēka importa Adafruit_DHT #import DHT bibliotēkai sensoru
Nākamajā rindā mums jāsniedz informācija par lietu, piemēram, brokera adrese, klienta nosaukums un ceļš uz sertifikātu un galvenajiem failiem. Šeit es izmantoju klienta vārdu kā new_Client. Jūs varat izmantot to pašu vai jebkuru citu jūsu izvēlēto vārdu. Brokera adrese ir jāmaina uz izveidotās lietas adresi, un ceļa katalogs arī jāmaina atbilstoši jūsu lietai. Izņemot šīs 2 lietas, nākamajās rindās nekas nav jāmaina.
myMQTTClient = AWSIoTMQTTClient ("new_Client") myMQTTClient.configureEndpoint ("qwert1234567yuio89.iot.us-east-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home / pi / Desktop "/ home / pi / Desktop / ESP32_Thing sertifikāti / private.pem.key", "/ home / pi / Desktop / ESP32_Thing sertifikāti / certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (-1) # Infinite offline Publish publicēt rindā myMQTTClient. configureDrainingFrequency (2) # iztukšošana: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout (5) # 5 sec
Tālāk mums jānorāda mūsu savienojuma tapu detaļas. Katras tapas GPIO tapas numurs tiek piešķirts tā attiecīgajam nosaukumam. Šeit mēs izmantojām DHT sensoru 17. tapā un LCD 4 bitu režīmā. Tālāk ir parādīts tā paša kods
sensor_name = Adafruit_DHT.DHT11 # mēs izmantojam DHT11 sensoru sensor_pin = 17 # Sensors ir savienots ar GPIO17 uz Pi lcd_rs = 7 # LCD LCD ir savienots ar GPIO 7 uz PI lcd_lv = 8 #EN LCD ir savienots ar GPIO 8 uz PI lcd_d4 = 25 # LCD D4 ir pievienots GPIO 25 uz PI lcd_d5 = 24 # LCD D5 ir savienots ar GPIO 24 uz PI lcd_d6 = 23 # LCD D6 ir savienots ar GPIO 23 uz PI lcd_d7 = 18 # D7 no LCD ir savienots ar GPIO 18 uz PI lcd_backlight = 0 #LED nav pievienots, tāpēc mēs piešķiram 0
Tad mēs inicializējam LCD un LCD ekrānā parādām nelielu ievada ziņojumu. Pēc tam mēs mēģināsim izveidot savienojumu ar AWS lietu, izmantojot iepriekš ievadīto starpnieka adresi un galvenos failus. Ja savienojums ir veiksmīgs, LCD displejā tiks parādīts paziņojums “ Savienots ar AWS lietu ” vai tas tiks mēģināts veikt 10 sekundes, un, ja tas neizdevās, tiks parādīts kļūdas ziņojums. Ja saņemat kļūdas ziņojumu, pārliecinieties, ka esat veiksmīgi izveidojis lietu un pareizi to piesaistījis kodam. Jūs vienmēr varat atgriezties iepriekšējā apmācībā, lai redzētu, vai esat pareizi izveidojis lietu AWS.
ja time.time () <connect_time: # mēģiniet 10 sekundes izveidot savienojumu ar AWS myMQTTClient.connect () myMQTTClient.publish ("DHT11 / info", "savienots", 0) izdrukāt "MQTT klienta savienojuma panākumi!" lcd.message ('Savienots ar \ n AWS lietu') # ja ir pievienots cits: drukāt "Kļūda: Pārbaudiet AWS datus programmā" lcd.message ('Kļūda: \ nNederīga informācija') # ja nav pievienots
Kad savienojums ir veiksmīgi izveidots, mēs ieejam bezgalīgā kamēr cilpa publicēt vērtību laika, temperatūras un mitruma, kā masai. Derīgajai slodzei šeit vienmēr jābūt virknei JSON formātā. Tātad vispirms mēs lasām pašreizējo datumu un laiku un saglabājam to mainīgajā, izmantojot zemāk redzamās rindas
now = datetime.utcnow () #get date and time current_time = now.strftime ('% Y-% m-% dT% H:% M:% SZ') #get pašreizējais laiks virknes formātā
Tad mēs nolasām DHT11 sensora mitruma un temperatūras vērtības un parādām to uz LCD ekrāna. Mainīgais mitrums un temperatūra turēs attiecīgi mitruma un temperatūras vērtību
mitrums, temperatūra = Adafruit_DHT.read_retry (sensora_nosaukums, sensor_pin) #lasīt no sensora
un saglabājiet attiecīgās temperatūras un mitruma mainīgās vērtības
lcd.clear () # Notīriet LCD ekrānu lcd.message ('Temp =%.1f C'% temperatūra) # Parādiet temperatūras vērtību lcd.message ('\ nHum =%.1f %%'% mitrums) # Displejs mitruma laika.sleep (2) vērtība # Pagaidiet 2 sekundes, pēc tam atjauniniet vērtības
Kā jau iepriekš teicām, lietderīgajai slodzei jābūt virknes formā ar cirtainiem iekavām ap to, pēc mainīgā pārveidošanas virknēs, kā parādīts zemāk, mēs pievienojam datuma, laika, temperatūras un mitruma vērtību.
#prepare celtspēja virknes formātā payload = '{"timestamp": "' + current_time + '", "temperature":' + str (temperature) + ', "mitrums":' + str (mitrums) + '}'
Visbeidzot, kad krava ir gatava, tā jāpublicē MQTT klientā. To var izdarīt, izmantojot komandu myMQTTclient.publish . Publicējot kādai lietai, mums tai vajadzētu arī piešķirt nosaukumu, šeit es to nosaucu par DHT11 / data, bet jūs to varat nosaukt kā vēlaties. Bet pārliecinieties, ka atceraties vārdu, jo mums būs jāpiesakās no mūsu lietas, lai skatītu datus.
Python programmas pārbaude, izmantojot Shell Window:
Kad programma ir gatava, palaidiet to, izmantojot savu izvēli. Esmu izmantojis Python IDE, lai palaistu programmu čaulas logā. Ja viss ir kārtībā, ziņojumu savienojums ir jāizveido veiksmīgi, un visa lietderīgā slodze jāparāda logā. Jūs varat pārbaudīt, vai temperatūras un mitruma vērtības tiek pareizi nolasītas. Kravnesība tiks atjaunināta ik pēc 5 sekundēm. Apvalka logs zemāk izskatīsies apmēram šādi
Ja jums ir kādas problēmas, pārliecinieties, ka esat norādījis pareizu galveno informāciju un brokera adresi, pārbaudiet arī to, vai lietu var savienot, izmantojot programmatūru MQTT.fx. Ja apvalks parāda MQTT klienta savienojuma panākumus un tur uzkaras, tas nozīmē, ka DHT11 sensors nereaģē, pārbaudot, vai esat izveidojis savienojumu ar pareizo tapu un sensors ir funkcionāls.
Darbs:
Pēc programmas palaišanas un čaulas logā iegūstot iepriekš minēto informāciju, tas nozīmē, ka programma reaģē pareizi un vērtības tiek augšupielādētas Amazon AWS serverī. Jūs varat arī pamanīt LCD displeju, lai pārbaudītu, vai ik pēc 5 sekundēm ir rakstīts Publicēts AWS-IoT, kā parādīts zemāk.
Mēs varam iekļūt MQTT.fx lietojumprogrammā un parakstīties uz tēmu DHT11 / data . Tad mums vajadzētu būt iespējai iegūt visus datus, kurus publicē Raspberry Pi. Šie dati tiks atjaunināti arī ik pēc 5 sekundēm; jūsu MQTT ekrāns izskatās apmēram šādi
Kā redzat, krava tiek uztverta MQTT programmatūrā, kā iezīmēta ar zilu krāsu. Lai uzzinātu, kā projekts darbojas, varat arī noskatīties zemāk esošo videoklipu. Tā kā tagad mūsu dati ir pieejami internetā, mēs tos varam izmantot kopā ar citiem Amazon piedāvātajiem rīkiem, piemēram, Elastic search un Lambda, lai datus saglabātu datu bāzē vai pēc tam vizualizētu diagrammā. Ir daudz vairāk lietojumprogrammu, pamatojoties uz to, kā mums jāgūst labums no datiem.
Ceru, ka jūs sapratāt apmācību un jums patika veidot kaut ko līdzīgu, ja jums ir kādas problēmas to paveikt, ievietojiet to zemāk esošajā komentāru sadaļā vai izmantojiet forumus tehniskai palīdzībai.