Mündəricat:

IBM Watson ESP32 ilə son nöqtə olaraq: 11 addım
IBM Watson ESP32 ilə son nöqtə olaraq: 11 addım

Video: IBM Watson ESP32 ilə son nöqtə olaraq: 11 addım

Video: IBM Watson ESP32 ilə son nöqtə olaraq: 11 addım
Video: IoT Project - Sending Sensor Readings from ESP32 to IBM Cloud/Watson 2024, Iyul
Anonim
Image
Image
ESP32 Pinout
ESP32 Pinout

Bu gün ESP32 ilə bir Endpoint cihazının necə qurulacağı və sonra bir bulud xidmətinə göndəriləcəyi ilə bağlı bir seriyanın ilk videosunu burada yerləşdirirəm. Bu xüsusi epizodda sizə IBM Watson üçün MQTT protokolundan istifadə edərək DHT22 sensorundan məlumat göndərməyin yollarını göstərəcəyəm.

Əvvəlcə IoT-də (Əşyaların İnterneti) istifadə olunan maşın-maşın protokolu olan MQTT-ni təqdim edəcəyik. Həm də bu protokoldan istifadə edərək temperatur və rütubət sensöründən məlumatlar göndərəcəyik və sonra bu məlumatların qrafikini bir veb səhifədə yoxlayacağıq.

Addım 1: ESP32 Pinout

Burada nümunəmizdə istifadə etdiyimiz ESP32 Pinoutunu qoydum. Bununla birlikdə, layihənin ESP8266 və hətta eyni mənbə kodu ilə işlədiyini aydınlaşdırmaq istəyirəm.

Addım 2: NodeMCU Pinout

NodeMCU Pinout
NodeMCU Pinout

Addım 3: MQTT

MQTT
MQTT

MQTT, IoT-də istifadə olunan maşından maşına protokoldur. Yüngül və sürətli olması üçün hazırlanmışdır. Bir cihazın maraqlandığınız xüsusi məlumatı olan bir mövzuya "abunə olduğu" və sonra bir cihaz bu mövzu ilə bağlı məlumatları dərc edəndə məlumatı aldığı bir abunə/nəşr sistemindən istifadə edir.

Bir server proqramı kimi, MQTT də proqram təminatına ehtiyac duyur. Buna Broker deyilir. Bu vəziyyətdə, IBM -in Bluemix IoT Xidmətindən istifadə edəcəyik. Bu xidmət son nöqtə testi üçün pulsuzdur.

Sonra, tətbiq tərəfində, yəni bir MQTT müştəri olaraq bir cib telefonu və ya tabletə sahib olmalıyıq. Cihazın yan tərəfi də var, bu da termometrli ESP tərəfidir. Bu, temperatur və rütubət məlumatlarını Bluemix -ə göndərir, sonra da bu məlumatları tətbiq tərəfinə göndərir.

Addım 4: Montaj

Məclis
Məclis

Dövrümüz, 3.3v və məlumat pin arasındakı 4.7k Ohm müqavimətçidən və ESP32 və ya NodeMCU -nun GPIO4 -ə qoşulmuş DHT22 -dən ibarətdir. Beləliklə, bu bizim son nöqtəmizdir.

Addım 5: Diaqram

Diaqram
Diaqram
Diaqram
Diaqram

Burada MQTT Yerli Brokerlə işləməyin bir neçə yolunu göstərirəm. İki diaqram modeli qoydum. Videoda, məsələn, bir qapı açmaq üçün Raspberry Pi istifadə edərək bir vəziyyətdən bəhs edirəm.

Yuxarıdakı şəkildə, inadkarlıqla yerli Brokerdən istifadə edən ilk arxitektura və aşağıda yalnız buludda brokerlə ünsiyyət quran ikinci bir arxitektura sahibik.

Diaqramda göstərildiyi kimi, sensorumuz temperatur və rütubət məlumatlarını IBM Watson -a göndərir. Yalnız qrafiklərdə göstərildiyi üçün IBM Watson -un bu vəziyyətdə məlumat yazmadığını vurğulamaq vacibdir. Bunun səbəbi, bugünkü nümunədə heç bir verilənlər bazası əməliyyatına toxunmayacağıq, ancaq son nöqtənin vəziyyətini göstərəcək Quickstart səhifəsinə (https://quickstart.internetofthings.ibmcloud.com/) daxil olmağı göstəririk. Sxem sadədir və məlumat göndərmək üçün WiFi istifadə edir.

Addım 6: Kitabxanalar

Arduino IDE -də, Sketch menyusuna gedin -> Kitabxanaya daxil et -> Kitabxanaları idarə et …

Açılan ekranda "DHT" axtarışına daxil olun və "DHT sensor kitabxanası" libini quraşdırın.

Sonra "PubSubClient" yazın və "PubSubClient" libini quraşdırın.

Addım 7: Temperatur və Rütubət Oxu Kitabxanası

Temperatur və Rütubət Oxu Kitabxanası
Temperatur və Rütubət Oxu Kitabxanası

Addım 8: MQTT Kitabxanası

MQTT Kitabxanası
MQTT Kitabxanası

Addım 9: MQTT.ino

Mənbə kodunu hansı ESP -nin istifadə edildiyini yoxlamaqla və müvafiq kitabxananı və WiFi -ni idxal etməklə başlayırıq. Hələ də MQTT Libs və Temperatur və Rütubət Sensorunu daxil edirik.

// Verifica qual ESP está sendo utilizado // e a import a a lib e wifi reportyor #if defined (ESP8266) #include #else #include #endif // Lib de MQTT #include // Sensor temperatura və ümid etmək #daxil edin

Sonra, aşağıdakıları təyin edirik: məlumatların təqdim edilməsi arasındakı müddət, istifadə ediləcək MQTT serveri, qrafikdəki çap məlumatları və ID. QUICK_START siminin necə olması lazım olduğunu da qeyd etdik.

// Intervalo entre os envios #INTERVAL 1000 -i təyin edin // SSID -ni əvəz edin #TesteESP -i təyin edin // "87654321" parolunu təyin edin // Server MQTT -ni təyin edin #MQTst_SERVER -i təyin edin.messaging.internetofthings.ibmcloud.com "// Necə deyərlər, heç bir şey etməzlər // heç bir iş görmədikləri üçün #define TOPIC_NAME" iot-2/evt/status/fmt/json "// Şəxsiyyət vəsiqəsi // QUICK_START inkişaf etdirmək üçün String QUICK_START = "d: faststart: arduino:";

Bu addımda unikal bir identifikator təyin edirik. Bu nümunədə, istifadə etdiyimiz cihazın MAC ünvanını istifadə edirik. Bu, QuickStart saytında identifikasiya rolunu oynayacaq. Burada, həmçinin Quickstart ID -ni cihazımızın ID -si ilə əlaqələndiririk.

// DEVICE_ID -in heç bir yeri yoxdur // MAC Ünvanı istifadə edilə bilər // istifadə etmək üçün heç bir şərt yoxdur // heç bir sayt tanımlanmır //https://quickstart.internetofthings.ibmcloud.com String DEVICE_ID = "240ac40e3fd0"; // Tez başlanğıc və ya əlaqələndirmə işlərinin aparılması // dispositivo const String CLIENT_ID = QUICK_START + DEVICE_ID;

Daha sonra MQTT və WiFi -ni, həmçinin temperatur və rütubət dəyərləri ilə əlaqəli obyektləri və dəyişənləri konfiqurasiya edirik.

// Wi -Fi müştəri ilə əlaqə qurmaq üçün MQTT -dən istifadə edən WiFi; // Cliente MQTT, bir url serveri, bir porta // WiFi PubSubClient müştərisi (MQTT_SERVER, 1883, wifiClient); // Müvəqqəti işlər uzun müddət davam edən LastPublishTime = 0; // İstifadəçi üçün hər hansı bir temperatur və ya DHT dht (4, DHT22); // Dəyişkənlik temperaturunun dəyişmə temperaturu = 0; // Dəyişikliklər üçün rütubət = 0;

MQTT.ino - quraşdırma

Quraşdırmada DHT -ni işə salacağıq və WiFi şəbəkəsinə və MQTT serverinə qoşulacağıq.

void setup () {Serial.begin (115200); // Incializamos o dht dht.begin (); // Wi -Fi qurulmasını tənzimləyinWiFi (); // MQTT connectMQTTServer serveri ilə əlaqə qurun (); }

MQTT.ino - döngə

Döngədə, IBM Watson -un qrafiki yaratmağı gözlədiyi mövzuda nəşr olunacaq Json yaratmaq üçün sensor məlumatlarını toplayırıq.

void loop () {// Tempos agora em milisegundos uzun zamandır = millis (); // İstəsəniz, indi (lastPublishTime> INTERVAL) {/atualizamos tempo em que ocorreu oúttimo enVio lastPublishTime = now; // OxumaqSensor () və ya temperatura ilə əlaqəli problemlər. Serial.print ("Mesajı yayımla:"); // Serverin mqtt String msg = createJsonString (); Serial.println (msg); // İstifadəçilərə heç bir xidmət göstərilmədiyi təqdirdə // müştəri.publish (TOPIC_NAME, msg.c_str ()); }}

MQTT.ino - Wi -Fi qurulması

Burada WiFi şəbəkəsinə qoşulmaqdan məsul bir funksiyamız var.

// WiFivoid setupWiFi () {Serial.println (); Serial.print ("Bağlanır"); Serial.print (SSID); // İstifadəçilərə kömək etmək üçün Wi -Fi.begin (SSID, PASSWORD); // Espera at a que que conexão com a reche seo installecida while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } // Serial.println ("") ilə əlaqə qurun; Serial.println ("WiFi bağlıdır"); }

MQTT.ino - qoşunMQTTServer

Bu addımda MQTT serverinə qoşulmaqdan məsul olan funksiyadan istifadə edirik.

// MQTTvoid connectMQTTServer () {Serial.println ("MQTT Server -ə qoşulur …") ilə əlaqəli cavablar. // Axtardığınız təqdirdə, əgər (client.connect (CLIENT_ID.c_str ()))) {// Serial.println ("bağlı") ilə əlaqə qurun; } başqa {// Serial.print ("error ="); Serial.println (client.state ()); }}

MQTT.ino - readSensor

İstilik və rütubət məlumatlarının oxunması bu funksiyada müəyyən edilir.

// Funksiya cavablandırıldıqdan sonra oxunuş sensoru () {şamandır dəyəri; // Faz a leitura da temperatura dəyəri = dht.readTemperature (); // Se o valor lido é válido if (! İsnan (dəyər)) {// Armazena o novo valor da temperatura temperatur = dəyər; } // Faz a leitura da umidade value = dht.readHumidity (); // Se v valor for válido if (! İsnan (dəyər)) {// Armazena o novo valor da umidade nem = dəyər; }}

MQTT.ino - createJsonString

Burada, oxunan məlumatlarla bir Json yaratmaqdan məsul olan bir funksiyamız var.

// Funksiyaların cavablandırılması // əmrlərin verilməsi String createJsonString () {String data = "{"; data+= "\" d / ": {"; data+= "\" temperatur / ":"; data+= String (temperatur); məlumatlar+= ","; data+= "\" rütubət / ":"; data+= String (rütubət); data+= "}"; data+= "}"; məlumatların qaytarılması; }

Addım 10: Qrafik

Qrafik
Qrafik
Qrafik
Qrafik

Sensor qrafikinə baxmaq üçün gedin

quickstart.internetofthings.ibmcloud.com saytına

Cihaz ID sahəsinə kodda təyin etdiyiniz DEVICE_ID daxil edin.

- Bu Cihaz ID -ni yalnız başqa bir şəxs tərəfindən göndərilən məlumatlar ilə ziddiyyətin qarşısını almaq üçün istifadə edilən unikal bir ID -yə dəyişdirmək vacibdir.

Nəhayət, şərtləri qəbul edin və Git düyməsini basın.

Bu layihədə son nöqtəmizi IBM Watson serverində sınadıq. Bu, Arduino proqramımızın platforma ilə düzgün ünsiyyət qurmasını və hesab yaratdığımız zaman göndərdiyimiz məlumatların bulud xidməti tərəfindən rəvan şəkildə alınmasını təmin edir.

Bu silsilədən gələcək bir videoda, sizə IBM Watson -a necə daxil olacağınızı, habelə Google və ya Amazon kimi bu və ya digər bulud xidmətinin məlumat bankına yazmağı göstərəcəyəm.

Addım 11: Fayllar

Faylları yükləyin:

PDF

MƏN YOX

Tövsiyə: