فهرست مطالب:
- مرحله 1: راه اندازی حساب AWS
- مرحله 2: مشخصات سخت افزار و نرم افزار
- مرحله 3: سنسورهای ارتعاش و دما بی سیم
- مرحله 4: سیستم عامل ESP32 AWS
- مرحله 5: دریافت اطلاعات سنسور از سنسور ارتعاش و دما بی سیم
- مرحله 6: اتصال به AWS
- مرحله 7: تجسم داده ها در AWS
- مرحله 8: کد کلی
تصویری: شروع به کار با AWS IoT با سنسور دمای بی سیم با استفاده از MQTT: 8 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
در دستورالعمل های قبلی ، ما سیستم عامل های مختلف ابری مانند 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 برای استفاده سریال است
- RX0 GPIO 3 ، TX0 GPIO 1
- RX1 GPIO9 ، TX1 GPIO 10
- 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_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 خود شوید.
- در گوشه سمت چپ نوار ابزار ، برگه Services را خواهید یافت
- روی این برگه کلیک کنید و در زیر عنوان Internet of Things عنوان IoT Core را انتخاب کنید.
- QoS و no را انتخاب کنید. پیامها به مشترکین نام تاپیک را وارد کنید
مرحله 8: کد کلی
می توانید کد کلی را در این مخزن Github پیدا کنید.
وام
- آردوینو جانسون
- سنسورهای دما و رطوبت بی سیم
- ESP32
- PubSubClient
توصیه شده:
شروع به کار با سنسورهای دما و ارتعاش بی سیم طولانی برد: 7 مرحله
شروع به کار با سنسورهای دما و ارتعاش بی سیم با برد بلند: گاهی اوقات ارتعاش عامل مشکلات جدی در بسیاری از برنامه ها است. ارتعاش از شافت ها و یاتاقان های ماشین گرفته تا عملکرد هارد دیسک باعث آسیب دستگاه ، تعویض زودهنگام ، عملکرد پایین و ضربه بزرگی به دقت می شود. نظارت بر
شروع به کار با رابط سنسور I2C ؟؟ - رابط MMA8451 خود را با استفاده از ESP32s انجام دهید: 8 مرحله
شروع به کار با رابط سنسور I2C ؟؟ - رابط MMA8451 خود را با استفاده از ESP32s: در این آموزش ، با نحوه راه اندازی ، اتصال و دریافت دستگاه I2C (شتاب سنج) کار با کنترلر (Arduino ، ESP32 ، ESP8266 ، ESP12 NodeMCU) آشنا خواهید شد
سنسور دمای موتور/سنج با پروب بی سیم برای خودروهای کلاسیک: 7 مرحله
سنسور دمای موتور/سنج با پروب بی سیم برای وسایل نقلیه کلاسیک: من این کاوشگر را برای چیپیتاک دوست داشتنی ام ساخته ام. یک ماشین فیات 126 با موتور خنک کننده 2 سیلندر در زیر کاپوت عقب. چیپیتاک هیچ دماسنجی ندارد که نشان دهد موتور چقدر داغ است ، بنابراین من فکر کردم یک سنسور مفید خواهد بود. همچنین می خواستم سنسور سیم باشد
ارسال داده های ارتعاش و دمای بی سیم به برگه های Google با استفاده از Node-RED: 37 مرحله
ارسال داده های ارتعاش و دمای بی سیم به برگه های Google با استفاده از Node-RED: معرفی سنسور ارتعاش و دما بی سیم NCD’s Long Range IoT Industrial ، با استفاده از ساختار شبکه مش بی سیم تا محدوده 2 مایل. این دستگاه با استفاده از سنسور دقیق ارتعاش و دما 16 بیتی ، به
شروع به کار با Amazon AWS IoT و ESP8266: 21 مرحله
شروع به کار با Amazon AWS IoT و ESP8266: این پروژه به شما نحوه گرفتن ماژول ESP8266 و اتصال مستقیم آن به AWS IOT با استفاده از سیستم عامل Mongoose را نشان می دهد. Mongoose OS یک سیستم عامل منبع باز برای میکروکنترلرها است که بر اتصال ابر تأکید می کند. این توسط Cesanta ، دوبلین توسعه داده شد