- Инсталиране на AWS IOT Device SDK за Python на Raspberry Pi:
- Електрическа схема:
- Програмиране на вашия Raspberry Pi:
- Тестване на програмата на python през Shell Window:
- Работа:
Raspberry Pi винаги е бил първият избор за разработване на приложения, базирани на IoT, ако е налице някакво ниво на изчисление. С гъвкавостта на python и силната общност на разработчици е много лесно да се събират, регистрират, анализират или отчитат набор от данни с помощта на Pi. В този урок ще научим как да смесим силата на Raspberry Pi с услугата Amazon AWS, за да публикуваме данни онлайн в интернет.
В този урок ще използваме сензора DHT11, за да отчитаме стойността на температурата и влажността, след което ще се свържем с услугата AWS IOT и ще актуализираме стойностите на сензора, използвайки AWS IOT SDK. След това тези данни могат да бъдат визуализирани в конзолата на Amazon IOT, за да сме сигурни, че получаваме данните, публикувани в интернет.
Можете също така да използвате услугата за еластично търсене AWS, за да извлечете тези долини на сензорите и да ги съхраните в база данни и след това да използвате услугата Kibana Dashboard, за да визуализирате данните на сензора като изчистена графика. Доста интересно? !!! И така, нека започнем…
Предварителни условия:
Този урок предполага, че вече сте създали своя безплатен акаунт в AWS и знаете основите на услугата AWS IoT като създаване на нещо, сертификат, политика и публикуване на стойности, използвайки това. Ако е друго, прочетете урока по-долу.
- Първи стъпки с Amazon AWS IOT с MQTT.fx
Освен това се предполага, че знаете как да свържете LCD и DHT11 сензор с Raspberry Pi и библиотеките за това са вече инсталирани на вашия Pi. Ако не, продължете с урока по-долу.
- Взаимодействие с DHT11 с Raspberry Pi
В края на горния урок бихте създали нещо на AWS-IOT и трябва също да имате адреса на брокера за вашето нещо заедно със сертификатите, необходими за достъп до вашето нещо. Предполагаме също, че вашият Raspberry pi вече е настроен с операционна система и е свързан с интернет. С тях на място, нека да продължим с урока. Ако сте нов в Raspberry Pi, преминете първо към Първи стъпки с Raspberry pi.
Инсталиране на AWS IOT Device SDK за Python на Raspberry Pi:
За да използваме услугата AWS на Pi, можем да инсталираме някой от двата SDK. Единият е JavaScript SDK, който използва JavaScript като език за програмиране, а другият е Python SDK, който очевидно използва python като език за програмиране. Тук избираме Python като наш SDK, тъй като ни е по-удобно с Python, отколкото с JavaScript.
Пълната информация за AWS IOT SDK е достъпна на страницата му в GitHub.
Стъпка 1: За да инсталирате SDK на вашия Pi, отворете терминала, като напишете следната команда
git clone
Стъпка 2: Това трябва да е инсталирало директорията aws на вашия Pi, сега навигирайте в нея, като използвате следната команда.
cd aws - iot -device- sdk -python
Стъпка 3: В директорията инсталирайте инсталационния файл, като използвате реда по-долу
python setup.py инсталиране
Електрическа схема:
От страна на хардуера имаме Raspberry Pi, свързан към сензор DHT11 и LCD екран. DHT11 се използва за получаване на стойността на температура и влажност, а LCD се използва за показване на стойностите и информация за отстраняване на грешки. Схемата за същото е показана по-долу.
Както LCD, така и DHT11 сензорът работят с + 5V захранване, така че ние използваме 5V щифтовете на Raspberry Pi за захранване и на двете. На изходния щифт на сензора DHT11 се използва издърпващ резистор на стойност 1k, ако използвате модул, можете да избегнете този резистор.
А подстригване пот на 10k се добавя към Vee щифт на дисплея да се контролира нивото на контраста на дисплея. Освен това всички връзки са доста прави. Но отбележете кои GPIO щифтове използвате за свързване на щифтовете, тъй като ние ще се нуждаем от нашата програма. Графиката по-долу трябва да ви позволи да разберете GPIO номерата на пиновете.
Използвайте диаграмата и направете връзките си според схемата. Използвах макет и кабелни джипове, за да направя връзките си. Тъй като използвах модул, го свързах директно към Raspberry Pi. Хардуерът ми изглеждаше така по-долу
Програмиране на вашия Raspberry Pi:
В нашата програма за python трябва да прочетем стойността на температурата и влажността, да я покажем на LCD екрана и също да публикуваме двете стойности в Amazon IOT нещо, което създадохме вече в предишния урок. Затова се уверете, че сте създали нещото и че имате всичките три ключови файла и адреса на брокера на това нещо, което сте създали.
В нашата програма за python трябва да свържем трите ключови файла, за да може Raspberry Pi да получи достъп до публикуване на стойности за нашето нещо. Така че копирайте всичките три ключови файла и ги поставете на работния плот на вашия Raspberry pi, тъй като ще се нуждаем от адреса им в нашата програма.
В пълна програма питон може да се намери в дъното на тази страница, можете да използвате програмата, след редактирането брокер адрес и пътя директории в зависимост от нещо, което сте създали. По-нататък по-долу съм обяснил кода в малки фрагменти.
Започваме с импортиране на библиотеките, необходими за нашия проект. Трите основни библиотеки са AWS SDK, LCD библиотека и DHT библиотека, уверете се, че сте инсталирали и трите си Pi. В момента и дата и час библиотека ще бъде инсталиран по подразбиране.
от AWSIoTPythonSDK.MQTTLib внос AWSIoTMQTTClient #import от AWS-ИН Библиотека време внос # За да създадете закъснение от час и дата дата внос, дата и час #, за да се получи дата и час Adafruit_CharLCD внос като LCD #import LCD библиотека внос Adafruit_DHT #import DHT Библиотека за датчик
В следващия ред трябва да предоставим подробности за нещата като адрес на брокер, име на клиент и път към файловете със сертификати и ключове. Тук използвах името на клиента като new_Client, можете да използвате същото или произволно име по ваш избор. Адресът на брокера трябва да се промени на адреса на нещото, което сте създали, а директорията на пътя също трябва да се промени според вашето нещо. Освен тези 2 неща, не е нужно да променяте нищо в следващите редове.
myMQTTClient = AWSIoTMQTTClient ("new_Client") myMQTTClient.configureEndpoint ("qwert1234567yuio89.iot.us-east-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ home / pi / CA / CA / pi / CA / CA / pi / CA / CA / pi / CA / CA / pi / CA /. "/ home / pi / Desktop / ESP32_Thing certificate / private.pem.key", "/ home / pi / Desktop / ESP32_Thing certificate / certificate.pem.crt") myMQTTClient.configureOfflinePublishQueueing (-1) # Безкрайно офлайн Публикуване на опашка myMQTTClient. configureDrainingFrequency (2) # Изтичане: 2 Hz myMQTTClient.configureConnectDisconnectTimeout (10) # 10 сек myMQTTClient.configureMQTTOperationTimeout (5) # 5 sec
След това трябва да посочим подробностите за пина на нашата връзка. GPIO номерът на пина на всеки пин се разпределя към съответното му име. Тук използвахме DHT сензора на щифт 17 и LCD в 4-битов режим. Кодът за същото е показан по-долу
sensor_name = Adafruit_DHT.DHT11 # използваме сензора DHT11 sensor_pin = 17 # Сензорът е свързан към GPIO17 на Pi lcd_rs = 7 #RS на LCD е свързан към GPIO 7 на PI lcd_en = 8 #EN на LCD е свързан към GPIO 8 на PI lcd_d4 = 25 # D4 на LCD е свързан към GPIO 25 на PI lcd_d5 = 24 # D5 на LCD е свързан към GPIO 24 на PI lcd_d6 = 23 # D6 на LCD е свързан към GPIO 23 на PI lcd_d7 = 18 # D7 на LCD е свързан към GPIO 18 на PI lcd_backlight = 0 #LED не е свързан, затова присвояваме на 0
След това инициализираме LCD и показваме малко въведение съобщение на LCD екрана. След това ще се опитаме да се свържем с AWS, използвайки адреса на брокера и ключовите файлове, въведени по-горе. Ако връзката е успешна, LCD дисплеят ще покаже “ Connected to AWS thing ” или ще опита за 10 секунди и ако не успее, ще покаже съобщение за грешка. Ако получите съобщение за грешка, уверете се, че сте създали нещата успешно и сте го свързали правилно с кода. Винаги можете да се върнете към предишния урок, за да видите дали сте създали нещото правилно в AWS.
ако time.time () <connection_time: # опитайте да се свържете с AWS за 10 секунди myMQTTClient.connect () myMQTTClient.publish ("DHT11 / info", "connected", 0) print "MQTT Client connection success!" lcd.message ('Свързан с \ n нещо в AWS') # ако е свързан друго: print "Грешка: Проверете данните за AWS в програмата" lcd.message ('Грешка: \ nНевалидни подробности') # ако не е свързан
След като връзката се установи успешно, влизаме в безкрайния цикъл while, за да публикуваме стойността на времето, температурата и влажността като полезен товар. Полезният товар тук винаги трябва да бъде низ в JSON формат. Така че първо ние сме като четем текущата дата и час и ги запазваме в променлива, като използваме долните редове
сега = datetime.utcnow () #get дата и час current_time = now.strftime ('% Y-% m-% dT% H:% M:% SZ') #get текущо време в низ формат
След това отчитаме стойностите на влажността и температурата от сензора DHT11 и ги показваме на LCD екран. Променливата влажност и температура ще поддържат съответно стойността на влажността и температурата
влажност, температура = Adafruit_DHT.read_retry (сензор_име, сензор_пин) # четене от сензор
и запишете съответните стойности при вариране на температура и влажност
lcd.clear () # Изчистване на LCD екрана lcd.message ('Temp =%.1f C'% temperature) # Показване на стойността на температурата lcd.message ('\ nHum =%.1f %%'% влажност) # Показване стойността на времето за влажност.sleep (2) # Изчакайте 2 секунди, след което актуализирайте стойностите
Както беше казано по-рано полезният товар трябва да бъде под формата на низ с къдрави скоби около него, ние добавяме стойността на датата, времето, температурата и влажността след преобразуване на променливата в низове, както е показано по-долу.
#prepare the payload in string format payload = '{"timestamp": "' + current_time + '", "temperature":' + str (temperature) + ', "влажност":' + str (влажност) + '}'
И накрая, след като полезният товар е готов, трябва да го публикуваме на клиента MQTT. Това може да се направи с помощта на командата myMQTTclient.publish . Докато публикуваме на нещо, ние също трябва да му дадем име, тук го нарекох DHT11 / data, но можете да го наименувате каквото пожелаете. Но не забравяйте да запомните името, тъй като ще трябва да се абонираме от нашето нещо, за да видим данните.
Тестване на програмата на python през Shell Window:
След като програмата е готова, стартирайте я, като използвате избора си. Използвал съм Python IDE за стартиране на програмата в прозореца на черупката. Ако всичко е наред, трябва да получите връзка за съобщения успешно и целият полезен товар трябва да се покаже на прозореца. Можете да проверите дали стойностите на температурата и влажността се отчитат правилно. Полезният товар ще се актуализира на всеки 5 секунди. Прозорецът на черупката ще изглежда по-долу така
Ако имате някакъв проблем, уверете се, че сте дали правилните ключови данни и адреса на брокера, също така проверете дали вещта може да бъде свързана с помощта на софтуера MQTT.fx. Ако обвивката показва успех на връзката на клиента MQTT и виси там, това означава, че сензорът DHT11 не реагира, проверете дали сте свързали правилния щифт и сензорът е функционален.
Работа:
След като стартирате програмата и получите горните подробности в прозореца на черупката, това означава, че програмата реагира правилно и стойностите се качват на сървъра на Amazon AWS. Можете също така да забележите LCD дисплея, за да проверите дали пише „ Публикувано в AWS-IoT“ на всеки 5 секунди, както е показано по-долу.
Можем да влезем в приложението MQTT.fx и да се абонираме за темата DHT11 / данни . Тогава трябва да можем да получим всички данни, които се публикуват от Raspberry Pi. Тези данни също ще се актуализират на всеки 5 секунди; екранът ви MQTT ще изглежда по подобен начин по-долу
Както можете да видите полезният товар се получава от софтуера MQTT, както е подчертано в синьо. Можете също да гледате видеото по-долу, за да разберете как работи проектът. Тъй като сега разполагаме с нашите данни в интернет, можем да ги използваме с други инструменти, предоставени от Amazon като Elastic search и Lambda, за да запаметим данните в база данни или да ги визуализираме на графика. Има много повече приложения, базирани на това как трябва да се възползваме от данните.
Надявам се, че сте разбрали урока и сте се радвали да създадете нещо подобно, ако имате някакъв проблем да го направите, публикувайте го в раздела за коментари по-долу или използвайте форумите за техническа помощ.