Съдържание:
- Стъпка 1: Създаване на акаунт в AWS
- Стъпка 2: Хардуерни и софтуерни спецификации
- Стъпка 3: Безжични сензори за вибрации и температура
- Стъпка 4: Фърмуер на ESP32 AWS
- Стъпка 5: Получаване на данните от сензора от безжичния сензор за вибрации и температура
- Стъпка 6: Свързване към AWS
- Стъпка 7: Визуализиране на данни в AWS
- Стъпка 8: Общ код
Видео: Първи стъпки с AWS IoT с безжичен температурен сензор, използващ MQTT: 8 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
В по -ранните Instructables минахме през различни облачни платформи като Azure, Ubidots, ThingSpeak, Losant и др. Използвахме протокола MQTT за изпращане на сензорни данни към облака в почти цялата облачна платформа. За повече информация относно MQTT, неговите предимства и предимства пред HTTP протокола можете да се обърнете към тази инструкция.
В тази инструкция ще разгледаме още една и най -позната облачна платформа Amazon Web Services. Много от вас може да са запознати с AWS, известен още като Amazon Web Services и облачната функционалност, предоставена от AWS. Той е бил ядрото на уеб разработката в продължение на много години. С нарастващия мащаб на IoT приложенията AWS излезе с решението на AWSIoT. AWSIoT е надеждно решение за хостинг на нашите IoT приложения.
Като следвате тази инструкция:
- Ще можете да настроите AWS акаунт за вашето IoT приложение
- Ще можете да свържете ESP32 към ядрото на AWS IoT
- Изпращайте и получавайте съобщения, използвайки MQTT и HTTP протокол
- Визуализирайте изпратените данни в AWS
Стъпка 1: Създаване на акаунт в AWS
Създаването на AWS акаунт е сравнително лесно. Просто трябва да качите няколко сертификата, да прикачите правила към него, да регистрирате устройството и да започнете да получавате съобщения със сензорни данни в AWS.
За да настроите акаунта в AWS, следвайте този урок.
Стъпка 2: Хардуерни и софтуерни спецификации
Спецификация на софтуера
AWS акаунт
Спецификация на хардуера
- ESP32
- Безжичен сензор за температура и вибрации
- Приемник Zigmo Gateway
Стъпка 3: Безжични сензори за вибрации и температура
Това е Long Range Industrial IoT безжичен сензор за вибрации и температура, който може да се похвали с обхват до 2 мили, използвайки безжична мрежова архитектура. Включвайки 16-битов сензор за вибрации и температура, този сензор предава високо точни данни за вибрациите на определени от потребителя интервали. Той има следните характеристики:
- Индустриален 3-осен сензор за вибрации с диапазон ± 32 g
- Изчислява RMS, MAX и MIN g вибрации
- Премахване на шума с помощта на нискочестотен филтър
- Честотен обхват (честотна лента) до 12, 800 Hz
- Честота на дискретизация до 25, 600Hz
- Шифрована комуникация с 2 мили безжичен обхват
- Работен температурен диапазон -40 до +85 ° C
- Стенен или магнитно монтиран корпус IP65 Примерен софтуер за Visual Studio и LabVIEW
- Сензор за вибрации с опция за външна сонда
- До 500 000 предавания от 4 батерии тип AA Налични са много опции за шлюз и модем
Стъпка 4: Фърмуер на ESP32 AWS
За да се свържете с AWS и да започнете да изпращате данните, преминете през следните стъпки
- Изтеглете библиотеката AWS от следното хранилище на Github
- клонирайте репо и поставете файла AWS_IOT в папката библиотека на директорията Arduino
git clone
Сега нека преминем през кода:
- В това приложение ние използвахме затворен портал, за да запазим идентификационните данни за WiFi и да задържим курсора през настройките на IP. За подробно представяне на портала за задържане можете да преминете през следните инструкции.
- Порталът за задържане ни дава възможност да избираме между статични и DHCP настройки. Просто въведете идентификационните данни като Static IP, Subnet Mask, gateway и Wireless Sensor Gateway ще бъдат конфигурирани на този IP.
- Хоства се уеб страница, където има списък с наличните WiFi мрежи и RSSI. Изберете WiFi мрежата и паролата и въведете submit. Идентификационните данни ще бъдат записани в EEPROM, а настройката за IP ще бъде запазена в SPIFFS. Повече за това може да се намери в тази инструкция.
Стъпка 5: Получаване на данните от сензора от безжичния сензор за вибрации и температура
Получаваме 54-байтова рамка от безжичните сензори за температура и вибрации. Тази рамка се манипулира, за да се получат действителната температура и данните за вибрациите.
ESP32 разполага с три UART за серийно използване
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- RX2 GPIO 16, TX2 GPIO 17
и 3 хардуерни серийни порта
- Сериен
- Сериен1
- Сериен2
Първо, инициализирайте заглавния файл на хардуерния сериен файл. Тук ще използваме RX2 и TX2 известен още като. GPIO 16 и GPIO 17 пина на платката ESP32 за получаване на серийни данни.
#включва
# дефинирайте RXD2 16 # дефинирайте TXD2 17
Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // щифтове 16 rx2, 17 tx2, 19200 bps, 8 бита без паритет 1 стоп бит
Следващите стъпки ще ви доведат по -нататък, за да получите реалните стойности на сензора
- Създайте променливи за съхранение на температура, влажност, батерия и други стойности на сензора
- Задайте битовете Rx, tx, скорост на предаване и паритет за хардуерната серия
- Първо проверете дали има нещо за четене с помощта на Serial1.available ()
- Ще получим рамката от 54 байта.
- Проверете за 0x7E, който е начален байт.
- Данните за вибрациите се състоят от RMS стойност за 3 ос, минимални стойности за 3 ос, макс стойности за 3 ос.
- температурата и стойностите на батерията ще съдържат 2 байта данни
- получете името на сензора, типа, версията на сензора ще съдържа 1 байт данни и може да бъде получена от съответния адрес
if (Serial2.available ()) {Serial.println ("Четене на сериал"); данни [0] = Serial2.read (); забавяне (к); if (данни [0] == 0x7E) {Serial.println ("Получен пакет"); while (! Serial2.available ()); за (i = 1; i <55; i ++) {данни = Serial2.read (); забавяне (1); } if (data [15] == 0x7F) /////// за да проверите дали данните за получаване са правилни {if (data [22] == 0x08) //////// уверете се, че типът на сензора е правилно {rms_x = ((uint16_t) (((данни [24]) << 16) + ((данни [25]) << 8) + (данни [26]))/100); rms_y = ((uint16_t) (((данни [27]) << 16) + ((данни [28]) << 8) + (данни [29]))/100); rms_z = ((uint16_t) (((данни [30]) << 16) + ((данни [31]) << 8) + (данни [32]))/100); int16_t max_x = ((uint16_t) (((данни [33]) << 16) + ((данни [34]) << 8) + (данни [35]))/100); int16_t max_y = ((uint16_t) (((данни [36]) << 16) + ((данни [37]) << 8) + (данни [38]))/100); int16_t max_z = ((uint16_t) (((данни [39]) << 16) + ((данни [40]) << 8) + (данни [41]))/100);
int16_t min_x = ((uint16_t) (((данни [42]) << 16) + ((данни [43]) << 8) + (данни [44]))/100); int16_t min_y = ((uint16_t) (((данни [45]) << 16) + ((данни [46]) << 8) + (данни [47]))/100); int16_t min_z = ((uint16_t) (((данни [48]) << 16) + ((данни [49]) << 8) + (данни [50]))/100);
cTemp = ((((данни [51]) * 256) + данни [52])); плаваща батерия = ((данни [18] * 256) + данни [19]); напрежение = 0,00322 * батерия; Serial.print ("Номер на сензора"); Serial.println (данни [16]); senseNumber = данни [16]; Serial.print ("Тип сензор"); Serial.println (данни [22]); Serial.print ("Версия на фърмуера"); Serial.println (данни [17]); Serial.print ("Температура в Целзий:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("RMS вибрация по оста X:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("RMS вибрация по оста Y:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("RMS вибрация по оста Z:"); Serial.print (rms_z); Serial.println ("mg");
Serial.print ("Минимални вибрации по оста X:");
Serial.print (min_x); Serial.println ("mg"); Serial.print ("Минимални вибрации по оста Y:"); Serial.print (min_y); Serial.println ("mg"); Serial.print ("Минимални вибрации по оста Z:"); Serial.print (min_z); Serial.println ("mg");
Serial.print ("ADC стойност:");
Serial.println (батерия); Serial.print ("Напрежение на батерията:"); Serial.print (напрежение); Serial.println ("\ n"); if (напрежение <1) {Serial.println ("Време за смяна на батерията"); }}} else {for (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); забавяне (1); }}}}
Стъпка 6: Свързване към AWS
- Включете заглавни файлове AWS_IOT.h, WiFi.h, за да настроите връзка с AWSIoT хъб
- Въведете вашия адрес на хост, клиентски идентификатор, който ще бъде името на политиката, и име на тема, което ще бъде името на вещта
// ********* Удостоверения на AWS ************* // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";
Създайте променлива char за съхраняване на вашия JSON, в този случай ние създадохме формат за съхраняване на JSON
const char *format = "{" SensorId / ": \"%d / ", \" messageId / ":%d, \" rmsX / ":%d, \" rmsY / ":%d, \" rmsZ / ":%d, \" cTemp / ":%d, \" напрежение / ":%. 2f}";
Създайте екземпляр на класа AWS_IOT
AWS_IOT esp; // Инстанция на клас AWS_IOT
Сега се свържете към AWSIoT хъб, като използвате следния метод
void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Свързан към AWS"); забавяне (1000);
if (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))
{Serial.println ("Абонирайте се успешно"); } else {Serial.println ("Абонирайте се неуспешно, проверете името и сертификатите"); докато (1); }} else {Serial.println ("AWS връзката е неуспешна, проверете адреса на HOST"); докато (1); }
забавяне (2000);
}
публикувайте данните от сензора след всеки 1 минута
if (отметка> = 60) // публикувам в темата на всеки 5 секунди {tick = 0; char полезен товар [PAYLOAD_MAX_LEN]; snprintf (полезен товар, PAYLOAD_MAX_LEN, формат, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, напрежение); Serial.println (полезен товар); if (hornbill.publish (TOPIC_NAME, полезен товар) == 0) {Serial.print ("Публикуване на съобщение:"); Serial.println (полезен товар); } else {Serial.println ("Публикуването не бе успешно"); }} vTaskDelay (1000 / portTICK_RATE_MS); отметка ++;
Стъпка 7: Визуализиране на данни в AWS
- Влезте в акаунта си в AWS.
- в левия ъгъл на лентата с инструменти ще намерите раздела Услуги
- Кликнете върху този раздел и под заглавието „Интернет на нещата“изберете IoT Core.
- Изберете QoS и не. съобщения до абонати. Въведете името на темата.
Стъпка 8: Общ код
Можете да намерите цялостния код в това хранилище на Github.
Кредити
- Arduino Json
- Безжични сензори за температура и влажност
- ESP32
- PubSubClient
Препоръчано:
Свързване на Arduino с ултразвуков сензор и безконтактен температурен сензор: 8 стъпки
Arduino взаимодействие с ултразвуков сензор и безконтактен температурен сензор: В днешно време производителите, разработчиците предпочитат Arduino за бързо развитие на прототипирането на проекти. Arduino е електронна платформа с отворен код, базирана на лесен за използване хардуер и софтуер. Arduino има много добра потребителска общност. В този проект
Безжичен робот Arduino, използващ безжичен модул HC12: 7 стъпки
Безжичен робот Arduino, използващ безжичен модул HC12: Здравейте, добре дошли отново. В предишната си публикация обясних какво е H мостова верига, интегрална схема на драйвер на двигател L293D, интегрирана интегрална схема на драйвер на двигател L293D за управление на двигатели с висок ток и как можете да проектирате и направите своя собствена платка за двигател на двигател L293D
Температурен сензор, използващ термистор с Arduino Uno: 4 стъпки
Температурен сензор, използващ термистор с Arduino Uno: Здравейте момчета, в тази инструкция ще се научим как да използваме термистора с Arduino. Термисторът е основно резистор, чието съпротивление варира в зависимост от промяната на температурата, така че можем да прочетем неговото съпротивление и да получим температурата от него & Термисторът аз
Температурен сензор Arduino, използващ LM35: 3 стъпки
Температурен сензор Arduino, използващ LM35: Въведение Серията LM35 са прецизни температурни устройства с интегрална схема с изходно напрежение, линейно пропорционално на температурата на по Целзий. LM35 е три терминален линеен температурен сензор от национални полупроводници. Може да се измери
СЕНЗОР SUHU DENGAN LCD DAN LED (Осъществяване на температурен сензор с LCD и LED): 6 стъпки (със снимки)
СЕНЗОР SUHU DENGAN LCD DAN LED (Осъществяване на температурен сензор с LCD и LED): хай, да речем Devi Rivaldi mahasiswa UNIVERSITAS NUSA PUTRA дари Индонезия, да кажем, че има и сензори за мембрана, за да изведете Arduino за изход на LCD и LED. Ini adalah pembaca suhu dengan desain saya sendiri, dengan sensor ini anda