admin 發表於 2017-1-13 06:49:33

*教學*Arduino WIFI(ESP8266) 初次上手應用

Arduino WIFI(ESP8266) 初次上手應用https://pic.pimg.tw/lolwarden/1439275964-88036312_n.jpg?v=1439275966

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

因為便宜的價位,功能也能應用的非常廣,像是"家電監控"、"遠端遙控"、"點對點溝通"、"雲端資料庫"等等
其實之前自己就已經玩過這塊,不過每當過一段時間要來玩的時候
常常無法與電腦終端機溝通上,不然就是code要重寫,花很多時間,所以這次要來為自己準備"大補帖"!!

廢話說完了,這次我們要準備的材料有:
--------------------WIFI模組應用材料----------------------
軟體:
Arduino IDE
Realterm(WIN7用終端機)
硬體:
WIFI數據機 or 手機熱點分享
Arduino 板子 (Uno、Nano、Mega、Mini、Yun...都可) *1塊
FT232*1塊
ESP8266(鮑率9600)*1塊
--------------------------------------------------------------
FT232 長這樣:
https://pic.pimg.tw/lolwarden/1439277084-1726599340.jpg?v=1439277088
其實也有很多種版本,也有人稱"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),下載好後安裝,先不要打開。
https://pic.pimg.tw/lolwarden/1439282527-607897495.jpg?v=1439282532
2. FT232與ESP8266 照此圖接。
https://pic.pimg.tw/lolwarden/1439278482-3432073698_n.png?v=1439278486

3. 接好後,把FT232插進電腦,確保FT232正常運作,先打開電腦裝置管理員,查看是否運作成功,如果有黃色警告標示則是安裝驅動失敗,需要更新驅動軟件。
https://pic.pimg.tw/lolwarden/1439278819-3236695035_n.jpg?v=1439278824
4.現在可以打開RealTerm,勾選Ascii 旁邊打勾。
https://pic.pimg.tw/lolwarden/1439282430-3435703727_n.jpg?v=1439282435

5.書籤點選Port,更改(1)鮑率為"9600",更改(2)Port為FT232的USB Port位置,按(3)設置完成。
https://pic.pimg.tw/lolwarden/1439282431-1279086791_n.jpg?v=1439282435


6.這邊就是見證成敗與否的時刻,(1)勾選CR,LF,CR,LF,(2)輸入AT,大小寫皆可,(3)按SendASCII,(4)看到OK即可。
如果是一片空白的話也不要氣餒,再找找看哪個細節出問題。
https://pic.pimg.tw/lolwarden/1439282432-2190804213_n.jpg?v=1439282436
7.完成實驗一,代表已經成功80%了,再接再厲!!
(如果此階段遇到問題請去留言19樓看看)
二.再用Arduino取代Realterm(終端機)與ESP8266溝通,開內建序列監控室窗進行測試。
1.點擊進入複製 Code
2.Arduino與ESP8266照接此電路圖
https://pic.pimg.tw/lolwarden/1439290418-4261800433_n.jpg
3. Code第二行是設定ESP8266的TX,RX腳位,預設是RX->4 ; TX->5 ,使用者自行更改。
SoftwareSerial mySerial(4, 5); // RX, TX 直接接ESP82664.開始燒錄(建議把TX,RX拔掉再燒錄,否則會燒錄失敗),燒好看TX,RX是否插好並打開內建序列監控室窗。
5.輸入AT(小寫at也可),看到"OK"如下圖,則實驗方法二完成。
https://pic.pimg.tw/lolwarden/1439281858-3442687418_n.jpg?v=1439281863


注意:(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 :
https://pic.pimg.tw/lolwarden/1439279864-1640873391_n.jpg?v=1439279868
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。
https://pic.pimg.tw/lolwarden/1439280698-516057955_n.jpg?v=1439280703
7.打開ThingSpeak ,看到有數據再跑,右邊的Channel Stats的 Updated有再改變的話就代表成功囉!

https://pic.pimg.tw/lolwarden/1439281143-2766106236_n.jpg?v=1439281147   
8. 實驗方法三完成,實驗大成功!
(以下是我上傳的數據僅供參考)
系統持續運作天數

魚缸自動餵食時間


魚缸水溫


魚缸水位





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

2015/12/4 新增--
ESP8266 Datasheet等相關資料 載點
頁: [1]
查看完整版本: *教學*Arduino WIFI(ESP8266) 初次上手應用