آموزش‌های کاربردیاینترنت اشیاء (IOT)بایگانی مطالبپروژه‌های ESP32

ارسال دیتا از ESP32 توسط پروتکل UDP به Node-Red

در این پروژه قصد داریم دیتا را توسط پروتکل UDP از یک بورد ESP به سرور انتقال داده و در نرم افزار Node-Red مانیتور و کنترل کنیم. همراه ما باشید.

معرفی پروتکل User Datagram Protocol) UDP) 

UDP بخشی از مجموعه پروتکل اینترنت است که به آن مجموعه UDP/IP می­گویند. برخلاف TCP، این پروتکل غیر قابل اعتماد و بدون اتصال است. بنابراین، نیازی به برقراری ارتباط، قبل از انتقال اطلاعات نیست. در UDP هیچ خطایی وجود ندارد، بنابراین باعث پهنای باند نیز می شود. پروتکل اطلاعات کاربر (UDP) از نظر تأخیر و پهنای باند کارآمدتر است.

UDP یک استاندارد ارتباطی برای تبادل اطلاعات از طریق اینترنت است. این پروتکل از یک فرایند بدون اتصال برای ارسال بسته­ های اطلاعات به مقصد استفاده می­ کند، همچنین به سرعت ارسال بیش از قابلیت اطمینان اولویت می دهد. به دلیل تأخیر کم، UDP برای مواردی استفاده می­ شود که حساس به زمان هستند مانند پخش ویدئو، بازی­های ویدیویی و جستجوی سیستم نام دامنه (DNS).

پروتکل UDP

در UDP، گیرنده تأیید دریافت بسته را تضمین نمی‌کند و فرستنده نیز منتظر هیچ نوع تأیید ارسال بسته نمی‌ماند. این مسئله موجب می‌شود که پروتکل غیر قابل اعتماد شود و البته بر سهولت پردازش نیز می‌افزاید.

معرفی و راه اندازی ابزار اینترنت اشیا Node-RED

با این وجود چرا باید به یک پروتکل غیر قابل اعتماد برای انتقال اطلاعات نیاز داشته باشیم؟ در حقیقت از UDP جایی استفاده می‌شود که تأیید ارسال بسته‌ها، پهنای باند قابل توجهی را به همراه داده‌های واقعی اشغال می‌کند اما حتی اگر برخی بسته‌ها در جریان ارسال از دست بروند، تأثیر آن زیاد نیست و می‌توان آن را به سادگی نادیده گرفت.


در این­جا چند نمونه از ویژگی های این پروتکل را لیست کرده ایم:

  • برای زمانی مناسب است که تأیید وصول بسته‌های اطلاعات اهمیت زیادی نداشته باشد.

  • پروتکل خوبی برای گردش داده‌ها در یک جهت محسوب می‌شود.

  • اتصال-محور نیست.

  • مکانیسم کنترل ازدحام ندارد.

  • تحویل داده‌ها را بر مبنای ترتیب تضمین نمی‌کند.

UDP چگونه کار می­کند

UDP از پروتكل اينترنت براي بدست آوردن يك دیتا از يك رايانه به ديگري استفاده مي­ كند و همچنین با کپی اطلاعات در یک بسته UDP و افزودن اطلاعات هدر خود به بسته، کار می ­کند. این اطلاعات شامل پورت­های مبدأ و مقصد برای برقراری ارتباط، طول بسته و یک checksum است. پس از بسته شدن بسته­ های UDP در بسته پروتکل اینترنت، آن­ها به مقصد خود ارسال می­شوند. اگرچه این روش انتقال تضمین نمی­کند که داده­های ارسالی حتی به مقصد خود برسند، اما دارای سرریز بسیار کمی است و برای خدماتی که اصلاً لازم نیست بار اول کار کنند محبوب است.


شروع پروژه

ابتدا کد فرستنده را در Arduino IDE نوشته و کتابخانه­ های لازم را نصب می­کنیم. در اینجا <WiFi.h> و <WiFiUDP.h> کتابخانه­ های مورد نیاز  می باشند. در این کد تنها نیاز به آی پی گیرنده و یک پورت باز داریم.

#include <WiFi.h>
#include <WiFiUDP.h>

const char* ssid = "SSID";
const char* password = "Password";

IPAddress ipBroadCast(172,30,224,145);

unsigned int udpRemotePort = 8123;
unsigned int udplocalPort = 8124;
const int UDP_PACKET_SIZE = 48;

char udpBuffer[ UDP_PACKET_SIZE];
WiFiUDP udp;

// Setup the Wifi connection
void connectWifi() {
Serial.print("Connecting to ");
Serial.println(ssid);

// Try to connect to wifi access point
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());

ipBroadCast = ~WiFi.subnetMask() | WiFi.gatewayIP();
}

// Send udp message
void udpSend()
{
// TODO read the current value of an analog pin

strcpy(udpBuffer, "{\"device\"=\"12348266\",\"load\"=10.2}");
udp.beginPacket(ipBroadCast, udpRemotePort);
udp.write((const uint8_t*)udpBuffer, sizeof(udpBuffer));
udp.endPacket();
Serial.print("Broadcast: ");
Serial.println(udpBuffer);
}

// Setup hardware, serial port, and connect to wifi.
void setup() {
Serial.begin(115200);
delay(10);
// We start by connecting to a WiFi network
connectWifi();
Serial.println("Starting UDP");

// set udp port for listen
udp.begin(udplocalPort);
Serial.print("Local port: ");
}

// LOOP MAIN
// Send udp packet each 10 secconds
void loop() {
udpSend();
delay (10000);
}


سپس شماتیک بلوکی را در Node-Red طراحی می ­کنیم. در این طراحی نیاز به نود udp, debug, function است. نود UDP جهت گوش دادن به پورت مربوطه با خروجی بافر هست. همچنین تنظیمات آن­ها به صورت زیر می باشد.

در کد نوشته شده قرار است یک پک حاوی چندین دیتا منتقل شود و در Node-Red مانیتور شود.

ارسال دیتا از ESP32 توسط پروتکل UDP به Node-Red


این مقاله چطور بود ؟
+1
73
+1
102
+1
3
مشاهده بیشتر

پریسا اکبری

کارشناس برق- قدرت و کارشناس ارشد کنترل. علاقه مند به سیستم های هوشمند و اینترنت اشیا. به مدت بیش از 1 سال است که در تیم سخت افزار سازان نام آور مشغول به فعالیت هستم.

نوشته های مشابه

دیدگاهتان را بنویسید

دکمه بازگشت به بالا