Агуулгын хүснэгт:

UbiDots-ESP32 холбож, олон мэдрэгчийн мэдээллийг нийтлэх: 6 алхам
UbiDots-ESP32 холбож, олон мэдрэгчийн мэдээллийг нийтлэх: 6 алхам

Видео: UbiDots-ESP32 холбож, олон мэдрэгчийн мэдээллийг нийтлэх: 6 алхам

Видео: UbiDots-ESP32 холбож, олон мэдрэгчийн мэдээллийг нийтлэх: 6 алхам
Видео: P2 ESP01 4CH Relay Module (Subtittled) 2024, Долдугаар сарын
Anonim
UbiDots-ESP32 холбож, олон мэдрэгчийн мэдээллийг нийтлэх
UbiDots-ESP32 холбож, олон мэдрэгчийн мэдээллийг нийтлэх

ESP32 ба ESP 8266 нь IoT -ийн чиглэлээр маш сайн мэддэг SoC юм. Эдгээр нь IoT төслүүдэд маш их ашиг тустай байдаг. ESP 32 бол WiFi болон BLE -ийг нэгтгэсэн төхөөрөмж юм. Зүгээр л SSID, нууц үг, IP -ийнхээ тохиргоог өгөөд эдгээр зүйлсийг үүл рүү нэгтгээрэй. Энэхүү зааварчилгаанд бид IoT платформ, MQTT, Captive портал гэх мэт IoT -ийн зарим үндсэн нөхцлүүдийг тунгаан бодох болно.

  • IoT архитектур нь маш энгийн үгээр хэлбэл төхөөрөмжийг үүлэнд оруулах зориулалттай суулгагдсан төхөөрөмж болон IoT платформоос бүрдэнэ. Энд бид мэдрэгчийн өгөгдлийг дүрслэн харуулахын тулд UbiDots IoT платформыг ашиглаж байна.
  • IP тохиргоо болон хэрэглэгчийн итгэмжлэлийг удирдах нь хэрэглэгчийн толгойны өвчин болно. Хэрэв хэрэглэгч WiFi итгэмжлэлийг өөрчлөхийг хүсч байвал яах вэ? Хэрэв хэрэглэгч DHCP/статик IP тохиргоог өөрчлөхийг хүсч байвал яах вэ? ESP32 -ийг байнга анивчих нь найдвартай биш бөгөөд эдгээр асуудлыг шийдэх шийдэл биш юм. Тиймээс бид WiFi -ийн итгэмжлэл болон бусад тохиргоог хадгалахын тулд олзлогдсон порталаар дамжуулж үзэх болно.
  • MQTT нь IoT ертөнцөд маш түгээмэл нэр томъёо болж байна. Энэ нь хурдан, бат бөх, туранхай архитектурын ачаар Publish and Subscribe -ийн хүсэлт, хариултыг (HTTP) давсан байна.

Энэхүү зааварчилгааны хүрээнд энд бид үзүүлэх болно.

  • Captive Portal ашиглан WiFi болон MQTT итгэмжлэлийг өгөх.
  • UbiDots дээр олон мэдрэгчийн өгөгдлийг нийтлэх, захиалах.
  • Утасгүй температур ба чийгшил мэдрэгчийн мэдрэгчийн өгөгдлийг унших.
  • ESP32 -ээс вэб маягтыг байршуулах.
  • SPIFFS ESP32 -ээс унших, бичих.

Алхам 1: Техник хангамж ба програм хангамжийн тодорхойлолт

Техник хангамж ба програм хангамжийн тодорхойлолт
Техник хангамж ба програм хангамжийн тодорхойлолт
  • ESP32 WiFi/BLE
  • Утасгүй температур ба чийгшил мэдрэгч

Програм хангамжийн тодорхойлолт

Arduino IDE

Алхам 2: Олзлогдсон портал үүсгэх

Олзлогдсон портал үүсгэх
Олзлогдсон портал үүсгэх
Олзлогдсон портал үүсгэх
Олзлогдсон портал үүсгэх
Олзлогдсон портал үүсгэх
Олзлогдсон портал үүсгэх

Олзлогдсон портал гэдэг нь шинээр холбогдсон хэрэглэгчдэд сүлжээний нөөцөд илүү өргөн нэвтрэх эрх олгохоос өмнө харуулдаг вэб хуудас юм. Энд бид DHCP болон статик IP тохиргооноос сонгох гурван вэб хуудсыг санал болгож байна. Бид ESP -ийн IP хаягийг хоёр аргаар тодорхойлж болно.

  • DHCP IP хаяг бол төхөөрөмжид IP хаягийг динамикаар хуваарилах арга юм. ESP -ийн анхдагч IP хаяг нь 192.168.4.1 юм
  • Статик IP хаяг- манай сүлжээний төхөөрөмжид байнгын IP хаягийг зааж өгөх. Төхөөрөмжийг статик IP -ээр хангахын тулд бид IP хаяг, гарцын хаяг, дэд сүлжээний маскыг тодорхойлох хэрэгтэй.

Эхний вэб хуудсыг 192.168.1.77 хаягаар байршуулж байна. Энд DHCP ба статик IP тохиргоог сонгохын тулд хэрэглэгчид радио товчлуурыг өгдөг. Дараагийн вэб хуудсанд бид цаашдын үйл ажиллагааг үргэлжлүүлэхийн тулд IP -тэй холбоотой мэдээллийг өгөх ёстой.

HTML код

Вэб хуудасны HTML кодыг энэ Github репозитороос олж болно. Та HTML вэб хуудас хийхийн тулд Sublime эсвэл notepad ++ гэх мэт IDE эсвэл текст засварлагчийг ашиглаж болно.

  • Эхлээд DHCP болон статик IP тохиргооноос сонгох хоёр радио товчлуур агуулсан HTML вэб хуудас үүсгэнэ үү.
  • Одоо хариултаа оруулах товчлуурыг үүсгэнэ үү
  • Радио товчлууруудад нэр өгнө үү.
  • ESP вэб серверийн анги нь эдгээр нэрийг аргумент болгон авч, эдгээр аргументыг ашиглан радио товчлууруудын хариуг авах болно
  • Төхөөрөмжид хариу илгээхийн тулд 'SUBMIT' товчлуурыг оруулна уу. Бусад вэб хуудсууд дээр бид текст хайрцагтай болно.
  • Нэрийн утга болон оролтын төрлийг текст хайрцагт өгч, хариу илгээх товчийг 'SUBMIT' дээр оруулна уу.
  • Текст талбарын агуулгыг дахин тохируулахын тулд 'ДАХИН тохируулах' товчийг үүсгэнэ үү.

Алхам 3: WiFi болон UbiDots -ийн итгэмжлэлийг өгөх

WiFi болон UbiDots итгэмжлэлийг өгөх
WiFi болон UbiDots итгэмжлэлийг өгөх

WiFi -ийн итгэмжлэлийг удирдах явцад гол асуудал гардаг. Хэдийгээр бид WiFiMulti номын сантай боловч төхөөрөмжид олон SSID болон нууц үг өгөх боломжтой бөгөөд төхөөрөмж нь боломжтой сүлжээнд холбогдох болно. Гэхдээ хэрэв боломжтой сүлжээ WiFiMulti жагсаалтад байхгүй бол яах вэ. ESP32 төхөөрөмжийг байнга анивчих нь найдвартай шийдэл биш юм.

Энэ асуудлыг шийдэхийн тулд бид хэрэглэгч байгаа сүлжээний SSID болон нууц үгээ илгээх боломжтой вэб хуудсыг байршуулж байна. Энэ нь дараах байдлаар ажилладаг.

  • Вэб хуудсыг хэрэглэгч портал дээрээс сонгосон статик IP эсвэл DHCP IP дээр байрлуулсан болно
  • Энэхүү вэб хуудас нь төхөөрөмжийг UbiDots -т холбох SSID, нууц үг, UBIDOTS жетоны ID оруулах текст талбаруудыг агуулдаг.
  • Оруулах талбарт өөрийн WiFi сүлжээний SSID болон нууц үгийг оруулна уу, UbiDot -ийн токен ID -г оруулаад SUBMIT -ийг оруулна уу.
  • Эдгээр итгэмжлэлийг ESP32 -ийн EEPROM -д хадгалдаг
  • 60 секундын дараа төхөөрөмж AP-ээс автоматаар салах болно
  • Дараагийн удаа та төхөөрөмжийг асаахад хэрэглэгч энэ журмыг дагаж мөрдөх шаардлагагүй болно, төхөөрөмж нь хэрэглэгчийн итгэмжлэлийг EEPROM -ээс автоматаар авч, мэдрэгчийн заалтыг UbiDots -д нийтлэхээ үргэлжлүүлнэ.

Алхам 4: Мэдрэгчийн уншилтыг UbiDots дээр нийтлэх

Энд бид ESP 32 төхөөрөмжтэй утасгүй температур ба чийгшлийн мэдрэгчийг ашиглан температур, чийгшлийн мэдээллийг олж авч байна. Бид өгөгдлийг MQTT протокол ашиглан UbiDots руу илгээж байна. MQTT нь хүсэлт, хариултаас илүү нийтлэх, захиалах механизмыг дагаж мөрддөг. Энэ нь HTTP -ээс хурдан бөгөөд найдвартай. Энэ нь дараах байдлаар ажилладаг.

  • Мэдээлэгчээс мэдээлэл авах, мэдрэгчийн заалтыг нийтлэх, MQTT сэдвийг захиалах гэх мэт ажлыг төлөвлөхийн тулд бид Task Scheduler програмыг ашиглаж байна.
  • Нэгдүгээрт, Task Scheduler толгой файлуудыг оруулна уу.
  • Бид хоёр өөр хяналтын үйл ажиллагаатай холбоотой хоёр ажлыг төлөвлөсөн.

#тодорхойлох _TASK_TIMEOUT#оруулах

Хуваарьлагч ts;

// --------- Даалгавар ------------ // Даалгавар tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Даалгавар tWiFi (10* TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);

Даалгавар 1 нь мэдрэгчийн утгыг уншихад зориулагдсан бөгөөд энэ даалгавар 10 секундын хугацаа дуусах хүртэл 1 секундын турш ажиллана

  • Task1 хугацаа дуусахад бид орон нутгийн Wifi болон MQTT зуучлагчтай холбогдож байна.
  • Одоо 2 -р даалгавар идэвхжсэн бөгөөд бид 1 -р даалгаврыг идэвхгүй болгож байна

  • Даалгавар 2 нь мэдрэгчийн өгөгдлийг UbiDots MQTT брокерт нийтлэхэд зориулагдсан бөгөөд энэ ажил 20 секундын хугацаа дуусах хүртэл 20 секундын турш ажиллана.
  • Даалгавар2 хугацаа дуусахад 1 -р даалгавар дахин идэвхжиж, 2 -р идэвхгүй болно. Энд дахин бид шинэчилсэн утгыг авч байгаа бөгөөд процесс үргэлжилж байна.

I2C мэдрэгчийн өгөгдлийг уншиж байна

Бид утасгүй температур ба чийгшил мэдрэгчээс 29 байтын хүрээг авч байна. Энэ хүрээг температур, чийгшлийн бодит өгөгдлийг авахын тулд удирддаг

uint8_t өгөгдөл [29];

өгөгдөл [0] = Serial1.read (); саатал (k); // chck for start byte if (data [0] == 0x7E) {while (! Serial1.available ()); for (i = 1; i <29; i ++) {data = Serial1.read (); саатал (1); } if (өгөгдөл [15] == 0x7F) /////// дахин хүлээн авсан өгөгдөл зөв эсэхийг шалгахын тулд {if (өгөгдөл [22] == 1) //////// мэдрэгчийн төрлийг шалгаарай. зөв {

чийгшил = ((((өгөгдөл [24]) * 256) + өгөгдөл [25]) /100.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 = өгөгдөл [16];}

UbiDots MQTT API руу холбогдож байна

MQTT процессын толгой файлыг оруулна уу

#оруулах

үйлчлүүлэгчийн нэр, брокерийн хаяг, жетоны ID гэх мэт MQTT -ийн бусад хувьсагчдыг тодорхойлох (Бид токен ID -г EEPROM -с авч байна)

#тодорхойлох MQTT_CLIENT_NAME "ClientVBShightime123"

char mqttBroker = "things.ubidots.com";

char ачаа [100]; char сэдэв [150];

// жетоны ID хадгалах хувьсагч үүсгэх

String tokenId;

Мэдрэгчийн янз бүрийн өгөгдлийг хадгалах хувьсагч үүсгэх ба сэдвийг хадгалах char хувьсагч үүсгэх

#define VARIABLE_LABEL_TEMPF "tempF" // Хувьсагчийн шошгыг тодорхойлох #тодорхойлох VARIABLE_LABEL_TEMPC "tempC" // Хувьсагчийн шошгыг үнэлэх

char сэдэв1 [100]; char сэдэв2 [100]; char сэдэв3 [100];

өгөгдлийг дурдсан MQTT сэдвээр нийтлэх, ачаалал нь {"tempc": {утга: "tempData"}} шиг харагдах болно

sprintf (сэдэв1, "%s", ""); sprintf (topic1, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf (ачаалал, "%s", ""); // Ачааллын sprintf -ийг цэвэрлэнэ (ачаалал, "{"%s / ":", VARIABLE_LABEL_TEMPC); // sprintf утгыг нэмнэ (ачаалал, "%s {" утга / ":%s}", ачаалал, str_cTemp); // sprintf утгыг нэмнэ (ачаалал, "%s}", ачаалал); // толь бичгийн хаалт Serial.println (ачаалал) хаагддаг; Serial.println (client.publish (сэдэв1, ачаалал)? "Хэвлэгдсэн": "хэвлэгдээгүй");

// Бусад сэдвээр мөн адил хий

client.publish () нь өгөгдлийг UbiDots дээр нийтэлдэг

Алхам 5: Өгөгдлийг дүрслэн харуулах

Өгөгдлийг дүрслэн харуулах
Өгөгдлийг дүрслэн харуулах
Өгөгдлийг дүрслэн харуулах
Өгөгдлийг дүрслэн харуулах
Өгөгдлийг дүрслэн харуулах
Өгөгдлийг дүрслэн харуулах
  • Ubidots руу ороод данс руугаа нэвтэрнэ үү.
  • Дээд талд жагсаасан Өгөгдлийн таб дээрээс Хяналтын самбар руу очно уу.
  • Шинэ виджет нэмэхийн тулд "+" дүрс дээр дарна уу.
  • Жагсаалтаас виджет сонгоод хувьсагч болон төхөөрөмж нэмнэ үү.
  • Мэдрэгчийн өгөгдлийг янз бүрийн виджет ашиглан хяналтын самбар дээр дүрслэх боломжтой.

Алхам 6: Ерөнхий код

HTML болон ESP32 -ийн Over кодыг энэ GitHub репозитороос олж болно.

Зээл

  • ncd ESP32 таслах самбар.
  • ncd Утасгүй температур ба чийгшлийн мэдрэгч.
  • pubsubclient
  • UbiDots
  • Ажлын хуваарьлагч

Зөвлөмж болгож буй: