Mundarija:

MQTT yordamida simsiz harorat sensori bilan AWS IoT -ni ishga tushirish: 8 qadam
MQTT yordamida simsiz harorat sensori bilan AWS IoT -ni ishga tushirish: 8 qadam

Video: MQTT yordamida simsiz harorat sensori bilan AWS IoT -ni ishga tushirish: 8 qadam

Video: MQTT yordamida simsiz harorat sensori bilan AWS IoT -ni ishga tushirish: 8 qadam
Video: ESP32 Tutorial 52 - WS2812 CheerLights MQTT Global Sync with LCD | SunFounder ESP32 IoT Learnig kit 2024, Iyul
Anonim
MWTT yordamida simsiz harorat sensori bilan AWS IoT -ni ishga tushirish
MWTT yordamida simsiz harorat sensori bilan AWS IoT -ni ishga tushirish

Oldingi Instructables -da biz Azure, Ubidots, ThingSpeak, Losant va boshqalar kabi turli xil bulutli platformalardan o'tdik. Biz deyarli barcha bulutli platformalarda sensor ma'lumotlarini bulutga yuborish uchun MQTT protokolidan foydalanganmiz. MQTT, uning HTTP protokolidan afzalliklari va afzalliklari haqida ko'proq ma'lumot olish uchun siz ushbu ko'rsatmaga murojaat qilishingiz mumkin.

Ushbu qo'llanmada biz Amazon veb -xizmatlarining yana bir va eng tanish bulutli platformasiga o'tamiz. Ko'pchiligingiz AWS aka Amazon Web Services va AWS tomonidan taqdim etilgan bulutli funksiyalar bilan tanish bo'lishi mumkin. Bu ko'p yillar davomida veb -ishlab chiqarishning yadrosi bo'lib kelgan. IoT ilovalarining ko'lami oshib borayotganligi sababli, AWS AWSIoT echimini taklif qildi. AWSIoT - bu IoT dasturlarini joylashtirish uchun ishonchli echim.

Bu ko'rsatmaga amal qilib:

  • Siz IoT ilovangiz uchun AWS hisobini o'rnatishingiz mumkin
  • Siz ESP32 -ni AWS IoT yadrosiga ulashingiz mumkin bo'ladi
  • MQTT va HTTP protokoli yordamida xabarlarni yuborish va qabul qilish
  • AWS -da yuborilgan ma'lumotlarni ingl

1 -qadam: AWS hisobini sozlash

AWS hisobini o'rnatish juda oson. Siz faqat ikkita sertifikatni yuklashingiz, unga siyosat qo'shishingiz, qurilmani ro'yxatdan o'tkazishingiz va AWS -dagi sensor ma'lumotlarini qabul qilishni boshlashingiz kerak.

AWS hisobini o'rnatish uchun ushbu qo'llanmani bajaring.

2 -qadam: Uskuna va dasturiy ta'minot xususiyatlari

Uskuna va dasturiy ta'minot xususiyatlari
Uskuna va dasturiy ta'minot xususiyatlari

Dastur xususiyatlari

AWS hisobi

Uskuna texnik xususiyatlari

  • ESP32
  • Simsiz harorat va tebranish sensori
  • Zigmo Gateway qabul qiluvchisi

3 -qadam: Simsiz tebranish va harorat sensori

Simsiz tebranish va harorat sensori
Simsiz tebranish va harorat sensori

Bu simsiz tarmoqli tarmoq arxitekturasidan foydalangan holda 2 milgacha bo'lgan masofaga ega bo'lgan uzoq masofali sanoat IoT simsiz tebranish va harorat sensori. 16-bitli tebranish va harorat sensori o'z ichiga olgan bu sensor juda aniq tebranish ma'lumotlarini foydalanuvchi tomonidan belgilangan vaqt oralig'ida uzatadi. U quyidagi xususiyatlarga ega:

  • ± 32g diapazonli sanoat darajali 3 o'qli tebranish sensori
  • RMS, MAX va MIN g vibratsiyasini hisoblab chiqadi
  • Shovqinni past o'tkazgichli filtr yordamida olib tashlash
  • Chastotalar diapazoni (tarmoqli kengligi) 12, 800 Gts gacha
  • Namuna tezligi 25, 600 Gts gacha
  • 2 millik simsiz tarmoq bilan shifrlangan aloqa
  • Ishlash harorati -40 dan +85 ° C gacha
  • Devorga o'rnatilgan yoki magnitlangan IP65 standartli korpus Visual Studio va LabVIEW uchun namuna dasturiy ta'minot.
  • Tashqi prob opsiyali tebranish sensori
  • 4 ta AA batareyadan 500 000 gacha uzatish, ko'p shluzi va modem variantlari mavjud

4 -qadam: ESP32 AWS dasturiy ta'minoti

AWS -ga ulanish va ma'lumotlarni yuborishni boshlash uchun quyidagi bosqichlarni bajaring

  • AWS kutubxonasini quyidagi Github omboridan yuklab oling
  • repo -ni klonlang va AWS_IOT faylini Arduino katalogining kutubxona papkasiga joylashtiring

git klon

Endi kodni ko'rib chiqaylik:

  • Ushbu ilovada biz Wi -Fi hisob ma'lumotlarini saqlash va IP sozlamalari bo'ylab harakatlanish uchun maxfiy portaldan foydalandik. Asir portalda batafsil tanishish uchun siz quyidagi ko'rsatmalarni o'tishingiz mumkin.
  • Asir portal bizga Statik va DHCP sozlamalarini tanlash imkoniyatini beradi. Statik IP, pastki tarmoq niqobi, shlyuz va simsiz sensorlar shluzi kabi hisob ma'lumotlarini kiriting, u IP -da sozlanadi.
  • Veb -sahifa mavjud, u erda mavjud WiFi tarmoqlari va RSSI ko'rsatiladigan ro'yxat mavjud. Wi -Fi tarmog'ini va parolni tanlang va yuborishni kiriting. Hisob ma'lumotlari EEPROMda saqlanadi va IP sozlamalari SPIFFSda saqlanadi. Bu haqida ko'proq ma'lumotni ushbu ko'rsatmalarni topishingiz mumkin.

5 -qadam: Sensor ma'lumotlarini simsiz tebranish va harorat sensori orqali olish

Sensor ma'lumotlarini simsiz tebranish va harorat sensori yordamida olish
Sensor ma'lumotlarini simsiz tebranish va harorat sensori yordamida olish
Sensor ma'lumotlarini simsiz tebranish va harorat sensori yordamida olish
Sensor ma'lumotlarini simsiz tebranish va harorat sensori yordamida olish

Biz simsiz harorat va tebranish sensorlaridan 54 baytli ramka olamiz. Bu ramka haqiqiy harorat va tebranish ma'lumotlarini olish uchun boshqariladi.

ESP32 -da ketma -ket foydalanish uchun uchta UART mavjud

  1. RX0 GPIO 3, TX0 GPIO 1
  2. RX1 GPIO9, TX1 GPIO 10
  3. RX2 GPIO 16, TX2 GPIO 17

va 3 ta apparat seriyali port

  • Seriyali
  • Seriya 1
  • Seriya 2

Birinchidan, Hardware Serial sarlavha faylini ishga tushiring. Bu erda biz RX2 va TX2 aka -dan foydalanamiz. Seriya ma'lumotlarini olish uchun ESP32 kartasining GPIO 16 va GPIO 17 pinlari.

#qo'shing

# RXD2 16 ni belgilang # TXD2 17 ni aniqlang

Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // pinlar 16 rx2, 17 tx2, 19200 bps, 8 bit paritet yo'q 1 stop bit

Keyingi qadamlar sizni haqiqiy sensor qiymatlarini olishga olib keladi

  • Harorat, namlik, batareya va boshqa sensor qiymatlarini saqlash uchun o'zgaruvchilar yarating
  • Uskuna ketma -ketligi uchun Rx, tx pinini, bod tezligini va parite bitlarini o'rnating
  • Birinchidan, Serial1.available () yordamida o'qiladigan biror narsa borligini tekshiring.
  • Biz 54 baytli ramkani olamiz.
  • Boshlang'ich bayt bo'lgan 0x7E ni tekshiring.
  • Vibratsiyali ma'lumotlar 3 o'q uchun RMS qiymatidan, 3 o'q uchun min qiymatlardan, 3 o'q uchun maksimal qiymatlardan iborat.
  • harorat va batareya qiymatlari 2 bayt ma'lumotni o'z ichiga oladi
  • Sensor nomini, turini, sensor versiyasini oling, 1 bayt ma'lumotni o'z ichiga oladi va uni o'sha joydan olish mumkin

if (Serial2.available ()) {Serial.println ("Serialni o'qish"); ma'lumotlar [0] = Serial2.read (); kechikish (k); if (ma'lumotlar [0] == 0x7E) {Serial.println ("Got Packet"); while (! Serial2.available ()); for (i = 1; i <55; i ++) {data = Serial2.read (); kechikish (1); } if (ma'lumotlar [15] == 0x7F) /////// qaytariladigan ma'lumotlarning to'g'riligini tekshirish uchun {if (ma'lumotlar [22] == 0x08) //////// sensor turiga ishonch hosil qiling. to'g'ri {rms_x = ((uint16_t) (((ma'lumotlar [24]) << 16) + ((ma'lumotlar [25]) << 8) + (ma'lumotlar [26]))/100); rms_y = ((uint16_t) (((ma'lumotlar [27]) << 16) + ((ma'lumotlar [28]) << 8) + (ma'lumotlar [29]))/100); rms_z = ((uint16_t) (((ma'lumotlar [30]) << 16) + ((ma'lumotlar [31]) << 8) + (ma'lumotlar [32]))/100); int16_t max_x = ((uint16_t) (((ma'lumotlar [33]) << 16) + ((ma'lumotlar [34]) << 8) + (ma'lumotlar [35]))/100); int16_t max_y = ((uint16_t) (((ma'lumotlar [36]) << 16) + ((ma'lumotlar [37]) << 8) + (ma'lumotlar [38]))/100); int16_t max_z = ((uint16_t) (((ma'lumotlar [39]) << 16) + ((ma'lumotlar [40]) << 8) + (ma'lumotlar [41]))/100);

int16_t min_x = ((uint16_t) (((ma'lumotlar [42]) << 16) + ((ma'lumotlar [43]) << 8) + (ma'lumotlar [44]))/100); int16_t min_y = ((uint16_t) (((ma'lumotlar [45]) << 16) + ((ma'lumotlar [46]) << 8) + (ma'lumotlar [47]))/100); int16_t min_z = ((uint16_t) (((ma'lumotlar [48]) << 16) + ((ma'lumotlar [49]) << 8) + (ma'lumotlar [50]))/100);

cTemp = (((((ma'lumotlar [51]) * 256) + ma'lumotlar [52])); float batareya = ((ma'lumotlar [18] * 256) + ma'lumotlar [19]); kuchlanish = 0,00322 * batareya; Serial.print ("Sensor raqami"); Serial.println (ma'lumotlar [16]); senseNumber = ma'lumotlar [16]; Serial.print ("Sensor turi"); Serial.println (ma'lumotlar [22]); Serial.print ("Dasturiy ta'minot versiyasi"); Serial.println (ma'lumotlar [17]); Serial.print ("Selsiy bo'yicha harorat:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("X o'qida RMS tebranishi:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("Y o'qida RMS tebranishi:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("Z o'qida RMS tebranishi:"); Serial.print (rms_z); Serial.println ("mg");

Serial.print ("X o'qida minimal tebranish:");

Serial.print (min_x); Serial.println ("mg"); Serial.print ("Y o'qida minimal tebranish:"); Ketma -ket chop etish (min_y); Serial.println ("mg"); Serial.print ("Z o'qida minimal tebranish:"); Serial.print (min_z); Serial.println ("mg");

Serial.print ("ADC qiymati:");

Serial.println (batareya); Serial.print ("Batareya quvvati:"); Ketma -ket chop etish (kuchlanish); Serial.println ("\ n"); if (kuchlanish <1) {Serial.println ("Batareyani almashtirish vaqti"); }}} boshqa {uchun (i = 0; i <54; i ++) {Serial.print (ma'lumotlar ); Serial.print (","); kechikish (1); }}}}

6 -qadam: AWS -ga ulanish

AWS -ga ulanish
AWS -ga ulanish
  • AWSIoT uyasi bilan ulanishni sozlash uchun AWS_IOT.h, WiFi.h sarlavha fayllarini qo'shing.
  • Xost manzilingizni, siyosat nomi bo'lgan mijoz identifikatorini va narsaning nomi bo'ladigan mavzu nomini kiriting

// ********* AWS hisob ma'lumotlari ************* // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";

JSON -ni saqlash uchun char o'zgaruvchisini yarating, bu holda biz JSON -ni saqlash formatini yaratdik

const char *format = "{" SensorId / ": \"%d / ", \" messageId / ":%d, \" rmsX / ":%d, \" rmsY / ":%d, \" rmsZ / ":%d, \" cTemp / ":%d, \" kuchlanish / ":%. 2f}";

AWS_IOT sinfining namunasini yarating

AWS_IOT esp; // AWS_IOT sinfining namunasi

Endi AWSIoT uyasiga quyidagi usul yordamida ulaning

void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("AWSga ulangan"); kechikish (1000);

agar (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))

{Serial.println ("Obuna bo'lish muvaffaqiyatli"); } else {Serial.println ("Obuna bo'lmadi, narsaning nomi va sertifikatlarini tekshiring"); vaqt (1); }} boshqa {Serial.println ("AWS ulanmagan, HOST manzilini tekshiring"); vaqt (1); }

kechikish (2000);

}

Sensor ma'lumotlarini har 1 daqiqadan so'ng e'lon qiling

if (belgilash> = 60) // har 5 soniyada mavzuga nashr qilish {tick = 0; yuk yuki [PAYLOAD_MAX_LEN]; snprintf (yuk, PAYLOAD_MAX_LEN, format, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, kuchlanish); Serial.println (yuk yuki); if (hornbill.publish (TOPIC_NAME, yuk) == 0) {Serial.print ("Xabarni chop etish:"); Serial.println (yuk yuki); } else {Serial.println ("Nashr etilmadi"); }} vTaskDelay (1000 / portTICK_RATE_MS); belgilash ++;

7 -qadam: AWS -da ma'lumotlarni vizualizatsiya qilish

AWS -da ma'lumotlarni vizualizatsiya qilish
AWS -da ma'lumotlarni vizualizatsiya qilish
AWS -da ma'lumotlarni vizualizatsiya qilish
AWS -da ma'lumotlarni vizualizatsiya qilish
AWS -da ma'lumotlarni vizualizatsiya qilish
AWS -da ma'lumotlarni vizualizatsiya qilish
  • AWS hisobingizga kiring.
  • asboblar panelining chap burchagida siz "Xizmatlar" yorlig'ini topasiz
  • Ushbu yorliqni bosing va "Internet narsalar" sarlavhasi ostida IoT Core -ni tanlang.
  • QoS -ni tanlang va yo'q. abonentlarga yuborilgan xabarlar. Mavzu nomini kiriting.

8 -qadam: Umumiy kod

Umumiy kodni ushbu Github omboridan topishingiz mumkin.

Kreditlar

  • Arduino Json
  • Simsiz harorat va namlik sensori
  • ESP32
  • PubSubClient

Tavsiya: