Мазмуну:

UbiDots-туташтыруу ESP32 жана бир нече сенсордук маалыматтарды жарыялоо: 6 кадам
UbiDots-туташтыруу ESP32 жана бир нече сенсордук маалыматтарды жарыялоо: 6 кадам

Video: UbiDots-туташтыруу ESP32 жана бир нече сенсордук маалыматтарды жарыялоо: 6 кадам

Video: UbiDots-туташтыруу ESP32 жана бир нече сенсордук маалыматтарды жарыялоо: 6 кадам
Video: Arduino Tutorial 28 - DHT11 Temperature Sensor with LCD | SunFounder's ESP32 IoT Learnig kit 2024, Июль
Anonim
UbiDots-ESP32 туташтыруу жана бир нече сенсордук маалыматтарды жарыялоо
UbiDots-ESP32 туташтыруу жана бир нече сенсордук маалыматтарды жарыялоо

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

2 -кадам: Туткун порталын түзүү

Туткун порталын түзүү
Туткун порталын түзүү
Туткун порталын түзүү
Туткун порталын түзүү
Туткун порталын түзүү
Туткун порталын түзүү

Туткундалган портал - бул жаңы туташкан колдонуучуларга тармак ресурстарына кеңири кирүү мүмкүнчүлүгү берилгенге чейин көрсөтүлүүчү веб баракча. Бул жерде биз DHCP менен Статикалык IP Орнотууларын тандоо үчүн үч веб баракчаны тейлеп жатабыз. IP дарегин ESPке эки жол менен аныктай алабыз.

  • 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 Web Server классы бул аттарды аргумент катары кабыл алат жана ушул аргументтерди колдонуп радио баскычтардын жообун алат
  • Эми жоопту түзмөккө жөнөтүү үчүн 'SUBMIT' баскычын киргизиңиз. Башка веб -баракчаларда бизде текст кутучалары бар.
  • Текст кутучасына атынын маанисин жана Киргизүү түрүн бериңиз жана "SUBMIT" жооп берүү үчүн тапшыруу баскычын кошуңуз.
  • Текст талаасынын мазмунун баштапкы абалга келтирүү үчүн 'RESET' баскычын түзүңүз.

3 -кадам: WiFi жана UbiDots Ишеним грамоталарын берүү

WiFi жана UbiDots грамоталарын берүү
WiFi жана UbiDots грамоталарын берүү

Негизги көйгөй WiFi грамоталарын башкарууда пайда болот. Бизде WiFiMulti китепканасы бар болсо да, биз бир нече SSIDди жана сырсөздү түзмөккө бере алабыз жана түзмөк жеткиликтүү тармакка туташат. Бирок, эгерде жеткиликтүү тармак WiFiMulti тизмесинде болбосо. ESP32 түзмөгүн дайыма күйгүзүү ишенимдүү чечим эмес.

Бул көйгөйдү чечүү үчүн, биз колдонуучу жеткиликтүү тармактын SSID жана Сырсөзүн тапшыра ала турган веб -баракчаны жайгаштырып жатабыз. Бул төмөнкүдөй иштейт.

  • Веб -баракча статикалык IPде же DHCP IPде туткун порталынан колдонуучу тарабынан тандалган
  • Бул веб -баракчада UIDDotsко түзмөктү туташтыруу үчүн SSID, сырсөз жана UBIDOTS токен идентификаторун киргизүү үчүн текст талаалары камтылган.
  • Кириш талааларына жергиликтүү WiFiңыздын SSID жана сырсөзүн киргизиңиз, UbiDotтун энбелгисин киргизиңиз жана тапшырууну киргизиңиз
  • Бул грамоталар ESP32нин EEPROM -де сакталган
  • 60 секунддан кийин Түзмөк APден автоматтык түрдө ажыратылат
  • Кийинки жолу сиз аппаратты күйгүзгөндө, колдонуучу бул процедураны аткаруунун кажети жок, түзмөк колдонуучунун грамоталарын EEPROMдон автоматтык түрдө алат жана сенсордун окуусун UbiDotsко жарыялоону улантат.

4 -кадам: 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 -тапшырма сенсордун маанисин окуу үчүн, бул тапшырма 1 секундага созулат, ал 10 сек убактысына жетет

  • Task1 мөөнөтү бүткөндө, биз жергиликтүү Wifi жана MQTT брокерине туташып жатабыз.
  • Эми 2 -тапшырма иштетилди жана биз 1 -тапшырманы өчүрүп жатабыз
  • 2 -тапшырма сенсордун маалыматын UbiDots MQTT брокерине жарыялоо үчүн, бул тапшырма 20 секундага чейин 20 секунд иштейт.
  • Task2 өз мөөнөтүнө жеткенде, Task 1 кайра иштетилет жана Task2 өчүрүлөт. Бул жерде дагы биз жаңыртылган баалуулукка ээ болуп жатабыз жана процесс уланууда.

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

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

uint8_t маалыматтары [29];

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

нымдуулук = (((((маалымат [24]) * 256) + маалымат [25]) /100.0); нымдуулук /=10.0; cTempint = ((((uint16_t) (маалыматтар [26]) << 8) | маалыматтар [27]); cTemp = (float) cTempint /100.0; cTemp /= 10.0; fTemp = cTemp * 1.8 + 32; fTemp /= 10.0; батарея = туш келди (100, 327); чыңалуу = батарея/100; nodeId = маалыматтар [16];}

UbiDots MQTT API'ге туташууда

MQTT процесси үчүн аталыш файлын кошуңуз

#кошуу

кардардын аты, брокердин дареги, токен идентификатору сыяктуу MQTT үчүн башка өзгөрмөлөрдү аныктаңыз (Биз токен идентификаторун EEPROMдан алып жатабыз)

#define 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" // 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ко жарыялайт

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

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

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

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

Кредиттер

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

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