فهرست مطالب:

شروع به کار با AWS IoT با سنسور دمای بی سیم با استفاده از MQTT: 8 مرحله
شروع به کار با AWS IoT با سنسور دمای بی سیم با استفاده از MQTT: 8 مرحله

تصویری: شروع به کار با AWS IoT با سنسور دمای بی سیم با استفاده از MQTT: 8 مرحله

تصویری: شروع به کار با AWS IoT با سنسور دمای بی سیم با استفاده از MQTT: 8 مرحله
تصویری: Introduction to M5Stack Core2 ESP32 2" Display Development Module -Robojax 2024, نوامبر
Anonim
شروع به کار با AWS IoT با سنسور دمای بی سیم با استفاده از MQTT
شروع به کار با AWS IoT با سنسور دمای بی سیم با استفاده از MQTT

در دستورالعمل های قبلی ، ما سیستم عامل های مختلف ابری مانند Azure ، Ubidots ، ThingSpeak ، Losant و غیره را پشت سر گذاشته ایم. ما از پروتکل MQTT برای ارسال داده های حسگر به ابر در تقریباً در تمام پلتفرم ابری استفاده می کنیم. برای اطلاعات بیشتر در مورد MQTT ، مزایا و مزایای آن نسبت به پروتکل HTTP می توانید به این دستورالعمل مراجعه کنید.

در این دستورالعمل ، ما روی یکی دیگر از آشناترین پلتفرم های ابری Amazon Web Services بزرگنمایی می کنیم. بسیاری از شما ممکن است با AWS معروف به خدمات وب آمازون و عملکرد ابری ارائه شده توسط AWS آشنا باشید. این سالها هسته اصلی توسعه وب بوده است. با افزایش مقیاس برنامه های اینترنت اشیا ، AWS راه حل AWSIoT را ارائه کرده است. AWSIoT یک راه حل مطمئن برای میزبانی برنامه های IoT ما است.

با پیروی از این دستورالعمل:

  • شما می توانید حساب AWS را برای برنامه اینترنت اشیاء خود راه اندازی کنید
  • شما می توانید ESP32 را به هسته IoT AWS متصل کنید
  • ارسال و دریافت پیام با استفاده از پروتکل MQTT و
  • داده های ارسال شده را در AWS تجسم کنید

مرحله 1: راه اندازی حساب AWS

راه اندازی حساب AWS بسیار آسان است. فقط باید چند گواهینامه بارگذاری کنید ، خط مشی هایی را به آن ضمیمه کنید ، دستگاه را ثبت کرده و پیامهای داده سنسور را در AWS دریافت کنید.

برای راه اندازی حساب AWS این آموزش را دنبال کنید.

مرحله 2: مشخصات سخت افزار و نرم افزار

مشخصات سخت افزار و نرم افزار
مشخصات سخت افزار و نرم افزار

مشخصات نرم افزار

یک حساب AWS

مشخصات سخت افزار

  • ESP32
  • سنسور دما و ارتعاش بی سیم
  • گیرنده دروازه Zigmo

مرحله 3: سنسورهای ارتعاش و دما بی سیم

سنسورهای ارتعاش و دما بی سیم
سنسورهای ارتعاش و دما بی سیم

این یک سنسور ارتعاش و دمای بی سیم IoT صنعتی با برد بلند است که با استفاده از معماری شبکه مش بی سیم تا محدوده 2 مایل را دارا می باشد. این سنسور با استفاده از سنسور ارتعاش و دما 16 بیتی ، داده های ارتعاش بسیار دقیق را در فواصل مشخص شده توسط کاربر منتقل می کند. دارای ویژگی های زیر است:

  • سنسور ارتعاش درجه 3 محور صنعتی با محدوده 32 گرم
  • ارتعاش RMS ، MAX و MIN g را محاسبه می کند
  • حذف نویز با استفاده از فیلتر Low-Pass
  • محدوده فرکانس (پهنای باند) تا 12 ، 800 هرتز
  • نرخ نمونه تا 25 ، 600 هرتز
  • ارتباطات رمزگذاری شده با برد بی سیم 2 مایل
  • محدوده دمای کارکرد -40 تا +85 درجه سانتی گراد
  • دیوارپوش یا مگنت IP65 دارای محفظه دارای رتبه نرم افزار مثال برای Visual Studio و LabVIEW
  • سنسور ارتعاش با گزینه پروب خارجی
  • حداکثر 500 ، 000 انتقال از 4 باتری AA بسیاری از گزینه های Gateway و مودم موجود است

مرحله 4: سیستم عامل ESP32 AWS

برای اتصال به AWS و شروع به ارسال داده مراحل زیر را طی کنید

  • کتابخانه AWS را از مخزن Github زیر بارگیری کنید
  • repo را کلون کرده و فایل AWS_IOT را در پوشه کتابخانه فهرست Arduino قرار دهید

git clone

حالا اجازه دهید کد را مرور کنیم:

  • در این برنامه ، ما از یک پورتال اختصاصی برای ذخیره اعتبار WiFi و حرکت در تنظیمات IP استفاده کرده ایم. برای آشنایی بیشتر با پورتال اسیر ، می توانید موارد زیر را به صورت آموزشی آموزش دهید.
  • پورتال باز به ما این امکان را می دهد که بین تنظیمات Static و DHCP یکی را انتخاب کنیم. فقط اطلاعاتی مانند IP Static ، Subnet Mask ، gateway را وارد کرده و Wateless 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

ابتدا فایل هدر Serial Hardware Serial را آماده کنید. در اینجا ما از 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 pin ، baud rate و parity bits را برای سریال سخت افزار تنظیم کنید
  • ابتدا ، بررسی کنید که آیا چیزی با استفاده از Serial1.available () قابل خواندن است یا خیر.
  • ما فریم 54 بایت را دریافت می کنیم.
  • 0x7E را که شروع بایت است بررسی کنید.
  • داده های ارتعاش شامل مقدار RMS برای محور 3 ، مقادیر حداقل برای 3 محور ، حداکثر مقادیر برای 3 محور است.
  • مقادیر دما و باتری شامل 2 بایت داده خواهد بود
  • نام سنسور ، نوع ، نسخه سنسور حاوی 1 بایت داده است و می توانید از آدرس مربوطه دریافت کنید

if (Serial2.available ()) {Serial.println ("خواندن سریال")؛ داده [0] = Serial2.read ()؛ تأخیر (k) ؛ if (data [0] == 0x7E) {Serial.println ("بسته را دریافت کردم")؛ در حالی که (! Serial2.available ())؛ برای (i = 1؛ i <55؛ i ++) {data = Serial2.read ()؛ تأخیر (1) ؛ } if (data [15] == 0x7F) /////// برای بررسی صحت داده های recive {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 ("میلی گرم") ؛ Serial.print ("ارتعاش RMS در محور Y:") ؛ Serial.print (rms_y) ؛ Serial.println ("میلی گرم") ؛ Serial.print ("ارتعاش RMS در محور Z:") ؛ Serial.print (rms_z) ؛ Serial.println ("میلی گرم") ؛

Serial.print ("حداقل ارتعاش در محور X:") ؛

Serial.print (min_x) ؛ Serial.println ("میلی گرم") ؛ Serial.print ("حداقل ارتعاش در محور Y:") ؛ Serial.print (min_y) ؛ Serial.println ("میلی گرم") ؛ Serial.print ("حداقل ارتعاش در محور Z:") ؛ Serial.print (min_z) ؛ Serial.println ("میلی گرم") ؛

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 Credentials ************ // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com" ؛ char CLIENT_ID = "ncdGatewayPolicy"؛ char TOPIC_NAME = "ncdGatewayThing"؛

برای ذخیره JSON خود یک متغیر char ایجاد کنید ، در این مورد ، ما یک قالب برای ذخیره 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، payload) == 0) {Serial.print ("انتشار پیام:")؛ Serial.println (بار)؛ } else {Serial.println ("انتشار انجام نشد")؛ }} vTaskDelay (1000 / پورتTICK_RATE_MS) ؛ تیک ++ ؛

مرحله 7: تجسم داده ها در AWS

تجسم داده ها در AWS
تجسم داده ها در AWS
تجسم داده ها در AWS
تجسم داده ها در AWS
تجسم داده ها در AWS
تجسم داده ها در AWS
  • وارد حساب AWS خود شوید.
  • در گوشه سمت چپ نوار ابزار ، برگه Services را خواهید یافت
  • روی این برگه کلیک کنید و در زیر عنوان Internet of Things عنوان IoT Core را انتخاب کنید.
  • QoS و no را انتخاب کنید. پیامها به مشترکین نام تاپیک را وارد کنید

مرحله 8: کد کلی

می توانید کد کلی را در این مخزن Github پیدا کنید.

وام

  • آردوینو جانسون
  • سنسورهای دما و رطوبت بی سیم
  • ESP32
  • PubSubClient

توصیه شده: