1. 程式人生 > >利用FPGA控制WIFI模塊(1)——8266篇

利用FPGA控制WIFI模塊(1)——8266篇

輸入 了解 body 選項 8.4 title align 密碼 圖片

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控制它打下知識基礎。

利用FPGA控制WIFI模塊(1)——8266篇