0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于STM32物联网开发板(5)--ESP8266

wang123a 来源:wang123a 作者:wang123a 2023-05-14 15:07 次阅读

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开发环境;
poYBAGRggYmAEkHFAAFHYP8ckvA832.pngpoYBAGRggZyAEdDBAAVQe0XPzn4858.png


硬件接口:

引脚

说明

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

OK
或者
+CWJAP_DEF:
FAI

参数

:字符串参数,AP的SSID
:AP的MAC地址
:信道号
:信号强度

:⽬标AP的SSID

:密码最⻓64字节ASCII
[]:⽬标AP的MAC地址,⼀般⽤于

有多个SSID相同的AP的情况;
[]:选填参数,不允许连接WEP和

open的路由器,可⽤于PCI认证
• :(仅供参考,并不可靠)
‣1:连接超时
‣ 2:密码错误
‣ 3:找不到⽬标AP
‣ 4:连接失败
参数设置需要开启Station模式,若SSID或者password中含有特殊符号,例如,或者 “或者 时,需要进⾏转义,其它字符转义⽆效。

注意

本设置保存到 Flash系统参数区。

示例

AT+CWJAP_DEF="abc","0123456789"
例如,⽬标AP的SSID为"ab,c",password为"0123456789"",则指令如下:
AT+CWJAP_DEF="ab\,c","0123456789""
如果有多个AP的SSID均为"abc",可通过BSSID确定⽬标AP:
AT+CWJAP_DEF="abc","0123456789","ca:d7:19:d8:a6:44"

(6)AT+CIPMUX 设置多连接

指令

查询指令:

AT+CIPMUX?

设置指令:

AT+CIPMUX=

响应

+CIPMUX:

OK

OK

参数

‣ 0:单连接模式
‣ 1:多连接模式

注意

•默认为单连接;
•只有⾮透传模式(AT+CIPMODE=0),才能设置为多连接;
•必须在没有连接建⽴的情况下,设置连接模式;
•如果建⽴了TCP服务器,想切换为单连接,必须关闭服务器(AT+CIPSERVER=0),服务器仅⽀持多连接。

示例

AT+CIPMUX=1

(7)AT+CIPMODE 设置传输模式

指令

查询指令:

AT+CIPMODE?

功能:查询传输模式

设置指令:

AT+CIPMODE=

功能:设置传输模式

响应

+CIPMODE:

OK

OK

参数

‣ 0:普通传输模式
‣ 1:透传模式,仅⽀持TCP单连接和UDP固定通信对端的情况

注意

•本设置不保存到Flash。
•透传模式传输时,如果连接断开,ESP8266会不停尝试重连,此时单独输⼊+++退出透传,则停⽌重连;普通传输模式则不会重连,提示连接断开。

示例

AT+CIPMODE=1

(8)AT+CIFSR查询本地IP

指令

AT+CIFSR

响应

+CIFSR:APIP,
+CIFSR:APMAC,
+CIFSR:STAIP,
+CIFSR:STAMAC,
OK

参数


ESP8266 SoftAP的 IP 地址
ESP8266 Station 的IP地址

ESP8266 SoftAP 的MAC地址
ESP8266 Station 的MAC地址

注意

ESP8266 Station IP 需连上AP 后,才可以查询。

(9)AT+CIPSTART 建立TCP连接、UDP传输或者SSL连接

指令

TCP 单连接(AT+CIPMUX=0)时:
AT+CIPSTART=,,

[,]

TCP 多连接(AT+CIPMUX=1) 时:
AT+CIPSTART=,,,

[,]

响应

OK

ERROR
如果连接已经存在,则返回
ALREADY CONNECTED

参数

• :⽹络连接ID (0 ~ 4),⽤于多连接的情况
• :字符串参数,连接类型,"TCP","UDP"或"SSL"
• :字符串参数,远端IP地址
• :远端端⼝号
• []:TCP keep-alive侦测时间,默认关闭此功能
‣0:关闭TCP keep-alive功能
‣ 1 ~ 7200:侦测时间,单位为1s

示例

AT+CIPSTART="TCP","iot.espressif.cn",8000
AT+CIPSTART="TCP","192.168.101.110",1000

(10)AT+CIPSEND发送数据

指令

设置指令:
1.单连接时(+CIPMUX=0)
AT+CIPSEND=
2.多连接时(+CIPMUX=1)
AT+CIPSEND=,
3.如果是UDP传输,可以设置远端IP和端⼝:
AT+CIPSEND=[,] [,,]
功能:在普通传输模式时,设置发送数据的⻓
度。

执⾏指令:AT+CIPSEND

功能:在透传模式时,开始发送数据。

响应

发送指定⻓度的数据。
收到此命令后先换⾏返回>,然后

开始接收串⼝数据,当数据⻓度满

时发送数据,回到普通指令模

式,等待下⼀条AT指令。

若未建⽴连接或连接被断开,返回:ERROR

如果数据发送成功,返回:SEND OK

如果数据发送失败,返回:SEND FAIL

收到此命令后先换⾏返回 >。

进⼊透传模式发送数据,每包最⼤2048字

节,或者每包数据以20 ms间隔区分。
当输⼊单独⼀包 +++ 时,返回普通AT

指令模式。发送 +++ 退出透传时,请⾄少

间隔 1秒再发下⼀条AT指令。

本指令必须在开启透传模式以及单连接

下使⽤。
若为 UDP 透传,指令AT+CIPSTART参数

必须为0。

参数

• :⽹络连接ID号(0 ~ 4),⽤于多连接的情况
• :数字参数,表明发送数据的⻓度,最⼤⻓度为2048
• []:UDP传输可以设置对端IP
• []:UDP传输可以设置对端端⼝

-

示例

-

(11)AT+AT+CWSAP_DEF 设置SoftAP参数并保存到flash

指令

查询指令:
AT+CWSAP_DEF?
查询ESP8266 SoftAP的配置参数。

设置指令:
AT+CWSAP_DEF=,,,[,
][,]
功能:设置ESP8266 SoftAP的配置参数。

响应

+CWSAP_DEF:,,,,,

OK

ERROR

参数

• :字符串参数,接⼊点名称
• :字符串参数,密码⻓度范围:

8 ~ 64 字节ASCII
• :通道号
• :加密⽅式,不⽀持WEP
‣0:OPEN
‣ 2:WPA_PSK
‣ 3:WPA2_PSK
‣ 4:WPA_WPA2_PSK
• [](选填参数):允许连⼊ ESP8266SoftAP 的最多Station数⽬,取值范围[1, 8]。
• [](选填参数):默认为 0,开启⼴播ESP8266 SoftAP SSID。
‣ 0:⼴播SSID
‣ 1:不⼴播SSID

同左。
⚠注意:
指令只有在SoftAP模式开启后有效。

注意

本设置保存到 Flash system parameter区域。

示例

AT+CWSAP_DEF="ESP8266","1234567890",5,3

(12)AT+CIPSERVER建⽴TCP服务器

指令

AT+CIPSERVER=[,]

响应

OK

参数

• :
‣0:关闭服务器
‣ 1:建⽴服务器

• :端⼝号,默认为333。

注意

•多连接情况下(AT+CIPMUX=1),才能开启TCP服务器。
•创建TCP服务器后,⾃动建⽴TCP服务器监听。
•当有TCP客户端接⼊,会⾃动占⽤⼀个连接ID。

示例

AT+CIPMUX=1
AT+CIPSERVER=1,1001

(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配置示例

开发平台:STM32CubeMX6.0+KEIL5

硬件资源:STM32F103RET6

通讯方式:串口通讯(USART3)

4.1 硬件配置

ESP8266通讯接口为串口3,波特率115200,1位起始信号+8位数据位+1位停止位,无校验位。

pYYBAGRghVSAUGcHAAO-jl4cXac374.pngpYYBAGRghYmAL-AOAACUC_ZEGnk797.pngpoYBAGRghZuAO159AAB4CHYNPWc007.png

配置完成,生成代码。

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

    文章

    15223

    浏览量

    171189
  • 物联网
    +关注

    关注

    2869

    文章

    41622

    浏览量

    358380
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348744
  • 开发板
    +关注

    关注

    25

    文章

    4429

    浏览量

    93993
  • ESP8266
    +关注

    关注

    50

    文章

    947

    浏览量

    43939
收藏 人收藏

    评论

    相关推荐

    【Tisan联网申请】Tisan联网开发板

    申请理由:我喜欢电子类的东西,有了Tisan联网开发板我就更有信心继续研究电子类产品。项目描述:Tisan联网
    发表于 11-06 09:43

    【IntoRobot Neutron试用体验】浅谈IntoRobot开发板原理图见解(STM32F411芯片与ESP8266结合的联网

    芯片是通过SPI连接在ESP8266芯片上,而没有连接在STM32,这是为什么呢,你思考过吗?下面ESP8266是由乐鑫提供的芯片,安信可再次基础上设计的ESP01
    发表于 05-25 23:49

    MicroPython遇上联网?五脏俱全的联网快速开发板

    了完善的技术文档以及技术支持服务。  玩转MicroPython之五脏俱全的联网快速开发板  TPYBoard基于局域网通讯的V20X系列能稳定的应用于
    发表于 06-07 15:53

    RuilongMaker ESP8266联网开发板 串口WIFI模块无线收发 Mini版 相关资料分享

    ESP8266 IOT MiniBoard 联网迷你开发板,是一款以ESP8266-12F为核心的
    发表于 07-06 06:30

    使用ESP8266STM32进行联网开发板设计

    联网系列①——使用ESP8266STM32进行联网开发
    发表于 08-19 09:06

    ESP8266 IOT MiniBoard联网迷你开发板有哪些性能

    ESP8266 IOT MiniBoard联网迷你开发板是什么?ESP8266 IOT MiniBoard
    发表于 10-27 07:52

    基于esp8266的NodeMCU开发板

    语言,只需几行脚本就能实现联网等功能。基于乐鑫esp8266的NodeMCU开发板,具有GPIO、PWM、I2C、ADC等功能,还包含了4M外部flash,TB上只卖十几软妹币,性价比很高。使用L...
    发表于 11-01 06:27

    ESP8266-NodeMCU的学习

    联网】基础篇 ESP8266-NodeMCU学习一本篇文章:本篇文章主要是关于ESP8266-NodeMCU的学习。正文如下:一、ESP8266
    发表于 11-01 07:52

    esp8266联网开发板的教程

    之前在做智能家居的时候需要用到esp8266,我这边因为esp8266联网开发板的技小新教程相对齐全就不用串口模块,直接使用板子,但是没想
    发表于 12-09 07:35

    基于ESP8266联网智能小车的设计资料分享

    ESP8266ESP32联网智能小车开发系列文章目录第一篇:最简单DIY基于ESP8266
    发表于 01-21 08:39

    使用esp8266实现STM32联网(最简单USART方法)

    到电脑上的java程序 这一篇 esp8266STM32连接,电脑通过STM32配置esp8266实现联网发送数据具体流程如下图 2=
    发表于 11-22 11:51 1.1w次阅读

    【物联网】基础篇 ESP8266-NodeMCU学习一

    【物联网】基础篇 ESP8266-NodeMCU学习一本篇文章:本篇文章主要是关于ESP8266-NodeMCU的学习。正文如下:一、ESP8266-NodeMCUNodeMCU是一个
    发表于 10-26 14:21 15次下载
    【物<b class='flag-5'>联网</b>】基础篇 <b class='flag-5'>ESP8266</b>-NodeMCU学习一

    esp笔记(2)使用Arduino IDE 开发 esp8266

    本文开发环境:MCU型号:esp8266开发环境 :Arduino 1.8.9硬件平台:V3 开发板本文内容:Esp8266 V3
    发表于 12-05 14:51 55次下载
    <b class='flag-5'>esp</b>笔记(2)使用Arduino IDE <b class='flag-5'>开发</b> <b class='flag-5'>esp8266</b>

    配置esp8266开发板的Arduino开发环境

    1.esp8266开发板硬件:基于esp8266的nodemuc开发板 需要microUSB连接线。ESP8266-NodeMCU是一个开源
    发表于 12-08 14:51 33次下载
    配置<b class='flag-5'>esp8266</b><b class='flag-5'>开发板</b>的Arduino<b class='flag-5'>开发</b>环境

    开发板ESP8266开源分享

    电子发烧友网站提供《开发板ESP8266开源分享.zip》资料免费下载
    发表于 08-10 14:49 16次下载
    <b class='flag-5'>开发板</b><b class='flag-5'>ESP8266</b>开源分享