Arduino WIFI(ESP8266) 初次上手應用

WiFi Serial Transceiver Module.jpg  

 

今天要來討論的是最近很親民的"ESP8266"

 

因為便宜的價位,功能也能應用的非常廣,像是"家電監控"、"遠端遙控"、"點對點溝通"、"雲端資料庫"等等

其實之前自己就已經玩過這塊,不過每當過一段時間要來玩的時候

常常無法與電腦終端機溝通上,不然就是code要重寫,花很多時間,所以這次要來為自己準備"大補帖"!!

 

廢話說完了,這次我們要準備的材料有:

--------------------WIFI模組應用材料----------------------

軟體:

Arduino IDE

Realterm(WIN7用終端機) 

硬體:

WIFI數據機 or 手機熱點分享 

Arduino 板子 (Uno、Nano、Mega、Mini、Yun...都可) *1塊

FT232  *1塊

ESP8266  (鮑率9600)*1塊

--------------------------------------------------------------

FT232 長這樣:

sku_164970_1.jpg  

其實也有很多種版本,也有人稱"USB轉TTL"...等等
但我用的是長的跟上圖一樣,網拍一個賣25元。

 

它有兩大功用: 

1.是用來燒錄ESP8266內建韌體用的,就是修改鮑率。

2.可以隨時用簡單的Realterm(終端機)來測試ESP8266是否正常。(這非常重要,因為常常有人遇到問題就認為ESP826燒壞了!)


FT232在本實驗是一大功臣,我當初玩ESP8266時沒有順便買FT232,就玩不起來,因為不知道原廠的鮑率,ESP8266就不會回話,然後也不知道怎下手,弄得自己吃不到魚,卻惹得一身腥。

 

FT232就先介紹到這。馬上來進入正題。

 

實驗方法

1.先用Realterm(終端機)測試ESP8266是否正常。(如果正常本次實驗就成功80%了~!)

2.再用Arduino取代Realterm(終端機)與ESP8266溝通,開內建序列監控室窗進行測試。

3.用ThingSpeak當作雲端資料庫,接收Arduino的各項數值。

4.完成

 

實驗開始

一. 先用Realterm(終端機)測試ESP8266是否正常:

1.下載Realterm (點進去按Download),下載好後安裝,先不要打開

RealTerm.jpg

2. FT232與ESP8266 照此圖接。

 7295fe1f-7a38-951b-3248-9bb1ac7e61ea.png

 

3. 接好後,把FT232插進電腦,確保FT232正常運作,先打開電腦裝置管理員,查看是否運作成功,如果有黃色警告標示則是安裝驅動失敗,需要更新驅動軟件。

 電腦終端機.jpg  

4.現在可以打開RealTerm,勾選Ascii 旁邊打勾。

RealTerm1.jpg

 

5.書籤點選Port,更改(1)鮑率為"9600",更改(2)Port為FT232的USB Port位置,按(3)設置完成。

RealTerm2.jpg

 

 

6.這邊就是見證成敗與否的時刻,(1)勾選CR,LF,CR,LF,(2)輸入AT,大小寫皆可,(3)按SendASCII,(4)看到OK即可。

如果是一片空白的話也不要氣餒,再找找看哪個細節出問題。

RealTerm3.jpg  

7.完成實驗一,代表已經成功80%了,再接再厲!!

 (如果此階段遇到問題請去留言19樓看看)

二.再用Arduino取代Realterm(終端機)與ESP8266溝通,開內建序列監控室窗進行測試。

1.點擊進入複製 Code

2.Arduino與ESP8266照接此電路圖

ESP+Arduino.jpg  

3. Code第二行是設定ESP8266的TX,RX腳位,預設是RX->4 ; TX->5 ,使用者自行更改。

SoftwareSerial mySerial(4, 5); // RX, TX 直接接ESP8266

4.開始燒錄(建議把TX,RX拔掉再燒錄,否則會燒錄失敗),燒好看TX,RX是否插好並打開內建序列監控室窗。

5.輸入AT(小寫at也可),看到"OK"如下圖,則實驗方法二完成。

(底下記得選擇NL&CR,AT才會有回應喔! 謝謝網友陳建男的補充及建議 2017/06/02 新增)

Arduino-ESP8266-TEST.jpg

 

 

注意:(2015/11/30補充)

ESP8266電源最好外接穩壓晶片,不要用Arduino內建3.3V,電流是不足的,會造成資料傳輸上的Error。

LD1117AL 3.3v穩壓晶片介紹

https://www.sparkfun.com/datasheets/Components/LD1117V33.pdf 

P.3有電路圖參考

 

三.用ThingSpeak當作雲端資料庫,接收Arduino的各項數值。

1.點擊進入複製 Code  Code2(改進版)

2.更改SSID(WIFI使用者名稱)、PASS(WIFI密碼)

3.還有最後1個數據要改(GET) 先不要燒錄,這個數據取得之前要先去申請 ThingSpeak帳戶 (點擊進入教學)

4.教學結束後,到API KEY標籤處 複製 Write API Key :

 ThingSPEAK API.jpg 

5. Code第12行 

String GET = "GET /update?key=MIN085MR4XATH8VD";

請把"MIN085MR4XATH8VD"改成自己的 Write API。

 

6.改好拔掉ESP8266的TX,RX再進行燒錄。燒好"馬上"插上TX,RX並打開序列監控室窗進行測試,看到以下畫面就成功了。(如果第一行不是SEND: AT 請用力的按下Arduino上的 RST )

講解一下:

第一行:傳AT給ESP8266看它是不是活的。

第二行:接收到ESP8266傳OK,代表它是正常的可以工作。

第三行:無意義,單純代表可以開始傳資料給ESP8266。

第四行:傳送 WIFI使用者名稱(手機使用者名稱)、WIFI密碼給ESP8266。

第五行:接收到ESP8266傳OK,代表成功連接WIFI基地台(或手機)。

第六行:傳送 連接ThingSpeak網頁IP 的指令給ESP8266

第七行:傳送 API+數據1+數據2 給ESP8266

"數據1與數據2從何而來?" Code 第30行,可以知道我們傳的數據1是5 ; 數據2是9 

SentOnCloud( String(5), String(9) );

 如果要傳更多種類的數據只要去 Code 第44行 ,依樣畫葫蘆 + "&field=3" + X + "&field=4" + Y + "&field=5" + Z +.... 即可

第八行:接收到ESP8266傳OK,代表傳送成功!

接著會開始無線迴圈傳送API+數據1+數據2 給ESP8266。

 Arduino-thingspeak.jpg

 7.打開ThingSpeak ,看到有數據再跑,右邊的Channel Stats的 Updated有再改變的話就代表成功囉!


 ThingSPEAK.jpg   

8. 實驗方法三完成,實驗大成功!

(以下是我上傳的數據僅供參考)

系統持續運作天數

魚缸自動餵食時間


魚缸水溫


魚缸水位


 

 

   一起來分享自己的數據成果吧~

 

 2015/12/4 新增--

 ESP8266 Datasheet等相關資料 載點

 

 

 

相關應用教學: 

*教學*Arduino WIFI(ESP8266) 入門應用<網頁控制LED>

*教學*Arduino WIFI(ESP8266) Time同步設計

*情人節DIY*製作情侶專屬音樂盒

 

 

, , , ,
創作者介紹

**兩隻小豬**

兩隻小豬 發表在 痞客邦 PIXNET 留言(68) 人氣()


留言列表 (68)

發表留言
  • joskyo2236
  • 大大你好 照著你的教學步驟 前面的部分很順利的都完成了
    但是在arduino上傳資料到ThingSpeak 卻無法上傳上去
    我使用的板子是UNO 有將你的程式 RX TX部分改為0 1

    串列視窗出現的資訊如下 可以麻煩大大幫我看一下嗎
    SEND: AT
    RECEIVED: OK
    Data ready to sent!

    SEND: AT+CWJAP="EEE",""
    RECEIVED: OK
    SEND: AT+CIPSTART="TCP","184.106.153.149",80
    RECEIVED: Error
    Exit2
    SEND: AT+CIPSTART="TCP","184.106.153.149",80
    RECEIVED: Error
    Exit1

  • 你好
    這個問題其實我之前有遇到,其實很簡單的問題
    如果ESP8266會回應代表功能正常
    但是進行SEND傳輸的步驟或連線出現ERROR通常都是
    "3.3v 電源的不足"
    以下建議可以完全解決上述問題不會有後顧之憂:

    1. LD1117AL 3.3v穩壓晶片 https://www.sparkfun.com/datasheets/Components/LD1117V33.pdf
    照第三頁接,vin接Arduino的5v、vout接esp8266的3.3V即可!

    2.外掛2顆1.5v串聯電池,正接esp8266的3.3V,但是電池能用多久我就沒試過囉

    希望可以解決你的問題

    兩隻小豬 於 2015/09/08 11:02 回覆

  • joskyo2236
  • 謝謝大大上次的回答 後來我還是將RX TX改回 4,5腳位!
    但是最近出現一個問題 資料常常上傳個一天 或幾個小時後 就突然不上傳,出現ERROR,去摸一下晶片發現很燙,會是因為晶片熱當的原因嗎?
    這情況已經有兩星期之久了 斷斷續續的出現 每次都需要拔電源讓他冷卻之後就正常了,到了今天板子已經完全都沒反應了 不知道是不是燒壞了!
    大大有沒有遇到相同的情況呢?




  • 1.上傳有斷斷續續的問題:
    我有遇過,但我目前認為是ESP指令與指令之間Delay時間過短的問題,其實國內很少人討論到這塊就是ESP連續工作(元件溫度的影響最大)導致指令延時需要做調整,多看ESP8266 的 Datasheet 你會更清楚。
    我想,最簡單的解決辦法就是把AT下指令後的Delay時間做增加,可能延時個幾秒看看。

    2.關於過熱問題:
    電源不穩定或過高電壓影響元件,導致元件過熱,元件過熱影響本身功能。
    你要看看ESP的電源3.3V夠不夠乾淨,可以在ESP的電源(3.3V)並一顆大一點的電容做電壓濾波,還有就是Arduino 的TX輸出電壓會高過3.3V給ESP8266的RX,長久使用下來可能就是ESP內部元件抵消多於的功率,導致元件發熱。
    請試著利用電阻分壓,把TX電壓降到3.3V,網路上有人用Arduino TX訊號串上2K與1K電阻到GND,用2K上的電壓降(3.3V)當TX的訊號源到ESP8266的RX。

    希望以上三點可以解決你ESP8266過熱與資料不丟失的問題。

    兩隻小豬 於 2015/11/29 23:11 回覆

  • 訪客
  • 謝謝大大的教學 只不過現在晶片完全不回應電源燈會亮 , wifi的藍色燈都不會閃了
    使用Realterm去測試也都不會回 感覺已經沒救了!
  • Wifi燈在下AT指令時會閃爍,而你目前的狀況很有可能是你ESP8266的鮑率不是9600,所以溝通不上,你需要用軟體做修改ESP的韌體,不然就是Realterm用不同鮑率去試著溝通看看。

    兩隻小豬 於 2015/10/20 16:27 回覆

  • joskyo2236
  • 昨天沒有登入變成訪客留言

    鮑率確定是9600 之前下AT指令很正常 前兩天發現無論怎麼試都無回應
    才在想是不是因為過熱之類的把晶片給弄壞了
  • 我TX沒分壓 用了好幾個月至今還未燒
    除了灌過高的電壓外,應該不太會燒
    但發熱是正常的,但盡量不要用手去摸ESP上的晶片,手上靜電會破壞晶體...

    兩隻小豬 於 2015/10/21 12:51 回覆

  • 阿甘
  • 可以問一下已經可以接收資訊,那可以使用透過 ESP8266連Wifi傳至Arduino使LED亮?
  • 本人之前實際操作過可以用網頁控制LED,不過目前ESP晶片都在應用當中,等到日後買新的元件後才會有新的教學文章出來,謝謝提出建議,你們的回覆與互動會是我寫文章的動力。

    兩隻小豬 於 2015/10/23 12:25 回覆

  • 訪客
  • 請問我在實驗2的部分接線沒問題,但是最終下AT指令卻永遠回傳亂碼,是什麼問題呢?
  • 請問有照著步驟來嗎?如果實驗一、二結果都沒問題的話應該是會正常工作的…
    或者可以把你的問題再描述清楚一些

    兩隻小豬 於 2015/11/12 12:57 回覆

  • Patrick Juan
  • 您好, 請教一下.
    當我使用 ESP8266 連到我手機的4G 網路, 整個功能都沒問題, ThingSpeak 也可以收到我的網路.

    當我使用中華電信的 ADSL 時, 確認了 SSID, PASS 都 Received: OK, 唯獨
    SEND: AT+CIPSTART="TCP","184.106.153.149",80
    RECEIVED: Error

    這可也是跟 3.3V 有關嗎? 還是...
  • 如果連WIFI沒問題的話就跟電源無關..
    我試過ESP剛開始連手機的熱點相對於WIFI所等待的時間會比較長
    建議你可以自己把Delay改一下,試試看!

    兩隻小豬 於 2015/11/16 00:09 回覆

  • 老干
  • 目前使用序列打AT指令跟ARDUINO溝通,想詢問問題出現在哪裡!!?
  • 目前ESP沒遇過Arduino收值會有亂碼的狀況…能截圖上傳讓我分析一下嗎?

    兩隻小豬 於 2015/11/16 17:59 回覆

  • Patrick Juan
  • 謝謝版大的回應, 我自己搞了烏龍, 我把我的 SSID 名字大小寫沒有完全一致...
    另外我也在讀您上面的回應, 關於浮接的問題, 應該可以幫我增加一點功力, 感恩.

    這裡提上個人的一點實驗結果, 我今天是接了 PIR 在 Pin 2, 送這個資訊上雲端, 接一個 LED 在 Pin1 也去讀取 PIR 的結果. 這樣我人離得遠遠的看就知道 PIR 的狀態應該是 0, 結果 LED 一直亮著, 就算我把 PIR 用碗蓋住, thingSpeak 顯示 PIR =0, 我的 LED 也是 亮著, 我用三用電錶量, 果然 always High. 我試了 pin 0 也是. 後來改其他 Pin 比如是 pin 8, 就 OK 了... 個人猜想是不是是版大說的浮接, 或者是用到通訊功能是 Rx, Tx 干擾了 pin 0, pin 1?
  • 你說的PIR是人體紅外線感測嗎?
    且通常不使用arduino的Pin 0,1做應用 因為如果你有用宣告序列埠時(SoftwareSerial),你Pin 0,1 就會自動被當作TX,RX做使用,就會有你說的誤動作的情況發生。
    還有Debug的步驟建議先從最基本的硬體(PIR是否正常,我記得PIR模組可以直接輸出狀態並且獨立運作不用接arduino),確定OK再來是看軟體的序列埠能否接收PID的狀態,確定OK再來把值上傳到雲端看看 thingSpeak 的值是否正常。
    然後浮接通常發生在Pin同時做輸入與輸出(雙向in/out)才會發生的狀況,如果只是做單向應該是沒問題的...

    兩隻小豬 於 2015/11/16 22:59 回覆

  • 悄悄話
  • 悄悄話
  • 悄悄話
  • 甘孟遠
  • 目前作法是ARDUINO直接連接8266,電壓也直接連接ARDUINO上面的3.3V,這樣會是電壓的問題?
  • 八成是的...
    建議你試著用1樓的第一個方法
    使用LD1117AL 3.3v穩壓晶片,
    把Arduino的5V穩到3.3V,而不要用Arduino內建3.3V,據說是電流不足的關係。
    我ESP8266現在用的電源就是外接穩壓晶片,可以看上面的數據從八月用到現在都還一直在working,系統也沒斷電過。

    兩隻小豬 於 2015/11/30 15:20 回覆

  • 悄悄話
  • TACO
  • 在第3步驟中,我將程式碼複製貼上
    並且修改SSID,PassWord,Write API
    基板Arduino Mega 1280 、 麵包版供電電源版
    也使用USB轉TLL修改 Baud rate 成9600

    程式碼如下
    #include <SoftwareSerial.h>
    #define _baudrate 9600
    #define _rxpin 19
    #define _txpin 18
    SoftwareSerial debug( _rxpin, _txpin ); // RX, TX
    //*-- IoT Information
    #define SSID "The_code_is_3492"
    #define PASS "lab0277343492"
    #define IP "184.106.153.149" // ThingSpeak IP Address: 184.106.153.149
    // 使用 GET 傳送資料的格式
    // GET /update?key=[THINGSPEAK_KEY]&field1=[data 1]&filed2=[data 2]...;
    String GET = "GET /update?key=CTUJIQJ79057FAA3";

    void setup() {
    Serial.begin( _baudrate );
    debug.begin( _baudrate );
    sendDebug("AT");
    delay(1000);
    if(debug.find("OK"))
    {
    Serial.println("RECEIVED: OK\nData ready to sent!");
    connectWiFi();
    }
    else{
    Serial.println("NO RESEPONCE!");
    }
    }
    void loop() {
    delay(5000); // 60 second
    SentOnCloud( String(5), String(9) );
    }
    void SentOnCloud( String T, String H )
    {
    // 設定 ESP8266 作為 Client 端
    String cmd = "AT+CIPSTART=\"TCP\",\"";
    cmd += IP;
    cmd += "\",80";
    sendDebug(cmd);
    if( debug.find( "Error" ) )
    {
    Serial.print( "RECEIVED: Error\nExit1" );
    return;
    }
    cmd = GET + "&field1=" + T + "&field2=" + H +"\r\n";
    debug.print( "AT+CIPSEND=" );
    debug.println( cmd.length() );
    if(debug.find( ">" ) )
    {
    Serial.print(">");
    Serial.print(cmd);
    debug.print(cmd);
    }
    else
    {
    debug.print( "AT+CIPCLOSE" );
    }
    if( debug.find("OK") )
    {
    Serial.println( "RECEIVED: OK" );
    }
    else
    {
    Serial.println( "RECEIVED: Error\nExit2" );
    }
    }
    void sendDebug(String cmd)
    {
    Serial.print("SEND: ");
    Serial.println(cmd);
    debug.println(cmd);
    }

    boolean connectWiFi()
    {
    debug.println("AT+CWMODE=1");
    delay(2000);
    String cmd="AT+CWJAP=\"";
    cmd+=SSID;
    cmd+="\",\"";
    cmd+=PASS;
    cmd+="\"";
    sendDebug(cmd);
    delay(5000);
    if(debug.find("OK"))
    {
    Serial.println("RECEIVED: OK");
    return true;
    }
    else
    {
    Serial.println("RECEIVED: Error");
    return false;
    }
    cmd = "AT+CIPMUX=0";
    sendDebug( cmd );
    if( debug.find( "Error") )
    {
    Serial.print( "RECEIVED: Error" );
    return false;
    }
    }


    但序列經控視窗出現如下
    SEND: AT
    NO RESEPONCE!
    SEND: AT+CIPSTART="TCP","184.106.153.149",80
    RECEIVED: Error
    Exit2

    不知道問題出在哪裡,無法透過esp8266 上傳資料到ThingSpeak

  • 你好
    序列視窗第二行"NO RESEPONCE!"的意思是
    你傳一筆資料"AT"給ESP8266,但是傳輸過程有誤
    你的ESP沒回應給Arduino,就會造成...

    想請問你有照著步驟依序做嗎?
    如果有的話是不會有"NO RESEPONCE"的問題的!

    兩隻小豬 於 2015/12/04 21:45 回覆

  • TACO
  • 步驟二中,驗證程式碼會發生錯誤
    sketch_dec05a.cpp: In function 'void setup()':
    sketch_dec05a:6: error: no match for 'operator!' in '!Serial'
    sketch_dec05a.cpp:10: note: candidates are: operator!(bool) <built-in>

    所以步驟二中,我是使用自己的程式碼去操作
    使用AT 指令,有得到OK的回應

    然後我直接複製步驟三的程式碼,並且修改某些變數
    但卻無回應
  • 步驟二的程式其實是內建範例去改的,不太可能有錯

    剛剛幫你查了一下你的Error
    請問你電腦上的Arduino編譯版本為何?
    版本太舊會導致某些語法編譯錯誤喔..

    兩隻小豬 於 2015/12/05 16:35 回覆

  • TACO
  • Arduino 1.0版本
  • TACO
  • 改使用Arduino 1.6.6版
    步驟三燒錄完後,序列監控視窗仍相同 ( NO RESEPONCE )
    我的基板是Arduino Mega 1280
    配線上為ESP8266 UTXD -> Arduino RX1 (19)
    ESP8266 URXD -> Arduino TX1 (18)
    穩壓器(電源模組)3.3v → ESP8266 VCC
    穩壓器(電源模組)3.3v → ESP8266 CH_PD
    穩壓器(電源模組)GND → ESP8266 GND
    穩壓器(電源模組)GND → Arduino GND
    ESP8266供電為面板包供電電源版3.3V(插USB)
    Arduino供電為USB供電

    Arduino程式中
    板子選擇為Arduino/Genuino Mega or Mega 2560
    處理器 Mega 1280
    燒錄器 Arduino as ISP
  • https://www.arduino.cc/en/Main/arduinoBoardMega
    參考這個網頁,試著把RX,TX換到Serial port上。

    "Serial: 0 (RX) and 1 (TX); Serial 1: 19 (RX) and 18 (TX); Serial 2: 17 (RX) and 16 (TX); Serial 3: 15 (RX) and 14 (TX). Used to receive (RX) and transmit (TX) TTL serial data. Pins 0 and 1 are also connected to the corresponding pins of the FTDI USB-to-TTL Serial chip."

    兩隻小豬 於 2015/12/05 19:10 回覆

  • 胖子
  • 不好意思 最近在接觸ESP8266 有些問題想請教一下
    步驟一. 先用Realterm(終端機)測試ESP8266是否正常:
    卡很久 像您上面備註提到的 下指令後畫面沒反應可以是有環節出錯
    我有重新用許多次 也看過滿多的文章 但目前我看到步驟比較詳細就是這篇文章了
    想請問一下 如果像是下指令但畫面沒反應這種問題較有可能發生在哪
    我一直在思考會不會是燒掉 但是我看完文章後 感覺ESP8266要燒掉也不是這麼容易
    希望能給些建議及方向
  • 謝謝,這篇文章的目的只是想為帶動國內物聯網的發展盡一份心力而已。

    第一步驟如果沒反應,其實就可以知道目前你手上這塊ESP的鮑率不是9600了。
    解決辦法有兩種:
    1.在步驟1的標題5那張圖,用不同鮑率去試,試到有反應為止,不過這個方法較沒效率,也會造成接下來的實驗步驟需要更改參數而混亂,所以不建議。
    2.用電腦ESP燒錄軟體更改ESP鮑率(FT232連接ESP才能燒錄):
    下載文章最末節的補充資料並打開:
    ESP 模組資料集\固件及燒錄軟體\ESP8266Flasher-x86-v0.9.2.4.exe
    Realterm記得先與ESP斷開通訊,然後按"一鍵燒寫"
    等它Loading完就能把ESP8266鮑率改為9600囉

    需要注意的是:ESP8266執行燒錄前必須把GPIO0拉到地,燒寫完再移除掉即可,不然ESP可是不會理你的喔。

    兩隻小豬 於 2015/12/20 11:45 回覆

  • 訪客
  • 你好 我想問可以用兩個ESP8266
    一個當伺服端 一個當客戶端的傳資料嗎
  • 類似藍芽的點對點傳輸嗎?
    印象中ESP8266可以做到,請到本篇文章末節下載ESP8266補充資料
    ESP 模組資料集\ESP8266新手入門調試指導(補全).doc
    裡面有教學,關於如何讓ESP8266當SERVER的指令
    不過我目前還沒測試過,如果有時間的話會再找機會PO教學的!

    兩隻小豬 於 2015/12/06 13:16 回覆

  • TACO
  • 感謝目前已成功了
    將以下這些消掉
    #define _rxpin 19
    #define _txpin 18
    SoftwareSerial debug( _rxpin, _txpin ); // RX, TX

    並且更改程式碼中有debug字元改成Serial1 就可行了

    但現在我在連wifi的部分,會有
    SEND: AT+CWJAP="The_code_is_3492","lab0277343492"
    RECEIVED: Error

    但是我資料可以上傳到ThingSpeak
    數據點有變化,且形成連線
    不知道是哪裡出問題了
  • 如果出現ERROR但傳送成功,那就是ESP傳送時間的關係
    sendDebug(cmd);
    delay(5000);
    如果把5秒增加到7~9秒,會比較容易成功,單純只是給ESP更多時間去反應。
    但是,有更好的寫法,不必這樣猜,可以用被動式的方法
    意思是,目前我們都是主動式的丟命令給ESP,然後固定時間去看有沒有收到,但如果ESP回傳只是慢了一點就整個被RESET,會造成系統不穩定,效率也會變差,也就是你目前遇到的問題。
    而被動式不一樣的地方就是,把固定時間這個限制拿掉,改成等待ESP回傳的信息。
    方法告訴你了,可以寫寫看,再跟大家分享你的寫法,加油!

    2015/12/21 已在實驗三新增Code2:被動式改進的版本了,可以用用看。

    兩隻小豬 於 2015/12/21 23:45 回覆

  • 訪客
  • SEND: AT
    NO RESEPONCE!
    SEND: AT+CIPSTART="TCP","184.106.153.147",80
    RECEIVED" Error
    Exit2
    請問我的會一直跑這一段 我RX TX都接2 3 腳 GND要接在電源模組嗎
    還有以上部分要怎麼解決
  • 因為ESP出問題的因素太多,麻煩請照著實驗步驟一個一個來分析問題~感恩
    沒錯,模組跟電路要共地,GND請接在一起。

    兩隻小豬 於 2015/12/07 21:58 回覆

  • TACO
  • 我想問其他的問題,關於thingspeak
    thingspeak繪圖上,只能每10秒畫一個點,esp8266上傳資料可以很快,大概能1秒1個甚至更快,但繪圖上卻只能10秒,我是使用紅外線感測器,想知道某一個東西來回通過的電壓變化,精度可能要到1秒以內
  • 那可能要上傳到自己的Server做後處理,不能透過ThingSpeak,就如同您說的無法快速響應,但難度又會再進階些。
    我IOT的目標也是建立自己的Server端,演算法寫在雲上然後回傳控制策略,不過研究所比較忙碌,目前還沒開始著手進行...

    兩隻小豬 於 2015/12/09 00:21 回覆

  • KEN
  • 你好 我想問ESP8266可以使用POST將資料傳進MYSQL的資料庫嗎
  • 應該是可以的,不過MYSQL我不是很熟
    雲端資料庫是你的強項嗎?
    我之後目標也是用MYSQL,可以交流一起試看看!

    兩隻小豬 於 2015/12/16 22:15 回覆

  • 悄悄話
  • 甘孟遠
  • 感謝大大給的8266載點
  • 希望大家多多交流,一起進步啦~

    兩隻小豬 於 2015/12/16 22:19 回覆

  • Forget
  • 你好 請問為甚麼我使用RealTerm
    8266會一直自動傳遞訊息
    訊息框不斷顯示[System Ready, Vendor:www.ai-thinker.com]
    下方顯示UART receiver framing error
    但基本AT指令皆正常運作
    使用AT+CWLAP時無回應
  • 1.檢查一下硬體電路有無接錯
    ESP8266沒接的地方可以空著不接沒關係
    2.使用RealTerm是否有搭配用FT232?
    3.基本上AT+CWLAP指令是會掃描周圍的基地台,會需要等上一段時間才會response。

    兩隻小豬 於 2015/12/16 22:28 回覆

  • Forget
  • 你好 以下連結為我使用的8266
    http://c.rimg.com.tw/s2/8/d1/cc/21524736995788_102_m.jpg
    有使用3.3V穩壓IC,外接電源為5V,其餘的硬體電路連接都與您相同
    只是我的8266似乎會不斷的自動執行重新啟動(藍燈不斷的閃爍)
  • 這塊版本我還沒玩過,可能是真的有差的喔。

    兩隻小豬 於 2015/12/19 22:23 回覆

  • 小書庫
  • 您好:
    我有按照您的做法來做
    只是當使用Arduino UNO來接ESP8266的時候,一直出現亂碼,指令下了也沒用
    不知道什麼地方出了問題
    目前我這顆ESP8266只知道鮑率為115200
    還希望版大指點迷津
  • 19樓有鮑率不是9600的解決方法喔
    請試著重新燒錄ESP8266的韌體,再繼續實驗
    有問題歡迎再來請教。

    兩隻小豬 於 2015/12/19 22:21 回覆

  • 小羊
  • 請問 身邊沒有 ft232 就無法改 esp8266的baudrate了嗎

    因為 AT測試時 都沒有回應
  • 小羊
  • 請問一下 按照REALTIME的步驟 到最後 都是一片空白 要不然就是 亂碼

    請問 要怎麼解
  • 如果是初學
    沒有FT232來實驗 保證9.9成的人是做不成功的
    文章說明的很清楚了
    網路商城很多都有賣
    光華電子材料行也都有
    不是說很貴

    兩隻小豬 於 2015/12/20 13:51 回覆

  • 小羊
  • 請問 我剛剛用FT232做測試時 步驟5做完時 ESP8266一直傳送值 產生亂碼

    是什麼原因造成的?

    順便請問一下 步驟5做完 是esp8266的baudrate就會改變 還是要用別的軟體修改
  • 是用軟體改喔
    因為本實驗是基於ESP8266鮑率為9600設計的
    如果你的ESP8266的鮑率不是9600
    就得照19樓的第2個方案去改
    改的過程中,有不懂的再提問

    兩隻小豬 於 2015/12/20 16:03 回覆

  • 甘孟遠
  • 版主,想問怎們確定8266設定已經完成??
    我目前有打一個ARDUINO程式碼,想說要用來測試從網頁 來測試8266>>去控制ARDUINO上面的LED燈,這樣8266屬於Client 端??

    我的程式碼:
    #include<SoftwareSerial.h>

    #define DEBUG true

    SoftwareSerial esp8266(2,3);

    void setup()
    {
    Serial.begin(9600);
    esp8266.begin(9600);

    pinMode(11,OUTPUT);
    digitalWrite(11,LOW);

    pinMode(12,OUTPUT);
    digitalWrite(12,LOW);

    pinMode(13,OUTPUT);
    digitalWrite(13,LOW);

    sendData("AT+RST\r\n",2000,DEBUG);
    sendData("AT+CWMODE=2\r\n",1000,DEBUG);
    sendData("AT+CIFSR\r\n",1000,DEBUG);
    sendData("AT+CIPMUX=1\r\n",1000,DEBUG);
    sendData("AT+CIPSERVER=1,80\r\n",1000,DEBUG);
    }

    void loop()
    {
    if(esp8266.available())
    {


    if(esp8266.find("+IPD,"))
    {
    delay(1000);
    int connectionId = esp8266.read()-48;

    esp8266.find("pin=");

    int pinNumber = (esp8266.read()-48)*10;
    pinNumber += (esp8266.read()-48);

    digitalWrite(pinNumber, !digitalRead(pinNumber));

    String closeCommand = "AT+CIPCLOSE=";
    closeCommand+=connectionId;
    closeCommand+="\r\n";

    sendData(closeCommand,1000,DEBUG);
    }
    }
    }

    String sendData(String command, const int timeout, boolean debug)
    {
    String response = "";

    esp8266.print(command);

    long int time = millis();

    while( (time+timeout) > millis())
    {
    while(esp8266.available())
    {
    char c = esp8266.read();
    response+=c;
    }
    }

    if(debug)
    {
    Serial.print(response);
    }

    return response;
    }
  • 部落格會自動省略空白...眼睛痛啊~
    給你個提示 response會取得ESP的回應

    這個範例程式我前幾天已經有改成現成可以動作的Code了
    今明天會釋出教學
    耐心等待囉!

    兩隻小豬 於 2015/12/24 16:33 回覆

  • 甘孟遠
  • 感謝版主
    問題一:
    我可以問一下8266電源可否用AMS1117這顆IC?
    因為我打算用變壓器去做一個外部電源供給ARDUINO和ESP8266使用

    問題二:
    網頁部分有對外面IP開放嗎?
  • 1.這顆提供3.3V,800mA 應該是沒問題的

    2.目前正著手研究中..

    兩隻小豬 於 2016/01/17 11:23 回覆

  • JC330
  • 您好:想請教FT232可否用市售的USB TO RS232 9PIN那種來替代?感謝!
  • 那種不行,RS232的工作電壓不是5V,小心燒壞板子

    兩隻小豬 於 2016/01/17 11:25 回覆

  • R22
  • 您好,我目前在試的時候實驗一部成功,線都有檢查過 都接對。
    想問您 哪裡可能出問題。
  • 可能你的ESP8266的鮑率不是9600,請往上看19樓的講解

    兩隻小豬 於 2016/01/17 11:27 回覆

  • zxc5213ya
  • 您好,我想再使用AT+CIPMUX=1跟AT+CIPSERVER=1,8087這兩個AT指令下把我的資料打上雲端,目前卡在AT+CIPSEND=後面要加通道跟字元,但就算我給他通道跟字元也出現RECEIVED: Error Exit2 請問版大有辦法解決嗎?
  • 楊勝棠
  • 請問一下 手機傳值 給 esp8266 arduino端程式碼 需要寫什麼指令 才能接收呢

    目前 arduino 透過 esp8266 傳值給手機可以 但是 手機傳值 卻無法收到
  • 黎里

  • 請問一下 如果Realterm輸入AT 回傳的值是亂碼 這樣正常嗎? 是因為編碼所以導致嗎?
  • 老田
  • 請問一下,我實驗一步驟都ok了,鮑率也改成9600,可是wifi+arduino的AT指令一直沒有回應。
    我是用MEGA2560版子,電壓的方法是用一樓說的電池串接,TXRX設在0和1 (程式也有改到0和1)
    燒錄進去後 打指令AT完全沒有回應
    想請問問題出在哪裡!?
  • 專題製作者
  • 請問一下,我都做成功了,但是我想自己架apache+php+mysql接收溫度及濕度,網站預設值也都設好了,資料庫也建置了(四個欄位,來源、時間、濕度、溫度),碰到問題是因為是自己架設網站,所以把
    String GET = "GET /update?key=MOZDU7Q2WQ5M3KQM";改成
    String GET = "GET /update?";卻發現寫不進去資料庫,
    (我自己有先試寫由index.htm用GET傳遞到index.php程式都可以執行並寫入資料庫)
    想請問這一段String GET =應該怎麼寫 ???????
  • guest
  • 請問一下,我實驗一步驟都ok了,鮑率也改成9600,可是wifi+arduino的AT指令一直沒有回應。
    我是用UNO版子,電壓是用降壓晶片,TXRX設2和3 (程式也有改到2和3)
    燒錄進去後 打指令AT完全沒有回應,在serial monitor是什麼都沒有.
    想請問問題出在哪裡!?
  • 訪客
  • 請問我可以在Realterm(終端機)做設定
    但是接到Arduino卻讀不到8266的回應了
    我在第一步驟就有改鮑率9600了但就是沒反應
  • 訪客
  • 請問一下 我跟著步驟到實驗2時,
    我輸入了AT在內建序列監控室窗,它輸出

    A�

    這是什麼原因?
  • 訪客
  • 感謝版主 已經都試驗成功了
    可是當我把arduino關機拔掉usb線 接上外接電源的時候 wifi就連不到了
    請問有解決辦法或是哪裡有問題嗎?
  • 仁澤
  • Exit2......
  • 訪客
  • 您好,我將FT232與ESP8266接在一起時,3.3V分給Vcc與CH_PD好像會造成電流不足而使電腦抓不到Port,請問有什麼辦法可以解決嗎?
  • 訪客
  • 你好,我打AT命令都正常回應OK,但只要傳送GET指令就只會傳400 BAD REQUEST能否指點
  • Hsin-Te Tseng
  • 請問:
    三.用ThingSpeak當作雲端資料庫,接收Arduino的各項數值。
    1.點擊進入複製 Code Code2(改進版)
    其中CODE2(改進版)

    第15&16行
    " Serial.begin( _baudrate );
    debug.begin( _baudrate );"
    _baudrate 是不是要修改成你自己的鮑率?
    比如說ESP8266是9600的???
    感謝大大
  • 訪客
  • 您好~ 我也是卡在實驗2 用ARDUINO打AT沒反應 請問是什麼問題?
  • Percy
  • 版主,請問您的Arduino RX,TX都是5V,而ESP8266的RX,TX準位是3.3V,請問有經過準位轉換模組相連接嗎?
  • 丁培修
  • 版主請問你一下FT232在哪裡買的,怎麼可以這麼便宜,可以告訴我?
  • s99803765
  • 請問為甚麼我都會在第5步驟時右邊會顯示BREAK呢?
  • 施驊恩
  • 請問一下大大 為什麼 我用的是FT232BL 在RealTerm的時候 (1)勾選CR,LF,CR,LF,(2)輸入AT,大小寫皆可,(3)按SendASCII,(4)看到OK即可。這步驟我沒有反應 然後 右邊的Status TXD(3)在亮黃燈 就是一直亮黃燈 請問是我腳位階錯嗎? 我是照著你上面的圖接線 難道FT232BL 跟 FT232不一樣嗎?
  • 陳亭安
  • 請問要多上傳一個數據 程式碼要怎麼改
  • 黃翔仲
  • 你好~
    請問我使用realterm時,(鮑率9600)顯示出來是空白的,但鮑率更改為19200時是會顯示ok

    再使用提供的燒錄軟體進行燒錄,但之後再使用realterm測試時(鮑率9600、19200)都是空白的
    (腳位都有接正確)
  • cherry1234521
  • 我最近要做專題,想請問一下,如果我將ESP8266連到wifi分享器上,那我手機要怎麼控制arduino板呢? 我是新手,所以不太懂,也查了很多資料,可是都找不到相關資料,希望大大可以給點提示🙇🙇🙇
  • 訪客
  • 不好意思,跟您請教為什麼下達連線指令模組就會出現reset,我是用uno+esp01,我是菜鳥真不知道是出什麼錯,一直出現這狀況,懇請大神幫忙,求您了
  • 訪客
  • 不好意思 請問一下 為什麼我使用一件燒寫之後
    他開始尋找ESP8266之後就沒動作了? 是還有什麼需要設定的嗎?
  • 哲

  • 大大您好,
    我本身非電子相關科系出身,因為您的分享,開始了第一步。 唯獨卡在接ESP8266時, 我的ESP8266是黑板,用USB轉TTL的模組測試都沒問題,但接Arduino UNO時就是無反應(電源燈亮著),您說ESP8266接Arduino 3.3V時會有電流不足問題,請問您是用外部供電還是USB直供呢? 有什麼方法可以判斷是電流不足還是接線接錯呢? 謝謝您。
  • 訪客
  • 你好請問照著文中接線並且esp8266轉接ttl連上電腦後,用realterm開啟但是輸入at畫面完全沒有反應,各種鮑率都試過也都不行,realterm只有傳出的訊號燈亮沒有接收到訊息,想請問這樣我是碰到甚麼問題呢?謝謝您
  • AMIN
  • 成功了~~~~-W-
    謝謝大大
  • 林易呈
  • 我用Arduino取代Realterm(終端機)與ESP8266溝通時 觀測跑出來是亂碼
    可是再用ThingSpeak時 卻可以回傳數據
    有時可以輸入時 輸入AT卻沒跑出OK
    求解 感謝
  • 訪客
  • 請問一下 我有照版大的方式接了,我是使用ESP8266+MEGA
    有修改鮑率 Realterm也有回應

    我的接法是
    ESP:
    VCC(兩個)->MEGA 3.3V
    GND-> MEGA GND
    RX->MEGA TX18
    TX->MEGA TX19

    GPIO 沒接

    程式碼也有修改成
    SoftwareSerial esp8266(19, 18); // Arduino RX:4, TX:5

    在傳輸AT的時候傳輸燈接有量(arduino、ESP8266)

    但是在序列埠監控器上都不會顯示AT,也不會顯示回傳
    可以請問是什麼問題嗎