اطلاعیه

Collapse
No announcement yet.

راه اندازی ماژول Wifi ESP8266 -ESP201

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : راه اندازی ماژول Wifi ESP8266 -ESP201

    نوشته اصلی توسط amir2640 نمایش پست ها
    اما مشکلی که الان وجود داره این هست که وقتی صفحه ی گوشی رو رو رفرش میکنم نمیدونم به چه دلیل بدون این که من دکمه ای رو فشار بدم و فقط با رفرش کردن صفحه گوشی اخرین دستور که برای روشن شدن ال ای دی برای 3 مرتبه هست انجام میشه و ال ای دی 3 مرتبه رو شن و خاموش میشه.
    }
    سلام
    برنامه (با توجه به چیزی که شما ازش خواستید) مشکلی نداره و درست کار میکنه.
    درواقع شما در برنامه دارید ازمتد GET برای درخواست و پاسخ استفاده می کنید. در این متد برای ارسال درخواست به سرور از URI استفاده میشه.دقت کنید URI و نه URL. فرقش رو در زیر می بیند:

    /*
    URL = http://192.168.1.25/socket1On


    URI = /socket1On
    */

    زمانی که شما صفحه را لود ، رفرش و یا حتی دکمه ای را می زنید ، در حقیقت سرور URL را دریافت کرده ;کلاینت رو تشخیص داده و با توجه به بخش URI تابع مربوطه رو اجرا میکنه. یعنی چی؟
    اول اینکه در هر صفحه ای که باشید با رفرش صفحه ، دوباره دستورات اجرا میشوند. مثل اینکه دکمه زده باشید.
    دوم اینکه با زدن هر دکمه (اگر به آدرس بار مرورگر دقت کنید) ,URI و URL تغییر می کند.
    تاپیک ویدیوهای آموزشی حواشی آردوینو و ESP

    دیدگاه


      #17
      پاسخ : راه اندازی ماژول Wifi ESP8266 -ESP201

      با تشکر از وقتی که گذاشتید استاد عزیز

      میشه بپرسم که ایا میتونم با انجام تغییراتی در همین برنامه که نوشتم کاری کنم که بدون اجازه من ( فشردن دکمه ی مورد نظر ) اتفاقی نیفته حتی اگر من صفحه رو رفرش کنم ؟

      سپاس مجدد از وقتتون

      دیدگاه


        #18
        پاسخ : راه اندازی ماژول Wifi ESP8266 -ESP201

        نوشته اصلی توسط amir2640 نمایش پست ها
        با تشکر از وقتی که گذاشتید استاد عزیز

        میشه بپرسم که ایا میتونم با انجام تغییراتی در همین برنامه که نوشتم کاری کنم که بدون اجازه من ( فشردن دکمه ی مورد نظر ) اتفاقی نیفته حتی اگر من صفحه رو رفرش کنم ؟

        سپاس مجدد از وقتتون
        یکی از دوستام ، هر حرف خوبی که بهش میزنی میگه خودتی! ( خوبیش اینه که وقتی بهش میگی استاد، دکتر و .. بخود آدم برمیگرده)
        حالا شما هم استاد خودتی
        برای رفع این حالت راه زیاد داره اما اگه دنبال یه راه ساده هستید می تونید از این کد استفاده کنید:

        #include <ESP8266WiFi.h>
        #include <WiFiClient.h>
        #include <ESP8266mDNS.h>
        #include <ESP8266WebServer.h>


        // Replace with your network credentials
        const char* ssid = "xxx";
        const char* password = "xxx";


        const int led = 2;


        ESP8266WebServer server(80); // Create a webserver object that listens for HTTP request on port 80


        void handleRoot(); // function prototypes for HTTP handlers
        void handleLED();
        void handleNotFound();


        void setup(void){
        Serial.begin(115200); // Start the Serial communication to send messages to the computer
        delay(10);
        Serial.println('\n');


        pinMode(led, OUTPUT);
        WiFi.begin(ssid, password);
        Serial.println("");


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


        if (MDNS.begin("esp8266")) { // Start the mDNS responder for esp8266.local
        Serial.println("mDNS responder started");
        } else {
        Serial.println("Error setting up MDNS responder!");
        }


        server.on("/", HTTP_GET, handleRoot); // Call the 'handleRoot' function when a client requests URI "/"
        server.on("/LED", HTTP_POST, handleLED); // Call the 'handleLED' function when a POST request is made to URI "/LED"
        server.onNotFound(handleNotFound); // When a client requests an unknown URI (i.e. something other than "/"), call function "handleNotFound"


        server.begin(); // Actually start the server
        Serial.println("HTTP server started");
        }


        void loop(void){
        server.handleClient(); // Listen for HTTP requests from clients
        }


        void handleRoot() { // When URI / is requested, send a web page with a button to toggle the LED
        server.send(200, "text/html", "<form action=\"/LED\" method=\"POST\"><input type=\"submit\" value=\"Toggle LED\"></form>");
        }


        void handleLED() { // If a POST request is made to URI /LED
        digitalWrite(led,!digitalRead(led)); // Change the state of the LED
        server.sendHeader("Location","/"); // Add a header to respond with a new location for the browser to go to the home page again
        server.send(303); // Send it back to the browser with an HTTP status 303 (See Other) to redirect
        }


        void handleNotFound(){
        server.send(404, "text/plain", "404: Not found"); // Send HTTP status 404 (Not Found) when there's no handler for the URI in the request
        }

        تو کد بالا از متد post (نه بصورت کامل) و redirect استفاده شده.
        برای استفاده از روشهای دیگر باید بسراغ یادگیری html و شبکه بروید.
        تاپیک ویدیوهای آموزشی حواشی آردوینو و ESP

        دیدگاه


          #19
          پاسخ : راه اندازی ماژول Wifi ESP8266 -ESP201

          با سلام
          من برنامه ای برای esp8266 نوشتم که یک slider شبیه به ولوم صدا داشته باشه و دارای 5 پله باشه که لا تغییر هرکدوم از انها یک value مختلف رو به من بده.
          من برای نوشتن این برنامه علاوه بر اردوینو از html و javascript هم کمک گرفتتم ، اما تا وقتی که کد های جاوا رو اضاف نکرده بودم برنامم بدون هیچ مشکلی کامپایل میشد اما با اضاف کردن جاوا اسکریپت و تابع مبوط به ان در محیط برنامه نویسی اردوینو ، ارور نشناختن تابع جاوا رو میده ؟!
          به نظرتون این امکان وجود دارد که من جاوا رو هم مثل html به کد های اردوینو اضاف کنم ؟. چون که حتما نیاز دارم که از جاوا اسکریپت اضافه کنم.
          اگر هم همچین چیزی امکان نداره چطور میتونم برای esp8266 وب سروری درست کنم که جاوااسکریپت هم درونش باشه ؟
          این هم کد نوشته شده است :

          #include <ESP8266WiFi.h>
          const char* ssid = "xxxx";
          const char* password = "xxxx";

          WiFiServer server(80);

          void setup() {

          Serial.begin(115200);
          delay(10);

          Serial.println();
          Serial.println();
          Serial.print("Connecting to ");
          Serial.println(ssid);

          WiFi.begin(ssid, password);

          while (WiFi.status() != WL_CONNECTED) {
          delay(500);
          Serial.print(".");
          }
          Serial.println("");
          Serial.println("WiFi connected");

          server.begin();
          Serial.println("Server started");

          Serial.println(WiFi.localIP());
          }

          void loop() {

          WiFiClient client = server.available();
          if (!client) {
          return;
          }

          Serial.println("new client");
          while (!client.available()) {
          delay(1);
          }

          String req = client.readStringUntil('\r');
          Serial.println(req);
          client.flush();
          String s;

          s += "<!DOCTYPE html>";
          s += "<html>";
          s += "<head> <style>.slidecontainer { width: 60%;}.slider { -webkit-appearance: none; width: 100%; height: 25px; background: #d3d3d3 ; outline: none; opacity: 0.7; -webkit-transition: .2s; transition: opacity .2s;}.slider:hover { opacity: 1;}.slider::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 25px; height: 25px; background: #4CAF50 ; cursor: pointer;}.slider::-moz-range-thumb { width: 25px; height: 25px; background: #4CAF50 ; cursor: pointer;}</style></head>";

          s += "<h1>Custom Range Slider</h1>";


          s += "<input type=\"range\" min=\"1\" max=\"5\" value=\"1\" class=\"slider\" oninput=\"myFunction(this.value)\"> <p>Value: <span id=\"demo\"></span></p>";


          s += "<script>";
          function myFunction(val) {
          switch (val) {
          case "1":
          document.getElementById("demo").innerHTML = "OFF";
          break;

          case "2":
          document.getElementById("demo").innerHTML = "I got position number 2";
          break;

          case "3":
          document.getElementById("demo").innerHTML = "I need a break";
          break;

          case "4":
          document.getElementById("demo").innerHTML = "I got number 4";
          break;

          case "5":
          document.getElementById("demo").innerHTML = "This is the last position in range";
          break;

          }
          }
          s += "< / script >";

          s += "< / body >";
          s += "< / html >";

          client.print(s);
          delay(1);
          Serial.println("Client disconnected");
          }

          دیدگاه


            #20
            پاسخ : راه اندازی ماژول Wifi ESP8266 -ESP201

            نوشته اصلی توسط swallow2 نمایش پست ها
            من برای نوشتن این برنامه علاوه بر اردوینو از html و javascript هم کمک گرفتتم ، اما تا وقتی که کد های جاوا رو اضاف نکرده بودم برنامم بدون هیچ مشکلی کامپایل میشد اما با اضاف کردن جاوا اسکریپت و تابع مبوط به ان در محیط برنامه نویسی اردوینو ، ارور نشناختن تابع جاوا رو میده ؟!
            به نظرتون این امکان وجود دارد که من جاوا رو هم مثل html به کد های اردوینو اضاف کنم ؟
            سلام
            صددرصد شدنیه. فقط بنظرم یمقدار کم دقتی کردید. وسط کدهای آردوینو مستقیما کدهای جاوا اسکریپت نوشتید. این کدها باید بصورت یک متن String به برنامه اضافه شوند. به این صورت که برای هر خط از کد جاوا اسکریپتتون ، بصورت زیر عمل کنید:

            s += "html or css or javascript";
            تاپیک ویدیوهای آموزشی حواشی آردوینو و ESP

            دیدگاه


              #21
              پاسخ : راه اندازی ماژول Wifi ESP8266 -ESP201

              دلیل: ادغام دو پست برای جلوگیری از اسپم

              نوشته اصلی توسط digi-rx نمایش پست ها
              سلام
              صددرصد شدنیه. فقط بنظرم یمقدار کم دقتی کردید. وسط کدهای آردوینو مستقیما کدهای جاوا اسکریپت نوشتید. این کدها باید بصورت یک متن String به برنامه اضافه شوند. به این صورت که برای هر خط از کد جاوا اسکریپتتون ، بصورت زیر عمل کنید:

              s += "html or css or javascript";
              خیلی ممنون

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

              function myFunction(val) {
              switch (val) {
              case "1":
              document.getElementById("demo").innerHTML = "OFF";
              break;

              case "2":
              document.getElementById("demo").innerHTML = "I got position number 2";
              break;

              case "3":
              document.getElementById("demo").innerHTML = "I need a break";
              break;

              case "4":
              document.getElementById("demo").innerHTML = "I got number 4";
              break;

              case "5":
              document.getElementById("demo").innerHTML = "This is the last position in range";
              break;

              }
              }


              ساله پر از شادی و موفقیت داشته باشید

              دیدگاه


                #22
                پاسخ : راه اندازی ماژول Wifi ESP8266 -ESP201

                سلام

                تمام کدهای مربوط به جاوا اسکریپت رو بردم در یک خط و کمی هم تغییرشون دادم، درست شد.

                خیلی خیلی ممنون از کمکتون

                دیدگاه


                  #23
                  پاسخ : راه اندازی ماژول Wifi ESP8266 -ESP201

                  نوشته اصلی توسط swallow2 نمایش پست ها
                  سلام

                  تمام کدهای مربوط به جاوا اسکریپت رو بردم در یک خط و کمی هم تغییرشون دادم، درست شد.

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

                  s+="function myFunction(val) {\n";
                  s+=" switch (val) {\n";
                  s+=" case '1':\n";
                  s+=" document.getElementById('demo').innerHTML = 'OFF';\n";
                  s+=" break;\n";

                  s+=" case '2':\n";
                  s+=" document.getElementById('demo').innerHTML = 'I got position number 2';\n";
                  s+=" break;\n";

                  s+=" case '3':\n";
                  s+=" document.getElementById('demo').innerHTML = 'I need a break';\n";
                  s+=" break;\n";

                  s+=" case '4':\n";
                  s+=" document.getElementById('demo').innerHTML = 'I got number 4';\n";
                  s+=" break;\n";

                  s+=" case '5':\n";
                  s+=" document.getElementById('demo').innerHTML = 'This is the last position in range';\n";
                  s+=" break;\n";

                  s+=" }"
                  s+=" }"



                  این یه حسن داره و یه بدی:
                  مزیتش به اینه که همونطور که گفتم کد جاوا اسکریپت هم قشنگ تر میشه هم درک و دیباگش راحت تر
                  بدیش هم به اینه که تعداد زیادی ایپیس (فاصله) داخلش هست که حجم بیشتری از حافظه رو اشغال میکنه. (البته قضیه استفاده از String و معایبش به کنار)
                  جدیدترین ویرایش توسط digi-rx; ۲۲:۲۸ ۱۳۹۷/۰۱/۰۳.
                  تاپیک ویدیوهای آموزشی حواشی آردوینو و ESP

                  دیدگاه


                    #24
                    پاسخ : راه اندازی ماژول Wifi ESP8266 -ESP201

                    نوشته اصلی توسط digi-rx نمایش پست ها
                    خیلی هم خوب.
                    فقط من نگفتم که همه کدهای جاوااسکریپت رو تو یه خط بریزید. اینطوری دیباگینگ کد جاوا اسکریپت تو مرورگر یکم سخت میشه. بهتره که به اینصورت عمل کنید:

                    s+="function myFunction(val) {\n";
                    s+=" switch (val) {\n";
                    s+=" case '1':\n";
                    s+=" document.getElementById('demo').innerHTML = 'OFF';\n";
                    s+=" break;\n";

                    s+=" case '2':\n";
                    s+=" document.getElementById('demo').innerHTML = 'I got position number 2';\n";
                    s+=" break;\n";

                    s+=" case '3':\n";
                    s+=" document.getElementById('demo').innerHTML = 'I need a break';\n";
                    s+=" break;\n";

                    s+=" case '4':\n";
                    s+=" document.getElementById('demo').innerHTML = 'I got number 4';\n";
                    s+=" break;\n";

                    s+=" case '5':\n";
                    s+=" document.getElementById('demo').innerHTML = 'This is the last position in range';\n";
                    s+=" break;\n";

                    s+=" }"
                    s+=" }"



                    این یه حسن داره و یه بدی:
                    مزیتش به اینه که همونطور که گفتم کد جاوا اسکریپت هم قشنگ تر میشه هم درک و دیباگش راحت تر
                    بدیش هم به اینه که تعداد زیادی ایپیس (فاصله) داخلش هست که حجم بیشتری از حافظه رو اشغال میکنه. (البته قضیه استفاده از String و معایبش به کنار)

                    من کد ها رو به همون صورتی که گفتید تغییر دادم و بسایر برنامه نوشته شده خواناتر و زباتر شد.
                    اما حالا که به این صورت تغییرش دادم یک مشکل کوچیکی پیش اومده و اون هم این هست که دیگه با عقب و جلو بردن دکمه اسلایدر هیچ کدوم از value هایی که باید تغییر کنه تغییری نمیکنه و در واقع به نظر میاد که تایه مخصوص به جاوا اسکریپت که وظیفه ی تغییر دادن value داره کار نمیکنه (زمانی که همه ی کدها در یک خط برده شده بودند متغیرها تغییر میکرد)به نظر شما مشکل در چی چیزی میتونه باشه ؟
                    همچنین من این value ها رو تعریف کردم که بتونم بعدا به وصیله ی اردوینو به ازای هرکدومشون چیزی رو تغییر بدم، به نظرتون این کار شدنی هست ؟. به این خاطر که من نیاز دارم به ازای هر واحد جلو و عقب شدن یک لینکی رو به سرور که یک esp8266 هست بفرسته و بعد متناسب با لینک دریافت شده میکرو یه سری دستورات خاص رو انجام بده.
                    اما این برنامه ای که نوشتم به نظر میاد که اگر بخواهدلینکی رو بفرسته صفحه رفرش میشه و دوباره دکمه برمیگرده به میزانه اولیه خودش
                    میشه در این مورد هم راهنمایی کنید که ایا متدی وجود داره برای این که وقتی اسلایدر رو به جلو و عقب میبرم و لینکی رو میفرسته با رفرش شدن صفحه دکمه بر نگرده به همون جای اولش ؟. ( ببخشید اگر سولم خیلی واضح نبود)

                    تشکر

                    دیدگاه


                      #25
                      پاسخ : راه اندازی ماژول Wifi ESP8266 -ESP201

                      نوشته اصلی توسط swallow2 نمایش پست ها
                      اما حالا که به این صورت تغییرش دادم یک مشکل کوچیکی پیش اومده و اون هم این هست که دیگه با عقب و جلو بردن دکمه اسلایدر هیچ کدوم از value هایی که باید تغییر کنه تغییری نمیکنه و در واقع به نظر میاد که تایه مخصوص به جاوا اسکریپت که وظیفه ی تغییر دادن value داره کار نمیکنه (زمانی که همه ی کدها در یک خط برده شده بودند متغیرها تغییر میکرد)به نظر شما مشکل در چی چیزی میتونه باشه ؟
                      مشکل عنوان شده اصلاح شد و کد اصلاح شده به این صورته :

                      #include <ESP8266WiFi.h>


                      const char* ssid = "XXX";
                      const char* password = "XXX";


                      WiFiServer server(80);


                      void setup() {


                      Serial.begin(115200);
                      delay(10);


                      Serial.println();
                      Serial.println();
                      Serial.print("Connecting to ");
                      Serial.println(ssid);


                      WiFi.begin(ssid, password);


                      while (WiFi.status() != WL_CONNECTED) {
                      delay(500);
                      Serial.print(".");
                      }
                      Serial.println();
                      Serial.println("WiFi connected");


                      server.begin();
                      Serial.println("Server started");


                      Serial.println(WiFi.localIP());
                      }


                      void loop() {


                      WiFiClient client = server.available();
                      if (!client) {
                      return;
                      }


                      Serial.println("new client");
                      while (!client.available()) {
                      delay(1);
                      }


                      String req = client.readStringUntil('\r');
                      Serial.println(req);
                      client.flush();
                      String s;


                      s += "<!DOCTYPE html>\n";
                      s += "<html>\n";
                      s += "<head> <style>.slidecontainer { width: 60%;}.slider { -webkit-appearance: none; width: 100%; height: 25px; background: #d3d3d3 ; outline: none; opacity: 0.7; -webkit-transition: .2s; transition: opacity .2s;}.slider:hover { opacity: 1;}.slider::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 25px; height: 25px; background: #4CAF50 ; cursor: pointer;}.slider::-moz-range-thumb { width: 25px; height: 25px; background: #4CAF50 ; cursor: pointer;}</style></head>\n";
                      s += "<body>\n";
                      s += "<h1>Custom Range Slider</h1>\n";
                      s += "<input type=\"range\" min=\"1\" max=\"5\" value=\"1\" class=\"slider\" oninput=\"myFunction(this.value)\"> <p>Value: <span id=\"demo\"></span></p>\n";




                      s += "<script>\n";
                      s += "function myFunction(val) {\n";
                      s += " switch (val) {\n";
                      s += " case '1':\n";
                      s += " document.getElementById('demo').innerHTML = 'OFF';\n";
                      s += " break;\n";
                      s += " case '2':\n";
                      s += " document.getElementById('demo').innerHTML = 'I got position number 2';\n";
                      s += " break;\n";
                      s += " case '3':\n";
                      s += " document.getElementById('demo').innerHTML = 'I need a break';\n";
                      s += " break;\n";
                      s += " case '4':\n";
                      s += " document.getElementById('demo').innerHTML = 'I got number 4';\n";
                      s += " break;\n";
                      s += " case '5':\n";
                      s += " document.getElementById('demo').innerHTML = 'This is the last position in range';\n";
                      s += " break;\n";
                      s += " }\n";
                      s += " }\n";
                      s += "</script>\n";


                      s += "</body>\n";
                      s += "</html>\n";


                      client.print(s);
                      delay(1);
                      Serial.println("Client disconnected");
                      }

                      نوشته اصلی توسط swallow2 نمایش پست ها
                      همچنین من این value ها رو تعریف کردم که بتونم بعدا به وصیله ی اردوینو به ازای هرکدومشون چیزی رو تغییر بدم، به نظرتون این کار شدنی هست ؟. به این خاطر که من نیاز دارم به ازای هر واحد جلو و عقب شدن یک لینکی رو به سرور که یک esp8266 هست بفرسته و بعد متناسب با لینک دریافت شده میکرو یه سری دستورات خاص رو انجام بده.اما این برنامه ای که نوشتم به نظر میاد که اگر بخواهدلینکی رو بفرسته صفحه رفرش میشه و دوباره دکمه برمیگرده به میزانه اولیه خودش میشه در این مورد هم راهنمایی کنید که ایا متدی وجود داره برای این که وقتی اسلایدر رو به جلو و عقب میبرم و لینکی رو میفرسته با رفرش شدن صفحه دکمه بر نگرده به همون جای اولش ؟. ( ببخشید اگر سولم خیلی واضح نبود)
                      اینی که الان میگم با هر عزیزی هست که این پست رو میخونه و در ادامه و برای تاکید صحبتهام هست که بارها در انجمن گفتم. دوستان وقتی شما برای سخت افزار esp دارید برنامه می نویسید، مجموعه ای از اطلاعات رو نیاز دارید که بصورت یک ابزار مصرفی و واجب و دم دستی شما محسوب میشه. این اطلاعات شامل طراحی وب (html و javascript و css و ...) هست بخاطر اینکه شما می خواهید خروجیتون در مرورگر بصورت معقولی دیده بشه. نیاز دیگری شبکه هست بخاطر اینکه شما با وایفای و پروتکل های مختلف شبکه و اینترنت و ... سروکار دارید. سومین نیاز برنامه نویسی خود esp و آردوینو هست که طبیعیه. نیاز های دیگر که برای مراحل پیشرفته تر هست توانایی ساخت برنامه برای پلتفرمهای مختلف مثل ویندوز ، اندروید، ios ، لینوکس ، مک و ... هست. نیاز شناخت سخت افزارها و ... که مهمترینها همان 3 نیاز اول میباشد که جزو واجبات است و بدون کسب اون اطلاعات نمیتونید حتی کدهای آماده رو برای پروژه مورد نظر خودتون customize کنید.
                      قطعا نمیشه همه این موارد رو اینجا یاد داد. اما میشه نقطه شروع که راه رو کوتاهتر کنه رو مشخص کرد. همچنین اگر در قسمتی از کد مشکلی باشه میشه رفعش کرد. درنتیجه اگر بعضی اوقات بجای توضیح مبسوط توصیه به سرچ و افزایش اطلاعات میکنم ، من روببخشید. اما حتما راه ، عنوان یا مسیر رو برای جستجو ذکر میکنم. همچنین من خودم رو در این زمینه حرفه ای نیمیدونم و همچنان درحال افزایش اطلاعاتم.
                      دررابطه با سوال شما جناب
                      swallow2 عزیز ، بله شدنیه. آسونترین راه: شما با متد GET میتونید هر آرگومانی که میخواهید (مثل مقدارvalue مربوط به اسلایدر) رو بفرستید به سرور (که دراینجا همون esp هست) و در esp پس از دریافت مقدار، با کدهای جاوااسکریپت صفحه html ای که برای کلاینت میفرستید حاوی اون مقدار تغییر داده شده باشد.
                      میتونید ایتدا تو سایتهای ایرانی و خارجی یه تحقیقی بکنید که اصلا متد GET در html چیست و آرگومانهاش چی هستن. سپس تو سایتهای خارجی دنبال روش و نمونه کدهای استفادش در esp بگردید. (مثلا می تونید عبارت esp8266 get method رو سرچ کنید)
                      جدیدترین ویرایش توسط digi-rx; ۰۱:۵۲ ۱۳۹۷/۰۱/۰۶.
                      تاپیک ویدیوهای آموزشی حواشی آردوینو و ESP

                      دیدگاه


                        #26
                        پاسخ : راه اندازی ماژول Wifi ESP8266 -ESP201

                        نوشته اصلی توسط digi-rx نمایش پست ها
                        مشکل عنوان شده اصلاح شد و کد اصلاح شده به این صورته :

                        #include <ESP8266WiFi.h>


                        const char* ssid = "XXX";
                        const char* password = "XXX";


                        WiFiServer server(80);


                        void setup() {


                        Serial.begin(115200);
                        delay(10);


                        Serial.println();
                        Serial.println();
                        Serial.print("Connecting to ");
                        Serial.println(ssid);


                        WiFi.begin(ssid, password);


                        while (WiFi.status() != WL_CONNECTED) {
                        delay(500);
                        Serial.print(".");
                        }
                        Serial.println();
                        Serial.println("WiFi connected");


                        server.begin();
                        Serial.println("Server started");


                        Serial.println(WiFi.localIP());
                        }


                        void loop() {


                        WiFiClient client = server.available();
                        if (!client) {
                        return;
                        }


                        Serial.println("new client");
                        while (!client.available()) {
                        delay(1);
                        }


                        String req = client.readStringUntil('\r');
                        Serial.println(req);
                        client.flush();
                        String s;


                        s += "<!DOCTYPE html>\n";
                        s += "<html>\n";
                        s += "<head> <style>.slidecontainer { width: 60%;}.slider { -webkit-appearance: none; width: 100%; height: 25px; background: #d3d3d3 ; outline: none; opacity: 0.7; -webkit-transition: .2s; transition: opacity .2s;}.slider:hover { opacity: 1;}.slider::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 25px; height: 25px; background: #4CAF50 ; cursor: pointer;}.slider::-moz-range-thumb { width: 25px; height: 25px; background: #4CAF50 ; cursor: pointer;}</style></head>\n";
                        s += "<body>\n";
                        s += "<h1>Custom Range Slider</h1>\n";
                        s += "<input type=\"range\" min=\"1\" max=\"5\" value=\"1\" class=\"slider\" oninput=\"myFunction(this.value)\"> <p>Value: <span id=\"demo\"></span></p>\n";




                        s += "<script>\n";
                        s += "function myFunction(val) {\n";
                        s += " switch (val) {\n";
                        s += " case '1':\n";
                        s += " document.getElementById('demo').innerHTML = 'OFF';\n";
                        s += " break;\n";
                        s += " case '2':\n";
                        s += " document.getElementById('demo').innerHTML = 'I got position number 2';\n";
                        s += " break;\n";
                        s += " case '3':\n";
                        s += " document.getElementById('demo').innerHTML = 'I need a break';\n";
                        s += " break;\n";
                        s += " case '4':\n";
                        s += " document.getElementById('demo').innerHTML = 'I got number 4';\n";
                        s += " break;\n";
                        s += " case '5':\n";
                        s += " document.getElementById('demo').innerHTML = 'This is the last position in range';\n";
                        s += " break;\n";
                        s += " }\n";
                        s += " }\n";
                        s += "</script>\n";


                        s += "</body>\n";
                        s += "</html>\n";


                        client.print(s);
                        delay(1);
                        Serial.println("Client disconnected");
                        }


                        اینی که الان میگم با هر عزیزی هست که این پست رو میخونه و در ادامه و برای تاکید صحبتهام هست که بارها در انجمن گفتم. دوستان وقتی شما برای سخت افزار esp دارید برنامه می نویسید، مجموعه ای از اطلاعات رو نیاز دارید که بصورت یک ابزار مصرفی و واجب و دم دستی شما محسوب میشه. این اطلاعات شامل طراحی وب (html و javascript و css و ...) هست بخاطر اینکه شما می خواهید خروجیتون در مرورگر بصورت معقولی دیده بشه. نیاز دیگری شبکه هست بخاطر اینکه شما با وایفای و پروتکل های مختلف شبکه و اینترنت و ... سروکار دارید. سومین نیاز برنامه نویسی خود esp و آردوینو هست که طبیعیه. نیاز های دیگر که برای مراحل پیشرفته تر هست توانایی ساخت برنامه برای پلتفرمهای مختلف مثل ویندوز ، اندروید، ios ، لینوکس ، مک و ... هست. نیاز شناخت سخت افزارها و ... که مهمترینها همان 3 نیاز اول میباشد که جزو واجبات است و بدون کسب اون اطلاعات نمیتونید حتی کدهای آماده رو برای پروژه مورد نظر خودتون customize کنید.
                        قطعا نمیشه همه این موارد رو اینجا یاد داد. اما میشه نقطه شروع که راه رو کوتاهتر کنه رو مشخص کرد. همچنین اگر در قسمتی از کد مشکلی باشه میشه رفعش کرد. درنتیجه اگر بعضی اوقات بجای توضیح مبسوط توصیه به سرچ و افزایش اطلاعات میکنم ، من روببخشید. اما حتما راه ، عنوان یا مسیر رو برای جستجو ذکر میکنم. همچنین من خودم رو در این زمینه حرفه ای نیمیدونم و همچنان درحال افزایش اطلاعاتم.
                        دررابطه با سوال شما جناب
                        swallow2 عزیز ، بله شدنیه. آسونترین راه: شما با متد GET میتونید هر آرگومانی که میخواهید (مثل مقدارvalue مربوط به اسلایدر) رو بفرستید به سرور (که دراینجا همون esp هست) و در esp پس از دریافت مقدار، با کدهای جاوااسکریپت صفحه html ای که برای کلاینت میفرستید حاوی اون مقدار تغییر داده شده باشد.
                        میتونید ایتدا تو سایتهای ایرانی و خارجی یه تحقیقی بکنید که اصلا متد GET در html چیست و آرگومانهاش چی هستن. سپس تو سایتهای خارجی دنبال روش و نمونه کدهای استفادش در esp بگردید. (مثلا می تونید عبارت esp8266 get method رو سرچ کنید)
                        سلام خیلی ممنون

                        من هم با شما در مورد این روشی که برای یادگیری esp عنوان کردید موافق هستم و به نظر من همین که افرادی مثل شما در چنین انجمن هایی حاظر هستند که وقتشون رو بگذارند و راه رو نشون بدن و یا اینکه که کد های نوشته شده توسط افراد دیگه ای رو تصحیح و رفع اشکال کنند کمک خیلی بزرگی اول به اون فرد و بعد از اون به انجمنه برای این که این سوالات میتونه سوال افراد زیاده دیگه ای هم که در اینده به امید پیدا کردن جواب هاشون به اینجا میان باشه و من از شما خیلی ممنونم.
                        من از قبل کمی با متد get اشنایی داشتم ولی ترسم از این بود که با هربار استفاده از اون صفحم رفرش بشه و بر گرده مجددا اول برنامه و عملا فرصتی برای تغییر میزان ولیو باقی نمونه.
                        من این برنامه رو با متدی که گفتید با برنامه قبلیم ترکیب میکنم و اینجا میذارم و این که دوستانی مثل شما اگر در اون ایرادی دیدن به من بگن برای من بسیار زیاد هم هست.
                        جدیدترین ویرایش توسط swallow2; ۲۳:۱۰ ۱۳۹۷/۰۱/۰۶.

                        دیدگاه


                          #27
                          پاسخ : راه اندازی ماژول Wifi ESP8266 -ESP201

                          سلام
                          من esp8266 01 رو از طریق ی مبدل usb to serial به کامپبوتر وصل کردم. از قسمت سریال هم tx , rx , gnd رو به rx , tx , gnd ماژول وای فا متصل کردم .vcc و gnd رو هم به منبع تغذیه
                          حالا هم led ابی روشنه هم قرمز و جواب دستور at رو نمیده اصلا
                          وقتی هم ch_pd رو به 3.3 ولت وصل میکنم کلا همه led ها خاموش میشه
                          خواهش میکنم مشکل رو حل کنید.
                          با تشکر از سایت خوبتون

                          دیدگاه


                            #28
                            پاسخ : راه اندازی ماژول Wifi ESP8266 -ESP201

                            سلام
                            esp رو مثل شماتیک این صفحه به مبدل وصل کردید؟
                            درایور مربوط به مبدل رو در کامپیوتر نصب کردید؟
                            تاپیک ویدیوهای آموزشی حواشی آردوینو و ESP

                            دیدگاه


                              #29
                              پاسخ : راه اندازی ماژول Wifi ESP8266 -ESP201

                              نوشته اصلی توسط infernal1990 نمایش پست ها
                              سلام به همه دوستان عزیز
                              من دو تا ماژول Wifi ESP8266 -ESP201 از فروشگاه سایت با آدرس:

                              خریداری کردم
                              ولی متاسفانه هیچ کدوم از ماژول ها کار نمیکنن
                              تقریبا از کار خودم برای راه اندازی ماژول مطمئن هستم که درست انجام شده
                              وقتی به ماژول فرمان های کامند ارسال میکنم، چراغ روی برد که برای تبادل اطلاعات هست چشمک میزنه، ولی جوابی دریافت نمیشه
                              حالا چون هر دو تا ماژول دقیقا یه مشکل مشابه دارن، گفتم شاید روش خاصی داشته باشه
                              از دوستانی که آشنایی دارن میخوام که راهنمایی کنند.

                              ممنون و متشکر
                              سلام من جالبیش اینه با اردوینو جواب میده اما با مبدلch340و ترمینال خیر جواب نمیده!نمیدونم چکار کنم

                              دیدگاه


                                #30
                                پاسخ : راه اندازی ماژول Wifi ESP8266 -ESP201

                                سلام و عرض ادب!
                                آقا چرا یه دیتاشیت منظم برای وصل کردن esp-201 به آردویینو پیدا نمیشه؟ من میخوام 3 تا سروُ موتور رو با موبایل از طریق این ماژول حرکت بدم. مشکلی با کد نویسیش ندارم ، فقط یه دیتاشیت میخوام که بدونم مدارمو چجوری باید ببندم!
                                میشه لطفل راهنمایی کنید؟ یه دیتاشیت از وایرینگ esp-201 و آردوئینو برام بفرستید که ببینم چی به چیه. ضمنا، بفرمایید آیا برای استفاده از این ماژول اول باید firmware روش فلش شه یا خودش داره؟؟؟؟ کمکم کنید لطفا
                                متشکرم

                                دیدگاه

                                لطفا صبر کنید...
                                X