فهرست مطالب:

UbiDots-اتصال ESP32 و انتشار داده های چند سنسور: 6 مرحله
UbiDots-اتصال ESP32 و انتشار داده های چند سنسور: 6 مرحله

تصویری: UbiDots-اتصال ESP32 و انتشار داده های چند سنسور: 6 مرحله

تصویری: UbiDots-اتصال ESP32 و انتشار داده های چند سنسور: 6 مرحله
تصویری: ESP32 with DHT11 Sensor | ESP32 Temperature Humidity Sensor | ESP32 Wether Station DIY | ESP32 DHT22 2024, نوامبر
Anonim
UbiDots-اتصال ESP32 و انتشار داده های چند سنسور
UbiDots-اتصال ESP32 و انتشار داده های چند سنسور

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

مرحله 2: ایجاد یک پورتال اسیر

ایجاد پورتال اسیر
ایجاد پورتال اسیر
ایجاد پورتال اسیر
ایجاد پورتال اسیر
ایجاد پورتال اسیر
ایجاد پورتال اسیر

پورتال اسیر یک صفحه وب است که قبل از دسترسی بیشتر کاربران به منابع شبکه به کاربران تازه متصل نشان داده می شود. در اینجا ما از سه صفحه وب برای انتخاب بین DHCP و Static IP Settings استفاده می کنیم. ما می توانیم آدرس IP به ESP را به دو صورت تعریف کنیم.

  • آدرس IP DHCP- راهی برای اختصاص پویا آدرس IP به دستگاه است. آدرس IP پیش فرض ESP 192.168.4.1 است
  • آدرس IP ثابت- اختصاص یک آدرس IP دائمی به دستگاه شبکه ما. برای ارائه IP ثابت به دستگاه باید آدرس IP ، آدرس دروازه و ماسک زیر شبکه را تعریف کنیم.

اولین صفحه وب در 192.168.1.77 میزبانی می شود. در اینجا به کاربر دکمه های رادیویی برای انتخاب بین DHCP و تنظیمات IP Static ارائه شده است. در صفحه بعدی ، باید اطلاعات مربوط به IP را برای ادامه کار ارائه دهیم.

کد HTML

کد HTML صفحات وب را می توانید در این مخزن Github پیدا کنید. شما می توانید از هر IDE یا ویرایشگر متن مانند Sublime یا notepad ++ برای ایجاد صفحات وب HTML استفاده کنید.

  • ابتدا یک صفحه وب HTML شامل دو دکمه رادیویی برای انتخاب بین DHCP و Static IP Settings ایجاد کنید.
  • حالا دکمه ای را برای ارسال پاسخ ایجاد کنید
  • نام دکمه های رادیو را بگذارید.
  • کلاس سرور ESP این اسامی را به عنوان آرگومان در نظر گرفته و با استفاده از این آرگومان ها پاسخ دکمه های رادیویی را دریافت می کند
  • اکنون یک دکمه 'SUBMIT' برای ارسال پاسخ به دستگاه وارد کنید. در سایر صفحات وب ، جعبه های متنی داریم.
  • مقدار نام و نوع ورودی را به کادر متن داده و یک دکمه ارسال به "ارسال" ارسال پاسخ اضافه کنید.
  • برای تنظیم مجدد محتوای قسمت متن ، یک دکمه "RESET" ایجاد کنید.

مرحله 3: ارائه اعتبار WiFi و UbiDots

ارائه وای فای و اعتبار UbiDots
ارائه وای فای و اعتبار UbiDots

مشکل اصلی در هنگام مدیریت اعتبار WiFi رخ می دهد. حتی اگر ما کتابخانه WiFiMulti برای آن داریم که می توانیم چندین SSID و رمز عبور به دستگاه بدهیم و دستگاه به شبکه موجود متصل شود. اما اگر شبکه موجود در لیست WiFiMulti نباشد چه؟ فلش کردن دستگاه ESP32 به طور مداوم یک راه حل قابل اعتماد نیست.

برای حل این مشکل ، ما یک صفحه وب میزبانی می کنیم که در آن کاربر می تواند SSID و رمز عبور شبکه موجود را ارسال کند. به شرح زیر عمل می کند.

  • صفحه وب در IP ثابت یا DHCP IP که توسط کاربر از درگاه اسیر انتخاب شده میزبانی می شود
  • این صفحه وب دارای زمینه های متنی برای وارد کردن SSID ، رمز عبور و شناسه توکن UBIDOTS برای اتصال دستگاه به UbiDots است.
  • SSID و رمز عبور WiFi محلی خود را در قسمت های ورودی وارد کنید ، شناسه توکن UbiDot را وارد کرده و SUBMIT را وارد کنید
  • این اعتبار در EEPROM ESP32 ذخیره می شود
  • پس از 60 ثانیه دستگاه به طور خودکار از AP قطع می شود
  • دفعه بعد که دستگاه را روشن می کنید ، کاربر مجبور نیست این روش را دنبال کند ، دستگاه به طور خودکار اعتبارنامه کاربر را از EEPROM دریافت می کند و به انتشار قرائت سنسور در UbiDots ادامه می دهد.

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

در اینجا ما از سنسورهای دما و رطوبت بی سیم با دستگاه 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 بایت دریافت می کنیم. این فریم برای دستیابی به اطلاعات واقعی دما و رطوبت دستکاری می شود

uint8_t data [29]؛

داده [0] = Serial1.read ()؛ تاخیر (k) ؛ // chute for start byte if (data [0] == 0x7E) {while (! Serial1.available ())؛ برای (i = 1؛ i <29؛ i ++) {data = Serial1.read ()؛ تأخیر (1) ؛ } if (data [15] == 0x7F) /////// برای بررسی صحت داده های recive {if (data [22] == 1) //////// مطمئن شوید نوع سنسور درست است {

رطوبت = ((((داده [24]) * 256) + داده [25]) /100.0.0) ؛ رطوبت /=10.0 ؛ cTempint = ((((uint16_t) (داده [26]) << 8) | داده [27])؛ cTemp = (شناور) cTempint /100.0 ؛ cTemp /= 10.0 ؛ fTemp = cTemp * 1.8 + 32 ؛ fTemp /= 10.0 ؛ باتری = تصادفی (100 ، 327) ؛ ولتاژ = باتری/100 ؛ nodeId = data [16]؛}

اتصال به UbiDots MQTT API

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

#عبارتند از

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

#تعریف MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "things.ubidots.com"؛

char charload [100] ؛ موضوع char [150] ؛

// ایجاد متغیر برای ذخیره شناسه توکن

tokenId رشته ؛

ایجاد متغیرها برای ذخیره داده های مختلف حسگر و ایجاد یک متغیر 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 منتشر می کند

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

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

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

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

وام

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

توصیه شده: