首页>>科技 >>内容

esp8266中文资料汇总 esp8266引脚图 与单片机连接 串口wifi实例

发布时间:2023-12-08 20:52:16编辑:温柔的背包来源:

很多朋友对esp8266中文资料汇总,esp8266引脚图,与单片机连接,串口wifi实例不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

esp8266中文资料汇总 esp8266引脚图 与单片机连接 串口wifi实例

Esp8266引脚图和功能ESP8266的特点*802.11 b/g/n*内置低功耗32位CPU:也可用作应用处理器*内置10位高精度ADC*内置TCP/IP协议栈*内置TR开关、巴伦、LNA、功率放大器和匹配网络*内置PLL、稳压器和电源管理组件*支持天线分集*STBC、1x1 MIMO、2x1 MIMO*A-MPDU和A-MSDU的聚合

*SDIO 2.0,(H) SPI、UART、I2C、I2S、IR遥控、PWM和GPIO*深度睡眠保持电流为10 uA。在关断电流小于5 uA*2 ms内唤醒、连接和传输数据包*802.11b模式下输出功率20 dBm *待机状态下功耗小于1.0 mW (DTIM3)*工作温度范围:-40C-125C *通过FCC、CE、TELEC、WiFi Alliance和SRRC认证。

5V MCU与3.3V ESP8266串口连接。ESP8266最小系统与MCU最小系统相连。正常使用时,不需要打开固件刷开关。如果需要热刷固件,可以考虑将刷固件的引脚与MCU的引脚连接。ESP8266是单片机,也可以通过模块本身直接控制开关。本文只使用了模块的TCP透明传输功能,在此不再展开。单片机编程(1)首先定义以下变量/常数:/* * * * * * * *类型定义* * * * * * * * * *

#定义U8 unsigned char #定义U16 unsigned int #定义U32 unsigned long #定义代码const/* * * * * * * * * * IO定义* * * * * * * * * * * * *//定义P5.5 LED指示器SBITLED=P2 4;/* * * * * * * * *缓存变量* * * * * * * * * * *//串口接受缓冲区u8 xdata RX _ buffer[tbuf]];//接收计数变量u8 RX _ num/* * * * * * * * *预定义字符串* * * * * * * * * * *//握手连接指令,并返回“OK”u8 code esp _ at[]=“at”;//将ESP8266的工作模式设置为1站,返回“OK”或“无变化”。

u8代码esp _ CW mode[]="AT CW mode=1";//连接WiFi热点或无线路由,其中NXP为无线路由名称,12345678为密码;"OK"u8 code esp _ cwjap[]="atcwjap="NXP","123456789""连接成功后返回;//本地IP地址查询指令u8 code esp _ cifsr[]="at cifsr";//连接TCP服务器,返回“链接”//192.168.0.149作为服务器IP地址,6000作为服务器端口号。不同的电脑,不同的软件可能会有所不同。

U8 code esp_cipsta[]="AT CIPSTART="TCP","192.168.0.149",6000"; //Set the sending data length u8 code ESP _ CIPSEND []="at CIPSEND=5"; //Set the multi-link u8 code ESP _ duolianjie []="atcip mux=1"; //Set the port number u8 code esp _ port []="atcip server=13122"; //Query the module's own IP and return the Internet Protocol address u8 code esp _ IP[]="AT CIFSR"; //The server sends the handshake data u8 code ESP _ WOSHOU []=":test"; //The server sends LED detection data.

U8 code esp _ test _ led []=":led"; //The server sends the code ESP _ LED _ ON []=":LED ON"to open the LEDu8; //The server sends the code ESP _ LED _ OFF []=":LED OFF"to close the LEDu8; //Reset and restart u8 code esp_Rst []="In RST"; //send data length u8 code esp _ DATA[]="AT CIP send=1024"; 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152

接下来是缓存字符串比较函数,用来判断返回值中是否包含OK等来自ESP8266模块的工作标识。如果需要使用更复杂的匹配,可以用正则表达式引擎代替。//指定字符串与缓存数组中数据的数据比较///*p要比较的指定字符串的指针数据//返回:1数据一致0数据不一致u8 Data _ compare(u8 * p){ if(strstr str(rx _ buffer,p)!=NULL)返回1;else return 0;}12345678910

程序的变量已经定义好了,接下来介绍主程序。(2)端口初始化51部分单片机不需要初始化端口,其他部分需要初始化端口才可以使用://初始化IAP1W4K61s4STC15W4K56S4系列的io端口//io端口为准双向IO端口//注意:STC15W4K32S4系列芯片所有与PWM相关的IO端口在上电后都是//高阻态,所以这些端口需要初始化。

//相关IO:p 0.6/p 0.7/p 1.6/p 1.7/p 2.1/p 2.2//p 2.3/p 2.7/p 3.7/p 4.2/p 4.4/p 4.5 void IO _ init(void){ p0m 0=0x 00;P0M1=0X00P1M0=0X00P1M1=0X00P2M0=0X00P2M1=0X00P3M0=0X00P3M1=0X00P4M0=0X00P4M1=0X00} 12345678910112131415161718192021223串口配置和中断配置:void UART init(void){ S2 con=0x 50;//可变波特率AUXR |=0x04的8位数据;//定时器2时钟1为FOSC,即1tt2l=(65536-(11059200/4/115200));//设置定时初始值

T2H=(65536-(11059200/4/115200))》8;//设置定时初始值AUXR |=0x10//Start timer 2 }//串口2发送串行数据(字节)Voiduart2send字节(u8ch){ S2 buf=ch;//将数据写入UART2数据寄存器,同时(!(S2 cons 2 ti));S2CON=~ S2TI}//串口2发送字符串vouiuart 2 sendstr(U8 * s){ IE2=0x 00;While (*s) //检测字符串结束标志{ UART 2 sendbyte(* s);//发送当前字符} IE2=0x01}//串行端口2使用1中断void Uart2()中断8 {

IE2=0x00//关闭串口2中断if(S2CON S2RI){ S2CON=~ S2RI;RX _ buffer[RX _ num]=S2 buf;RX _ numif(RX _ num》tbuf)RX _ num=0;} if(S2CON S2TI){ S2CON=~ S2TI;} IE2=0x01//打开串口2中断} 12345678910111111314151617181920212232425262729303133343536373940444444454647484950调用这段代码中的UartInit(void)函数初始化串口。在所有初始化之后,您可以使用代码来配置ESP8266。//1发送AT握手同时(1){

UART 2 sendstr(esp _ at); //Serial port 2 sends a handshake command, namely ATIF (data _ compare ("OK")) break, to the wireless LAN (short for wireless fidelity) module; Else Uart1SendStr("ERROR1, some problems of ESP8266"); delay 1 ms(600); }Uart1SendStr("OK, mcu and ESP8266 are connected successfully!"); memset(RX_buffer,0,tbuf); //clear the cache data RX _ num=0; //The receiving count variable is cleared to 0/2, and the working mode of wireless local area network (short for wireless fidelity) is Salvation Army mode while (1) {uart2sendstr (ESP _ CW mode); //Serial port 2 sets the working mode of wireless LAN (abbreviation of wireless fidelity) module.

if(Data _ compare("OK")| | Data _ compare("no change"))break; delay 1 ms(600); }memset(RX_buffer,0,tbuf); //clear the cache data RX _ num=0; //The receiving count variable clears 0/3 to connect the hotspot wifi wifi password. If it fails, continue to connect while (1) {uart2sendstr (ESP _ CW JAP); //Serial port 2 sends the password of wireless local area network (abbreviation of wireless fidelity) and waits for the module connection if(Data_compare("OK")) to be interrupted; delay 1 ms(3000); }memset(RX_buffer,0,tbuf); //Clear the cached data

RX _ num=0;//接收计数变量清0//4 设置多链接while(1){ UART 2 sendstr(esp _ duo连洁);//设置多链接if(Data_compare("OK"))中断;延时1 ms(3000);}memset(RX_buffer,0,tbuf);//清缓存数据RX _ num=0;//接收计数变量清0//5 设置端口号while(1){ UART 2 sendstr(esp _ Port);//设置端口号if(Data _ compare("OK")){延迟1 ms(3000);打破;}延时1 ms(3000);}Uart1SendStr("OK,success esp _ Port");

memset(RX_buffer,0,tbuf);//清除缓存数据RX _ num=0;//接收计数变量清零为0esp8266串口wifi实例引脚连接:GND:接地GPIO16:其实是RST,低电平复位,所以为了正常工作,直接连接VCC。

VCC:接3.3V看了其他教程,我说我接不了5V。然而,边肖试图直接玩5V。玩了一段时间,没有任何问题,可以正常使用。但是有一个问题就是芯片很烫,长时间使用可能会烧坏模块,而且wifi模块一旦过热,连接就会很慢。所以,尽量用3.3V V. UTXD和URXD:前者接MCU的RXD或USB转串口模块,后者接TXD。这两个可以连接5V单片机的RXD和TXD,测试后通信正常,不需要挂起5V转3,3 V 3VGPIO2、GPIO0 0。

CH_PD:有教程说可以直接接VCC,但是测试后电流太大,应该是通过电阻接VCC,也就是串联一个电阻再接VCC。电阻的阻值是几k,边肖用的是4.7k实际上调试没有严格限制:

调试使用USB转串口模块,按照上面的引脚连接和面包板连接。然后就可以插上电脑,打开串口助手调试了。你得自己试试波特率。可能是9600或者115200,甚至是别的。边肖有一块9600,一块115200。怎么试?在串行助手钩子上发送一个新行,然后在RST发送。如果前面有一堆乱码,后面有一个ready,说明测试是正确的。

然后说明什么大问题是模块正常。如果不放心,可以尝试用其他at指令和TCP调试工具测试一下。

例子:用单片机通过本模块与上位机通讯的例子(AP模式)代码ucharat _ 1 [14]={'a '' t '''' c '' I '' p '' m '' u '' x '='' 1 'code uchar at_2[17]={'A '' T '' '' ' C '' I '' P '' S '' E '' R '' V '' E '' R ''='' 1 '0x0D,0x0A,' ' };

经过最后一步调试,测试后发现模块没问题,可以按照管脚连接直接连接到单片机上。在单片机初始化程序中,这两个字符要发送到wifi模块,先at _ 1 [14],延时100ms,再at _ 2 [17]。当然不一定要在初始化程序中发送这两个字符串,也可以在key中断中发送。当您需要建立连接时,按下键行。

这两条AT指令就像创建一个连接。发完这两句话,就可以连接wifi模块和主机了。wifi模块的IP为:192.168.4.1端口号:333;ESP8266的生产设置都是这个IP和端口,一般不会出错。如果不放心,可以用串口调试发送AT CIFSR=?将返回模块的IP和端口号。PS:后面的0x0d和0x0a相当于发送新行的功能,否则AT指令无效!做完这些步骤,就可以和主机连接wifi了!

注意:至于单片机接收上位机发来的字符串,wifi会自动在接收到的内容前面加上字符“IPD,X,X:”所以接收的时候记得加一个判断,把前面的字符截掉,把上位机发来的内容留在后面。补充:CWMODE=3时常用的几个AT命令:RST时STA AP模式:CIPMUX=1时复位:CIPSERVER=1时多连接:CIFSR时建立服务器:查询模块IP端口。

Atcipserver=1,6000:在CIPMUX=0处设置端口号:在CIPSEND=0处设置单个连接,1:向连接序列号为0的连接发送一个字节。

以上知识分享希望能够帮助到大家!