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

MQTT ашиглан утасгүй даралт мэдрэгчийн мэдээллийг нийтлэх: 7 алхам
MQTT ашиглан утасгүй даралт мэдрэгчийн мэдээллийг нийтлэх: 7 алхам

Видео: MQTT ашиглан утасгүй даралт мэдрэгчийн мэдээллийг нийтлэх: 7 алхам

Видео: MQTT ашиглан утасгүй даралт мэдрэгчийн мэдээллийг нийтлэх: 7 алхам
Видео: Arduino Nano, BME280 and SSD1306 OLED Weather Station 2024, Арваннэгдүгээр
Anonim
MQTT ашиглан утасгүй даралт мэдрэгчийн мэдээллийг нийтлэх
MQTT ашиглан утасгүй даралт мэдрэгчийн мэдээллийг нийтлэх

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
  • XCTU
  • Labview хэрэгсэл

Алхам 2: Утасгүй даралт ба температур мэдрэгч

Утасгүй даралт ба температур мэдрэгч
Утасгүй даралт ба температур мэдрэгч
Утасгүй даралт ба температур мэдрэгч
Утасгүй даралт ба температур мэдрэгч
Утасгүй даралт ба температур мэдрэгч
Утасгүй даралт ба температур мэдрэгч

Онцлог шинж чанарууд

  • Аж үйлдвэрийн зэрэг мэдрэгч урт хугацааны утасгүй даралтын температур мэдрэгч
  • Ажиллах хүрээ 0 -ээс 14000 мбар -40 ° -аас +85 ° C (-40 ° -аас 185 ° F)
  • Дотоод тооцооллын даралтын нарийвчлал 0.012-0.065 mbar
  • Тохируулах боломжтой дотоод тооцооны температурын нарийвчлал 0.002 -аас 0.012 ° C хүртэл
  • Нарийвчлал ± 2.5 мбар, ± 2 ° C
  • Үнэмлэхүй даралт, харьцангуй даралт ба харьцангуй өндрийн өөрчлөлтийн гаралт
  • Антентай 2 милийн шугамын хүрээ
  • Өндөр ашиг олох антентай 28 миль хүртэлх дээд зэргийн LOS хүрээ
  • Raspberry Pi, Microsoft® Azure®, Arduino болон бусад интерфэйсүүд
  • DigiMesh® ашиглан утасгүй сүлжээ

Labview Utility болон XCTU ашиглан утасгүй даралт ба температур мэдрэгчийг тохируулах

Мэдрэгч нь хоёр горимд ажилладаг

  • Тохиргооны горим: Pan ID, саатал, дахин оролдлого хийх тоо гэх мэтийг тохируулна уу.
  • Ажиллуулах горим: Бид төхөөрөмжийг Run горимд ажиллуулж байна. Эдгээр утгыг шинжлэхийн тулд бид Labview хэрэгслийг ашиглаж байна

Энэхүү Labview UI нь утгыг сайхан графикаар харуулдаг. Энэ нь одоогийн болон өнгөрсөн үеийн үнэ цэнийг харуулдаг. Та энэ линкээр орж Labview UI татаж авах боломжтой. Ажиллах горим руу очихын тулд буух хуудасны цэснээс Run дүрс дээр дарна уу.

Алхам 3: WiFi сүлжээнд холбогдох

WiFi сүлжээнд холбогдож байна
WiFi сүлжээнд холбогдож байна
WiFi сүлжээнд холбогдож байна
WiFi сүлжээнд холбогдож байна

Бид олзлогдсон порталыг ашиглан WiFi -ийн итгэмжлэлийг хадгалах, IP тохиргоогоор гүйлгэх болно. Олзлогдсон портал дээрх дэлгэрэнгүй танилцуулгыг авахын тулд та дараахь зааварчилгааг үзэх боломжтой.

Олзлогдсон портал нь Статик ба DHCP тохиргоонуудын хооронд сонголт хийх боломжийг бидэнд олгодог. Статик IP, дэд сүлжээний маск, гарц, утасгүй мэдрэгчийн гарц зэрэг итгэмжлэлийг оруулна уу.

Wi -Fi сүлжээ болон RSSI -ийг харуулсан жагсаалт бүхий вэб хуудсыг зохион байгуулж байна. WiFi сүлжээ, нууц үгээ сонгоод илгээхийг оруулна уу. Итгэмжлэлийг EEPROM -д, IP тохиргоог SPIFFS -д хадгалах болно. Энэ талаар дэлгэрэнгүйг энэхүү зааварчилгаанаас олж болно.

Алхам 4: ESP32 дээр UbiDots -ийг тохируулах

UbiDots -ийг ESP32 дээр тохируулах
UbiDots -ийг ESP32 дээр тохируулах

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

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

#define _TASK_TIMEOUT#include Scheduler 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 байтын хүрээг авч байна. Энэ хүрээг температур, чийгшлийн бодит өгөгдлийг авахын тулд өөрчилдөг

хэрэв (Цуваа1. боломжтой) ()

{өгөгдөл [0] = Serial1.read (); саатал (k); if (data [0] == 0x7E) {while (! Serial1.available ()); for (i = 1; i <36; i ++) {data = Serial1.read (); саатал (1); } if (өгөгдөл [15] == 0x7F) /////// дахин хүлээн авсан өгөгдөл зөв эсэхийг шалгахын тулд {хэрэв (өгөгдөл [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 ("Firmware хувилбар"); Serial.println (өгөгдөл [17]); 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.println ("\ n"); if (хүчдэл <1) {Serial.println ("Зайг солих цаг"); }}} else {for (i = 0; i <36; i ++) {Serial.print (өгөгдөл ); Serial.print (","); саатал (1); }}}}

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

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

#оруулах

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

#define TOKEN "BBFF-**********************************" // Таны Ubidots TOKEN#тодорхойлох MQTT_CLIENT_NAME "****************************"

char mqttBroker = "things.ubidots.com";

ачааны ачаалал [100]; char сэдэв [150]; // жетоны ID токеныг хадгалах хувьсагч үүсгэх

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

Мэдрэгчийн уншилтыг UbiDots дээр нийтлэх
Мэдрэгчийн уншилтыг UbiDots дээр нийтлэх

Өөр өөр мэдрэгчийн өгөгдлийг хадгалах хувьсагч үүсгэх ба сэдвийг хадгалах char хувьсагч үүсгэх

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

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 дээр нийтэлдэг

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

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

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

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

Зээл

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

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