ارتباط بین دو ماژول 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); }
سلام آقای امرایی عزیز . باسپاس از برنامه های خوبی کهخ قرار دادید.
من این برنامه رو تست کردم
فرستنده وصل میشه به مودم ولی گیرنده وصل نمیشه
مشکل چیه؟ اصلا ارتباطی بین این دو ندارم.
اصلا نباید به مودم وصل بشه چون اونی که به مودم وصل نمیشه خودش به عنوان اکسس پوینت تعریف شده.
UDP_RECIVE_ONLY_AP = اکسس پوینت
UDP_SEND_ONLY = استیشن
IP هم که در برنامه فرستنده وارد میشه، ip مربوط به گیرندست؟
اگه درست باشه خب نمیدونم چرا وصل نمیشن به هم. من گوشیمو مودم تعریف کردم و ssid و pass اون رو میدم. اشتباه کردم؟ اصن نیاز هست بینشون مودم باشه
نه
قربون شما. خیلی عالی بود. مشکلم حل شد.راستش من شماره پورت هر دو رو یکی کرده بودم 12345 شما فرستنده رو 12346 گذاشته بودید. چون فکر میکردم باید هردو یه پورت داشته باشند.
آقای امرایی عزیز میشه پروتکل tcp رو هم برای این دو ماژول قرار بدین؟؟ بازم سپاسگزارم از زحماتتون
فردا میزارم
داخل سایت های خارجی یه برنامه mesh network دیدم فقط نمیدونم تا چندتا نود ذو جواب میده همزمان
استفاده کردم دوتا رو جواب داد ولی من هدفم اینه که اگه یکی از نود سرور رو ندید بتونه از نودهای کناری اطلاعاتشو به سرور بفرسته
سلام بر دوستان گرامی مثل اینکه لینک دانلود کدها مشکل داره لظفا هر کدوم از دوستان داره یه جا آپ کنه.ممنون
در حال برطرف کردن این مشکل هستم
یه کمی صبر کنید
با سلام و خسته نباشید من نتونستم کد رو مشاهده کنم اگه میشه برام تلگرام کنید ممنون میشم .خیلی خیلی سپاسگذارم اگر میشه دوماژول رو هم به صورت tcp/ip گد نویسی کنید ممنون میشم و اینکه با زبان بسکام….بی نهایت سپاسگذارم حمزه شماره تلگرام 09331425268
باسلام و خسته نباشد متاسفانه لینک دانلود کدها هنوز مشکل داره و من نتونستم هیج کدی رو ببینم.دانلود میشه اما وقتی بازش میکنم نامفهومه ….ممنون میشم مشکل رو حل کنید باتشکر
مشکل برطرف شد