ارتباط بین دو ماژول 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);
}
این پست دارای 44 نظر است
سلام آقای امرایی عزیز . باسپاس از برنامه های خوبی کهخ قرار دادید.
من این برنامه رو تست کردم
فرستنده وصل میشه به مودم ولی گیرنده وصل نمیشه
مشکل چیه؟ اصلا ارتباطی بین این دو ندارم.
اصلا نباید به مودم وصل بشه چون اونی که به مودم وصل نمیشه خودش به عنوان اکسس پوینت تعریف شده.
UDP_RECIVE_ONLY_AP = اکسس پوینت
UDP_SEND_ONLY = استیشن
IP هم که در برنامه فرستنده وارد میشه، ip مربوط به گیرندست؟
اگه درست باشه خب نمیدونم چرا وصل نمیشن به هم. من گوشیمو مودم تعریف کردم و ssid و pass اون رو میدم. اشتباه کردم؟ اصن نیاز هست بینشون مودم باشه
نه
قربون شما. خیلی عالی بود. مشکلم حل شد.راستش من شماره پورت هر دو رو یکی کرده بودم 12345 شما فرستنده رو 12346 گذاشته بودید. چون فکر میکردم باید هردو یه پورت داشته باشند.
آقای امرایی عزیز میشه پروتکل tcp رو هم برای این دو ماژول قرار بدین؟؟ بازم سپاسگزارم از زحماتتون
فردا میزارم
داخل سایت های خارجی یه برنامه mesh network دیدم فقط نمیدونم تا چندتا نود ذو جواب میده همزمان
استفاده کردم دوتا رو جواب داد ولی من هدفم اینه که اگه یکی از نود سرور رو ندید بتونه از نودهای کناری اطلاعاتشو به سرور بفرسته
سلام بر دوستان گرامی مثل اینکه لینک دانلود کدها مشکل داره لظفا هر کدوم از دوستان داره یه جا آپ کنه.ممنون
در حال برطرف کردن این مشکل هستم
یه کمی صبر کنید
با سلام و خسته نباشید من نتونستم کد رو مشاهده کنم اگه میشه برام تلگرام کنید ممنون میشم .خیلی خیلی سپاسگذارم اگر میشه دوماژول رو هم به صورت tcp/ip گد نویسی کنید ممنون میشم و اینکه با زبان بسکام….بی نهایت سپاسگذارم حمزه شماره تلگرام 09331425268
باسلام و خسته نباشد متاسفانه لینک دانلود کدها هنوز مشکل داره و من نتونستم هیج کدی رو ببینم.دانلود میشه اما وقتی بازش میکنم نامفهومه ….ممنون میشم مشکل رو حل کنید باتشکر
مشکل برطرف شد
با سلام خدمت دوستان
اقا بنده یه مشکلی دارم با esp8266 سری ۷ یعنیesp07!
و اون اینه که هر دستوری بهش میفرستم همون رو بر میگردونه مثلا وقتی دستورAT رو میفرستم ماژول بجای ok دوباره AT رو برمیگردونه
کسی میدونه مشکل چیه؟
در ضمن wifi یش رو با گوشی میبینم و کانکت هم بهش میشه.
سلام مشکل حل شد
ضاهرا تو مدل esp07اگه هر دو کاراکتر ۱۰ و ۱۳ که معرف cr و lf هست رو با هم اگه در انتهای هر پکت نفرستید at command ارسالی رو دوباره برمیگردونه!
Big Like
با عرض سلام خدمت مهندس عزیز
میخواستم بدونم چطور با پروتکل udp مقادیر خوانده شده از adc رو از یک esp به یک esp دیگر بفرستیم
سلام ببخشید 3 تا سوال داشتم.
1- در صورتی که ماژول هایی که در مود Station قرار میگیرند را بخواهیم افزایش دهیم تا چه تعداد میشود افزایش داد.
2-ایا می شود چند ماژول در حالت استیشن همزمان به اکسس پوینت ارسال داده کنند.
3-ایا میشود در بعضی موارد در ماژول هایی که در حالت station قرار میگیرند را در حالت دریافت هم قرار داد؟
با تشکر از سایت خوبتون
امید وارم همیشه موفق باشید.
جواب سوال ۱:
من تست نزدم ولی فکر نکنم بیشتر ۱۰ تا جواب بده , بستگی به حجم اطلاعات ارسالی و دریافتی داره
جواب سوال ۲:
بله
جواب سوال ۳:
منظور شما مد AP+STA اگه باشه باید بگم بله
سلام با تشکر از زحمات شما
آیا این کد ها روی برد آردوینو آپلود میشه یا خود ماژول؟ اگه روی روی ماژول ریخته میشه چطور روی برد آپلود کنیم؟ تغییر خاصی باید تو کد داده بشه؟
بله رو ماژول آپلود میشه
لینک زیر مراجعه کنید آموزش گذاشتم
http://turbodigital.ir/%d8%b1%d8%a7%d9%87-%d8%a7%d9%86%d8%af%d8%a7%d8%b2%db%8c-esp8266-%d8%a8%d8%af%d9%88%d9%86-%d9%86%db%8c%d8%a7%d8%b2-%d8%a8%d9%87-%d9%85%db%8c%da%a9%d8%b1%d9%88%da%a9%d9%86%d8%aa%d8%b1%d9%84%d8%b1-%d8%a8/
نمیشه روی برد آردوینو آپلود کرد؟
در واقع من میخوام دو تا برد آردوینو رو با وای فای بهم وصل کنم
ممنون
می خواین از پین های ورودی خروجی آردوینو استفاده کنید یا ماژول خاصی رو به آردوینو وصل کنید؟
من معمولا از خود ماژول استفاده می کنم مثل ESP-07 مگر اینکه کتابخونه که می خوام استفاده کنم رو esp جواب نده
اونوقت از طریق پورت سریال اطلاعات رو بین برد های آردوینو جابجا می کنم یعنی در واقع ماژول های esp میشن تبدیل wifi to serial و بلعکس
میخوام از پین های ورودی و خروجی آردوینو استفاده کنم
یه سری خروجی از برد دارم که به همون برد وای فای وصل کردم
خالا یه وای فای دیگه دارم که با مبدل usb به serial به pc وصله و میخوام با دستورات at command اینی که به pc وصله رو به اونی که به برد آردوینو وصله کاننکت کنم منتها نمیشه
شما همونی رو که به pc وصله رو با آردوینو پروگرم کن بعد با pc فقط یه سری رشته برای ماژولی که به آردوینو وصل بفرست
مقلا عدد ۱ پین شماره ۱ آردوینو رو HIGH کنه
سلام یه مشکل دیگه ای هست
من اکسس پویینت رو که پروگرم میکنم بعد وقتی با وای فای گوشی و لپ تاپ سرچ میکنم چیزی پیدا نمیکنه قثط یکی دوبار پیدا شد تا اومدم روش بزنم و رمز رو وارد کنم از دسترس خارج شد
سه تا ماژوا رو امتحان کردم
نکته خاصی داره؟
ممنونم
سلام وقتتون بخیر
میخوام با گوشی مستقیم به ماژول وصل بشم
و خود ماژول اکسس پوینت باشه
طفا راهنمایی کنید
WiFi.softAP(ssid,key);
برای پیکربندی بر روی حالت اکسس پوینت
الان میخوام دستور بفرستم یه رله رو قطع و وصل کنم
توی نوار ادرس مرورگر چطوری باید دستور وارد کنم؟
چطوری دستور ارسالی رو به اردوینو بفهمونم؟
ممنون میشم راهنمایی کنید
ارتباط با UDP است
با نرم افزار packet sender می تونید این کار رو انجام بدید
سلام جناب امرایی . برنامه خیلی خوب و کاربردی هست . اما من میخواستم روی کد ارسالی شرط بزارم و با ورودی سریال کنترلش کنم.
مثلا:
void loop(){
// Acknowlege package
if (Serial.available()>0)
{
text = Serial.read();
if (text == “saeed”)
{
Udp.beginPacket({192,168,4,1}, 12345);
Udp.write(“1111”);
Udp.endPacket();
delay(3000);
}
if (text == “kave”)
{
Udp.beginPacket({192,168,4,1}, 12345);
Udp.write(“0000”);
Udp.endPacket();
delay(3000);
}
}
}
این رو جواب نمیده و حتی اگه شرط روی پین 2 هم بزارم نمیشه.
ممنون میشم اگه راهنماییم کنی
سلام بجای Serial.read() از Serial.readString() استفاده کنید
سلام
ممنون از برنامتون
مي خوام برنامه اندرويدي هم كه به اين اكسس پوينت(recive)وصل بشه و ديتا بفرسته رو بنويسم اگه در اين زمينه اطلاعات داريد ممنون ميشم راهنمايي كنيد.
با چه زبانی برنامه اندروید رو می خوای بنویسی؟
با Eclipse جاوا
ممنون میشم اگه بشه تلفنی باهاتون تماس داشته باشم
ببخشید دیر جواب دادم
ظاهرا مشکلی تو سایت بوده و این مدت اطلاع رسانی به من نمی
شده
شماره تماس رو براتون ایمیل می کنم
سلام بر گل .
میشه خط به خط برنامه رو توضیح بدی خواهش میکنم .
بله اجازه بدین آموزش رو آپدیت کنم و توضیحات رو اضاف می کنم
سلام چجوری خودمون ip تعریف کنیم
یعنی آی پی استاتیک بدی؟
اکسس پوینت یا استیشن؟
سلام شماره تماس را برای من هم ایمل کنید alitondarb@gmail.com
در بخش تماس با ما هست
ببخشید یه سوال دیگه اموزش رو کجا گذاشتید
سلام هنوز آموزش رو آپدیت نکردم