جدول المحتويات:

بدء استخدام AWS IoT مع مستشعر درجة الحرارة اللاسلكي باستخدام MQTT: 8 خطوات
بدء استخدام AWS IoT مع مستشعر درجة الحرارة اللاسلكي باستخدام MQTT: 8 خطوات

فيديو: بدء استخدام AWS IoT مع مستشعر درجة الحرارة اللاسلكي باستخدام MQTT: 8 خطوات

فيديو: بدء استخدام AWS IoT مع مستشعر درجة الحرارة اللاسلكي باستخدام MQTT: 8 خطوات
فيديو: ESP8266 (NodeMcu) Raspberry Pi MQTT | ESP8266 Publish/Subscribe 2024, يوليو
Anonim
بدء استخدام AWS IoT مع مستشعر درجة الحرارة اللاسلكي باستخدام MQTT
بدء استخدام AWS IoT مع مستشعر درجة الحرارة اللاسلكي باستخدام MQTT

في Instructables السابقة ، مررنا من خلال منصات سحابية مختلفة مثل Azure و Ubidots و ThingSpeak و Losant وما إلى ذلك. لقد استخدمنا بروتوكول MQTT لإرسال بيانات المستشعر إلى السحابة في جميع الأنظمة الأساسية السحابية تقريبًا. لمزيد من المعلومات حول MQTT ومزاياه وفوائده عبر بروتوكول HTTP ، يمكنك الرجوع إلى هذا الدليل.

في هذا الدليل ، سنقوم بالتكبير إلى منصة سحابية أخرى وأكثرها شيوعًا Amazon Web Services. قد يكون الكثير منكم على دراية بـ AWS المعروف أيضًا باسم Amazon Web Services والوظائف السحابية التي توفرها AWS. لقد كان جوهر تطوير الويب لسنوات عديدة. مع الحجم المتزايد لتطبيقات إنترنت الأشياء ، توصلت AWS إلى حل AWSIoT. يعد AWSIoT حلاً موثوقًا به لاستضافة تطبيقات إنترنت الأشياء الخاصة بنا.

باتباع هذا التوجيه:

  • ستتمكن من إعداد حساب AWS لتطبيق إنترنت الأشياء الخاص بك
  • ستكون قادرًا على توصيل ESP32 بنواة AWS IoT
  • إرسال واستقبال الرسائل باستخدام بروتوكول MQTT و
  • تصور البيانات المرسلة في AWS

الخطوة 1: إعداد حساب AWS

يعد إعداد حساب AWS أمرًا سهلاً إلى حد ما. تحتاج فقط إلى تحميل شهادتين وإرفاق سياسات بهما وتسجيل الجهاز والبدء في تلقي رسائل بيانات المستشعر في AWS.

لإعداد حساب AWS ، اتبع هذا البرنامج التعليمي.

الخطوة 2: مواصفات الأجهزة والبرامج

مواصفات الأجهزة والبرامج
مواصفات الأجهزة والبرامج

مواصفات البرنامج

حساب AWS

مواصفات الأجهزة

  • ESP32
  • جهاز استشعار درجة الحرارة والاهتزاز اللاسلكي
  • مستقبل Zigmo Gateway

الخطوة 3: أجهزة استشعار درجة الحرارة والاهتزاز اللاسلكي

أجهزة استشعار لاسلكية للاهتزاز ودرجة الحرارة
أجهزة استشعار لاسلكية للاهتزاز ودرجة الحرارة

هذا هو مستشعر اهتزاز ودرجة حرارة لاسلكي طويل المدى لإنترنت الأشياء ، يتميز بنطاق يصل إلى ميلين باستخدام بنية شبكات لاسلكية. يشتمل على مستشعر اهتزاز ودرجة حرارة 16 بت ، ينقل هذا المستشعر بيانات اهتزاز عالية الدقة على فترات زمنية محددة من قبل المستخدم. لديه الميزات التالية:

  • مستشعر اهتزاز ثلاثي المحاور من الدرجة الصناعية مع نطاق ± 32 جرام
  • يحسب اهتزاز RMS و MAX و MIN g
  • إزالة الضوضاء باستخدام مرشح الترددات المنخفضة
  • نطاق التردد (النطاق الترددي) حتى 12 ، 800 هرتز
  • معدل العينة يصل إلى 25 ، 600 هرتز
  • اتصال مشفر مع نطاق لاسلكي 2 ميل
  • نطاق درجة حرارة التشغيل -40 إلى +85 درجة مئوية
  • مثال على الضميمة المصنفة IP65 المثبتة على الحائط أو المغناطيس لبرنامج Visual Studio و LabVIEW
  • مستشعر الاهتزاز مع خيار المسبار الخارجي
  • ما يصل إلى 500000 إرسال من 4 بطاريات AA تتوفر العديد من خيارات البوابة والمودم

الخطوة 4: البرنامج الثابت ESP32 AWS

للاتصال بـ AWS والبدء في إرسال البيانات ، اتبع الخطوات التالية

  • قم بتنزيل مكتبة AWS من مستودع Github التالي
  • استنساخ الريبو ووضع ملف AWS_IOT في مجلد مكتبة دليل Arduino

استنساخ بوابة

الآن دعنا ننتقل إلى الكود:

  • في هذا التطبيق ، استخدمنا بوابة مقيدة لحفظ بيانات اعتماد WiFi وللتحريك عبر إعدادات IP. للحصول على مقدمة مفصلة عن البوابة المقيدة ، يمكنك الاطلاع على التعليمات التالية.
  • تعطينا البوابة المقيدة خيار الاختيار بين إعدادات Static و DHCP. ما عليك سوى إدخال بيانات الاعتماد مثل Static IP وقناع الشبكة الفرعية والبوابة وسيتم تكوين بوابة المستشعر اللاسلكي على عنوان IP هذا.
  • تتم استضافة صفحة ويب حيث توجد قائمة تعرض شبكات WiFi المتاحة وهناك RSSI. حدد شبكة WiFi وكلمة المرور وأدخل إرسال. سيتم حفظ بيانات الاعتماد في EEPROM وسيتم حفظ إعداد IP في SPIFFS. يمكن العثور على المزيد حول هذا في هذا الدليل.

الخطوة 5: الحصول على بيانات المستشعر من الاهتزاز اللاسلكي ومستشعر درجة الحرارة

الحصول على بيانات المستشعر من الاهتزاز اللاسلكي ومستشعر درجة الحرارة
الحصول على بيانات المستشعر من الاهتزاز اللاسلكي ومستشعر درجة الحرارة
الحصول على بيانات المستشعر من جهاز استشعار درجة الحرارة والاهتزاز اللاسلكي
الحصول على بيانات المستشعر من جهاز استشعار درجة الحرارة والاهتزاز اللاسلكي

نحصل على إطار 54 بايت من مستشعرات درجة الحرارة والاهتزاز اللاسلكية. يتم معالجة هذا الإطار للحصول على بيانات الاهتزاز ودرجة الحرارة الفعلية.

يحتوي ESP32 على ثلاثة UARTs متاحة للاستخدام التسلسلي

  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) ؛ // pin 16 rx2، 17 tx2، 19200 bps، 8 bits no parity 1 stop bit

ستقودك الخطوات التالية إلى مزيد من الحصول على قيم المستشعر الحقيقية

  • قم بإنشاء متغيرات لتخزين درجات الحرارة والرطوبة والبطارية وقيم أجهزة الاستشعار الأخرى
  • قم بتعيين بتات Rx و tx pin ومعدل الباود والتكافؤ لسلسلة الأجهزة
  • أولاً ، تحقق من وجود شيء ما يمكن قراءته باستخدام Serial1.available ()
  • سنحصل على إطار 54 بايت.
  • تحقق من 0x7E وهو بداية بايت.
  • تتكون بيانات الاهتزاز من قيمة RMS للمحور 3 ، والقيم الدنيا لـ 3 محاور ، والقيم القصوى لـ 3 محاور.
  • ستحتوي قيم درجة الحرارة والبطارية على 2 بايت من البيانات
  • احصل على اسم المستشعر ونوعه وإصدار المستشعر الذي سيحتوي على بايت واحد من البيانات ويمكن الحصول عليه من العنوان المعني

if (Serial2.available ()) {Serial.println ("Read Serial") ؛ البيانات [0] = Serial2.read () ، تأخير (ك) ؛ if (data [0] == 0x7E) {Serial.println ("Got Packet") ؛ بينما (! Serial2.available ()) ، لـ (i = 1 ؛ i <55 ؛ i ++) {data = Serial2.read () ؛ تأخير (1) ؛ } إذا كانت (البيانات [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) (((data [36]) << 16) + ((data [37]) << 8) + (data [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 = ((((data [51]) * 256) + data [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 ("أدنى اهتزاز في المحور السيني:") ؛

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") ؛ إذا (الجهد <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 = "{" SensorId / ": \"٪ d / "، \" messageId / ":٪ d ، \" rmsX / ":٪ d ، \" rmsY / ":٪ d ، \" rmsZ / ":٪ d، \" cTemp / ":٪ d، \" الجهد / ":٪. 2f}"؛

قم بإنشاء مثيل لفئة AWS_IOT

AWS_IOT esp ؛ // مثيل لفئة AWS_IOT

اتصل الآن بلوحة وصل AWSIoT باستخدام الطريقة التالية

إعادة الاتصال باطل MQTT () {if (hornbill.connect (HOST_ADDRESS، CLIENT_ID) == 0) {Serial.println ("متصل بـ AWS") ؛ تأخير (1000) ؛

إذا (0 == hornbill.subscribe (TOPIC_NAME، mySubCallBackHandler))

{Serial.println ("Subscribe Successfull") ؛ } else {Serial.println ("فشل الاشتراك ، تحقق من اسم الشيء والشهادات") ؛ بينما (1) ؛ }} else {Serial.println ("فشل اتصال AWS ، تحقق من عنوان HOST")؛ بينما (1) ؛ }

تأخير (2000) ؛

}

نشر بيانات المستشعر بعد كل دقيقة

if (tick> = 60) // النشر للموضوع كل 5 ثوانٍ {tick = 0 ؛ حمولة char [PAYLOAD_MAX_LEN] ؛ snprintf (الحمولة ، PAYLOAD_MAX_LEN ، التنسيق ، رقم الإحساس ، msgCount ++ ، rms_x ، rms_y ، rms_z ، cTemp ، الجهد) ؛ Serial.println (الحمولة) ؛ if (hornbill.publish (TOPIC_NAME، payload) == 0) {Serial.print ("نشر الرسالة:")؛ Serial.println (الحمولة) ؛ } else {Serial.println ("فشل النشر")؛ }} vTaskDelay (1000 / portTICK_RATE_MS) ، القراد ++ ؛

الخطوة 7: تصور البيانات في AWS

تصور البيانات في AWS
تصور البيانات في AWS
تصور البيانات في AWS
تصور البيانات في AWS
تصور البيانات في AWS
تصور البيانات في AWS
  • قم بتسجيل الدخول إلى حساب AWS الخاص بك.
  • في الزاوية اليسرى من شريط الأدوات ، ستجد علامة التبويب "الخدمات"
  • انقر فوق علامة التبويب هذه وتحت عنوان إنترنت الأشياء ، حدد IoT Core.
  • حدد جودة الخدمة ولا. من الرسائل للمشتركين. أدخل اسم الموضوع.

الخطوة 8: الكود العام

يمكنك العثور على الكود العام في مستودع جيثب هذا.

الاعتمادات

  • اردوينو جسون
  • أجهزة استشعار درجة الحرارة والرطوبة اللاسلكية
  • ESP32
  • PubSubClient

موصى به: