ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 2 از 2
  1. #1
    2017/10/24
    2
    0

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

    سلام

    من قصد دارم از طریق ماژول NodeMcu V1.0 دو عدد رو که یکی حاصل خروجی یک پتانسیومتر هست و دیگری که عدد ثابتی است رو از طریق پروتکل UDP و از طریق وای فای ارسال کنم . به اینصورت که دو ماژول مشابه در دو نقطه متفاوت دارم و هر دو ماژول دارای پتانسیومتر و عدد ثابت خودشون هستن .
    کاری که قراره انجام بشه این هست که هر دو ماژول اطلاعات خودشون رو بدون اینکه لازم به چک کردن باشه که به دست گیرنده رسیده یا خیر ارسال کنن . یعنی هر دو ماژول هم فرستنده هستن و هم گیرنده.
    برای ارسال با این عنوان که یکی از ماژول ها مستر باشه و دیگری کلاینت مشکلی ندارم و کدش رو در زیر میارم ولی اینکه هر دو هم فرستنده باشن و هم گیرنده رو نمیدونم باید چه کنم .


    پیشاپیش ممنون از نظرات دوستان و وقتی که میگذارند.

    Master:
    /*
    Wireless Serial using UDP ESP8266
    Hardware: NodeMCU
    Circuits4you.com
    2018
    Master Board creates Access Point
    */
    #include <ESP8266WiFi.h>
    #include <WiFiUdp.h>
    const char *ssid = "circuits4you";
    const char *pass = "password";
    unsigned int localPort = 2000; // local port to listen for UDP packets
    IPAddress ServerIP(192,168,4,1);
    IPAddress ClientIP(192,168,4,2);
    // A UDP instance to let us send and receive packets over UDP
    WiFiUDP udp;
    char packetBuffer[9]; //Where we get the UDP data
    //=======================================================================
    // Setup
    //=======================================================================
    void setup()
    {
    Serial.begin(9600);
    Serial.println();
    WiFi.softAP(ssid, pass); //Create Access point
    //Start UDP
    Serial.println("Starting UDP");
    udp.begin(localPort);
    Serial.print("Local port: ");
    Serial.println(udp.localPort());
    }
    //======================================================================
    // MAIN LOOP
    //======================================================================
    void loop()
    {
    int cb = udp.parsePacket();
    if (!cb)
    {
    //If serial data is recived send it to UDP
    if(Serial.available()>0)
    {
    udp.beginPacket(ClientIP, 2000);
    //Send UDP requests are to port 2000

    char a[1];
    a[0]=char(Serial.read()); //Serial Byte Read
    udp.write(a,1); //Send one byte to ESP8266
    udp.endPacket();
    }
    }
    else {
    // We've received a UDP packet, send it to serial
    udp.read(packetBuffer, 1); // read the packet into the buffer, we are reading only one byte
    Serial.print(packetBuffer);
    delay(20);
    }
    }
    //======================================================================


    Slave:
    /*
    Wireless Serial using UDP ESP8266
    Hardware: NodeMCU
    Circuits4you.com
    2018
    Slave Board connects to Access Point
    */
    #include <ESP8266WiFi.h>
    #include <WiFiUdp.h>
    const char *ssid = "circuits4you";
    const char *pass = "password";
    unsigned int localPort = 2000; // local port to listen for UDP packets
    IPAddress ServerIP(192,168,4,1);
    IPAddress ClientIP(192,168,4,2);
    // A UDP instance to let us send and receive packets over UDP
    WiFiUDP udp;
    char packetBuffer[9]; //Where we get the UDP data
    //======================================================================
    // Setup
    //======================================================================
    void setup()
    {
    Serial.begin(9600);
    Serial.println();
    WiFi.begin(ssid, pass); //Connect to access point

    Serial.println("");
    // Wait for connection
    while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    }
    Serial.println("");
    Serial.print("Connected to ");
    Serial.println(ssid);
    Serial.print("IP address: ");
    Serial.println(WiFi.localIP());

    //Start UDP
    Serial.println("Starting UDP");
    udp.begin(localPort);
    Serial.print("Local port: ");
    Serial.println(udp.localPort());
    }
    //======================================================================
    // MAIN LOOP
    //======================================================================
    void loop()
    {
    int cb = udp.parsePacket();
    if (!cb)
    {
    //If serial data is recived send it to UDP
    if(Serial.available()>0)
    {
    udp.beginPacket(ServerIP, 2000); //Send Data to Master unit
    //Send UDP requests are to port 2000

    char a[1];
    a[0]=char(Serial.read()); //Serial Byte Read
    udp.write(a,1); //Send one byte to ESP8266
    udp.endPacket();
    }
    }
    else {
    // We've received a UDP packet, send it to serial
    udp.read(packetBuffer, 1); // read the packet into the buffer, we are reading only one byte
    Serial.print(packetBuffer);
    delay(20);
    }
    }
    //=======================================================================


    حالت دیگه ای هم وجود داره که یه تعدادی ماژول در یک شبکه بمشترک با هم ارتباط دارن که اون هم مد نظر من نیست و کدش به صورت زیر هست:

    /*
    Wireless Serial using UDP ESP8266
    Hardware: NodeMCU
    Circuits4you.com
    2018
    UDP Broadcast multi esp to esp communication
    */
    #include <ESP8266WiFi.h>
    #include <WiFiUdp.h>
    const char *ssid = "circuits4you.com";
    const char *pass = "password";
    unsigned int localPort = 2000; // local port to listen for UDP packets
    IPAddress SendIP(192,168,43,255); //UDP Broadcast IP data sent to all devicess on same network
    // A UDP instance to let us send and receive packets over UDP
    WiFiUDP udp;
    char packetBuffer[9]; //Where we get the UDP data
    //======================================================================
    // Setup
    //=======================================================================
    void setup()
    {
    Serial.begin(9600);
    Serial.println();
    WiFi.begin(ssid, pass); //Connect to access point

    Serial.println("");
    // Wait for connection
    while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    }
    Serial.println("");
    Serial.print("Connected to ");
    Serial.println(ssid);
    Serial.print("IP address: ");
    Serial.println(WiFi.localIP());

    //Start UDP
    Serial.println("Starting UDP");
    udp.begin(localPort);
    Serial.print("Local port: ");
    Serial.println(udp.localPort());
    }
    //======================================================================
    // MAIN LOOP
    //======================================================================
    void loop()
    {
    int cb = udp.parsePacket();
    if (!cb)
    {
    //If serial data is recived send it to UDP
    if(Serial.available()>0)
    {
    udp.beginPacket(SendIP, 2000); //Send Data to Master unit
    //Send UDP requests are to port 2000

    char a[1];
    a[0]=char(Serial.read()); //Serial Byte Read
    udp.write(a,1); //Send one byte to ESP8266
    udp.endPacket();
    }
    }
    else {
    // We've received a UDP packet, send it to serial
    udp.read(packetBuffer, 1); // read the packet into the buffer, we are reading only one byte
    Serial.print(packetBuffer);
    delay(20);
    }
    }
    //=======================================================================
  2. #2
    2017/10/24
    2
    0

    پاسخ : ارتباط دوسویه bidirectional از طریق دو ماژول ESP8266 و پروتکل UDP

    دوستان من در این ارتباط سوالاتی رو دارم که اگر بتونید پاسخ بدید ممنون میشم :

    1. برای ارتباط دو ماژول ESP8266 که در دید هم نیستن و مکان های متفاوتی دارن و به شبکه های اینترنت کاملا مجزایی متصل هستن ، بهترین روش ارسال و دریافت اطلاعات چی هست ؟ منظور سریعترین روش هست
    2. آیا در این کیس میشه از UDP استفاده کرد؟
    3. من میخوام هر دو ماژول هم اطلاعات بفرستن و هم دریافت کنن ، متاسفانه اطلاعات شبکه ای من کافی نیست و متوجه نمیشم که برای کاری که من میخوام بکنم آیا نیاز به تعریف Access Point و کلاینت هست ، اگر دو ماژول از نظر شبکه و مکان با هم متفاوت هستن ؟
    4. میتونم با UDP همزمان دو تا مقدار رو بفرستم ؟

    یک بار دیگه صورت مساله رو اینطوری بیان میکنم که :
    دو ماژول در دو مکان مختلف داریم که ارتباطی با هم ندارن از نظر شبکه وای فای
    به هر دوی ماژول ها پتانسیومتری متصل هست و هر کدوم دارای یک عدد ثابتی هستن به اسم x , y
    ماژول ها باید مقادیر پتانسیومترشون و مقدار ثابتشون رو از طریق اینترنت و UDP برای هم ارسال کنن و همزمان روی سریال مانیتور نمایش بدن که چی ارسال میکنن .


    ممنون پیشاپیش
    ویرایش توسط صادق ساعی : 2018/07/15 در ساعت 13:12
نمایش نتایج: از 1 به 2 از 2

موضوعات مشابه

  1. ارتباط دو میکرو از طریق ماژول های RF
    توسط behzadsen در انجمن میکروکنترلرهای AVR
    پاسخ: 17
    آخرين نوشته: 2019/06/14, 12:52
  2. مشکل در ارتباط دو ماژول از طریق i2c در avr
    توسط hesam1995 در انجمن میکروکنترلرهای AVR
    پاسخ: 0
    آخرين نوشته: 2018/01/26, 17:01
  3. مشکل دریافت تکراری در ارتباط با ماژول ESP8266
    توسط sorena01 در انجمن ماژول های شبکه و WIFI
    پاسخ: 0
    آخرين نوشته: 2017/01/22, 16:13
  4. ارتباط بین دو ماژول SIM900 از طریق gprs
    توسط arvini در انجمن ماژول های GPS - GSM - GPRS
    پاسخ: 0
    آخرين نوشته: 2015/11/18, 10:39
  5. پاسخ: 3
    آخرين نوشته: 2015/06/08, 08:42

کاربرانی که این تاپیک را مشاهده کرده اند: 1

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •