فهرست مطالب:
- مرحله 1: ESP32 Pinout
- مرحله 2: NodeMCU Pinout
- مرحله 3: MQTT
- مرحله 4: مونتاژ
- مرحله 5: نمودار
- مرحله ششم: کتابخانه ها
- مرحله 7: کتابخانه خواندن دما و رطوبت
- مرحله 8: کتابخانه MQTT
- مرحله 9: MQTT.ino
- مرحله 10: گرافیک
- مرحله 11: فایل ها
تصویری: IBM واتسون با ESP32 به عنوان نقطه پایانی: 11 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
من امروز اولین ویدئوی مجموعه ای را درباره نحوه نصب دستگاه Endpoint با ESP32 و سپس ارسال آن به سرویس ابری در اینجا ارسال می کنم. در این قسمت خاص ، نحوه ارسال اطلاعات از حسگر DHT22 با استفاده از پروتکل MQTT برای IBM Watson را به شما نشان خواهم داد.
ما ابتدا MQTT را معرفی می کنیم که یک پروتکل ماشین به ماشین است که در اینترنت اشیا (اینترنت اشیا) استفاده می شود. ما همچنین داده های حسگر دما و رطوبت را با استفاده از این پروتکل ارسال می کنیم و سپس نمودار را با این داده ها در یک صفحه وب بررسی می کنیم.
مرحله 1: ESP32 Pinout
من Pinout ESP32 را که در مثال خود استفاده می کنیم در اینجا قرار دادم. با این حال ، من می خواهم روشن کنم که پروژه با ESP8266 و حتی با همان کد منبع کار می کند.
مرحله 2: NodeMCU Pinout
مرحله 3: 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
مرحله 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: فایل ها
دانلود فایلها:
من نه
توصیه شده:
راه آهن مدل نقطه به نقطه ساده خودکار: 10 مرحله (همراه با تصاویر)
راه آهن مدل نقطه به نقطه ساده: میکروکنترلرهای آردوینو برای خودکارسازی طرح بندی راه آهن عالی هستند. اتوماسیون طرح بندی برای اهداف بسیاری مفید است مانند قرار دادن طرح خود در یک صفحه نمایش که در آن عملیات طرح بندی می تواند برنامه ریزی کند تا قطارها را به ترتیب خودکار اجرا کند. ل
نوسان ساز ولتاژ نقطه به نقطه: 29 مرحله
نوسان ساز ولتاژ نقطه به نقطه: سلام! شما پروژه ای را پیدا کرده اید که در آن ما یک میکروچیپ بسیار ارزان ، CD4069 (خوب) را بر می داریم و برخی قطعات را به آن می چسبانیم ، و یک نوسان ساز کنترل ولتاژ بسیار مفید برای ردیابی زمین دریافت می کنیم! نسخه ای که ما می سازیم فقط دارای شکل موج اره یا سطح شیب دار است که
مدار Crossfader نقطه به نقطه: 16 مرحله (همراه با تصاویر)
مدار Crossfader نقطه به نقطه: این یک مدار crossfader است. دو ورودی را می پذیرد و بین آنها محو می شود و خروجی ترکیبی از دو ورودی (یا فقط یکی از ورودی ها) است. این یک مدار ساده ، بسیار مفید و ساخت آسان است! این سیگنال را از طریق آن وارونه می کند ،
دو نقطه پوسیدگی Eurorack نقطه به نقطه: 12 قدم
مدار نقطه به نقطه Eurorack Dual Decay: هدف از این دستورالعمل نشان دادن چگونگی ایجاد یک مدار DUAL DECAY برای سینت سایزر ماژولار خود است. این یک مدار نقطه به نقطه عاری از هر گونه pcb است و راه دیگری برای ساخت مدارهای سینت سایزر کاربردی با حداقل قطعات را نشان می دهد
مدل راه آهن نقطه به نقطه ساده با دو قطار: 13 مرحله (همراه با تصاویر)
راه آهن ساده از نقطه به نقطه با دو قطار: میکروکنترلرهای آردوینو به دلیل ارزان بودن دسترسی ، سخت افزار و نرم افزار منبع باز و جامعه وسیعی که به شما کمک می کنند ، راهی عالی برای خودکارسازی طرح های راه آهن هستند. برای نمونه راه آهن ، میکروکنترلرهای آردوینو می توانند ثابت کنند که یک گروه