فهرست مطالب:

IBM واتسون با ESP32 به عنوان نقطه پایانی: 11 مرحله
IBM واتسون با ESP32 به عنوان نقطه پایانی: 11 مرحله

تصویری: IBM واتسون با ESP32 به عنوان نقطه پایانی: 11 مرحله

تصویری: IBM واتسون با ESP32 به عنوان نقطه پایانی: 11 مرحله
تصویری: IBM Watson - How It Works 2024, نوامبر
Anonim
Image
Image
ESP32 Pinout
ESP32 Pinout

من امروز اولین ویدئوی مجموعه ای را درباره نحوه نصب دستگاه Endpoint با ESP32 و سپس ارسال آن به سرویس ابری در اینجا ارسال می کنم. در این قسمت خاص ، نحوه ارسال اطلاعات از حسگر DHT22 با استفاده از پروتکل MQTT برای IBM Watson را به شما نشان خواهم داد.

ما ابتدا MQTT را معرفی می کنیم که یک پروتکل ماشین به ماشین است که در اینترنت اشیا (اینترنت اشیا) استفاده می شود. ما همچنین داده های حسگر دما و رطوبت را با استفاده از این پروتکل ارسال می کنیم و سپس نمودار را با این داده ها در یک صفحه وب بررسی می کنیم.

مرحله 1: ESP32 Pinout

من Pinout ESP32 را که در مثال خود استفاده می کنیم در اینجا قرار دادم. با این حال ، من می خواهم روشن کنم که پروژه با ESP8266 و حتی با همان کد منبع کار می کند.

مرحله 2: NodeMCU Pinout

NodeMCU Pinout
NodeMCU Pinout

مرحله 3: MQTT

MQTT
MQTT

MQTT یک پروتکل ماشین به ماشین است که در اینترنت اشیا استفاده می شود. سبک وزن و سریع طراحی شده است. از یک سیستم اشتراک/انتشار استفاده می کند ، جایی که دستگاهی در یک موضوع با اطلاعات خاص مورد علاقه شما "مشترک" می شود ، و سپس هر زمان که یک دستگاه اطلاعات مربوط به این موضوع را منتشر می کند ، اطلاعات را دریافت می کند.

مانند یک برنامه سرور ، MQTT به نرم افزار نیاز دارد. به این کارگزار می گویند. در این مورد خاص ، ما از سرویس IoM Bluemix IoT استفاده خواهیم کرد. این سرویس برای آزمایش نقطه پایانی رایگان است.

در مرحله بعد ، ما باید یک تلفن همراه یا رایانه لوحی با قسمت Application داشته باشیم ، یعنی به عنوان یک مشتری MQTT. ما همچنین قسمت Device را داریم که سمت ESP با دماسنج است. این اطلاعات دما و رطوبت را به Bluemix ارسال می کند ، و سپس این اطلاعات را به قسمت برنامه ارسال می کند.

مرحله 4: مونتاژ

مونتاژ
مونتاژ

مدار ما شامل یک مقاومت 4.7k اهم بین 3.3v و پین داده ، به علاوه یک DHT22 متصل به GPIO4 یک ESP32 یا NodeMCU است. بنابراین ، این نقطه پایانی ما است.

مرحله 5: نمودار

نمودار
نمودار
نمودار
نمودار

من در اینجا چندین روش کار با کارگزار محلی MQTT را نشان می دهم. من دو مدل نمودار قرار دادم. در ویدیو ، من در مورد وضعیتی استفاده می کنم که برای مثال از Raspberry Pi برای باز کردن دروازه استفاده می شود.

در تصویر بالا ، ما اولین معماری را داریم که از یک Broker محلی با پشتکار استفاده می کند ، و یک معماری دوم در زیر آن تنها با بروکر در ابر ارتباط برقرار می کند.

همانطور که در نمودار نشان داده شده است ، سنسور ما سپس داده های دما و رطوبت را به IBM Watson ارسال می کند. مهم است که تأکید کنیم که IBM واتسون در این مورد داده ها را نمی نویسد ، زیرا فقط در نمودارها نشان داده می شود. این به این دلیل است که ما در مثال امروز به هیچ یک از عملیات پایگاه داده نمی پردازیم ، بلکه فقط دسترسی به صفحه Quickstart (https://quickstart.internetofthings.ibmcloud.com/) را نشان می دهیم ، که وضعیت Endpoint را نمایش می دهد. این طرح ساده است و از WiFi برای ارسال داده استفاده می کند.

مرحله ششم: کتابخانه ها

در Arduino IDE ، به منوی Sketch بروید -> شامل کتابخانه -> مدیریت کتابخانه ها…

در صفحه باز شده ، عبارت "DHT" را وارد کرده و lib "libraria sensor DHT" را نصب کنید.

سپس ، "PubSubClient" را تایپ کرده و lib "PubSubClient" را نصب کنید.

مرحله 7: کتابخانه خواندن دما و رطوبت

کتابخانه خواندن دما و رطوبت
کتابخانه خواندن دما و رطوبت

مرحله 8: کتابخانه MQTT

کتابخانه MQTT
کتابخانه MQTT

مرحله 9: MQTT.ino

ما کد منبع را با بررسی اینکه کدام ESP استفاده می شود و وارد کردن کتابخانه و WiFi مربوطه شروع می کنیم. ما هنوز MQTT Libs و سنسور دما و رطوبت را شامل می شویم.

// Verifica qual ESP está sendo utilizado // e import a lib e wifirespondente #if defined (ESP8266) #include #else #include #endif // Lib de MQTT #include // Lib do sensor de temperatura e umidade #include

در مرحله بعد ، موارد زیر را تعریف می کنیم: فاصله بین ارسال داده ها ، سرور MQTT مورد استفاده ، اطلاعات چاپ روی نمودار و شناسه. ما همچنین اشاره کردیم که رشته QUICK_START چگونه باید باشد.

// Intervalo entre os envios #define INTERVAL 1000 // Substitua pelo SSID da sua rede #define SSID "TesteESP" // Substitua pela senha da sua rede #define PASSWORD "87654321" // Server MQTT que iremos utlizar #define MQTT_S.messaging.internetofthings.ibmcloud.com "// Nome do tópico que devemos enviar os dados // para que eles apareçam nos gráficos #depine TOPIC_NAME" iot-2/evt/status/fmt/json "// ID que usaremos para conectar // QUICK_START deve permanecer como está const String QUICK_START = "d: quickstart: arduino:"؛

در این مرحله ، ما یک شناسه منحصر به فرد تعریف می کنیم. در این مثال ، ما از MAC Address دستگاهی که استفاده می کنیم استفاده می کنیم. این به عنوان شناسه در سایت QuickStart عمل می کند. در اینجا ، ما Quickstart ID را با شناسه دستگاه خود متصل می کنیم.

// No DEVICE_ID você deve mudar para um id único // Aqui nesse exemplo utilisamos o MAC Address // do dispitivo que estamos utilisando // Servirá como identificação no site //https://quickstart.internetofthings.ibmcloud.com const String DEVICE_ = "240ac40e3fd0"؛ // Concatemos o id do quickstart com o id do nosso // dispositivo const String CLIENT_ID = QUICK_START + DEVICE_ID؛

سپس MQTT و WiFi و همچنین اشیاء و متغیرهای مربوط به مقادیر دما و رطوبت را پیکربندی می کنیم.

// مشتری مشتری WiFi یا MQTT برای استفاده از conectarWiFiClient wifiClient ؛ // Cliente MQTT، passamos a url do server، porta // e یا cliente WiFi PubSubClient client (MQTT_SERVER، 1883، wifiClient) ؛ // Tempo em que o último envio foi feito long lastPublishTime = 0؛ // Objeto que realiza a leitura da temperatura e da umidade DHT dht (4، DHT22)؛ // Variável para guardarmos o valor da temperatura float temperature = 0؛ // رطوبت شناور Variável para guardarmos o valor da umidade = 0؛

MQTT.ino - راه اندازی

در Setup ، DHT را راه اندازی می کنیم و در شبکه WiFi و سرور MQTT متصل می شویم.

void setup () {Serial.begin (115200)؛ // Incializamos o dht dht.begin ()؛ // Conectamos de rede WiFi setupWiFi ()؛ // Conectamos ao server MQTT connectMQTTServer ()؛ }

MQTT.ino - حلقه

در حلقه ، ما داده های حسگر را برای ایجاد Json جمع آوری می کنیم که در موضوعی که IBM Watson انتظار دارد نمودار را منتشر کند ، منتشر می شود.

void loop () {// Tempos agora em milisegundos long now = millis ()؛ // Se o tempo desde o último envio for maior que o intervalo de envio if (now - lastPublishTime> INTERVAL) {// Atualizamos o tempo em que ocorreu o último envio lastPublishTime = now؛ // Fazemos a leitura da temperatura e umidade readSensor ()؛ Serial.print ("انتشار پیام:")؛ // Criamos o json que enviaremos برای سرور mqtt String msg = createJsonString ()؛ Serial.println (msg)؛ // Publicamos no tópico onde or servidor espera para receber // e gerar o gráfico client.publish (TOPIC_NAME، msg.c_str ())؛ }}

MQTT.ino - setupWiFi

در اینجا ، ما تابع مسئول اتصال به شبکه WiFi را داریم.

// Função responsável for conectar de rede WiFivoid setupWiFi () {Serial.println ()؛ Serial.print ("اتصال به") ؛ Serial.print (SSID) ؛ // Manda o esp se conectar à rede através // do ssid e senha WiFi.begin (SSID ، PASSWORD) ؛ // Espera até que a conexão com a rede seja estabelecida while (WiFi.status ()! = WL_CONNECTED) {تأخیر (500)؛ Serial.print (".") ؛ } // Se chegou aqui é porque conectou Serial.println ("")؛ Serial.println ("WiFi متصل است") ؛ }

MQTT.ino - اتصال MQTTS سرور

در این مرحله ، ما از تابع مسئول اتصال به سرور MQTT استفاده می کنیم.

// پاسخ فوری به conectar ao server MQTTvoid connectMQTTServer () {Serial.println ("اتصال به سرور MQTT …") ؛ // Se conecta ao id que definimos if (client.connect (CLIENT_ID.c_str ())) {// Se a conexão foi bem sucedida Serial.println ("متصل")؛ } else {// Se ocorreu algum erro Serial.print ("error =")؛ Serial.println (client.state ()) ؛ }}

MQTT.ino - سنسور خواندن

خواندن داده های دما و رطوبت در این تابع تعریف شده است.

// Função responsável por realizar a leitura // da temperatura e umidade void readSensor () {float value؛ // Faz a leitura da temperatura value = dht.readTemperature ()؛ // Se o valor lido é válido if (! isnan (مقدار)) {// Armazena o novo valor da temperatura temperature = value؛ } // Faz a leitura da umidade value = dht.readHumidity ()؛ // Se o valor for válido if (! isnan (مقدار)) {// Armazena o novo valor da umidade humidity = value؛ }}

MQTT.ino - createJsonString

در اینجا ، ما تابع مسئول ایجاد Json با داده های خوانده شده را داریم.

// Função responsável por criar // um Json com os dados lidos String createJsonString () {String data = "{"؛ data+= "\" d / ": {"؛ data+= "\" دما / ":"؛ داده+= رشته (دما) ؛ داده+= "،"؛ data+= "\" رطوبت / ":"؛ داده+= رشته (رطوبت) ؛ داده+= "}"؛ داده+= "}"؛ بازگشت داده ها ؛ }

مرحله 10: گرافیک

گرافیکی
گرافیکی
گرافیکی
گرافیکی

برای مشاهده نمودار سنسور ، بروید

به

در قسمت Device ID ، DEVICE_ID را که در کد تعریف کرده اید وارد کنید.

- تغییر این شناسه دستگاه به یک شناسه منحصر به فرد که فقط برای جلوگیری از تعارض با داده های ارسال شده توسط شخص دیگر استفاده می شود بسیار مهم است.

در نهایت ، شرایط را بپذیرید و روی Go کلیک کنید.

در این پروژه ، ما نقطه پایانی خود را روی سرور IBM Watson آزمایش کردیم. این اطمینان می دهد که برنامه آردوینو ما به درستی با پلت فرم ارتباط دارد و اگر ما یک حساب ایجاد کنیم ، داده هایی که ارسال می کنیم توسط یک سرویس ابری بدون مشکل دریافت می شود.

در ویدئوی بعدی این مجموعه ، نحوه ورود به IBM Watson و همچنین نوشتن در بانک اطلاعاتی این سرویس یا سرویس ابری دیگر ، مانند Google ، Amazon ، و غیره را به شما نشان خواهم داد.

مرحله 11: فایل ها

دانلود فایلها:

PDF

من نه

توصیه شده: