Mundarija:
- 1 -qadam: AWS hisobini sozlash
- 2 -qadam: Uskuna va dasturiy ta'minot xususiyatlari
- 3 -qadam: Simsiz tebranish va harorat sensori
- 4 -qadam: ESP32 AWS dasturiy ta'minoti
- 5 -qadam: Sensor ma'lumotlarini simsiz tebranish va harorat sensori orqali olish
- 6 -qadam: AWS -ga ulanish
- 7 -qadam: AWS -da ma'lumotlarni vizualizatsiya qilish
- 8 -qadam: Umumiy kod
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
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
Dastur xususiyatlari
AWS hisobi
Uskuna texnik xususiyatlari
- ESP32
- Simsiz harorat va tebranish sensori
- Zigmo Gateway qabul qiluvchisi
3 -qadam: 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
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
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- 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
- 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 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