Мазмуну:

MQTT колдонуп зымсыз басым сенсорунун маалыматтарын жарыялоо: 7 кадам
MQTT колдонуп зымсыз басым сенсорунун маалыматтарын жарыялоо: 7 кадам

Video: MQTT колдонуп зымсыз басым сенсорунун маалыматтарын жарыялоо: 7 кадам

Video: MQTT колдонуп зымсыз басым сенсорунун маалыматтарын жарыялоо: 7 кадам
Video: ESP8STP-02 Степпер с ESP8266 D1 Mini NodeMCU через WiFi под любым углом 2024, Декабрь
Anonim
MQTTди колдонуу менен зымсыз басым сенсорунун маалыматтарын жарыялоо
MQTTди колдонуу менен зымсыз басым сенсорунун маалыматтарын жарыялоо

ESP32 andESP 8266 IoT тармагында абдан тааныш SoC. Бул IoT долбоорлору үчүн жакшы нерсе. ESP 32 - интеграцияланган WiFi жана BLE менен түзмөк. Жөн гана SSID, сырсөзүңүздү жана IP конфигурацияңызды бериңиз жана нерселерди булутка интеграциялаңыз. Бул жерде, биз IoT платформасы, MQTT, туткун порталдары сыяктуу IoTтин кээ бир негизги шарттары жөнүндө ойлонобуз.

  • IoT архитектурасы түзмөктү булутка салуу үчүн камтылган түзмөк жана IoT платформасынан турат. Бул жерде сенсордук маалыматтарды визуалдаштыруу үчүн UbiDots IoT платформасын колдонуп жатабыз.
  • IP жөндөөлөрүн жана Колдонуучунун грамоталарын башкаруу колдонуучунун баш оорусу болушу мүмкүн. Колдонуучу WiFi грамоталарын өзгөрткүсү келсе эмне болот? Колдонуучу DHCP/Статикалык IP жөндөөлөрүн которгусу келсе, эмне кылыш керек? ESP32 ар дайым жаркырап турушу ишенимдүү эмес, ал тургай бул көйгөйлөрдү чечүү эмес. Ошентип, биз WiFi ишеним грамоталарын жана башка конфигурацияларын сактоо үчүн туткун порталынан өтөбүз.
  • MQTT азыр IoT дүйнөсүндө өтө кеңири таралган терминге айланып баратат. ал тез, күчтүү жана арык архитектурадан улам жарыялоо жана жазылуу боюнча сурам жана жооптордон (HTTP) ашып кетти.

Бул жерде бул көрсөтмөдө биз көрсөтөбүз.

  • Captive Portal аркылуу WiFi жана MQTT грамоталарын берүү.
  • UbiDotsко бир нече сенсордук маалыматтарды жарыялоо жана жазылуу.
  • Зымсыз басым жана температура сенсорунан сенсор маалыматын окуу
  • ESP32ден веб формасын хостинг.
  • SPIFFS ESP32ден окуу жана жазуу.

1 -кадам: Аппараттык жана программалык камсыздоонун өзгөчөлүгү

Аппараттык мүнөздөмө

  • ESP32 WiFi/BLE
  • Зымсыз басым жана температура сенсору

Программалык камсыздоонун өзгөчөлүгү

  • Arduino IDE
  • XCTU
  • Labview Utility

2 -кадам: Зымсыз басым жана температура сенсорлору

Зымсыз басым жана температура сенсорлору
Зымсыз басым жана температура сенсорлору
Зымсыз басым жана температура сенсорлору
Зымсыз басым жана температура сенсорлору
Зымсыз басым жана температура сенсорлору
Зымсыз басым жана температура сенсорлору

Өзгөчөлүктөрү

  • Өнөр жай баа сенсор Long Range зымсыз басым температурасы сенсор
  • Иштөө диапазону 0дөн 14000 мбарга чейин -40 ° дан +85 ° Cге чейин (-40 ° дан 185 ° F чейин)
  • Configurable Ички эсептөө басымы токтому 0.012 0.065 mbar
  • Конфигурациялануучу ички эсептөө температурасы 0.002ден 0.012 ° Сге чейин
  • Тактык ± 2,5 мбар, ± 2 ° С
  • Абсолюттук басым, салыштырмалуу басым жана салыштырмалуу бийиктиктин өзгөрүшү
  • Борт антеннасы менен 2 миль аралыкта
  • Жогорку кирешелүү антенналар менен 28 милге чейинки LOS диапазону
  • Raspberry Pi, Microsoft® Azure®, Arduino жана башкалар үчүн интерфейс
  • Wireless Mesh Networking DigiMesh® аркылуу

Labview Utility жана XCTU аркылуу зымсыз басым жана температура сенсорун конфигурациялоо

Сенсор эки режимде иштейт

  • Конфигурация режими: Pan ID, кечиктирүү, кайталоолордун санын ж.
  • Иштөө режими: Биз аппаратты Run режиминде иштетип жатабыз. Жана бул баалуулукту талдоо үчүн биз Labview Utility колдонуп жатабыз

Бул Labview UI жакшы графиктердеги баалуулуктарды көрсөтөт. Бул учурдагы жана мурунку баалуулуктарды көрсөтөт. Labview UI жүктөө үчүн бул шилтемеге кирсеңиз болот. иштетүү режимине өтүү үчүн конуу баракчасынын менюсунан Чуркоо сүрөтчөсүн басыңыз.

3 -кадам: WiFiга туташуу

WiFiга туташууда
WiFiга туташууда
WiFiга туташууда
WiFiга туташууда

Биз туткундап калган порталды WiFi ишеним грамоталарын сактоо жана IP жөндөөлөрү аркылуу сүзүү үчүн колдонобуз. Туткун порталына толук киришүү үчүн, сиз төмөндөгү көрсөтмөлөрдү аткарсаңыз болот.

Туткун порталы бизге Статикалык жана DHCP орнотууларын тандоо мүмкүнчүлүгүн берет. Жөн гана Статикалык IP, Subnet Mask, шлюз жана Wireless Sensor Gateway сыяктуу грамоталарды киргизиңиз, ошол IPде конфигурацияланат.

Веб -баракча жайгаштырылган, анда жеткиликтүү WiFi тармактары жана RSSI көрсөтүлгөн тизме бар. WiFi тармагын жана сырсөздү тандап, тапшырууну киргизиңиз. Ишеним грамоталары EEPROMда жана IP жөндөөсү SPIFFSте сакталат. Бул тууралуу көбүрөөк маалыматты бул нускамадан табууга болот.

4 -кадам: ESP32 боюнча UbiDots орнотуу

UbiDotsту ESP32де орнотуу
UbiDotsту ESP32де орнотуу

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

  • Биз сенсорлордон маалыматтарды алуу, сенсордун окуусун жарыялоо, MQTT темасына жазылуу сыяктуу тапшырманы пландаштыруу үчүн Task Scheduler колдонобуз.
  • Биринчиден, Task Scheduler аталыш файлдарын кошуңуз, ал мисал жана милдеттерди графикке киргизет.
  • Биз эки башка контролдук операцияга таандык эки тапшырманы пландаштырдык.

#define _TASK_TIMEOUT#камтыйт 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 секунд иштейт.
  • Task2 өз мөөнөтүнө жеткенде, Task 1 кайра иштетилет жана Task2 өчүрүлөт. Бул жерде дагы биз жаңыртылган баалуулукка ээ болуп жатабыз жана процесс уланууда.

I2C сенсорунун маалыматтарын окуу

Биз зымсыз температура жана нымдуулук сенсорлорунан 29 байттык кадр алып жатабыз. Бул кадр чыныгы температура жана нымдуулук маалыматын алуу үчүн башкарылган

if (Serial1.available ())

{data [0] = Serial1.read (); кечигүү (k); if (data [0] == 0x7E) {while (! Serial1.available ()); for (i = 1; i <36; i ++) {data = Serial1.read (); кечигүү (1); } if (data [15] == 0x7F) /////// resive data туура экендигин текшерүү үчүн {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 ("Delta Altitude:"); 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 процесси үчүн аталыш файлын кошуңуз

#кошуу

кардардын аты, брокердин дареги, токен 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" // Degine VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "humid" // Assing

char topic1 [100];

char topic2 [100]; char topic3 [100];

маалыматтарды MQTT темасына жарыялоо, жүктөм {"tempc": {value: "tempData"}} окшойт

sprintf (theme1, "%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 (topic1, payload)? "Published": "жарыяланбаган"); // Башка темада да ушундай кылыңыз

client.publish () маалыматтарды UbiDotsко жарыялайт

6 -кадам: маалыматтарды визуалдаштыруу

Берилиштерди визуалдаштыруу
Берилиштерди визуалдаштыруу
  • Ubidotsко барып, каттоо эсебиңизге кириңиз.
  • Жогорку панелдеги Дайындар өтмөгүнөн Башкаруу тактасына өтүңүз.
  • Эми жаңы виджеттерди кошуу үчүн "+" белгисин басыңыз.
  • Тизмеден виджет тандап, өзгөрмөнү жана түзмөктөрдү кошуңуз.
  • Сенсордун маалыматтары ар кандай виджеттерди колдонуу менен панелде чагылдырылышы мүмкүн.

7 -кадам: Жалпы код

HTML жана ESP32 үчүн Over кодун бул GitHub репозиторийинен тапса болот.

Кредиттер

  • ncd ESP32 сынык тактасы.
  • ncd Зымсыз басым жана температура сенсорлору
  • pubsubclient
  • UbiDots
  • Task Scheduler

Сунушталууда: