前段時間在某寶買了個ESP8266模塊,用來實現和51單片機的通信,現在將大致過程分享一下,希望能幫助到那些想學習的小白 三部分內容:配置模塊、模塊與51單片機簡單通信、出廠固件的燒錄 附件里有pdf教程,跟帖子內容一樣的,瀏覽體驗可能會更好一點
我買的是8266-01,引腳圖如下
50e81a93228c22f9d31af1896ef0eeed.png (4.56 KB, 下載次數: 198)
下載附件
2019-5-9 22:46 上傳
引腳說明: • VCC接3.3v,接5v時間長了可能會燒 • UTXD,URXD和其它的TXD,RXD接時注意交叉接就行了 • CH_PD要給高電平模塊才工作 • GPIO0一般不用管,燒錄固件時要接地 • RST低電平復位,高電平工作(默認高) • GPIO2必須為高電平,內部默認已拉高,不用管
一、配置模塊: 一般接線如下,圖為模塊與usb轉ttl模塊的接線,與單片機的接線也類似
6a9349404d6d7f80bd656b80526aca5d.png (87.43 KB, 下載次數: 205)
下載附件
2019-5-9 22:49 上傳
下圖為我的連接圖,我這個usb轉ttl模塊的VCC引腳是輸出3.3v的
1f01af3a7f59ac5a7ecc06be7c3eff0.jpg (1.32 MB, 下載次數: 215)
下載附件
2019-5-9 22:50 上傳
接到電腦usb口,打開串口調試助手,wifi模塊買回來的時候波特率應該都是115200,所以要把串口助手的波特率設置為115200,然后點擊打開串口。
用到的AT指令如下: • AT(返回ok表示通信成功) • AT+CIOBAUD=X(改模塊的波特率,X為要改成的波特率,因單片機達不到太高的波特率所以要更改一下波特率,因為我學習板上的晶振是12MHZ的,所以我這里改成4800,原因后面會說到,一般改9600就行,改完之后記得把串口助手的波特率也設置成新波特率,再發AT,有ok表明通信成功)
批注 2019-05-07 203505.png (91.51 KB, 下載次數: 203)
下載附件
2019-5-9 22:51 上傳
• AT+CWMODE=X(設置工作模式指令,X可以是1、2、3,具體如下: 1:Station模式 2:AP模式 3:Station+AP模式 Station可理解為讓wifi模塊去連接路由器或熱點,此時模塊作為客戶端 AP模式可理解為模塊本身是一個熱點,手機或電腦可以連接這個熱點,此時模塊作為服務器。 這里講的是AP模式,Station模式不講,可以自己去了解。 • AT+RST(重啟指令,設置新的工作模式后需重啟才能生效。發送完這條指令后再發送其它指令可能會顯示串口無效,需要退出串口調試助手再重新進入。)
批注 2019-05-07 203714.png (90.14 KB, 下載次數: 192)
下載附件
2019-5-9 22:51 上傳
• AT+CWSAP=<ssid>,<pwd>,<chl>,<ecn>(設置AP模式下的參數,簡單點說就是設置熱點的名字,密碼之類的,例如AT+CWSAP=”8266”,“66666666”,0,3)
批注 2019-05-08 203214.png (30.65 KB, 下載次數: 189)
下載附件
2019-5-9 22:51 上傳
這里我不設置,用默認的 • AT+CWSAP?(可以查看當前AP模式下模塊熱點的具體信息) • AT+CIFSR(查看IP地址,好像都是192.168.4.1) • AT+CIPMUX=1(開啟多連接,貌似最多可以有5臺設備連接這個模塊,設備id分別分配為0到4) • AT+CIPSERVER=1,X(1表示開啟服務器,X為自己設置的端口號,一般設3或4位。也可以只開啟服務器而不設置端口號,默認端口是333好像) 注:倒數的這兩條指令在模塊掉電后需要重新配置,其它那幾條配置過一次不用再重新配置了。
批注 2019-05-07 204334.png (98.98 KB, 下載次數: 192)
下載附件
2019-5-9 22:51 上傳
批注 2019-05-07 204842.png (87.21 KB, 下載次數: 198)
下載附件
2019-5-9 22:51 上傳
到這里拿出手機,打開wifi并連接上模塊的熱點,如果搜不到熱點可以試一下拔了重插,再重新發那兩條指令。
Screenshot_2019-05-07-20-46-42-385_comandroidse.png (39.61 KB, 下載次數: 182)
下載附件
2019-5-9 22:50 上傳
連接熱點成功后打開網絡調試助手這個軟件,右滑進入設置,協議設置為TCP Client,即客戶端模式,IP地址為192.168.4.1,端口為剛才設置的,然后點連接,連接成功后就能通信了。
Screenshot_2019-05-07-20-47-19-770_com.network.de.png (50.03 KB, 下載次數: 184)
下載附件
2019-5-9 22:51 上傳
這里發送了hello和hello66666666,可以看到電腦上的串口調試助手顯示到手機發送過去的信息,這里注意到信息前還附帶了+IPD,0,X:這里的0表示設備id號,表示第0臺設備發送過來的信息,然后X表示信息包含的字符數量。
123.jpg (24.36 KB, 下載次數: 185)
下載附件
2019-5-9 23:01 上傳
二、模塊與51單片機通信 程序比較簡單,實現的功能:手機發一個A,學習板上的燈亮,發B滅燈,簡單地測試一下。下圖是我的連線,很亂,主要注意接對就行了,學習板沒有3.3v,接了一個降壓模塊給模塊供電。
IMG_20190508_183359.jpg (5.68 MB, 下載次數: 195)
下載附件
2019-5-9 22:50 上傳
程序: - #include <reg52.h>
- #include "intrins.h"
- sbit LED1=P2^0;
- typedef unsigned int u16;
- typedef unsigned char u8;
- u8 receive[2];
- u8 sign=0;
- void delay1s(void) //誤差 0us
- {
- u8 a,b,c;
- for(c=46;c>0;c--)
- for(b=152;b>0;b--)
- for(a=70;a>0;a--);
- _nop_(); //if Keil,require use intrins.h
- }
- //初始化串口
- void Init()
- {
- SCON = 0x50; //串口模式1,允許接收
- TMOD = 0x20; //T1工作模式2,自動重裝
- PCON = 0x80; //波特率倍增
- REN = 1;
- //根據實際選擇
- // TH1 = 0xfa; //波特率9600(11.0592)
- TH1 = 0xf3; //波特率4800(12.0000)
- // TH1 = 0xf4; //波特率4800(11.0592)
- TL1 = TH1;
- RI=0;
- EA = 1;
- ES = 0;
- TR1 = 1;
- }
- //發送字符
- void send(u8 value)
- {
- ES=0; //關閉串口中斷
- TI=0; //清發送完畢中斷請求標志位
- SBUF=value; //發送
- while(!TI); //等待發送完畢
- TI=0; //清發送完畢中斷請求標志位
- ES=1; //允許串口中斷
- }
- //單片機向模塊發送AT指令
- void wifi_init()
- {
- u8 j=0;
- u8a[]="AT+CIPMUX=1\r\n"; //那兩條掉電要重新配置的指令
- u8b[]="AT+CIPSERVER=1,6666\r\n";
- while(a[j]!='\0')
- {
- send(a[j]);
- j++;
- }
- j=0; //清零準備發第二條指令
- delay1s(); //延時一下
- while(b[j]!='\0')
- {
- send(b[j]);
- j++;
- }
- delay1s();
- }
- void wifi_data()
- {
- if(receive[0]=='A') LED1=0; //亮
- if(receive[0]=='B') LED1=1; //滅
- }
- void main()
- {
- Init();
- wifi_init();
- while(1)
- {
- wifi_data();
- }
- }
- //中斷程序,此程序只把+IPD,x,x:后的有用數據存進receive數組里
- void ZD() interrupt 4
- {
- if(RI)
- {
- RI=0;
- if(sign==1)
- {
- receive[0]=SBUF;
- sign=0; //保存receive[0]的數據
- }
- if(SBUF==':') sign=1;
- }
- }
復制代碼
上面提到的波特率問題,簡單地說,11.0592是最適合通信的,如果用12的話會有誤差,12的晶振在波特率為4800且加倍時(即SMOD為1),誤差會比較小,所以這也是我設置波特率為4800的原因,詳細可以看一下下面這張圖。
批注 2019-05-09 230934.png (384.33 KB, 下載次數: 196)
下載附件
2019-5-9 23:09 上傳
三、燒錄出廠AT固件 剛接觸8266模塊的時候,有些地方不是很懂,一頓亂操作之后啥也沒搞成,當時燒錄了一個我也不知道有什么用的固件,然后經常傻傻的,有很多奇怪的情況,后來燒錄了出廠固件功能就正常了,在這也寫一下具體操作。
接線方面,如下圖,主要是綠色那條,GPIO0接低電平時為下載模式。
6a9349404d6d7f80bd656b80526aca5d6.png (108.33 KB, 下載次數: 190)
下載附件
2019-5-9 22:50 上傳
電腦打開燒寫軟件
批注 2019-05-07 232327.png (14.29 KB, 下載次數: 208)
下載附件
2019-5-9 22:51 上傳
選中文件夾里面bin后綴的固件
批注 2019-05-07 232249.png (30.04 KB, 下載次數: 200)
下載附件
2019-5-9 22:51 上傳
按下圖配置好,選擇對應串口,點擊START即可燒寫
批注 2019-05-08 224915.png (154.4 KB, 下載次數: 189)
下載附件
2019-5-9 22:51 上傳
瞎說一些: • 本人小白一個,也有很多不懂的地方,說的可能不是很對 • 如想了解更多,鏈接: wiki.ai-thinker點com/esp8266 • 對于不會java和安卓開發之類的又想弄個小app來實現控制硬件的,可以去了解一下E4A,中文編程,軟件里面有很多例程,例如客戶端,服務器之類的例程,可以參考一下然后自己整一個app,這個比較容易上手,有興趣的可以去學習一下。
批注 2019-05-09 233808.png (32.26 KB, 下載次數: 189)
下載附件
2019-5-9 23:40 上傳
全部資料51hei下載地址:
所有資料.zip
(14.59 MB, 下載次數: 1196)
2019-5-9 23:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|