- Pag-install ng AWS IOT Device SDK para sa Python sa Raspberry Pi:
- Diagram ng Circuit:
- Pag-program ng iyong Raspberry Pi:
- Pagsubok sa programa ng sawa sa pamamagitan ng Shell Window:
- Nagtatrabaho:
Ang Raspberry Pi ay palaging ang unang pagpipilian para sa pagbuo ng mga application na batay sa IoT kung ang ilang antas ng pagkalkula ay kasangkot. Sa kakayahang umangkop ng sawa at malakas na pamayanan ng developer napakadali upang mangolekta, mag-log, pag-aralan o iulat ang isang hanay ng data gamit ang Pi. Sa tutorial na ito matututunan namin kung paano maghalo sa lakas ng Raspberry Pi sa serbisyo ng Amazon AWS upang mai-publish ang data sa online sa Internet.
Sa tutorial na ito, gagamitin namin ang sensor ng DHT11 upang basahin ang halaga ng Temperatura at Humidity, pagkatapos ay kumonekta sa serbisyo ng AWS IOT at i-update ang mga halaga ng sensor gamit ang AWS IOT SDK. Ang data na ito ay maaaring mailarawan sa Amazon IOT console upang matiyak na nakukuha namin ang data na na-publish sa internet.
Maaari mo ring gamitin ang AWS Elastic Search Service upang makuha ang mga sensor vales at iimbak ito sa isang database at pagkatapos ay gamitin ang serbisyo ng Kibana Dashboard upang mailarawan ang data ng sensor bilang maayos na naka-plot na grap. Nakatutuwang Sapat? !!! Kaya, magsimula na…
Paunang mga kinakailangan:
Ipinapalagay ng tutorial na ito na nilikha mo na ang iyong libreng AWS account at alam ang mga pangunahing kaalaman tungkol sa serbisyo ng AWS IoT tulad ng paglikha ng isang bagay, sertipiko, patakaran at upang mai-publish ang mga halagang ginagamit ito. Kung hindi man basahin ang tutorial sa ibaba.
- Pagsisimula sa Amazon AWS IOT sa MQTT.fx
Ipinapalagay din nito na alam mo kung paano i-interface ang isang LCD at DHT11 sensor sa Raspberry Pi at ang mga aklatan para sa paggawa ng pareho ay naka-install na sa iyong Pi. Kung hindi, magpatuloy sa tutorial sa ibaba.
- Ang interfacing DHT11 kasama ang Raspberry Pi
Sa pagtatapos ng tutorial sa itaas ay lumikha ka ng isang bagay sa AWS-IOT at dapat mo ring magkaroon ng address ng broker para sa iyong bagay kasama ang mga sertipiko na kinakailangan upang ma-access ang iyong bagay. Ipinapalagay din namin na ang iyong Raspberry pi ay naka-set up na sa isang OS at nakakonekta sa internet. Sa mga ito sa lugar magpatuloy tayo sa tutorial. Kung bago ka sa Raspberry Pi pagkatapos ay dumaan sa Pagsisimula muna sa Raspberry pi.
Pag-install ng AWS IOT Device SDK para sa Python sa Raspberry Pi:
Upang magamit ang serbisyo ng AWS sa Pi, maaari naming mai-install ang alinman sa dalawang mga SDK. Ang isa ay ang JavaScript SDK na gumagamit ng JavaScript bilang programming language at ang isa pa ay ang Python SDK na malinaw na gumagamit ng python bilang programming language. Narito kami ay pagpili ng Python bilang aming SDK mula noong tayo ay bit mas kumportable na may sawa sa JavaScript.
Ang kumpletong impormasyon sa AWS IOT SDK ay magagamit sa pahina ng GitHub nito.
Hakbang 1: Upang mai-install ang SDK sa iyong Pi, buksan ang terminal sa i-type ang sumusunod na utos
git clone
Hakbang 2: Dapat na mai -install nito ang direktoryo ng aws sa iyong Pi, ngayon mag-navigate papunta dito gamit ang sumusunod na utos.
cd aws - iot -device- sdk -python
Hakbang 3: Sa loob ng direktoryo i-install ang setup file gamit ang linya sa ibaba
python setup.py install
Diagram ng Circuit:
Sa panig ng hardware mayroon kaming isang Raspberry Pi na konektado sa isang DHT11 Sensor at isang LCD screen. Ginagamit ang DHT11 upang makuha ang halaga ng Temperatura at Humidity at LCD ay ginagamit upang ipakita ang mga halaga at de-bugging na impormasyon. Ang circuit diagram para sa pareho ay ipinapakita sa ibaba.
Parehong gumagana ang sensor ng LCD at DHT11 na may supply na + 5V kaya ginagamit namin ang mga 5V na pin sa Raspberry Pi upang mapagana ang pareho. Ang isang pull up risistor ng halagang 1k ay ginagamit sa output pin ng sensor ng DHT11, kung gumagamit ka ng isang module maaari mong maiwasan ang risistor na ito.
Ang isang pampaligo na palayok na 10k ay idinagdag sa pin ng Vee ng LCD upang makontrol ang antas ng kaibahan ng LCD. Maliban dito ang lahat ng mga koneksyon ay medyo tuwid na pasulong. Ngunit gumawa ng isang tala kung aling mga GPIO pin ang iyong ginagamit upang ikonekta ang mga pin dahil kakailanganin namin sa aming programa. Dapat payagan ka ng tsart sa ibaba na malaman ang mga numero ng GPIO pin.
Gamitin ang tsart at gawin ang iyong mga koneksyon alinsunod sa diagram ng circuit. Gumamit ako ng isang breadboard at jumper wires upang makakonekta. Dahil gumamit ako ng isang module ay direktang na-wire ko ito sa Raspberry Pi. Ganito ang hitsura ng aking hardware sa ibaba
Pag-program ng iyong Raspberry Pi:
Sa aming programa sa sawa kailangan nating basahin ang halaga ng temperatura at halumigmig, ipakita ito sa LCD screen at i- publish din ang parehong mga halaga sa bagay na Amazon IOT na nilikha namin sa nakaraang tutorial. Kaya siguraduhing nilikha mo ang bagay at mayroon ka ng lahat ng tatlong pangunahing mga file at ang address ng broker ng bagay na iyong nilikha.
Sa aming programa sa sawa kailangan nating i-link ang tatlong pangunahing mga file upang ang Raspberry Pi ay maaaring makakuha ng pag-access upang mai-publish ang mga halaga sa aming bagay. Kaya kopyahin ang lahat ng tatlong pangunahing mga file at i-paste ito sa desktop ng iyong Raspberry pi dahil kakailanganin namin ang kanilang path address sa aming programa.
Ang kumpletong programa ng sawa ay matatagpuan sa ilalim ng pahinang ito, maaari mong gamitin ang programa pagkatapos i-edit ang address ng broker at mga direktoryo ng path alinsunod sa bagay na iyong nilikha. Dagdag na bellow Ipinaliwanag ko ang code sa maliliit na mga snippet.
Nagsisimula kami sa pamamagitan ng pag-import ng mga aklatan na kinakailangan para sa aming proyekto. Ang tatlong pangunahing mga aklatan ay AWS SDK, LCD library at DHT Library, tiyakin na na-install mo ang lahat ng iyong tatlong Pi. Ang oras at datime library ay mai-install bilang default.
mula AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient #import mula sa AWS-IoT Library import time # Upang lumikha ng pagkaantala mula datetime date import, datetime #To makakuha ng petsa at oras pag-import Adafruit_CharLCD ng LCD #import LCD library import Adafruit_DHT #import DHT Library para sa sensor
Sa susunod na linya kailangan naming ibigay ang mga detalye ng Bagay tulad ng address ng Broker, Pangalan at landas ng kliyente sa sertipiko at mga pangunahing file. Dito ko ginamit ang pangalan ng kliyente bilang new_Client maaari mong gamitin ang pareho o anumang pangalan na iyong pinili. Ang address ng broker ay dapat mapalitan sa address ng bagay na iyong nilikha at ang direktoryo ng path ay dapat ding mabago alinsunod sa iyong bagay. Maliban sa 2 bagay na ito hindi mo kailangang baguhin ang anumang bagay sa mga sumusunod na linya.
myMQTTClient = AWSIoTMQTTClient ("new_Client") myMQTTClient.configureEndpoint ("qwert1234567yuio89.iot.us-east-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home /.p / Desktop, "/ home / pi / Desktop / ESP32_Thing sertipiko / private.pem.key", "/ home / pi / Desktop / ESP32_Thing mga sertipiko / sertipiko.pem.crt") myMQTTClient.configureOfflinePublishQueueing (-1) # Walang katapusang offline I-publish ang pila sa akingMQTTClient. configureDrainingFrequency (2) # Draining: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureMQTTOperationTimeout (5) # 5 sec
Susunod kailangan naming tukuyin ang mga detalye ng pin ng aming koneksyon. Ang numero ng GPIO pin ng bawat pin ay inilalaan sa kani-kanilang pangalan. Dito ginamit namin ang sensor ng DHT sa pin 17 at LCD sa 4-bit mode. Ang code para sa pareho ay ipinapakita sa ibaba
sensor_name = Adafruit_DHT.DHT11 # gumagamit kami ng DHT11 sensor sensor_pin = 17 #Ang sensor ay konektado sa GPIO17 sa Pi lcd_rs = 7 #RS ng LCD ay konektado sa GPIO 7 sa PI lcd_en = 8 #EN ng LCD ay nakakonekta sa GPIO 8 sa PI lcd_d4 = 25 # D4 ng LCD ay konektado sa GPIO 25 sa PI lcd_d5 = 24 # D5 ng LCD ay konektado sa GPIO 24 sa PI lcd_d6 = 23 # D6 ng LCD ay konektado sa GPIO 23 sa PI lcd_d7 = 18 # D7 ng Ang LCD ay konektado sa GPIO 18 sa PI lcd_backlight = 0 #LED ay hindi nakakonekta kaya nagtatalaga kami sa 0
Pagkatapos ay pinasimulan namin ang LCD at nagpapakita ng isang maliit na mensahe ng intro sa LCD screen. Pagkatapos nito ay susubukan naming kumonekta sa bagay na AWS gamit ang address ng broker at mga pangunahing file na ipinasok sa itaas. Kung matagumpay ang koneksyon ipapakita ng LCD ang " Nakakonekta sa bagay na AWS " o susubukan ito sa loob ng 10 segundo at kung nabigo ito ay ipapakita nito ang mensahe ng Error. Kung nakatanggap ka ng mensahe ng error siguraduhin na nilikha mo ang bagay na matagumpay at na-link ito nang maayos sa code. Maaari mong palaging bumalik sa nakaraang tutorial upang makita kung nilikha mo nang maayos ang bagay sa AWS.
kung time.time () <pagkonekta sa oras: #try pagkonekta sa AWS sa loob ng 10 segundo myMQTTClient.connect () myMQTTClient.publish ("DHT11 / info", "konektado", 0) i- print ang "MQTT Client koneksyon tagumpay!" lcd.message ('Nakakonekta sa \ n AWS bagay') # kung nakakonekta pa: i- print ang "Error: Suriin ang iyong mga detalye sa AWS sa programa" lcd.message ('Error: \ nMga wastong detalye') # kung hindi nakakonekta
Kapag matagumpay na naitatag ang koneksyon, pumapasok kami sa walang hanggan habang loop upang mai - publish ang halaga ng oras, temperatura at Humidity bilang isang payload. Ang payload dito ay dapat palaging isang string sa format na JSON. Kaya't una tayo sa pamamagitan ng pagbabasa ng kasalukuyang petsa at oras at i-save ito sa isang variable sa pamamagitan ng paggamit ng mga linya sa ibaba
now = datetime.utcnow () #get date and time current_time = now.strftime ('% Y-% m-% dT% H:% M:% SZ') #get kasalukuyang oras sa format ng string
Pagkatapos basahin namin ang halumigmig at mga halaga ng temperatura na bumubuo sa sensor ng DHT11 at ipakita ito sa isang LCD screen. Ang variable na kahalumigmigan at temperatura ay hahawak sa halaga ng halumigmig at temperatura ayon sa pagkakabanggit
halumigmig, temperatura = Adafruit_DHT.read_retry (sensor_name, sensor_pin) #read mula sa sensor
at i-save ang kani-kanilang mga halaga sa temperatura at halumigmig na varibale
lcd.clear () #Clear the LCD screen lcd.message ('Temp =%.1f C'% temperatura) # Ipakita ang halaga ng temperatura lcd.message ('\ nHum =%.1f %%'% halumigmig) #Display ang halaga ng oras ng Humidity.tulog (2) # Maghintay para sa 2 sec pagkatapos ay i-update ang mga halaga
Tulad ng sinabi nang mas maaga ang kargamento ay dapat na sa form ng string na may mga kulot na bracket sa paligid nito ay idinagdag namin ang halaga ng petsa, oras, Temperatura at halumigmig matapos ma-convert ang variable sa mga string tulad ng ipinakita sa ibaba.
#prepare ang payload sa string format payload = '{"timestamp": "' + kasalukuyang_time + '", "temperatura":' + str (temperatura) + ', "halumigmig":' + str (halumigmig) + '}'
Sa wakas sa sandaling handa na ang payload kailangan nating mai-publish ito sa MQTT Client. Maaari itong magawa sa pamamagitan ng paggamit ng myMQTTclient.publish na utos. Habang ang pag-publish sa isang bagay dapat din nating bigyan ito ng isang pangalan, narito ko pinangalanan itong DHT11 / data ngunit maaari mo itong pangalanan kahit anong nais mong. Ngunit tiyaking naaalala mo ang pangalan dahil kakailanganin naming mag-subscribe mula sa aming bagay upang matingnan ang data.
Pagsubok sa programa ng sawa sa pamamagitan ng Shell Window:
Kapag handa na ang programa, ilunsad ito gamit ang iyong pinili. Ginamit ko ang Python IDE upang ilunsad ang programa sa window ng shell. Kung okay ang lahat dapat kang makakuha ng matagumpay na koneksyon ng mensahe at dapat ipakita ang lahat ng kargamento sa window. Maaari mong suriin kung ang mga halaga ng temperatura at halumigmig ay nababasa nang tama. Ang payload ay maa-update para sa bawat 5 segundo. Ang window ng shell ay magmumukhang ganito sa ibaba
Kung mayroon kang anumang problema siguraduhing naibigay mo ang tamang mga detalye ng susi at ang address ng broker, suriin din kung ang bagay na maaaring maiugnay sa paggamit ng MQTT.fx software. Kung ang shell ay nagpapakita ng tagumpay sa koneksyon ng Client ng MQTT at nakabitin doon, nangangahulugan ito na ang sensor ng DHT11 ay hindi tumutugon sa tseke kung nakakonekta ka sa tamang pin at gumagana ang sensor.
Nagtatrabaho:
Sa sandaling mailunsad mo ang programa at makuha ang mga detalye sa itaas sa shell window nangangahulugan ito na ang programa ay tumutugon nang maayos at ang mga halaga ay ina-upload sa Amazon AWS server. Maaari mo ring mapansin ang LCD display upang suriin kung sinasabi na Nai-publish sa AWS-IoT bawat 5 segundo tulad ng ipinakita sa ibaba.
Maaari kaming makapasok sa application ng MQTT.fx at mag-subscribe sa paksang DHT11 / data . Kung gayon dapat naming makuha ang lahat ng data na nai-publish ng Raspberry Pi. Ang data na ito ay maa-update din para sa bawat 5 segundo; ang iyong MQTT screen ay magmumukhang ganito sa ibaba
Tulad ng nakikita mong natatanggap ang payload sa MQTT software na naka-highlight sa asul. Maaari mo ring panoorin ang video sa ibaba upang malaman kung paano gumagana ang proyekto. Dahil ngayon mayroon kaming aming data sa internet maaari namin itong magamit sa iba pang mga tool na ibinigay ng Amazon tulad ng Elastic search at Lambda upang mai-save ang data sa isang database o mailarawan pagkatapos sa isang grap. Marami pang mga application, batay sa kung paano tayo makikinabang sa data.
Inaasahan kong naintindihan mo ang tutorial at nasiyahan sa pagbuo ng isang bagay na katulad, kung mayroon kang anumang problema sa pagtatapos nito, i-post ito sa seksyon ng komento sa ibaba o gamitin ang mga forum para sa tulong na panteknikal.