اطلاعیه

Collapse
No announcement yet.

اتصال دو esp8266

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

    #16
    پاسخ : اتصال دو esp8266

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

    دیدگاه


      #17
      پاسخ : اتصال دو esp8266

      نوشته اصلی توسط milad brave نمایش پست ها
      میشه کدهاتونو بذارین اینجا؟؟؟البته اگ ایرادی نداشته باشه یا حداقل اون قسمت پیکر بندی esp رو
      پیکر بندی esp واسه کاری که شما میخواید انجام بدین سه تا دستور داره که یکیش ذخیره میمونه و دوتای دیگه هر موقع ماژول روشن میشه باید به ماژول بفرستین چون ذخیره نمیشه:
      کد:
      AT+CWMODE=3
      اگه این دستور رو واسه ماژول بفرستین میتونین هم به عنوان اکسس پوینت و هم به عنوان کلاینت از ماژول استفاده کنید
      کد:
      AT+CIPMUX=1
      این دستور امکان اتصال چند دستگاه همزمان به ماژول رو میده و اگه بخواین از ماژول به عنوان سرور هم استفاده کنید حتما بایداین دستور رو به ماژول بدین
      کد:
      AT+CIPSERVER=1
      با این دستور ماژول به حالت سرور میره و دستگاه های مختلف و ماژول دیگه ای که شما دارین میتونن به این ماژول که سرور هست اطلاعات بفرستن و دریافت کنن

      دیدگاه


        #18
        پاسخ : اتصال دو esp8266

        مرسی از پاسختون
        نمیشه این ها تو فلش ESP نوشت تا نیاز به هر بار نوشتن نباشه؟
        اگه اره با چ کدی؟
        من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

        دیدگاه


          #19
          پاسخ : اتصال دو esp8266

          نوشته اصلی توسط milad brave نمایش پست ها
          مرسی از پاسختون
          نمیشه این ها تو فلش ESP نوشت تا نیاز به هر بار نوشتن نباشه؟
          اگه اره با چ کدی؟
          سلام
          شدن که میشه ولی من تا حالا کار نکردم
          فک کنم با محیط برنامه نویسی آردوینو هم بشه!

          دیدگاه


            #20
            پاسخ : اتصال دو esp8266

            با اونم زدم نشد یا من نتونستم
            من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

            دیدگاه


              #21
              پاسخ : اتصال دو esp8266

              نوشته اصلی توسط milad brave نمایش پست ها
              با اونم زدم نشد یا من نتونستم
              سلام
              تو خود برنامه آردوینو مثالeeprom هست عزیز. اون رو امتحان کردید؟
              اگه خواستید کدتون رو بزارید ببینم میتونم کمک کنم

              می بخشید، من پست جناب M3R-E رو درست نخوندم. این بزرگوار خودشون آردوینو کار کردن.
              درصورت نیاز درهرصورت درخدمتم
              جدیدترین ویرایش توسط digi-rx; ۱۷:۲۹ ۱۳۹۶/۱۰/۰۶.
              تاپیک ویدیوهای آموزشی حواشی آردوینو و ESP

              دیدگاه


                #22
                پاسخ : اتصال دو esp8266

                تقریبا 50درصد مشکلم حل شد
                فقط نمیدونم چرا دیتا نمیفرسته
                پیکربندیش درسته
                با اون یکی ماژولم ارتباط برقرار میکنه
                کد:
                void loop()
                {
                  SendToESP8266("AT+CIPSEND=0,1");
                   WaitForESP8266(5000);
                  Serial.print('a');
                  WaitForESP8266(5000);
                    
                }
                فقط مشکلم اینجاست داخل این لوپ که دیتا نمیفرسته
                من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

                دیدگاه


                  #23
                  پاسخ : اتصال دو esp8266

                  نوشته اصلی توسط milad brave نمایش پست ها
                  تقریبا 50درصد مشکلم حل شد
                  نوشته اصلی توسط milad brave نمایش پست ها
                  فقط نمیدونم چرا دیتا نمیفرسته
                  پیکربندیش درسته
                  با اون یکی ماژولم ارتباط برقرار میکنه
                  کد:
                  [FONT=Yekan]void loop()[/FONT]
                  [FONT=Yekan]{[/FONT]
                  [FONT=Yekan]  SendToESP8266("AT+CIPSEND=0,1");[/FONT]
                  [FONT=Yekan]   WaitForESP8266(5000);[/FONT]
                  [FONT=Yekan]  Serial.print('a');[/FONT]
                  [FONT=Yekan]  WaitForESP8266(5000);[/FONT]
                  [FONT=Yekan]    [/FONT]
                  [FONT=Yekan]}[/FONT]
                  [FONT=Yekan][/FONT]

                  فقط مشکلم اینجاست داخل این لوپ که دیتا نمیفرسته

                  یعنی چی ارتباطش برقراره با ماژول دوم اما sting نمیفرسته؟؟؟
                  نوشته اصلی توسط M3R-E نمایش پست ها
                  سلام
                  نوشته اصلی توسط M3R-E نمایش پست ها
                  شما بعد از اینکه از ماژول اول به ماژول دوم CONNECT شدین باید دستور :
                  کد:
                  [FONT=Yekan]AT+CIPSTART="TCP","192.168.4.1",333[/FONT]
                  [FONT=Yekan][/FONT]

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

                  این کار رو هم کردید؟

                  با آردوینو به 2 صورت میشهesp رو برنامه نوشت :یکی با خود برنامه نویسی آردوینو و دیگری همون دستورات at-comand که شما باهاش با میکروی دیگه با esp ارتباط برقرار میکنید. درواقع آردوینو میاد تو این روش فقط اون دستورات at-comand رو صدا میزنه.
                  راستش من اصلا از اولش خودم رو درگیر این at-comand نکردم و یراست شروع کردم با خود آردوینو برنامه نوشتن.
                  حسنش به اینه که دقیقا میشه دید داریم چیکار میکنیم و دردسرش کمتره. خصوصا اینکه آردوینو تو خود برنامش و همچنین گیت هاب و اینترنت مثال خیلی خیلی خیل ... زیاد داره
                  بگذریم. همونطور که گفتم من از کدهای at-comand برنامتون که سردر نمیارم حتی مطمئن نیستم این روشی که میفرمایید اصلا سوکت باشه. اما یک مورد بگم شاید مفید بشه.
                  اینکه سوکت هم مثل بیشتر پلفورم ها بصورت کلاینت و سرور تعریف میشه. این یعنی چی؟
                  یعنی تا درخواستی از طرف کلاینت به سرور ارسال نشه ، سرور نمیتونه پاسخ یا اطلاعاتی به کلاینت ارسال کنه. این مورد رو رعایت کردید؟
                  بعدش اینکه اصلا من متوجه نشدم شما اصلا چکار میخواهید بکنید. شاید راه دیگه ای باشه اگر توضیح بدید.
                  اگر دوست عزیزم جناب M3R-E بتونن مشکل رو کمک کنند حل بشه که واقعا عالی میشه. اگر یموقع نشد یه توضیح کوچیک برام بدید. چون در اون صورت بجای at-comand باید برنامه رو با خود دستورات آردوینو بنویسید.
                  تاپیک ویدیوهای آموزشی حواشی آردوینو و ESP

                  دیدگاه


                    #24
                    پاسخ : اتصال دو esp8266

                    نوشته اصلی توسط milad brave نمایش پست ها
                    تقریبا 50درصد مشکلم حل شد
                    فقط نمیدونم چرا دیتا نمیفرسته
                    پیکربندیش درسته
                    با اون یکی ماژولم ارتباط برقرار میکنه
                    کد:
                    void loop()
                    {
                      SendToESP8266("AT+CIPSEND=0,1");
                       WaitForESP8266(5000);
                      Serial.print('a');
                      WaitForESP8266(5000);
                        
                    }
                    فقط مشکلم اینجاست داخل این لوپ که دیتا نمیفرسته
                    سلام
                    از کجا مطمئنید که ارتباط برقرار میشه؟
                    ماژول که به عنوان سرور هست زمانی که چیزی بهش کانکت شه باید رشته connect , x رو برگردونه که به جای x یه شماره هست که از اون باید تو دستور cipsend استفاده کنید

                    دیدگاه


                      #25
                      پاسخ : اتصال دو esp8266

                      چون وقتی کانکت میشه هم آی پی میگیره هم کانکت نشون میده
                      خود ماژول هم میفرسته کانکت
                      من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

                      دیدگاه


                        #26
                        پاسخ : اتصال دو esp8266

                        نوشته اصلی توسط milad brave نمایش پست ها
                        چون وقتی کانکت میشه هم آی پی میگیره هم کانکت نشون میده
                        خود ماژول هم میفرسته کانکت
                        خوب پس الان با دستور cipsend میتونید دیتا رو بفرستید دیگه!
                        مشکل چیه؟
                        فقط یادتون باشه cipsend=x,y که باید به جای x عددی بنویسید که زمان کانکت شدن به ماژول جلوی عبارت connect مینویسه

                        دیدگاه


                          #27
                          پاسخ : اتصال دو esp8266

                          مشکل اینکه کانکت میده ولی اگه به خوام با گوشی یا کامپیوتر کانکت بشم نه زمانی که این دوتا ماژول به هم وصل بشن
                          ماژول سرور از طریق دستور AT+CWJAP به ماژول دومی وصل میشه ولی در خط بعدی که مینویسم AT+CIPSTART جواب ارور میده.اینم بگم که دستور AT+CIPSTART کلاینت میفرسته به سرور
                          من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

                          دیدگاه


                            #28
                            پاسخ : اتصال دو esp8266

                            نوشته اصلی توسط milad brave نمایش پست ها
                            مشکل اینکه کانکت میده ولی اگه به خوام با گوشی یا کامپیوتر کانکت بشم نه زمانی که این دوتا ماژول به هم وصل بشن
                            ماژول سرور از طریق دستور AT+CWJAP به ماژول دومی وصل میشه ولی در خط بعدی که مینویسم AT+CIPSTART جواب ارور میده.اینم بگم که دستور AT+CIPSTART کلاینت میفرسته به سرور
                            این کاری که میگم رو انجام بدین:
                            تو ماژولی که به عنوان کلاینت هست دستور زیر رو بزنید:
                            کد:
                            AT+RESTORE
                            با این دستور تمام تنظیمات ماژول بر میگرده به حالت دیفالت (باود ریت میشه 115200)
                            بعد که ماژول ریست شد دستور زیر رو به ماژول بفرستید :
                            کد:
                            AT+CWMODE=3
                            بعد از این دستور هم دوباره به سرور کانکت شید و دستور CIPSTART و همچنین CIPSEND رو بزنید ببینید بازم ارور دارین؟
                            هم چنین دستور
                            کد:
                            AT+CIFSR
                            و چیزی که بهتون نمایش میده رو اینجا قرار بدین

                            دیدگاه


                              #29
                              پاسخ : اتصال دو esp8266

                              وقتی دستور at+restore میزنم که کلا چیزی نمیاره
                              ولی اونیکی کارا ها رو کردم این اورد
                              چرا closeمیشه؟
                              مگه بعد قطع برق دستورات ازش پاک نمیشه؟؟باز نیازی به دستور at+restor هست؟
                              جدیدترین ویرایش توسط milad brave; ۱۱:۲۴ ۱۳۹۶/۱۰/۱۰.
                              من با دانش و آکاهی ام تمام جهالت ها رو به زانو در خواهم اورد.

                              دیدگاه


                                #30
                                پاسخ : اتصال دو esp8266

                                با تشکر از جناب M3R-E بخاطر راهنمایی و پیگیری ارزشمندشون ، منم سعی میکنم طوری که ازم بر میاد کمک کوچیکی بکنم و به موازات جناب M3R-E برنامه دیگری رو اینبار فقط با دستورات آردوینو اینجا قرار بدم. دلیلش اینه که اگر از هر دو روش به جواب برسیم ، برای کاربرانی که بعدا این تاپیک رو میخونن خیلی مفید خواهد بود و هرکسی میتونه از هر روشی که تمایل داره استفاده کنه. در عین حال با هردو روش آشنا میشن. چون این دو روش مکمل یکدیگرند. (روش at-comand و روش فقط دستورات آردوینو)
                                در روش آردوینو به 2 صورت میشه این کار رو انجام داد. یکی در مود sta و دیگری مود ap هست (Station و access point)
                                فرقشون: در روش sta سرور و کلاینت از یک روتر خارجی برای شبکه و ارتباط استفاده میکنند (که میتونه مودم وایفای منزل باشه) اما در روش ap خود esp بصورت یک وایفای دایرکت عمل کرده و نیازی به روتر خارجی نیست.
                                اول بگم که من فقط یک ماژول esp دارم

                                روش sta مشکلی توش نیست بجز یه مشکل IP داینامیک که مودم به تمام دستگاه های متصل به خودش میده و این IP ممکنه هر چند مدت عوض بشه. در مقابل میتونم از همون یدونه ماژول استفاده کنم و برنامه سمت سرور و کلاینت رو بنویسم و تست کنم.
                                در روش ap ما IP سرور رو خودمون تعریف میکنیم. درنتیجه IP ثابت هست. منتهی برای تست این روش باید 2تا ماژول داشت که خوب من ندارم. و چون طبق گشتی که تو اینترنت زدم خیلی ها تو انجمن های خارجی تو این ارتباط مشکل داشتن ، نتیجه میشه که هی من باید بنویسم بزارم و شما تست کنید (دردسره)
                                خلاصه هر کدوم رو که بخواید انجام میدیم. حتی میتونیم جفتش رو انجام بدیم.

                                روش ap در قسمت server :

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



                                const char* ap_ssid = "eca";
                                const char* ap_password = "aa123123";
                                const int LED_PIN = 2;


                                IPAddress apIP(192, 168, 4, 1);
                                WiFiServer server(80);
                                WiFiClient client;


                                void setup() {
                                Serial.begin(115200);
                                delay(10);

                                WiFi.mode(WIFI_AP);
                                WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
                                WiFi.softAP(ap_ssid, ap_password);


                                Serial.println();
                                Serial.print("Connecting to: ");
                                Serial.println(ap_ssid);

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


                                pinMode(LED_PIN, OUTPUT);
                                digitalWrite(LED_PIN, HIGH);
                                }


                                void loop() {
                                // Check if a client has connected
                                WiFiClient client = server.available();
                                if (!client) {
                                return;
                                }


                                // Wait until the client sends some data
                                Serial.println("new client");
                                while(!client.available()){
                                delay(1);
                                }

                                // Read the first line of the request
                                String req = client.readStringUntil('\r');
                                Serial.println(req);
                                client.flush();

                                // Match the request
                                int val;
                                if (req.indexOf("/gpio/0") != -1)
                                val = 0;
                                else if (req.indexOf("/gpio/1") != -1)
                                val = 1;
                                else {
                                Serial.println("invalid request");
                                client.stop();
                                return;
                                }


                                // Set GPIO2 according to the request
                                digitalWrite(2, val);

                                client.flush();


                                // Prepare the response
                                String s = "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\n";
                                s += (val)?"high":"low";

                                // Send the response to the client
                                client.print(s);
                                delay(1);
                                Serial.println("Client disonnected");


                                // The client will actually be disconnected
                                // when the function returns and 'client' object is detroyed
                                }

                                تستش هم کردم. جواب میده.
                                ابتدا برنامه را در آردوینو آپلود کرده و پنجره سریال مانیتور را باز کرده با نرخ باودریت 115200
                                در کامپیوتر یا موبایل پس از اتصال به وایفای با رمز و پسورد موجود در کد ، در مرورگر لینک زیر را تایپ و اجرا کنید:
                                192.168.4.1/gpio/1
                                or
                                192.168.4.1/gpio/0
                                ماژول من برپایه esp8266-12e هست که یک led به پایه 2 آن وصله اما این led بافر شده , نگتیو هست. در نتیجه برعکس عمل میکنه.
                                کدش رو سعی شده راحت ترین و ساده ترین کد باشه با این وجود برای درک بهتر از تو ضیح کد مربوط به حالت sta که در زیر لینکش رو میزارم استفاده کنید.
                                بازم اگه جاییش رو سوال داشتید بپرسید.

                                روش sta در قسمت server:
                                میتونید از این کد استفاده کنید که یه فرق کوچیک هم که توش داره اینه تو این کد ما از html استفاده کردیم اما تو کد حالت ap از حالت text بهره بردیم. هر رو حالت مفید است.
                                توضیحاتش هم در لینک مربوطه موجوده.
                                کد

                                جدیدترین ویرایش توسط digi-rx; ۱۴:۳۹ ۱۳۹۶/۱۰/۱۰.
                                تاپیک ویدیوهای آموزشی حواشی آردوینو و ESP

                                دیدگاه

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