فهرست مطالب:

انتشار داده های سنسور فشار بی سیم با استفاده از MQTT: 7 مرحله
انتشار داده های سنسور فشار بی سیم با استفاده از MQTT: 7 مرحله

تصویری: انتشار داده های سنسور فشار بی سیم با استفاده از MQTT: 7 مرحله

تصویری: انتشار داده های سنسور فشار بی سیم با استفاده از MQTT: 7 مرحله
تصویری: ESP32 Tutorial 46 - Remote Temperature Monitoring using HiveMQ MQTT | SunFounder's ESP32 Learnig kit 2024, نوامبر
Anonim
انتشار داده های سنسور فشار بی سیم با استفاده از MQTT
انتشار داده های سنسور فشار بی سیم با استفاده از MQTT

ESP32 وESP 8266 SoC بسیار آشنا در زمینه اینترنت اشیا هستند. اینها به نوعی برای پروژه های IoT مفید هستند. ESP 32 دستگاهی با WiFi و BLE یکپارچه است. فقط SSID ، رمز عبور و پیکربندی IP خود را وارد کنید و موارد را در ابر ادغام کنید. در اینجا در این دستورالعمل ، ما در مورد برخی از اصول اولیه IoT مانند پلت فرم IoT ، MQTT ، درگاه های Captive و غیره فکر می کنیم ، بنابراین اجازه دهید آن را مرور کنیم

  • معماری اینترنت اشیا در کلمات بسیار ساده شامل یک دستگاه تعبیه شده و بستر اینترنت اشیا برای قرار دادن دستگاه در ابر است. در اینجا ما از پلت فرم UbiDots IoT برای تجسم داده های حسگر استفاده می کنیم.
  • مدیریت تنظیمات IP و اعتبارنامه کاربر می تواند برای کاربر دردسرساز شود. اگر کاربر بخواهد اعتبار WiFi را تغییر دهد ، چه می شود؟ اگر کاربر بخواهد تنظیمات DHCP/Static IP را تغییر دهد ، چه می شود؟ هر بار چشمک زدن ESP32 قابل اعتماد نیست و حتی راه حلی برای این مشکلات نیست. بنابراین ما برای ذخیره اعتبارنامه WiFi و سایر پیکربندی ها ، از طریق پورتال اسیر می رویم.
  • MQTT در حال حاضر به یک اصطلاح بسیار رایج در دنیای اینترنت اشیا تبدیل شده است. به دلیل معماری سریع ، قوی و ناب ، از درخواست و پاسخ (HTTP) توسط Publish and Subscribe عبور کرده است.

در اینجا در این دستورالعمل ، ما قصد داریم نشان دهیم.

  • اعطای اعتبار WiFi و MQTT با استفاده از Captive Portal.
  • انتشار و اشتراک داده های متعدد سنسور در UbiDots.
  • خواندن داده های سنسور از سنسور فشار و دما بی سیم
  • میزبانی فرم وب از ESP32.
  • خواندن و نوشتن از SPIFFS ESP32.

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

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

  • ESP32 WiFi/BLE
  • سنسور فشار و دمای بی سیم

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

  • آردوینو IDE
  • XCTU
  • ابزار Labview

مرحله 2: سنسورهای فشار و دما بی سیم

سنسورهای فشار و دمای بی سیم
سنسورهای فشار و دمای بی سیم
سنسورهای فشار و دمای بی سیم
سنسورهای فشار و دمای بی سیم
سنسورهای فشار و دمای بی سیم
سنسورهای فشار و دمای بی سیم

امکانات

  • سنسور درجه صنعتی سنسور دمای فشار بی سیم با برد بلند
  • محدوده عملکرد 0 تا 14000 mbar -40 ° تا +85 ° C (-40 ° تا 185 ° F)
  • قابل تنظیم محاسبه داخلی وضوح فشار 0.012 تا 0.065 mbar
  • قابلیت تنظیم محاسبه داخلی وضوح دما 0.002 تا 0.012 درجه سانتی گراد
  • دقت ± 2.5 mbar ، ± 2 ° C
  • فشار مطلق ، فشار نسبی و ارتفاع نسبی خروجی ها را تغییر دهید
  • محدوده خط دید 2 مایل با آنتن روی صفحه
  • برد LOS برتر تا 28 مایل با آنتن های با سود بالا
  • رابط Raspberry Pi ، Microsoft® Azure® ، Arduino و موارد دیگر
  • شبکه بی سیم مش با استفاده از DigiMesh®

پیکربندی سنسور فشار و دما بی سیم با استفاده از ابزار Labview Utility و XCTU

سنسور در دو حالت اجرا می شود

  • حالت پیکربندی: پیکربندی شناسه Pan ، تأخیر ، تعداد امتحانات مجدد و غیره. بیشتر در این مورد از حوصله این دستورالعمل خارج است و در دستورالعمل بعدی توضیح داده خواهد شد.
  • حالت اجرا: ما دستگاه را در حالت اجرا اجرا می کنیم. و برای تجزیه و تحلیل این مقدار از ابزار Labview Utility استفاده می کنیم

این رابط کاربری Labview مقادیر را در نمودارهای زیبا نشان می دهد. مقادیر فعلی و گذشته را نشان می دهد. برای بارگیری رابط کاربری Labview می توانید به این پیوند بروید. از منوی صفحه فرود روی نماد اجرا کلیک کنید تا به حالت اجرا بروید.

مرحله 3: اتصال به WiFi

اتصال به WiFi
اتصال به WiFi
اتصال به WiFi
اتصال به WiFi

ما از پورتال ضبط شده برای ذخیره اعتبار WiFi و حرکت در تنظیمات IP استفاده می کنیم. برای آشنایی بیشتر با پورتال اسیر ، می توانید موارد زیر را به صورت آموزشی آموزش دهید.

پورتال باز به ما این امکان را می دهد که بین تنظیمات Static و DHCP یکی را انتخاب کنیم. فقط اطلاعاتی مانند IP Static ، Subnet Mask ، gateway را وارد کرده و Wateless Sensor Gateway در آن IP پیکربندی می شود.

یک صفحه وب میزبانی می شود که در آن لیستی از شبکه های WiFi موجود و RSSI را نشان می دهد. شبکه WiFi و رمز عبور را انتخاب کرده و submit را وارد کنید. اعتبارنامه در EEPROM و تنظیم IP در SPIFFS ذخیره می شود. بیشتر در این مورد می توان در این دستورالعمل یافت.

مرحله 4: راه اندازی UbiDots در ESP32

راه اندازی UbiDots در ESP32
راه اندازی UbiDots در ESP32

در اینجا ما از سنسورهای فشار و دما بی سیم با دستگاه ESP 32 برای دریافت اطلاعات دما و رطوبت استفاده می کنیم. ما داده ها را با استفاده از پروتکل MQTT به UbiDots ارسال می کنیم. MQTT به جای درخواست و پاسخ ، مکانیزم انتشار و اشتراک را دنبال می کند. سریعتر و قابل اطمینان تر از HTTP است. این به شرح زیر عمل می کند.

  • ما از برنامه زمانبندی وظایف برای برنامه ریزی کار مانند واکشی داده ها از حسگرها ، انتشار قرائت های سنسور ، اشتراک در مبحث MQTT استفاده می کنیم.
  • ابتدا ، فایلهای سرصفحه Task Scheduler ، نمونه آن و زمانبندی وظایف را وارد کنید.
  • ما دو وظیفه را با اشاره به دو عملیات مختلف کنترل برنامه ریزی کرده ایم.

#تعریف_کار_TIMEOUT#شامل زمانبندی ts ؛ // --------- وظایف ------------ // وظیفه tSensor (4 * TASK_SECOND ، TASK_FOREVER ، & taskSensorCallback ، & ts ، false ، NULL ، و taskSensorDisable) ؛ Task tWiFi (10* TASK_SECOND ، TASK_FOREVER ، & taskWiFiCallback ، & ts، false ، NULL ، و taskWiFiDisable) ؛

  • وظیفه 1 برای خواندن مقدار سنسور است که این کار به مدت 1 ثانیه اجرا می شود تا زمانی که به زمان 10 ثانیه برسد.
  • هنگامی که Task1 به پایان می رسد ما به Wifi محلی و کارگزار MQTT متصل می شویم.
  • اکنون وظیفه 2 فعال است و ما وظیفه 1 را غیرفعال می کنیم
  • وظیفه 2 برای انتشار داده های حسگر به کارگزار UbiDots MQTT است که این کار به مدت 20 ثانیه اجرا می شود تا زمانی که به 20 ثانیه برسد.
  • وقتی Task2 به پایان رسید ، Task 1 دوباره فعال می شود و Task2 غیرفعال می شود. در اینجا دوباره ، ما مقدار به روز شده را دریافت می کنیم و روند ادامه می یابد.

خواندن داده های سنسور I2C

ما از سنسورهای دما و رطوبت بی سیم یک فریم 29 بایت دریافت می کنیم. این فریم برای دستیابی به دمای واقعی و داده های رطوبت دستکاری می شود

if (Serial1.available ())

{data [0] = Serial1.read ()؛ تأخیر (k) ؛ if (data [0] == 0x7E) {while (! Serial1.available ())؛ برای (i = 1؛ i <36؛ i ++) {data = Serial1.read ()؛ تأخیر (1) ؛ } if (data [15] == 0x7F) /////// برای بررسی صحت داده های recive {if (data [22] == 0x06) //////// مطمئن شوید نوع سنسور درست است {int cTemp = (((((داده [24]) * 256) + داده [25])) ؛ int16_t abs_pressure = (((((uint16_t) (داده [26]) << 8) | داده [27])*0.001) ؛ int rlt_pressure = (((((داده [28]) * 256) + داده [29]) * 0.001) ؛ int16_t delta_alt = (((((uint16_t) (داده [30]) << 8) | داده [31])*0.01) ؛ باتری شناور = ((داده [18] * 256) + داده [19])؛ ولتاژ شناور = 0.00322 * باتری ؛ Serial.print ("شماره سنسور") ؛ Serial.println (داده [16]) ؛ Serial.print ("نوع سنسور") ؛ Serial.println (داده [22]) ؛ Serial.print ("نسخه سیستم عامل") ؛ Serial.println (داده [17]) ؛ Serial.print ("دما در سانتیگراد:") ؛ Serial.print (cTemp) ؛ Serial.println ("C") ؛ Serial.print ("فشار مطلق:") ؛ Serial.println (abs_pressure) ؛ Serial.print ("mbar") ؛ Serial.print ("فشار نسبی:") ؛ Serial.println (rlt_pressure)؛ Serial.print ("mbar")؛ Serial.print ("ارتفاع دلتا:") ؛ Serial.println (delta_alt) ؛ Serial.print ("متر") ؛ Serial.print ("مقدار ADC:") ؛ Serial.println (باتری) ؛ Serial.print ("ولتاژ باتری:") ؛ Serial.print (ولتاژ) ؛ Serial.println ("\ n")؛ if (ولتاژ <1) {Serial.println ("زمان تعویض باتری") ؛ }}} else {for (i = 0؛ i <36؛ i ++) {Serial.print (data )؛ Serial.print ("،") ؛ تأخیر (1) ؛ }}}}

اتصال به UbiDots MQTT API

شامل فایل سرصفحه برای فرآیند MQTT

#عبارتند از

متغیرهای دیگری را برای MQTT مانند نام مشتری ، آدرس کارگزار ، شناسه توکن تعریف کنید

#تعریف TOKEN "BBFF-********************************" // Ubidots TOKEN#define MQTT_CLIENT_NAME "**************************"

char mqttBroker = "things.ubidots.com"؛

محموله بار [100] ؛ موضوع char [150]؛ // ایجاد متغیر برای ذخیره رمز توکن ID

مرحله 5: انتشار خوانش های حسگر در UbiDots

انتشار خواندن حسگرها در UbiDots
انتشار خواندن حسگرها در UbiDots

ایجاد متغیرها برای ذخیره داده های مختلف حسگر و ایجاد یک متغیر char برای ذخیره موضوع

#تعریف VARIABLE_LABEL_TEMPF "tempF" // Assing the variable variable #define VARIABLE_LABEL_TEMPC "tempC" // Assing the variable variable #define VARIABLE_LABEL_BAT "bat" #deabine VARIABLE_LABEL_HUMID label "humid" // assing

char topic1 [100]؛

char topic2 [100]؛ char topic3 [100]؛

انتشار داده ها در مبحث MQTT ذکر شده ، بارگذاری آن شبیه {"tempc": {value: "tempData"}} خواهد بود

sprintf (topic1، "٪ s"، "")؛ sprintf (topic1 ، "٪ s٪ s" ، "/v1.6/devices/" ، DEVICE_LABEL) ؛ sprintf (بار ، "٪ s" ، "") ؛ // سرعت بار Sprintf را پاک می کند (بار ، "{"٪ s / ":" ، VARIABLE_LABEL_TEMPC) ؛ // مقدار sprintf را اضافه می کند (بار ، "٪ s {" value / ":٪ s}" ، بار ، str_cTemp) ؛ // مقدار sprintf را اضافه می کند (بار ، "٪ s}" ، بار)؛ // براکت های دیکشنری Serial.println (payload) را می بندد. Serial.println (client.publish (topic1، payload)؟ "published": "notpublished")؛ // برای موضوعات دیگر نیز همین کار را انجام دهید

client.publish () داده ها را در UbiDots منتشر می کند

مرحله 6: تجسم داده ها

تجسم داده ها
تجسم داده ها
  • به Ubidots بروید و وارد حساب خود شوید.
  • از سربرگ Data که در بالا ذکر شده است ، به داشبورد بروید.
  • اکنون روی نماد "+" کلیک کنید تا ویجت های جدید اضافه شوند.
  • یک ویجت از لیست انتخاب کنید و یک متغیر و دستگاه ها را اضافه کنید.
  • داده های حسگر را می توان با استفاده از ابزارک های مختلف روی داشبورد تجسم کرد.

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

کد Over برای HTML و ESP32 را می توانید در این مخزن GitHub پیدا کنید.

وام

  • برد شکست NCD ESP32.
  • ncd سنسورهای فشار و دما بی سیم
  • pubsubclient
  • UbiDots
  • وظیفه زمانبندی

توصیه شده: