1.概述
ESP8266 系列无线模块是安信可科技自 主研发设计的一系列高性价比 WiFi SOC 模组。该系列模块支持标准的 IEEE802.11 b/g/n 协议, 内置完整的 TCP/IP 协议栈。 用户可以使用该系列模块为现有的设备添加联网功能, 也可以构建独立的网络控制器。
特性:
- 完整的802. 11b/g/n Wi-Fi SoC模块;
- 内置 Tensilica L106 超低功耗32位微型MCU,主频支持 80 MHz和160 MHz,支持RTOS;
- 内置1路10 bit高精度ADC;
- 支持UART/GPIO/ADC/PWM/SPI/I2C接口;
- 采用SMD-22封装;
- 集成Wi-Fi MAC/ BB/RF/PA/LNA;
- 支持多种休眠模式,深度睡眠电流低至 20uA
- 串口速率最高可达4Mbps;
- 内嵌Lwip协议栈;
- 支持 STA/AP/STA+AP工作模式;
- 支持安卓、IOS的Smart Config(APP) /AirKiss(微信)一键配网;
- 支持串口本地升级和远程固件升级(FOTA);
- 通用AT指令可快速上手;
- 支持二次开发,集成了Windows、Linux开发环境;
硬件接口:
引脚 |
说明 |
TXD0 |
PC11串口3接收脚 |
RXD0 |
PC10串口3发送脚 |
2.通讯协议
本模块采用串口通讯方式,波特率115200,1位起始信号+8位数据位+1位停止位,无校验位,AT指令集开发。
AT 指令可以细分为四种类型:
类型 |
指令格式 |
描述 |
测试指令 |
AT+=? |
该命令⽤于该命令⽤于查询设置指令的参数以及取值范围。 |
查询指令 |
AT+? |
该命令⽤于返回参数的当前值。 |
设置指令 |
AT+=<...> |
该命令⽤于设置⽤户⾃定义的参数值。 |
执行指令 |
AT+ |
该命令⽤于执⾏受模块内部程序控制的变参数不可变的功能。 |
注意:
- 不是每条AT指令都具备上述4种类型命令。
- 括号内为缺省值,不必填写或者可能不显示。使用双引号表示字符串数据,例如:AT+CWSAP=”ESP56290”,”21030826”,1,4
- 默认波特率为115200。
- AT指令必须大写,并且以回车换行符结尾(CRLF)。
3.常用AT指令
(1)测试指令AT
执行指令 |
AT |
响应 |
OK |
参数说明 |
- |
(2)重启模块AT+RST
执行指令 |
AT+RST |
响应 |
OK |
参数说明 |
- |
(3)开关回显ATE
执行指令 |
ATE |
响应 |
OK |
参数说明 |
ATE0:关闭回显 ATE1:开启回显 |
(4)AT+CWMODE_DEF设置WIFI模式并保存到Flash
指令 |
测试指令: AT+CWMODE_DEF=? |
查询指令: AT+CWMODE_DEF? 功能:查询当前WIFI模式 |
设置指令: AT+CWMODE_DEF= 功能:设置当前wifi模式 |
响应 |
+CWMODE_DEF:取值列表 OK |
+CWMODE_DEF: OK |
OK |
参数 |
1:Station模式 2:SoftAP模式 3:SoftAP+Station模式 |
||
注意 |
本设置保存到Flash system parameter区域, |
||
示例 |
AT+CWMODE_DEF=3 |
(5)AT+CWJAP_DEF 连接AF,保存到Flash
指令 |
查询指令: AT+CWJAP_DEF? 功能:查询WIFI已连接的AP信息 |
设置指令: AT+CWJAP_DEF=,,[,bassid,] 功能:设置需要连接的AP |
响应 |
+CWJAP_DEF:,,, |
OK |
参数 |
:字符串参数,AP的SSID |
:⽬标AP的SSID
:密码最⻓64字节ASCII
有多个SSID相同的AP的情况;
open的路由器,可⽤于PCI认证 |
注意 |
本设置保存到 Flash系统参数区。 | |
示例 |
AT+CWJAP_DEF="abc","0123456789" |
(6)AT+CIPMUX 设置多连接
指令 |
查询指令: AT+CIPMUX? |
设置指令: AT+CIPMUX=
|
响应 |
+CIPMUX: OK |
OK |
参数 |
‣ 0:单连接模式 |
|
注意 |
•默认为单连接; |
|
示例 |
AT+CIPMUX=1 |
(7)AT+CIPMODE 设置传输模式
指令 |
查询指令: AT+CIPMODE? 功能:查询传输模式 |
设置指令: AT+CIPMODE= 功能:设置传输模式 |
响应 |
+CIPMODE: OK |
OK |
参数 |
‣ 0:普通传输模式 |
|
注意 |
•本设置不保存到Flash。 |
|
示例 |
AT+CIPMODE=1 |
(8)AT+CIFSR查询本地IP
指令 |
AT+CIFSR |
响应 |
|
参数 |
: |
注意 |
ESP8266 Station IP 需连上AP 后,才可以查询。 |
(9)AT+CIPSTART 建立TCP连接、UDP传输或者SSL连接
指令 |
TCP 单连接(AT+CIPMUX=0)时: [,] |
TCP 多连接(AT+CIPMUX=1) 时: [,] |
响应 |
OK |
|
参数 |
• :⽹络连接ID (0 ~ 4),⽤于多连接的情况 |
|
示例 |
AT+CIPSTART="TCP","iot.espressif.cn",8000 |
(10)AT+CIPSEND发送数据
指令 |
设置指令: |
执⾏指令:AT+CIPSEND 功能:在透传模式时,开始发送数据。 |
响应 |
发送指定⻓度的数据。 开始接收串⼝数据,当数据⻓度满 时发送数据,回到普通指令模 式,等待下⼀条AT指令。 若未建⽴连接或连接被断开,返回:ERROR 如果数据发送成功,返回:SEND OK 如果数据发送失败,返回:SEND FAIL |
收到此命令后先换⾏返回 >。 进⼊透传模式发送数据,每包最⼤2048字
节,或者每包数据以20 ms间隔区分。 指令模式。发送 +++ 退出透传时,请⾄少 间隔 1秒再发下⼀条AT指令。 本指令必须在开启透传模式以及单连接
下使⽤。 必须为0。 |
参数 |
• :⽹络连接ID号(0 ~ 4),⽤于多连接的情况 |
- |
示例 |
- |
(11)AT+AT+CWSAP_DEF 设置SoftAP参数并保存到flash
指令 |
查询指令: |
设置指令: |
响应 |
+CWSAP_DEF:,,,,, |
OK |
参数 |
• :字符串参数,接⼊点名称
8 ~ 64 字节ASCII |
同左。 |
注意 |
本设置保存到 Flash system parameter区域。 |
|
示例 |
AT+CWSAP_DEF="ESP8266","1234567890",5,3 |
(12)AT+CIPSERVER建⽴TCP服务器
指令 |
AT+CIPSERVER=[,] |
响应 |
OK |
参数 |
• : • :端⼝号,默认为333。 |
注意 |
•多连接情况下(AT+CIPMUX=1),才能开启TCP服务器。 |
示例 |
AT+CIPMUX=1 |
(13) 创建TCP服务器配置示例
"ATrn",//测试指令
"ATE0rn",//关闭回显
"AT+CWMODE_DEF=2rn",//--设置为AP(热点)模式
"AT+RSTrn",//模块重启
"ATE0rn",//关闭回显
"AT+CWSAP="EPS8266_123","01234567",1,4rn", //--设置wifi信息
"AT+CIPMUX=1rn",//设置多连接
"AT+CIPSERVER=1,10rn", //--设置TCP服务器模式,端口号(0~65535)
"AT+CIFSRrn"//查询IP地址
(14) 创建TCP客户端示例
"ATrn",//测试指令
"ATE0rn",//关回显
"AT+CWMODE=1rn",//设置STA模式
"AT+RSTrn",//模块复位
"ATE0rn",//关回显
"AT+CWJAP="HUAWEIshui","asdfghjkl12"rn",//连接wifi
"AT+CIPMUX=0rn",//设置单连接
"AT+CIFSRrn",//查询IP
"AT+CIPSTART="TCP","192.168.43.204",8080rn",//连接服务器
"AT+CIPMODE=1rn",//设置透传模式
"AT+CIPSENDrn",//开始发送数据
4.WIFI配置示例
硬件资源:STM32F103RET6
通讯方式:串口通讯(USART3)
4.1 硬件配置
ESP8266通讯接口为串口3,波特率115200,1位起始信号+8位数据位+1位停止位,无校验位。
配置完成,生成代码。
4.2 DMA接收处理示例
通过DMA处理串口数据接收。
uint8_t usart3_rx_buff[1024];//串口1接收数据缓冲区
uint16_t usart3_cnt=0;//保存数组下班
uint8_t usart3_flag;//接收完成标志符
/*************************串口接收数据函数********************/
static void Usart3_Receive_Data(void)
{
DMA1_Channel3->CCR&=~(1<<0);//关闭通道传输
usart3_cnt=1024-DMA1_Channel3->CNDTR;//获取接收到是字符长度
if(usart3_cnt>=1024)usart3_cnt=0;
DMA1->IFCR|=1<<9;//清除标志位
DMA1_Channel3->CNDTR=1024;//从新赋值
DMA1_Channel3->CCR|=1<<0;//开启通道传输
usart3_flag=1;
}
串口中断服务函数如下:
void USART3_IRQHandler(void)
{
/* USER CODE BEGIN USART3_IRQn 0 */
uint8_t c;
/* USER CODE END USART3_IRQn 0 */
HAL_UART_IRQHandler(&huart3);
/* USER CODE BEGIN USART3_IRQn 1 */
if(__HAL_UART_GET_FLAG(&huart3,UART_FLAG_IDLE))
{
c=huart3.Instance->DR;
c=c;
Usart3_Receive_Data();
}
/* USER CODE END USART3_IRQn 1 */
}
-
控制器
+关注
关注
112文章
16332浏览量
177808 -
物联网
+关注
关注
2909文章
44557浏览量
372779 -
STM32
+关注
关注
2270文章
10895浏览量
355742 -
开发板
+关注
关注
25文章
5032浏览量
97373 -
ESP8266
+关注
关注
50文章
962浏览量
44964
发布评论请先 登录
相关推荐
评论