Съдържание:

Първи стъпки с AWS IoT с безжичен температурен сензор, използващ MQTT: 8 стъпки
Първи стъпки с AWS IoT с безжичен температурен сензор, използващ MQTT: 8 стъпки

Видео: Първи стъпки с AWS IoT с безжичен температурен сензор, използващ MQTT: 8 стъпки

Видео: Първи стъпки с AWS IoT с безжичен температурен сензор, използващ MQTT: 8 стъпки
Видео: Наливной пол по маякам. Ровная и красивая стяжка. #27 2024, Ноември
Anonim
Първи стъпки с AWS IoT с безжичен температурен сензор, използващ MQTT
Първи стъпки с AWS IoT с безжичен температурен сензор, използващ MQTT

В по -ранните 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 за серийно използване

  1. RX0 GPIO 3, TX0 GPIO 1
  2. RX1 GPIO9, TX1 GPIO 10
  3. 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
Свързване към 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
Визуализиране на данни в AWS
Визуализиране на данни в AWS
Визуализиране на данни в AWS
Визуализиране на данни в AWS
Визуализиране на данни в AWS
  • Влезте в акаунта си в AWS.
  • в левия ъгъл на лентата с инструменти ще намерите раздела Услуги
  • Кликнете върху този раздел и под заглавието „Интернет на нещата“изберете IoT Core.
  • Изберете QoS и не. съобщения до абонати. Въведете името на темата.

Стъпка 8: Общ код

Можете да намерите цялостния код в това хранилище на Github.

Кредити

  • Arduino Json
  • Безжични сензори за температура и влажност
  • ESP32
  • PubSubClient

Препоръчано: