0.前言:
這一系列博客主要用來記錄通過FPGA控制無線傳輸設備,特別是WIFI模塊的博客。希望為后來的FPGAer提供相關的經驗,少走彎路。
1.模組簡介
ESP8266 系列模組是基於樂鑫ESP8266的超低功耗的UART-WiFi模塊的模組,可以方便地進行二次開發,接入雲端服務,以最低成本提供最大實用性。可以在10元以內實現WIFI-UART的雙向控制。模塊的基本外觀可以參考下面官網的圖片。圖片里模塊的型號是ESP-01S,安信可公司除了這款模塊以外,還有幾款幾款類似的型號,都是基於ESP8266開發的,詳情可以參考安信可公司的網站有相關的介紹:http://wiki.ai-thinker.com/esp8266
2.接口定義
上圖是ESP-01S模塊的俯視圖,圖中標明了模塊8個接口IO的位置及名稱,下面我們來一一介紹一下每個IO的具體功能
PIN腳編號 | PIN腳名稱 | 功能及備注 |
7 | RST | 復位引腳,低電平有效 |
6 | EN | 芯片使能端,高電平有效 |
8 | VCC | 模塊供電引腳,電壓范圍3.0~3.6V |
1 | GND | 電源地 |
2 | IO2 | U1_TXD,I2C_SDA,I2SO_WS |
3 | IO0 | GPIO0,HSPI_SIMO,I2SI_DATA |
4 | RXD | GPIO3,I2SO_DATA |
5 | TXD | GPIO1 |
實際在使用時,主要用的是1、4、5、6、7、8,即GND、RXD、TXD、EN、RST、VCC,就能實現模塊與上位機通過UART串口的通信。
3.簡單應用
上面兩幅圖片是8266模塊的典型應用電路,實際使用時我們用USB轉TTL接口模塊,利用上面的3.3V給模塊供電。USB轉TTL的發送與接收與8266模塊的發送與接收交叉連接,我們就完成了硬件電路的連接。
模塊出廠一般都內置了AT的固件,安信可的默認波特率為115200,N,8,1。打開串口助手,選擇USB轉TTL模塊,就能進行AT指令操作。
安信可常見的AT指令,可以參考他的指令說明:http://wiki.aithinker.com/esp8266/docs#at
下面我們通過幾個例子熟悉模塊的相關操作:
1)TCP SERVER通信
模塊上電或復位后會發出狀態信息(這些狀態信息是以9600波特率傳輸的,在115200波特率下顯示為亂碼),之后會打印ready,表明模塊已經准備好。
通過串口發送“AT+CWMODE=2”(配置為AP模式),注意如果串口助手有發送新行的選項的話記得勾選上,否則模塊可能不會響應你的指令。
模塊正確接收並執行指令后會通過串口返回“OK”
得到“OK”的返回值之后發送“AT+CWSAP_DEF="TCP_Server","12345678",5,4”(配置AP信息,SSID為TCP_Server,密碼為12345678)
之后在收到“OK”之后發送“AT+CIPMUX=1”(開啟AP多連接)
再之后收到“OK”后發送“AT+CIPSERVER=1”(開啟TCP服務器)
此時已經可以在電腦上,通過無線網卡發現名為“TCP_Server”的WIFI,加入的密碼為“12345678”。然后打開網絡串口助手,如果沒有可以去安信可官網下載:http://wiki.ai-thinker.com/_media/tools/tcpudpdbg.zip
在網絡串口助手里建立TCP連接,目標IP及端口為192.168.4.1,333。均為安信可公司的默認設置,點擊連接,串口助手會打印8266模塊的連接狀態即“0,CONNECT”,表明1個STAION已經連接上服務器。
此時,在串口助手上輸入指令“AT+CIPSEND=0,10”(表示告訴模塊,我准備向第0個連接的設備傳輸10個字的數據),之后模塊會回復“OK >”表明准備好接收你要輸出的數據,此時輸入10個字符,點擊發送。模塊發送成功后會反饋信息“SEND OK”,這時你可以在網絡串口助手上看到你通過串口助手發送的數據。
2)TCP CLIENT通信
TCP CLIENT的通信與TCP SERVER的會有些許不同,網絡串口助手負責建立TCP SERVER服務器,端口號為333。
具體操作可以參考上一部分的內容,下面只把發送的命令和模塊的反饋羅列出來:
ready
AT+CWMODE=1 //配置為Station模式
OK
AT+CWJAP_DEF="TCP_Server","12345678" //連接到AP
WIFI CONNECTED
WIFI GOT IP
OK
AT+CIFSR //查詢本機IP地址
+CIFSR:STAIP,"192.168.4.2"
+CIFSR:STAMAC,"5c:cf:7f:91:8b:3b"
OK
AT+CIPMUX=0 //開啟單連接
OK
AT+CIPSTART="TCP","192.168.4.1",333 //連接到TCP服務器
CONNECT
OK
AT+CIPSEND=10 //准備發送10個字節的數據到服務器端
OK
> //出現該符號后串口發送Ai-Thinker(不帶會車換行)
Recv 10 bytes //串口接收到數據
SEND OK //發送成功
CLOSED //TCP連接被關閉
3)UDP通信AP模式
ready
AT+CWMODE=2 //配置為AP模式
OK
AT+CWSAP_DEF="TCP_Server","12345678",5,4 //配置AP信息
OK
AT+CIFSR //查詢本機IP地址
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"a2:20:a6:19:c7:0a"
OK
AT+CIPSTART="UDP","192.168.4.2",8002,8001,0 //開啟UDP連接
CONNECT
OK
+IPD,10:Ai-Thinker //接收到10個數據(Ai-Thinker)
AT+CIPSEND=10 //發送10個字節的數據到服務器端
OK
> //出現該符號后串口發送Ai-Thinker(不帶會車換行)
Recv 10 bytes //串口接收到數據
SEND OK
AT+CIPCLOSE //關閉UDP連接
CLOSED
OK
4)UDP通信STATION模式
ready
AT+CWMODE=2 //配置為Station模式
OK
AT+CWSAP_DEF="TCP_Server","12345678",5,4 //連接到AP
OK
AT+CIFSR //查詢本機IP地址
+CIFSR:STAIP,"192.168.4.2"
+CIFSR:STAMAC,"5c:cf:7f:91:8b:3b"
OK
AT+CIPSTART="UDP","192.168.4.1",8001,8002,0 //開啟UDP連接
CONNECT
OK
AT+CIPSEND=10 //發送10個字節的數據到服務器端
OK
> //出現該符號后串口發送Ai-Thinker(不帶會車換行)
Recv 10 bytes //串口接收到數據
SEND OK
+IPD,10:Ai-Thinker //接收到10個數據(Ai-Thinker)
AT+CIPCLOSE //關閉UDP連接
CLOSED
OK
4.結語
至此,我們基本上了解了8266的接口定義,連接方式以及基本的操作。為之后利用FPGA控制它打下知識基礎。