电竞比分网-中国电竞赛事及体育赛事平台

分享

ESP8266系列WIFI模塊的使用·

 旭日東升4k165w 2019-09-06

一、概述

ESP8266是由樂鑫公司出品的一款物聯(lián)網(wǎng)芯片,因為價格較低,性能穩(wěn)定等收到很大關(guān)注。該芯片可工作于三種種模式下,分別是:AP模式,station模式以及混合模式,通過常用的AT指令進行控制。自芯片面世以來發(fā)行過多種型號。單單我用過的就有ESP8266-01,ESP8266-12F,ESP8266-12E這三種。當然,我沒接觸到過的型號還有很多。在使用這三種芯片時均是使其工作在AP模式下。所以,就拿這三個型號說一下ESP8266在AP模式下的配置吧(AP模式下通信協(xié)議為TCP,也就是說AP模式下的ESP8266相當于一個TCP服務(wù)器)。

二、ESP8266-01

因為ESP8266-01是比較早的型號,所以也存在諸多不完善的地方。一開始用的時候也走過很多彎路,例如:ESP8266-01型號不支持1200及2400的波特率(網(wǎng)上的資料說是支持的),就因為這個原因就玩壞了三塊芯片,將近100人民幣就打水漂了(幸虧指導老師還安慰我,學習的過程就是消耗的過程),一開始不知道什么原因,后來才發(fā)現(xiàn)是波特率的問題。因為一開始的測試用的普中V3.0的學習版,該板搭載的是12.0Mhz的晶振,而且身邊也沒有可以換的11.0592Mhz的晶振,沒辦法才選擇了2400的波特率,最終導致三塊ESP8266-01壞掉。而且壞掉后上電就出現(xiàn)亂碼,這些亂碼用“格西烽火串口助手”中的所有波特率都讀不出來所以一旦出問題無法修復。另外,該芯片對電壓要求出奇的高,標準3.3V,一點小的電壓波動都會引起模塊工作異常。網(wǎng)上曾有一種說法,“十個不能正常工作的芯片中就有八個是電壓問題引起的”。(ESP8266-01的接線圖如下)


三、ESP8266-12F

ESP8266-12F相比于ESP8266-01有很多改進。首先12F的flash閃存比較大,另外12F支持機智云的MCU運行。當然,與增加的功能相適應(yīng),12F增加了很多IO口,一般是16個。但工作在AP模式下,二者并沒有本質(zhì)區(qū)別。但是12F有一個缺點就是需要自己搭建一些簡單的外圍電路。(接線圖如下)

四、ESP8266-01與ESP8266-12F工作在AP模式下的配置命令。

1.基本配置命令:

AT+CIOBAUD=******//修改波特率為********(模塊初始波特率默認為115200,該命令通過串口助手發(fā)送,重新上電后有效)

AT+CWMODE=2//設(shè)置模塊為AP模式

AT+CWSAP='111','222',11,0//設(shè)置wifi名字為111,密碼是222,通道號是11,加密方式是OPEN(可以修改)

AT+CIPMUX=1//啟動多路連接方式(可以修改)

AT+CIPSERVER=1,5000//開啟server,端口號為5000(可以修改)

AT+CIPSEND=0,5//向id為0的鏈接發(fā)送5字節(jié)數(shù)據(jù)(可以修改)

2.單片機控制程序:單片機型號為STC89C52RC,晶振11.0592MHz,波特率為9600(控制程序均為自己編寫且測試有效)

#include<reg51.h>

void Serial_Inti();//初始化程序(必須使用,否則無法收發(fā))

void Uart_Sends(unsigned char *str);//發(fā)送char型字符串

//void Delay1ms(unsigned int t);//1ms延時函數(shù)

unsigned char Uart_Receive();//接收字符子函數(shù)

void Uart_Dat(unsigned char dat);//數(shù)據(jù)發(fā)送子函數(shù)

void Wifi_Init();//wifi模塊初始化

void Uart_Byte(char byte);//字節(jié)發(fā)送子函數(shù)

void Delay1ms(unsigned int t);//t ms延時子函數(shù)

/*串口初始化子函數(shù)*/

void Serial_Inti()//串口初始化,一定注意不要啟動T1的串口中斷

{

    TMOD = 0x20;

    SCON = 0x50;

    TH1 = 0xFD;

    TL1 = TH1;

    PCON = 0x00;

ES=0;//關(guān)閉串口中斷

    TR1 = 1;

}

/*字符串發(fā)送子函數(shù)(用于配置)*/

void Uart_Sends(unsigned char *str)

{

while(*str!='\0')

{

SBUF=*str;

while(!TI);//等待發(fā)送完成信號(TI=1)出現(xiàn)

TI=0;//清除發(fā)送中斷標志位以繼續(xù)發(fā)送

str++;

}

}

/*WIFI模塊初始化*/

void Wifi_Init()

{

Delay1ms(3000);

Serial_Inti();

Uart_Sends('AT+CWMODE=2\r\n');

Delay1ms(2000);

Uart_Sends('AT+CWSAP=\'******\',\'*****\',11,0\r\n');//wifi名稱及密碼設(shè)置

Delay1ms(2000);

Uart_Sends('AT+CIPMUX=1\r\n');

Delay1ms(2000);

Uart_Sends('AT+CIPSERVER=1,5000\r\n');

}

/*字節(jié)發(fā)送子函數(shù)*/

void Uart_Byte(char byte)

{

SBUF=byte;

while(!TI);

TI=0;

}

/*數(shù)據(jù)發(fā)送子函數(shù)*/

void Uart_Dat(unsigned char dat)

{

Uart_Sends('AT+CIPSEND=0,1\r\n');

Delay1ms(1000);

Uart_Byte(dat);

Uart_Byte('\r');

Uart_Byte('\n');

Delay1ms(100);//延時100ms防止出現(xiàn)循環(huán)發(fā)送現(xiàn)象

}

/*指令接收子函數(shù)*/

unsigned char Uart_Receive()

{

unsigned char order;

RI=0;//先將接收表示位置0,防止wifi'配置使的返回信息將其置1

while(!RI);//等待接收到信息后跳出循環(huán)

order=SBUF;//當RI==1時接收到數(shù)據(jù)

RI=0;//清除接收中斷標志位以繼續(xù)接收

return order;

}

void Delay1ms(unsigned int t)   //誤差 0us

{

    unsigned char a,b,c;

for(t;t>0;t--)

    for(c=1;c>0;c--)

        for(b=142;b>0;b--)

            for(a=2;a>0;a--);

}

五、ESP8266-12E CP2102

剛開始使用ESP8266-12E CP2102時很蒙,因為焊接在CP2102板上之后原來的操作方式就不再適用。經(jīng)過摸索發(fā)現(xiàn)了一個比較合適的而且好用的固件ESP8266_Doit_ser2net(v2.4).bin。所以方向很明確,要給12E刷新固件。首先ESP8266-12E CP2102長這樣:

用USB線連接PC,下載工具為flash_download_tool_v1.2_150512.exe,選擇ESP8266_Doit_ser2net(v2.4).bin,下載地址為0x00000,按住Falsh鍵不放,然后按Reset鍵,使芯片進入下載模式,點擊軟件上的START開始下載,下載完成后重新上電。(如下圖)

下載成功重新上電后就會發(fā)現(xiàn)這個固件的好處。連接wifi訪問192.168.4.1就會出現(xiàn)以下界面

在該界面可以直接設(shè)置芯片的波特率以及AP模式下的配置,省去了麻煩的AT命令。所以,ESP8266-12E CP2102是我目前為止用到的最好用的ESP8266系列模塊。

當然,我所涉及到的只是ESP8266的冰山一角,期待以后更加深入的學習!

左肩理想,右肩擔當。君子不怨永遠不會停下腳步!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多