找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 46646|回復(fù): 84
收起左側(cè)

ESP8266 wifi模塊與51單片機(jī)通信入門教程,模塊出廠固件燒錄

  [復(fù)制鏈接]
ID:479008 發(fā)表于 2019-5-9 23:11 | 顯示全部樓層 |閱讀模式
前段時(shí)間在某寶買了個(gè)ESP8266模塊,用來實(shí)現(xiàn)和51單片機(jī)的通信,現(xiàn)在將大致過程分享一下,希望能幫助到那些想學(xué)習(xí)的小白
三部分內(nèi)容:配置模塊、模塊與51單片機(jī)簡單通信、出廠固件的燒錄
附件里有pdf教程,跟帖子內(nèi)容一樣的,瀏覽體驗(yàn)可能會更好一點(diǎn)

我買的是8266-01,引腳圖如下

50e81a93228c22f9d31af1896ef0eeed.png

    引腳說明:
    •   VCC接3.3v,接5v時(shí)間長了可能會燒
    •   UTXD,URXD和其它的TXD,RXD接時(shí)注意交叉接就行了
    •   CH_PD要給高電平模塊才工作
    •   GPIO0一般不用管,燒錄固件時(shí)要接地
    •   RST低電平復(fù)位,高電平工作(默認(rèn)高)
    •   GPIO2必須為高電平,內(nèi)部默認(rèn)已拉高,不用管

一、配置模塊:
一般接線如下,圖為模塊與usb轉(zhuǎn)ttl模塊的接線,與單片機(jī)的接線也類似

6a9349404d6d7f80bd656b80526aca5d.png

下圖為我的連接圖,我這個(gè)usb轉(zhuǎn)ttl模塊的VCC引腳是輸出3.3v的

1f01af3a7f59ac5a7ecc06be7c3eff0.jpg

接到電腦usb口,打開串口調(diào)試助手,wifi模塊買回來的時(shí)候波特率應(yīng)該都是115200,所以要把串口助手的波特率設(shè)置為115200,然后點(diǎn)擊打開串口。

用到的AT指令如下:
•   AT(返回ok表示通信成功)
•   AT+CIOBAUD=X(改模塊的波特率,X為要改成的波特率,因單片機(jī)達(dá)不到太高的波特率所以要更改一下波特率,因?yàn)槲覍W(xué)習(xí)板上的晶振是12MHZ的,所以我這里改成4800,原因后面會說到,一般改9600就行,改完之后記得把串口助手的波特率也設(shè)置成新波特率,再發(fā)AT,有ok表明通信成功)
批注 2019-05-07 203505.png

•   AT+CWMODE=X(設(shè)置工作模式指令,X可以是1、2、3,具體如下:
1:Station模式
2:AP模式
3:Station+AP模式
Station可理解為讓wifi模塊去連接路由器或熱點(diǎn),此時(shí)模塊作為客戶端
AP模式可理解為模塊本身是一個(gè)熱點(diǎn),手機(jī)或電腦可以連接這個(gè)熱點(diǎn),此時(shí)模塊作為服務(wù)器。
這里講的是AP模式,Station模式不講,可以自己去了解。
•   AT+RST(重啟指令,設(shè)置新的工作模式后需重啟才能生效。發(fā)送完這條指令后再發(fā)送其它指令可能會顯示串口無效,需要退出串口調(diào)試助手再重新進(jìn)入。)

批注 2019-05-07 203714.png

•   AT+CWSAP=<ssid>,<pwd>,<chl>,<ecn>(設(shè)置AP模式下的參數(shù),簡單點(diǎn)說就是設(shè)置熱點(diǎn)的名字,密碼之類的,例如AT+CWSAP=”8266”,“66666666”,0,3)

批注 2019-05-08 203214.png

這里我不設(shè)置,用默認(rèn)的
•   AT+CWSAP?(可以查看當(dāng)前AP模式下模塊熱點(diǎn)的具體信息)
•   AT+CIFSR(查看IP地址,好像都是192.168.4.1)
•   AT+CIPMUX=1(開啟多連接,貌似最多可以有5臺設(shè)備連接這個(gè)模塊,設(shè)備id分別分配為0到4)
•   AT+CIPSERVER=1,X(1表示開啟服務(wù)器,X為自己設(shè)置的端口號,一般設(shè)3或4位。也可以只開啟服務(wù)器而不設(shè)置端口號,默認(rèn)端口是333好像)
注:倒數(shù)的這兩條指令在模塊掉電后需要重新配置,其它那幾條配置過一次不用再重新配置了。

批注 2019-05-07 204334.png

批注 2019-05-07 204842.png
到這里拿出手機(jī),打開wifi并連接上模塊的熱點(diǎn),如果搜不到熱點(diǎn)可以試一下拔了重插,再重新發(fā)那兩條指令。

Screenshot_2019-05-07-20-46-42-385_comandroidse.png

連接熱點(diǎn)成功后打開網(wǎng)絡(luò)調(diào)試助手這個(gè)軟件,右滑進(jìn)入設(shè)置,協(xié)議設(shè)置為TCP Client,即客戶端模式,IP地址為192.168.4.1,端口為剛才設(shè)置的,然后點(diǎn)連接,連接成功后就能通信了。

Screenshot_2019-05-07-20-47-19-770_com.network.de.png

這里發(fā)送了hello和hello66666666,可以看到電腦上的串口調(diào)試助手顯示到手機(jī)發(fā)送過去的信息,這里注意到信息前還附帶了+IPD,0,X:這里的0表示設(shè)備id號,表示第0臺設(shè)備發(fā)送過來的信息,然后X表示信息包含的字符數(shù)量。

123.jpg

二、模塊與51單片機(jī)通信
程序比較簡單,實(shí)現(xiàn)的功能:手機(jī)發(fā)一個(gè)A,學(xué)習(xí)板上的燈亮,發(fā)B滅燈,簡單地測試一下。下圖是我的連線,很亂,主要注意接對就行了,學(xué)習(xí)板沒有3.3v,接了一個(gè)降壓模塊給模塊供電。

IMG_20190508_183359.jpg

程序:
  1. #include <reg52.h>
  2. #include "intrins.h"
  3. sbit LED1=P2^0;
  4. typedef unsigned int u16;
  5. typedef unsigned char u8;
  6. u8 receive[2];
  7. u8 sign=0;
  8. void delay1s(void)   //誤差 0us
  9. {
  10.     u8 a,b,c;
  11.     for(c=46;c>0;c--)
  12.        for(b=152;b>0;b--)
  13.            for(a=70;a>0;a--);
  14.     _nop_();  //if Keil,require use intrins.h
  15. }
  16. //初始化串口
  17. void Init()
  18. {
  19.        SCON = 0x50;      //串口模式1,允許接收
  20.        TMOD = 0x20;    //T1工作模式2,自動(dòng)重裝
  21.        PCON = 0x80;      //波特率倍增
  22.        REN = 1;
  23.                                          //根據(jù)實(shí)際選擇
  24. //  TH1 = 0xfa;          //波特率9600(11.0592)
  25.        TH1 = 0xf3;          //波特率4800(12.0000)
  26. //  TH1 = 0xf4;          //波特率4800(11.0592)
  27.        TL1 = TH1;
  28.        RI=0;
  29.        EA = 1;
  30.        ES = 0;
  31.        TR1 = 1;
  32. }
  33. //發(fā)送字符
  34. void send(u8 value)
  35. {
  36.        ES=0; //關(guān)閉串口中斷
  37.        TI=0; //清發(fā)送完畢中斷請求標(biāo)志位
  38.        SBUF=value; //發(fā)送
  39.        while(!TI); //等待發(fā)送完畢
  40.        TI=0; //清發(fā)送完畢中斷請求標(biāo)志位
  41.        ES=1; //允許串口中斷
  42. }
  43. //單片機(jī)向模塊發(fā)送AT指令
  44. void wifi_init()
  45. {
  46.        u8 j=0;
  47.    u8a[]="AT+CIPMUX=1\r\n";     //那兩條掉電要重新配置的指令
  48.    u8b[]="AT+CIPSERVER=1,6666\r\n";
  49.    while(a[j]!='\0')
  50.    {
  51.            send(a[j]);
  52.            j++;
  53.    }
  54.        j=0;                        //清零準(zhǔn)備發(fā)第二條指令
  55.        delay1s();                    //延時(shí)一下
  56.        while(b[j]!='\0')
  57.    {
  58.            send(b[j]);
  59.            j++;
  60.    }
  61.        delay1s();
  62. }
  63. void wifi_data()
  64. {
  65.        if(receive[0]=='A')     LED1=0;    //亮
  66.        if(receive[0]=='B')    LED1=1;    //滅
  67. }   
  68. void main()
  69. {
  70.        Init();
  71.        wifi_init();
  72.        while(1)
  73.        {
  74.                 wifi_data();
  75.        }
  76. }
  77. //中斷程序,此程序只把+IPD,x,x:后的有用數(shù)據(jù)存進(jìn)receive數(shù)組里
  78. void ZD() interrupt 4
  79. {
  80.        if(RI)
  81.        {
  82.                 RI=0;
  83.                 if(sign==1)
  84.                 {
  85.                         receive[0]=SBUF;
  86.                         sign=0;                    //保存receive[0]的數(shù)據(jù)
  87.                 }
  88.                 if(SBUF==':')       sign=1;
  89.        }
  90. }
復(fù)制代碼


上面提到的波特率問題,簡單地說,11.0592是最適合通信的,如果用12的話會有誤差,12的晶振在波特率為4800且加倍時(shí)(即SMOD為1),誤差會比較小,所以這也是我設(shè)置波特率為4800的原因,詳細(xì)可以看一下下面這張圖。

批注 2019-05-09 230934.png

三、燒錄出廠AT固件
剛接觸8266模塊的時(shí)候,有些地方不是很懂,一頓亂操作之后啥也沒搞成,當(dāng)時(shí)燒錄了一個(gè)我也不知道有什么用的固件,然后經(jīng)常傻傻的,有很多奇怪的情況,后來燒錄了出廠固件功能就正常了,在這也寫一下具體操作。

接線方面,如下圖,主要是綠色那條,GPIO0接低電平時(shí)為下載模式。

6a9349404d6d7f80bd656b80526aca5d6.png

電腦打開燒寫軟件

批注 2019-05-07 232327.png

選中文件夾里面bin后綴的固件

批注 2019-05-07 232249.png

按下圖配置好,選擇對應(yīng)串口,點(diǎn)擊START即可燒寫

批注 2019-05-08 224915.png

瞎說一些:
•   本人小白一個(gè),也有很多不懂的地方,說的可能不是很對
•   如想了解更多,鏈接: wiki.ai-thinker點(diǎn)com/esp8266
•   對于不會java和安卓開發(fā)之類的又想弄個(gè)小app來實(shí)現(xiàn)控制硬件的,可以去了解一下E4A,中文編程,軟件里面有很多例程,例如客戶端,服務(wù)器之類的例程,可以參考一下然后自己整一個(gè)app,這個(gè)比較容易上手,有興趣的可以去學(xué)習(xí)一下。
批注 2019-05-09 233808.png

全部資料51hei下載地址:
所有資料.zip (14.59 MB, 下載次數(shù): 1196)

評分

參與人數(shù) 3黑幣 +72 收起 理由
lydsgy527 + 12 很給力!
西西弗 + 10 很給力!
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2019-5-10 05:00 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

ID:302325 發(fā)表于 2019-5-10 08:52 | 顯示全部樓層
感謝分享   CH_PD要給高電平模塊才工作  這條很 有用   以前一直不知道
回復(fù)

使用道具 舉報(bào)

ID:158956 發(fā)表于 2019-5-10 16:55 來自觸屏版 | 顯示全部樓層
感謝分享,正好在研究這個(gè)
回復(fù)

使用道具 舉報(bào)

ID:366617 發(fā)表于 2019-6-23 03:17 | 顯示全部樓層
太棒了,真是了不起
回復(fù)

使用道具 舉報(bào)

ID:499701 發(fā)表于 2019-7-5 12:42 | 顯示全部樓層
樓主,CH_PD腳我是沒接的,也能正常工作,應(yīng)該是默認(rèn)上電高電平的
回復(fù)

使用道具 舉報(bào)

ID:66302 發(fā)表于 2019-7-6 22:36 | 顯示全部樓層
感謝分享~~~~~~~~~~~~~~~~~~~~~
回復(fù)

使用道具 舉報(bào)

ID:282095 發(fā)表于 2019-7-7 10:33 | 顯示全部樓層
wift模塊和6395串口進(jìn)行通信
回復(fù)

使用道具 舉報(bào)

ID:479008 發(fā)表于 2019-7-10 10:44 | 顯示全部樓層
終極小饅頭啦 發(fā)表于 2019-7-5 12:42
樓主,CH_PD腳我是沒接的,也能正常工作,應(yīng)該是默認(rèn)上電高電平的

CH_PD沒接的話只能看到紅色燈亮,但是發(fā)AT指令是沒有反應(yīng)的,wifi模塊應(yīng)該沒有工作,CH_PD接高電平,插到電腦usb口時(shí)會看到藍(lán)色的燈閃爍,發(fā)AT指令正常。
回復(fù)

使用道具 舉報(bào)

ID:584036 發(fā)表于 2019-7-16 11:25 | 顯示全部樓層
我喜歡
回復(fù)

使用道具 舉報(bào)

ID:471817 發(fā)表于 2019-7-16 13:48 來自觸屏版 | 顯示全部樓層
學(xué)習(xí)學(xué)習(xí),感謝分享
回復(fù)

使用道具 舉報(bào)

ID:574338 發(fā)表于 2019-7-30 20:09 來自觸屏版 | 顯示全部樓層
資料不錯(cuò),我已經(jīng)制作成功了
回復(fù)

使用道具 舉報(bào)

ID:586578 發(fā)表于 2019-8-5 10:45 | 顯示全部樓層
請問波特率更改不成功是怎么回事呢?手機(jī)也連接不上
回復(fù)

使用道具 舉報(bào)

ID:479008 發(fā)表于 2019-8-5 14:48 | 顯示全部樓層
zk_2019 發(fā)表于 2019-8-5 10:45
請問波特率更改不成功是怎么回事呢?手機(jī)也連接不上

你是指發(fā)更改波特率的AT指令返回的是error嗎?可以刷一下固件看看行不行
回復(fù)

使用道具 舉報(bào)

ID:439613 發(fā)表于 2019-8-8 16:27 | 顯示全部樓層
怎么讓單片機(jī)發(fā)給手機(jī)上
回復(fù)

使用道具 舉報(bào)

ID:602358 發(fā)表于 2019-8-21 14:41 | 顯示全部樓層
謝謝分享。!嘗試
回復(fù)

使用道具 舉報(bào)

ID:577696 發(fā)表于 2019-8-22 18:53 | 顯示全部樓層
我用的是8266MOD的板子,只需要連RX/TX和GND,已經(jīng)成功了
回復(fù)

使用道具 舉報(bào)

ID:446113 發(fā)表于 2019-8-23 10:26 | 顯示全部樓層
good 謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:581300 發(fā)表于 2019-8-24 15:56 | 顯示全部樓層
為什么usb-ttl轉(zhuǎn)換器插到電腦上串口有警告?
回復(fù)

使用道具 舉報(bào)

ID:164963 發(fā)表于 2019-8-24 21:32 | 顯示全部樓層
收藏下…………………………
回復(fù)

使用道具 舉報(bào)

ID:282095 發(fā)表于 2019-8-25 07:29 | 顯示全部樓層
漲知識了 不錯(cuò)不錯(cuò) 感謝分享
回復(fù)

使用道具 舉報(bào)

ID:479008 發(fā)表于 2019-8-25 07:54 | 顯示全部樓層

RE: ESP8266 wifi模塊與51單片機(jī)通信入門教程,模塊出廠固件燒錄

Immortal盲點(diǎn) 發(fā)表于 2019-8-24 15:56
為什么usb-ttl轉(zhuǎn)換器插到電腦上串口有警告?

這個(gè),,,你usb-ttl的驅(qū)動(dòng)裝了嗎,如果裝了的話可能是電腦串口的某些問題吧,我也不太清楚。
回復(fù)

使用道具 舉報(bào)

ID:581300 發(fā)表于 2019-8-25 16:20 來自觸屏版 | 顯示全部樓層
為什么連上單片機(jī)之后手機(jī)沒辦法連接8266而且下載不了程序到單片機(jī)上呢
回復(fù)

使用道具 舉報(bào)

ID:427492 發(fā)表于 2019-8-25 20:22 | 顯示全部樓層
感謝樓主分享,很不錯(cuò)
回復(fù)

使用道具 舉報(bào)

ID:198493 發(fā)表于 2019-10-15 17:09 | 顯示全部樓層
幫大忙了,十分感謝
回復(fù)

使用道具 舉報(bào)

ID:252935 發(fā)表于 2019-10-16 08:43 | 顯示全部樓層
大學(xué)見人用串口,藍(lán)牙,ZIGBEE做過,
但是WIFI還是第一次
回復(fù)

使用道具 舉報(bào)

ID:89591 發(fā)表于 2019-10-16 09:24 | 顯示全部樓層
這個(gè)不錯(cuò)啊
回復(fù)

使用道具 舉報(bào)

ID:643340 發(fā)表于 2019-11-16 20:36 | 顯示全部樓層
請問樓主,為啥要燒固件呀?
回復(fù)

使用道具 舉報(bào)

ID:643340 發(fā)表于 2019-11-24 00:51 來自觸屏版 | 顯示全部樓層
q1914702038 發(fā)表于 2019-8-8 16:27
怎么讓單片機(jī)發(fā)給手機(jī)上

這得需要服務(wù)器,可以去用阿里云服務(wù)器,學(xué)生好像有優(yōu)惠
回復(fù)

使用道具 舉報(bào)

ID:677072 發(fā)表于 2020-1-15 10:33 | 顯示全部樓層
感謝樓主分享!特別是代碼方面的 對我的實(shí)現(xiàn)很有意義
回復(fù)

使用道具 舉報(bào)

ID:686631 發(fā)表于 2020-1-16 13:41 | 顯示全部樓層
感謝分享!再加一個(gè)手機(jī)APP就完美了
回復(fù)

使用道具 舉報(bào)

ID:680501 發(fā)表于 2020-1-16 14:39 來自觸屏版 | 顯示全部樓層
感謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:434663 發(fā)表于 2020-3-6 10:15 | 顯示全部樓層
用AT指令改過波特率,熱點(diǎn)名字,密碼,IP地址,工作模式 之后就永久有效了嗎? 還是用一次改一次?
回復(fù)

使用道具 舉報(bào)

ID:94449 發(fā)表于 2020-3-9 12:06 | 顯示全部樓層
好資料,已經(jīng)刷好原廠固件,可以改波特率了。
回復(fù)

使用道具 舉報(bào)

ID:347467 發(fā)表于 2020-3-9 14:37 | 顯示全部樓層
謝謝分享。
回復(fù)

使用道具 舉報(bào)

ID:315554 發(fā)表于 2020-3-9 16:23 | 顯示全部樓層
學(xué)習(xí)了,謝謝樓主,說明很詳細(xì);
回復(fù)

使用道具 舉報(bào)

ID:697407 發(fā)表于 2020-3-23 00:38 | 顯示全部樓層
請問接usb轉(zhuǎn)ttl上的3.3v可以嗎,普中的板
回復(fù)

使用道具 舉報(bào)

ID:686739 發(fā)表于 2020-3-23 11:33 來自觸屏版 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:69408 發(fā)表于 2020-4-16 15:40 | 顯示全部樓層
非常詳細(xì)的資料,謝謝樓主分享!
回復(fù)

使用道具 舉報(bào)

ID:608007 發(fā)表于 2020-4-17 09:21 | 顯示全部樓層
值得學(xué)習(xí) 感謝樓主的分享
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表