فهرست مطالب:
- مرحله 1: مشخصات سخت افزار و نرم افزار
- مرحله 2: سنسورهای فشار و دما بی سیم
- مرحله 3: اتصال به WiFi
- مرحله 4: راه اندازی UbiDots در ESP32
- مرحله 5: انتشار خوانش های حسگر در UbiDots
- مرحله 6: تجسم داده ها
- مرحله 7: کد کلی
تصویری: انتشار داده های سنسور فشار بی سیم با استفاده از MQTT: 7 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
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 و حرکت در تنظیمات IP استفاده می کنیم. برای آشنایی بیشتر با پورتال اسیر ، می توانید موارد زیر را به صورت آموزشی آموزش دهید.
پورتال باز به ما این امکان را می دهد که بین تنظیمات Static و DHCP یکی را انتخاب کنیم. فقط اطلاعاتی مانند IP Static ، Subnet Mask ، gateway را وارد کرده و Wateless Sensor Gateway در آن IP پیکربندی می شود.
یک صفحه وب میزبانی می شود که در آن لیستی از شبکه های WiFi موجود و RSSI را نشان می دهد. شبکه WiFi و رمز عبور را انتخاب کرده و submit را وارد کنید. اعتبارنامه در EEPROM و تنظیم IP در SPIFFS ذخیره می شود. بیشتر در این مورد می توان در این دستورالعمل یافت.
مرحله 4: راه اندازی 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
ایجاد متغیرها برای ذخیره داده های مختلف حسگر و ایجاد یک متغیر 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
- وظیفه زمانبندی
توصیه شده:
از داده های زنده آردوینو (و ذخیره داده ها در اکسل) نقشه های زیبا بسازید: 3 مرحله
از داده های زنده آردوینو نقشه های زیبا بسازید (و داده ها را در اکسل ذخیره کنید): همه ما دوست داریم با تابع P … lotter خود در Arduino IDE بازی کنیم. با این حال ، در حالی که می تواند برای برنامه های کاربردی اساسی مفید باشد ، داده ها بیشتر پاک می شوند امتیاز اضافه می شود و برای چشم چندان خوشایند نیست. پلاتر Arduino IDE انجام نمی دهد
ارسال داده های ارتعاش و دمای بی سیم به برگه های Google با استفاده از Node-RED: 37 مرحله
ارسال داده های ارتعاش و دمای بی سیم به برگه های Google با استفاده از Node-RED: معرفی سنسور ارتعاش و دما بی سیم NCD’s Long Range IoT Industrial ، با استفاده از ساختار شبکه مش بی سیم تا محدوده 2 مایل. این دستگاه با استفاده از سنسور دقیق ارتعاش و دما 16 بیتی ، به
نحوه انتشار داده های ESP32 با NTP Timestamp در IoT Cloud: 5 مرحله
نحوه انتشار داده های ESP32 با NTP Timestamp به IoT Cloud: در بسیاری از برنامه های کاربردی ، کاربران باید داده های خود را به همراه نشان زمان محلی مقادیر ارسال شده در محموله بار به ابر AskSensors IoT ارسال کنند. قالب زمانبندی زمان UNIX Epoch است: تعداد میلی ثانیه که از ژانویه گذشته است
UbiDots-اتصال ESP32 و انتشار داده های چند سنسور: 6 مرحله
UbiDots-اتصال ESP32 و انتشار داده های چند سنسور: ESP32 و ESP 8266 SoC بسیار آشنا در زمینه IoT هستند. اینها به نوعی برای پروژه های IoT مفید هستند. ESP 32 دستگاهی با WiFi و BLE یکپارچه است. فقط SSID ، رمز عبور و پیکربندی IP خود را وارد کنید و موارد را در
سه فشار فشار - خاموش فشار مدارهای اتصال: 3 مرحله
سه Push ON-Push OFF Latching Circuits: فلیپ فلاپ یا لچ مداری است که دارای دو حالت پایدار است و می توان از آن برای ذخیره اطلاعات حالت استفاده کرد. مدار را می توان با اعمال سیگنال (در این مورد ، با فشار دادن یک دکمه) تغییر حالت داد. در اینجا ، من سه روش مختلف برای نشان دادن