Мазмуну:
- 1 -кадам: Аппараттык жана программалык камсыздоонун өзгөчөлүгү
- 2 -кадам: Зымсыз басым жана температура сенсорлору
- 3 -кадам: WiFiга туташуу
- 4 -кадам: ESP32 боюнча UbiDots орнотуу
- 5 -кадам: UbiDotsко сенсордук окууларды жарыялоо
- 6 -кадам: маалыматтарды визуалдаштыруу
- 7 -кадам: Жалпы код
Video: MQTT колдонуп зымсыз басым сенсорунун маалыматтарын жарыялоо: 7 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
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 ишеним грамоталарын сактоо жана IP жөндөөлөрү аркылуу сүзүү үчүн колдонобуз. Туткун порталына толук киришүү үчүн, сиз төмөндөгү көрсөтмөлөрдү аткарсаңыз болот.
Туткун порталы бизге Статикалык жана DHCP орнотууларын тандоо мүмкүнчүлүгүн берет. Жөн гана Статикалык IP, Subnet Mask, шлюз жана Wireless Sensor Gateway сыяктуу грамоталарды киргизиңиз, ошол IPде конфигурацияланат.
Веб -баракча жайгаштырылган, анда жеткиликтүү WiFi тармактары жана RSSI көрсөтүлгөн тизме бар. WiFi тармагын жана сырсөздү тандап, тапшырууну киргизиңиз. Ишеним грамоталары EEPROMда жана IP жөндөөсү SPIFFSте сакталат. Бул тууралуу көбүрөөк маалыматты бул нускамадан табууга болот.
4 -кадам: ESP32 боюнча UbiDots орнотуу
Бул жерде биз 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ко сенсордук окууларды жарыялоо
Ар кандай сенсордук маалыматтарды сактоо үчүн өзгөрмөлөрдү түзүңүз жана теманы сактоо үчүн 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
Сунушталууда:
MSP432 LaunchPad жана Python колдонуп, Температура Сенсорунун (TMP006) Жандуу Маалыматтарын Чийүү: 9 Кадам
MSP432 LaunchPad жана Python колдонуп, Температура Сенсорунун (TMP006) Жандуу Берилиштерин Түзүү: TMP006 - бул объект менен контакт түзбөстөн эле, анын температурасын өлчөөчү температура сенсору. Бул үйрөткүчтө биз Python аркылуу BoosterPackтен (TI BOOSTXL-EDUMKII) түз температура маалыматтарын түзөбүз
Зымсыз температура жана нымдуулук сенсорунун маалыматтарын Excelге жөнөтүү: 34 кадам
Зымсыз Температура жана Нымдуулук Сенсорунун Берилиштерин Excelге Жөнөтүү: Биз бул жерде NCDдин Температура жана Нымдуулук сенсорун колдонуп жатабыз, бирок кадамдар ncd продуктусу үчүн бирдей болуп калат, андыктан башка ncd зымсыз сенсорлоруңуз болсо, жанында байкоо жүргүзүңүз. Бул текстти токтотуу аркылуу сиз
Зымсыз титирөө жана температура сенсорунун маалыматтарын Node-RED аркылуу Excelге жөнөтүү: 25 кадам
Node-REDдин жардамы менен зымсыз титирөө жана температура сенсорунун маалыматтарын Excelге жөнөтүү: NCDдин узак аралыкка IoT өнөр жай зымсыз титирөө жана температура сенсорун киргизүү, 2 милге чейин зымсыз сетка тармагын колдонуу менен мактануу. Так 16 биттик титирөө жана температура сенсорун камтыган бул аппарат
IoT Long Range Зымсыз Температура жана Нымдуулук Сенсорунун маалыматтарын Google Баракка жөнөтүү: 39 кадам
IoT Long Range Wireless Temperature and Humidity Sensor маалыматтарын Google Sheetке жөнөтүү: Биз бул жерде NCDдин температурасы жана нымдуулугу сенсорун колдонобуз, бирок кадамдар ncd продуктусу үчүн бирдей, ошондуктан сизде башка ncd зымсыз сенсорлору болсо, байкап көрүңүз жанында. Бул текстти токтотуу аркылуу сиз
Arduino сенсорунун маалыматтарын иштетүүнү колдонуп MYsqlге сактаңыз: 6 кадам
Arduino сенсорунун маалыматтарын иштетүүнү колдонуу менен MYsqlге сактоо: Чынын айтсам, Arduino маалыматтарын MySQLге түз сактоо кыйын, ошондуктан Arduino IDEге көз карандылыкта мен Arduino IDEге окшош, бирок ар кандай колдонулушу бар Processing IDE колдонгом жана аны коддоого болот java.Note: Arduino сериялык монин иштетпеңиз