ESP8266 UDP SERVER

ارتباط بین دو ماژول ESP8266 از طریق پروتکل UDP

محتوا

ارتباط بین دو ماژول ESP8266 از طریق پروتکل UDP

به در خواست دوستان این بار آموزش ارتباط بین دو ماژول ESP8266 سری 01 رو اینجا قرار دادم ارسال و دریافت به صورت TEXT (متن) و از طریق پروتکل UDP می باشد یکی از ماژول ها به عنوان اکسس پوینت تعریف شده و یک LED به پایه GPIO2 وصل کردم و یکی دیگه رو به عنوان استیشن تعریف و هر 3 ثانیه یک بار رشته “1111” و “0000” رو ارسال می کند در نتیجه LED هر سه ثانیه روشن و سه ثانیه بعد دوباره خاموش می شود از اینجا کدها رو می تونید دانلود کنید ، دقت کنید که برای این پروژه از سری 01 استفاده شده که در صورت تمایل می تونید از دیگر سری ها هم استفاده کنید.

نمونه کد سمت اکسس پوینت در ماژول ESP8266

#include <ESP8266WiFi.h>
#include <WiFiUDP.h>

const char* ssid = "Turbodigital";
const char* pass = "123456789";    

unsigned int localPort = 12345;     
byte packetBuffer[512];
WiFiUDP Udp;

void printWifiStatus() {
  IPAddress ip = WiFi.softAPIP();
  Serial.print("IP Address: ");
  Serial.println(ip);
}

void setup(){
  Serial.begin(115200);
  WiFi.disconnect();
  pinMode(2,OUTPUT);
  digitalWrite(2,0);
  WiFi.softAP(ssid,pass);
  WiFi.mode(WIFI_AP);
  
  Udp.begin(localPort);
  Serial.println();
  printWifiStatus();
}

void loop(){
  int noBytes = Udp.parsePacket();
  String received_command = "";
 
  if ( noBytes ) {
    Udp.read(packetBuffer,noBytes);
    for (int i=1;i<=noBytes;i++)
    {
      received_command += char(packetBuffer[i - 1]);
    } 
    Serial.println(received_command);
    if (received_command == "1111"){
      digitalWrite(2,1);
    }

    if (received_command == "0000"){
      digitalWrite(2,0);
    }
  }
  delay(10);
}



خط 1 و 2 کتابخانه های مورد نظر نیاز اضاف شده – خط 4 و 5 اسم و رمز اکسس پوینت تعریف شده – خط 7 و 8 و 9 پارامترهای مورد نیاز تعریف شده – خط 22 و 23 ماژول در حالت اکسس پوینت راه اندازی شده است – خط 25 UDP Server با پورت 12345 شروع می شود که در تابع Loop داده ها رو از طریق پروتکل UDP می خواد.

نمونه کد سمت استیشن در ماژول ESP8266

#include <ESP8266WiFi.h>
#include <WiFiUDP.h>

const char* ssid = "Turbodigital";
const char* pass = "123456789";    

unsigned int localPort = 12346;     
WiFiUDP Udp;

void printWifiStatus() {
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);
}

void setup(){
  Serial.begin(115200);
  WiFi.disconnect();
  Serial.println();
  Serial.println();
  WiFi.begin(ssid,pass);
  WiFi.mode(WIFI_STA);
  int tries=0;
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    tries++;
    if (tries > 30){
      break;
    }
  }
  Serial.println();
  printWifiStatus();
  Udp.begin(localPort);
}

void loop(){
    // Acknowlege package
    Udp.beginPacket({192,168,4,1}, 12345);
    Udp.write("1111");
    Udp.endPacket();
    delay(3000);

    Udp.beginPacket({192,168,4,1}, 12345);
    Udp.write("0000");
    Udp.endPacket();
    delay(3000);
}

 

4.3 4 votes
امتیازدهی به مقاله
بخش نظرات
مشترک شوید
Notify of
guest
44 نظرات
قدیمی ترین
جدیدترین بیشترین آرای
Inline Feedbacks
View all comments
herorise1
herorise1
7 years ago

سلام آقای امرایی عزیز . باسپاس از برنامه های خوبی کهخ قرار دادید.
من این برنامه رو تست کردم
فرستنده وصل میشه به مودم ولی گیرنده وصل نمیشه
مشکل چیه؟ اصلا ارتباطی بین این دو ندارم.

herorise1
herorise1
7 years ago

IP هم که در برنامه فرستنده وارد میشه، ip مربوط به گیرندست؟
اگه درست باشه خب نمیدونم چرا وصل نمیشن به هم. من گوشیمو مودم تعریف کردم و ssid و pass اون رو میدم. اشتباه کردم؟ اصن نیاز هست بینشون مودم باشه

herorise1
herorise1
7 years ago

قربون شما. خیلی عالی بود. مشکلم حل شد.راستش من شماره پورت هر دو رو یکی کرده بودم 12345 شما فرستنده رو 12346 گذاشته بودید. چون فکر میکردم باید هردو یه پورت داشته باشند.
آقای امرایی عزیز میشه پروتکل tcp رو هم برای این دو ماژول قرار بدین؟؟ بازم سپاسگزارم از زحماتتون

herorise1
herorise1
7 years ago

داخل سایت های خارجی یه برنامه mesh network دیدم فقط نمیدونم تا چندتا نود ذو جواب میده همزمان

herorise1
herorise1
7 years ago

استفاده کردم دوتا رو جواب داد ولی من هدفم اینه که اگه یکی از نود سرور رو ندید بتونه از نودهای کناری اطلاعاتشو به سرور بفرسته

ajahangiri
ajahangiri
7 years ago

سلام بر دوستان گرامی مثل اینکه لینک دانلود کدها مشکل داره لظفا هر کدوم از دوستان داره یه جا آپ کنه.ممنون

hamzeh
hamzeh
7 years ago

با سلام و خسته نباشید من نتونستم کد رو مشاهده کنم اگه میشه برام تلگرام کنید ممنون میشم .خیلی خیلی سپاسگذارم اگر میشه دوماژول رو هم به صورت tcp/ip گد نویسی کنید ممنون میشم و اینکه با زبان بسکام….بی نهایت سپاسگذارم حمزه شماره تلگرام 09331425268

hamzeh
hamzeh
7 years ago

باسلام و خسته نباشد متاسفانه لینک دانلود کدها هنوز مشکل داره و من نتونستم هیج کدی رو ببینم.دانلود میشه اما وقتی بازش میکنم نامفهومه ….ممنون میشم مشکل رو حل کنید باتشکر

44
0
Would love your thoughts, please comment.x
×
×

سبد خرید