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

esp8266引脚图及功能
esp8266特性 *802.11 b/g/n
*内置低功耗32位cpu:可以兼作应用处理器
*内置10 bit高精度adc
*内置tcp/ip协议栈
*内置tr开关、balun、lna、功率放大器和匹配网络
*内置pll、稳压器和电源管理组件
*支持天线分集
*stbc、1x1 mimo、2x1 mimo
*a-mpdu、a-msdu的聚合和0.4 s的保护间隔
*wifi @ 2.4 ghz,支持 wpa/wpa2 安全模式
*支持sta/ap/sta+ap工作模式
*支持smart config功能(包括android和ios设备)
*sdio 2.0、(h) spi、uart、i2c、i2s、ir remote control、pwm、gpio
*深度睡眠保持电流为10 ua,关断电流小于5 ua
*2 ms之内唤醒、连接并传递数据包
*802.11b模式下+20 dbm的输出功率
*待机状态消耗功率小于1.0 mw (dtim3)
*工作温度范围:-40°c - 125°c
*通过 fcc, ce, telec, wifi alliance 及 srrc 认证
5v单片机与3.3v的esp8266串口连接
esp8266最小系统与单片机最小系统连接
在正常使用的时候,固件刷写开关不需要打开,如果需要热刷写固件,可以考虑将刷写固件的引脚与单片机的引脚相连。
esp8266内是一块单片机,也可以通过模块本身直接控制开关,本文仅使用模块的tcp透传功能,这里不再展开。
单片机程序编写
(1)首先定义如下变量/常量:
/**********类型定义**************/
#define u8 unsigned char
#define u16 unsigned int
#define u32 unsigned long
#define code const
/***********io定义***************/
//定义p5.5口 led指示灯
sbit led=p2^4;
/**********缓存变量**************/
//串口接受缓存
u8 xdata rx_buffer[tbuf];
//接收计数变量
u8 rx_num;
/**********预定义字符串**************/
//握手连接指令,返回“ok”
u8 code esp_at[]=“at ”;
//设置esp8266的工作模式1 station,返回“ok”或者“no change”
u8 code esp_cwmode[]=“at+cwmode=1 ”;
//连接到wifi热点或无线路由上,nxp为无线路由名称,12345678为密码;连接成功返回“ok”
u8 code esp_cwjap[]=“at+cwjap=”nxp“,”123456789“ ”;
//本机ip地址查询指令
u8 code esp_cifsr[]=“at+cifsr ”;
//连接到tcp服务器,返回“linked”
//192.168.0.149为服务器ip地址 6000为服务器端口号 不同电脑不同软件可能会不一样的
u8 code esp_cipsta[]=“at+cipstart=”tcp“,”192.168.0.149“,6000 ”;
// 设置发送数据长度
u8 code esp_cipsend[]=“at+cipsend=5 ”;
//设置多链接
u8 code esp_duolianjie []=“at+cipmux=1 ”;
//设置端口号
u8 code esp_port []=“at+cipserver=1,3122 ”;
//查询模块自身ip,返回ip地址
u8 code esp_ip []=“at+cifsr ”;
//服务器发送 握手数据
u8 code esp_woshou []=“:test”;
//服务器发送 led检测数据
u8 code esp_test_led []=“:led”;
//服务器发送 打开led
u8 code esp_led_on []=“:led on”;
//服务器发送 关闭led
u8 code esp_led_off []=“:led off”;
//复位重启
u8 code esp_rst []=“at+rst ”;
//发送数据长度
u8 code esp_data []=“at+cipsend=1024 ”; 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
接下来是缓存字符串比较函数,用于判断返回值中是否含有ok等来自esp8266模块的工作标识。如需用到更复杂的匹配,可以将之替换为正则表达式引擎。
//指定字符串与缓存数组数据进行数据比较
//*p 要比较的指定字符串指针数据
//返回:1 数据一致 0 数据不一致
u8 data_compare(u8 *p)
{
if(strstr(rx_buffer,p)!=null)
return 1;
else
return 0;
}12345678910
程序的变量已经定义完,接下来是介绍主程序的部分。
(2)端口初始化
51单片机部分无需初始化端口,另一部分需要初始化端口才能使用:
//针对 iap15w4k61s4 stc15w4k56s4 系列 io口初始化
//io口初始化 p0 p1 p2 p3 p4 为准双向io口
//注意: stc15w4k32s4系列的芯片,上电后所有与pwm相关的io口均为
// 高阻态,需将这些口设置为准双向口或强推挽模式方可正常使用
//相关io: p0.6/p0.7/p1.6/p1.7/p2.1/p2.2
// p2.3/p2.7/p3.7/p4.2/p4.4/p4.5
void io_init(void)
{
p0m0 = 0x00;
p0m1 = 0x00;
p1m0 = 0x00;
p1m1 = 0x00;
p2m0 = 0x00;
p2m1 = 0x00;
p3m0 = 0x00;
p3m1 = 0x00;
p4m0 = 0x00;
p4m1 = 0x00;
}1234567891011121314151617181920212223
串口配置及中断配置:
void uartinit(void)
{
s2con = 0x50; //8位数据,可变波特率
auxr |= 0x04; //定时器2时钟1为fosc,即1t
t2l=(65536-(11059200/4/115200)); //设置定时初值
t2h=(65536-(11059200/4/115200))》》8; //设置定时初值
auxr |= 0x10; //启动定时器2
}
//串口2发送串口数据(字节)
void uart2sendbyte(u8 ch)
{
s2buf = ch; //写数据到uart2数据寄存器
while(!(s2con&s2ti));
s2con&=~s2ti;
}
//串口2发送字符串
void uart2sendstr(u8 *s)
{
ie2 = 0x00;
while (*s) //检测字符串结束标志
{
uart2sendbyte(*s++); //发送当前字符
}
ie2 = 0x01;
}
//串口2中断
void uart2() interrupt 8 using 1
{
ie2 = 0x00; //关闭串口2中断
if (s2con & s2ri)
{
s2con &= ~s2ri;
rx_buffer[rx_num] = s2buf;
rx_num++;
if(rx_num》tbuf) rx_num = 0;
}
if (s2con & s2ti)
{
s2con &= ~s2ti;
}
ie2 = 0x01; //开启串口2中断
}
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
调用这一段代码中的uartinit(void) 函数初始化串口。
全部初始化完毕后,就可以使用代码对esp8266配置了。
// 1 发送at 进行握手
while(1)
{
uart2sendstr(esp_at); //串口2对wifi模块发送握手指令 即at
if(data_compare(“ok”))break;
else uart1sendstr(“error1,some problems with esp8266 ”);
delay1ms(600);
}
uart1sendstr(“ok,mcu connection success with esp8266! ”);
memset(rx_buffer, 0, tbuf);//清缓存数据
rx_num=0; //接收计数变量清0
// 2 配置wifi工作模式为sa模式
while(1)
{
uart2sendstr(esp_cwmode); //串口2对wifi模块工作模式进行设置
if(data_compare(“ok”)||data_compare(“no change”))break;
delay1ms(600);
}
memset(rx_buffer, 0, tbuf);//清缓存数据
rx_num=0; //接收计数变量清0
// 3 连接热点wifi wifi名 密码 如果失败 延时继续连接
while(1)
{
uart2sendstr(esp_cwjap); //串口2发送 指点wifi名 密码 等待模块连接
if(data_compare(“ok”))break;
delay1ms(3000);
}
memset(rx_buffer, 0, tbuf);//清缓存数据
rx_num=0; //接收计数变量清0
// 4 设置多链接
while(1)
{
uart2sendstr(esp_duolianjie); //设置多链接
if(data_compare(“ok”))break;
delay1ms(3000);
}
memset(rx_buffer, 0, tbuf);//清缓存数据
rx_num=0; //接收计数变量清0
// 5 设置端口号
while(1)
{
uart2sendstr(esp_port); //设置端口号
if(data_compare(“ok”))
{
delay1ms(3000);
break;
}
delay1ms(3000);
}
uart1sendstr(“ok,succeed esp_port ”);
memset(rx_buffer, 0, tbuf);//清缓存数据
rx_num=0; //接收计数变量清0
esp8266串口wifi实例
引脚连接:
gnd:接地
gpio16:其实是rst,低电平复位,所以为了正常工作,直接连接vcc即可
vcc:接3.3v,看过其他教程说不能接5v,不过小编有试过直接用5v来把玩,玩了一段时间都没啥问题,可以正常使用。但是有个问题就是芯片很烫,所以用久了可能会烧坏模块,而且wifi模块一过热,连接会很慢。所以,尽量用3.3v。
utxd、urxd:前者接单片机或usb转串口模块的rxd,后者接txd。这两个可以和5v单片机的rxd、txd连接,经测试通信正常,无需5v转3,3v
gpio2、gpio0:悬空
ch_pd:看一些教程说可以直接接vcc,但经测试不行,电流太大了,所以要经电阻连接到vcc,也就是串联个电阻然后电阻再接到vcc,电阻的阻值:数k。小编用4.7k,其实这个没什么严格限制
调试:
调试用的是usb转串口模块,根据上面的引脚连接配合面包板进行连接。然后就可以插电脑开串口助手来调试了。波特率的话得自己试,有可能是9600或115200,甚至是其他的。小编有一块是9600一块是115200。怎么试呢?在串口助手勾发送新行,然后发送at+rst,如果先出现一堆乱码最后带个ready则说明试对了。然后说明该模块正常是什么大问题了,还不放心的话还可以尝试其他at指令配合tcp调试工具来测试。
示例:
用单片机通过该模块和上位机通信的例子(ap模式)
code uchar at_1[14]={‘a’,‘t’,‘+’,‘c’,‘i’,‘p’,‘m’,‘u’,‘x’,‘=’,‘1’,0x0d,0x0a,‘’};
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]。当然不一定要在初始化程序中发这两串,也可以在按键中断中发送,需要建立连接的时候按下按键行了。
这两个at指令就当做是在创建连接就行。发送完这两句之后就可以用上位机连接wifi模块了。
wifi模块的ip为:192.168.4.1 端口号:333 ;
esp8266的出产设置都这个ip和端口,一般不会出错。如果不放心
可以用串口调试发at+cifsr=? ,会返回模块的ip和端口号。
ps:后面的0x0d,0x0a相当于发送新行的功能,不加的话at指令无效!
做完这几步就可以和上位机进行wifi连接了!
注意:关于单片机接收来自上位机的字符串,由于wifi会自动在接收的内容前面自动加“+ipd,x,x:“的字符,所以接收的时候记得加个判断,截掉”:“前面的字符,留下后面的就是来自上位机的内容了。
补:常用的几个at指令
at+cwmode=3 :sta+ap模式
at+rst :复位
at+cipmux=1 :多连接
at+cipserver=1 :建立服务器
at+cifsr :查询模块ip端口
at+cipserver=1,6000 :建立服务器的同时顺便设端口号
at+cipmux=0 :单连接
at+cipsend=0,1 :向连接序号为0的连接发1个字节

avr单片机和stm32区别与优缺点分析
钱江摩托宣布停止浙江钱江新能源40亿Wh锂离子动力与储能电池总成项目
匈牙利推出了一款怎样的无人机
led灯箱控制器接线图(三款led灯箱控制器接线图)
常见的原电池有哪些?
esp8266中文资料汇总(esp8266引脚图_与单片机连接_串口wifi实例)
2023年Q3全球半导体设备销售增长1.1%
研究团队构建基于肽适体的谷氨酸生物传感器
毫不费力就能让自家蔬菜茁壮成长的Motorleaf感应器
不服谷歌,微软推出新的黑科技
LED旋转时钟制作(有源代码)
无线传感器对于航空领域有什么积极意义
Littelfuse解决方案让电动自行车更高效、更安全
PCBA检测的必要性及检验方法
Verilog HDL 编译器指令说明
低压加热器工作原理_低压加热器的作用
新型印制电路基材--CEM-3
浅析专用混合动力变速箱结构原理和优缺点
《捍卫美国5G未来法案》禁止特朗普总统将华为从清单中除名
环境光传感芯片在智能照明中的应用