Mundarija:

Oxirgi nuqta sifatida ESP32 bilan IBM Watson: 11 qadam
Oxirgi nuqta sifatida ESP32 bilan IBM Watson: 11 qadam

Video: Oxirgi nuqta sifatida ESP32 bilan IBM Watson: 11 qadam

Video: Oxirgi nuqta sifatida ESP32 bilan IBM Watson: 11 qadam
Video: Управление 32 серводвигателями с PCA9685 и ESP32 - V4 2024, Noyabr
Anonim
Image
Image
ESP32 pinout
ESP32 pinout

Men bugun bu erda ESP32 bilan Endpoint qurilmasini qanday o'rnatish va keyin uni bulut xizmatiga yuborish bo'yicha ketma -ket birinchi videoni joylashtiraman. Bu epizodda men sizga IBT Watson uchun MQTT protokoli yordamida DHT22 sensoridan qanday ma'lumot yuborish kerakligini ko'rsataman.

Biz birinchi navbatda MQTT-ni joriy qilamiz, bu IoT (Internet of Things) da ishlatiladigan mashinadan mashinaga protokoli. Biz, shuningdek, ushbu protokol yordamida harorat va namlik sensori ma'lumotlarini yuboramiz, so'ngra veb -sahifada ushbu ma'lumotlar ko'rsatilgan grafikni tekshiramiz.

1 -qadam: ESP32 pinout

Men bu erda bizning misolimizda foydalanadigan ESP32 pinoutini joylashtirdim. Shunga qaramay, men shuni aytmoqchimanki, loyiha ESP8266 va hatto manba kodi bilan ham ishlaydi.

2 -qadam: NodeMCU pinout

NodeMCU pinout
NodeMCU pinout

3 -qadam: MQTT

MQTT
MQTT

MQTT-bu IoTda ishlatiladigan mashinadan mashinaga protokoli. U engil va tez bo'lishi uchun yaratilgan. U obuna/nashr qilish tizimidan foydalanadi, bu erda qurilma sizni qiziqtirgan aniq ma'lumotga ega bo'lgan mavzuga "obuna bo'ladi", so'ngra qurilma ushbu mavzuga oid ma'lumotlarni e'lon qilganda ma'lumot oladi.

Server dasturi singari, MQTT ham dasturiy ta'minotga muhtoj. Bunga broker deyiladi. Bunday holda, biz IBM Bluemix IoT xizmatidan foydalanamiz. Xizmat so'nggi nuqta sinovlari uchun bepul.

Keyin, bizda Ilova tomoni, ya'ni MQTT mijozi bo'lgan uyali telefon yoki planshet bo'lishi kerak. Shuningdek, bizda qurilma tomoni bor, bu termometrli ESP tomoni. Bu Bluemix -ga harorat va namlik ma'lumotlarini yuboradi, so'ngra bu ma'lumotlarni dastur tomoniga yuboradi.

4 -qadam: yig'ish

O'rnatish
O'rnatish

Bizning sxemamiz 3.3v va ma'lumotlar pimi orasidagi 4.7k Ohmli rezistordan, shuningdek ESP32 yoki NodeMCU GPIO4 ga ulangan DHT22dan iborat. Shunday qilib, bu bizning so'nggi nuqta.

5 -qadam: diagramma

Diagramma
Diagramma
Diagramma
Diagramma

Men bu erda MQTT Local Broker bilan ishlashning bir necha usullarini ko'rsataman. Men ikkita diagramma modelini joylashtirdim. Videoda men, masalan, darvozani ochish uchun Raspberry Pi yordamida vaziyat haqida gapiraman.

Yuqoridagi rasmda bizda mahalliy Brokerni ishlatadigan birinchi arxitektura, ikkinchisida esa faqat bulutdagi broker bilan aloqa o'rnatiladi.

Diagrammada ko'rsatilgandek, bizning sensorimiz harorat va namlik ma'lumotlarini IBM Watsonga yuboradi. Shuni ta'kidlash kerakki, IBM Watson bu holatda ma'lumotlarni yozmaydi, chunki u faqat grafikda ko'rsatiladi. Buning sababi shundaki, biz bugungi misolda ma'lumotlar bazasi operatsiyalari bilan shug'ullanmaymiz, lekin faqat Oxirgi nuqta holatini ko'rsatadigan Quickstart sahifasiga kirishni ko'rsatamiz (https://quickstart.internetofthings.ibmcloud.com/). Sxema oddiy va ma'lumotlarni uzatish uchun WiFi -dan foydalanadi.

6 -qadam: kutubxonalar

Arduino IDE -da Sketch menyusiga o'ting -> Kutubxonani qo'shish -> Kutubxonalarni boshqarish …

Ochilgan ekranda "DHT" qidiruviga kiring va "DHT sensor kutubxonasi" libini o'rnating.

Keyin "PubSubClient" yozing va "PubSubClient" libini o'rnating.

7 -qadam: Harorat va namlik o'qish kutubxonasi

Harorat va namlik o'qish kutubxonasi
Harorat va namlik o'qish kutubxonasi

8 -qadam: MQTT kutubxonasi

MQTT kutubxonasi
MQTT kutubxonasi

9 -qadam: MQTT.ino

Biz manba kodini qaysi ESP ishlatilishini tekshirish va tegishli kutubxona va WiFi -ni import qilishdan boshlaymiz. Biz hali ham MQTT Libs va harorat va namlik sensori.

// ESP -ni tekshirish kerakmi yoki yo'qmi wifi muxbiri #agar aniqlangan bo'lsa (ESP8266) #include #else #include #endif // Lib de MQTT #include // Sensor de temperatura e umidade #include

Keyin biz quyidagilarni aniqlaymiz: ma'lumotlarni yuborish oralig'i, ishlatiladigan MQTT serveri, grafikdagi bosma ma'lumot va identifikator. QUICK_START qatori qanday bo'lishi kerakligini ham ko'rsatdik.

// Intervalo entre os envios #INTERVAL 1000 ni aniqlang // SSID -ni o'zgartiring #SSE "TesteESP" ni belgilang // "87654321" parolini aniqlang // MQTT serverini belgilang #MQTst_SERVER -ni aniqlang.messaging.internetofthings.ibmcloud.com "// Noma'lum vazifalarni bajarish uchun hech qanday imkoniyat yo'q // bu erda hech qanday ma'lumot yo'q # #TOPIC_NAME" iot-2/evt/status/fmt/json "// identifikatori // QUICK_START aniqlandi, bu String QUICK_START = "d: tez boshlanish: arduino:";

Ushbu bosqichda biz yagona identifikatorni aniqlaymiz. Bu misolda biz foydalanayotgan qurilmaning MAC manzilidan foydalanamiz. Bu QuickStart saytida identifikator bo'lib xizmat qiladi. Bu erda biz Quickstart identifikatorini qurilmamiz identifikatori bilan bog'laymiz.

// DEVICE_ID sozlamalari yo'q, chunki u MAC manzili uchun javobgardir. = "240ac40e3fd0"; // Tez ishga tushirish buyrug'ini bajaring // dispositivo const String CLIENT_ID = QUICK_START + DEVICE_ID;

Keyin biz MQTT va WiFi -ni, shuningdek, harorat va namlik qiymatlari bilan bog'liq ob'ektlar va o'zgaruvchilarni sozlaymiz.

// Wi -Fi mijozlari Wi -Fi bilan aloqa o'rnatish uchun MWTT -ni ishlatadilar; // MQTT mijozi, url -server serveri, Wi -Fi PubSubClient mijozi // mijoz (MQTT_SERVER, 1883, wifiClient); // Maqsad juda uzoq davom etadi LastPublishTime = 0; // DHT dht (4, DHT22) va haroratning o'zgarishi; // Haroratning o'zgaruvchan o'zgaruvchan harorati = 0; // Havo namligi = 0;

MQTT.ino - sozlash

O'rnatishda biz DHT -ni ishga tushiramiz va WiFi tarmog'i va MQTT serveriga ulanamiz.

void setup () {Serial.begin (115200); // Incializamos yoki dht dht.begin (); // Wi -Fi ulanishini sozlash uchun Wi -Fi (); // MQTT connectMQTTServer serveri bilan aloqa o'rnatish (); }

MQTT.ino - pastadir

Loop -da biz IBM Watson grafikni yaratishni kutayotgan mavzuda chop etiladigan Jsonni yaratish uchun sensor ma'lumotlarini yig'amiz.

void loop () {// Tempos agora em milisegundos allaqachon = millis (); // Seo tempo desde o último envio for maior que o intervalo de envio if (now - lastPublishTime> INTERVAL) {// Atualizamos o tempo em que ocorreu o ultimo envio lastPublishTime = now; // Fazemos a leitura da temperatura e umidade readSensor (); Serial.print ("Xabarni chop etish:"); // Criamos yoki server server mqtt String msg = createJsonString (); Serial.println (msg); // Ochiq havola qilinmagan mijozlar uchun ochiq xizmatlar // mijozlar.publish (TOPIC_NAME, msg.c_str ()); }}

MQTT.ino - Wi -Fi -ni sozlash

Bu erda biz Wi -Fi tarmog'iga ulanish uchun javobgar funktsiyaga egamiz.

// WiFivoid setupWiFi () {Serial.println () funktsiyasining javoblari; Serial.print ("Ulanish"); Serial.print (SSID); // Mana o esp se conectar à rede através // Wi -Fi.begin (SSID, PASSWORD); // Espera at a que a conexão com a reche seecnecelecida while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } // Seggou aqui é porque conectou Serial.println (""); Serial.println ("Wi -Fi ulangan"); }

MQTT.ino - ulanishMQTTServer

Ushbu bosqichda biz MQTT serveriga ulanish uchun javob beradigan funktsiyadan foydalanamiz.

// MQTTvoid serveri bilan aloqa o'rnatish uchun javob berish () {Serial.println ("MQTT serveriga ulanish …"); // Bilasizmi, agar (client.connect (CLIENT_ID.c_str ()))) {// Serial.println ("ulangan") ni tanlang; } else {// Serial.print xato ("xato ="); Serial.println (client.state ()); }}

MQTT.ino - readSensor

Harorat va namlik ma'lumotlarini o'qish bu funksiyada aniqlanadi.

// Funksiyalarning javoblari, o'qish sensori () {temperatura va umidsizlik void readSensor () {float qiymati; // Faz a leitura da temperatura qiymati = dht.readTemperature (); // Se o valor lido é válido if (! Isnan (qiymat)) {// Armazena o novo valor da temperatura harorat = qiymat; } // Faz a leitura da umidade qiymati = dht.readHumidity (); // Se o valor for válido if (! Isnan (qiymat)) {// Armazena o novo valor da umidade namlik = qiymat; }}

MQTT.ino - createJsonString

Bu erda biz o'qilgan ma'lumotlar bilan Json yaratish uchun javobgar funktsiyaga egamiz.

// Funksiya bo'yicha javoblar // javoblar String createJsonString () {String data = "{"; ma'lumotlar+= "\" d / ": {"; ma'lumotlar+= "\" harorat / ":"; ma'lumotlar+= String (harorat); ma'lumotlar+= ","; ma'lumotlar+= "\" namlik / ":"; ma'lumotlar+= String (namlik); ma'lumotlar+= "}"; ma'lumotlar+= "}"; ma'lumotlarni qaytarish; }

10 -qadam: Grafik

Grafik
Grafik
Grafik
Grafik

Sensor grafigini ko'rish uchun o'ting

quickstart.internetofthings.ibmcloud.com saytiga

Qurilma identifikatori maydoniga kodda aniqlagan DEVICE_ID -ni kiriting.

- Bu qurilma identifikatorini boshqa shaxs yuborgan ma'lumotlarga zid kelmaslik uchun ishlatiladigan yagona identifikatorga o'zgartirish juda muhim.

Nihoyat, shartlarni qabul qiling va Go tugmasini bosing.

Ushbu loyihada biz IBM Watson serverida so'nggi nuqtamizni sinab ko'rdik. Bu bizning Arduino dasturimiz platforma bilan to'g'ri aloqada bo'lishini va agar biz hisob yaratadigan bo'lsak, biz yuborgan ma'lumotlarni bulut xizmati muammosiz qabul qilishini ta'minlaydi.

Bu ketma -ket keladigan videoda men sizga IBM Watson -ga qanday kirishni ko'rsataman, shuningdek Google yoki Amazon kabi bu yoki boshqa bulutli xizmatlarning ma'lumotlar bankiga yozaman.

11 -qadam: fayllar

Fayllarni yuklab oling:

PDF

INO

Tavsiya: