100ask七天物联网训练营学习笔记 - ESP8266

100ask七天物联网训练营学习笔记 – ESP8266

学习完中断和串口通信后,开始学习ESP8266模块,通过这个模块可以让我们的STM32具备连接WiFi进行网络通信的能力,这样STM32就可以设计出更有意思的东西。

1. ESP8266简介

ESP8266算是一个 SOC,内置了一个超低功耗的Tensilica L106 32RISC 处理器,CPU 时钟速度最高可达 160 MHz,支持实时操作系统 (RTOS)Wi-Fi 协议栈。可以简单理解为一个单片机加Wi-Fi模块,可以直接把它作为Wi-Fi外设来使用,也可以把它作为单片机来使用。直接把它作为Wi-Fi模块使用时,官方提供了完整的Wi-Fi协议栈,通过串口AT指令集来使用。

更详细的介绍和文档可以从乐鑫的官网下载:

https://www.espressif.com/zh-hans/products/socs/esp8266

2. AT指令集

2.1 指令说明

我们这里是使用ESP8266的官方固件,把它当作Wi-Fi外设来使用,STM32与它通信时使用AT指令集。

AT指令集可以分为四种类型:

《100ask七天物联网训练营学习笔记 - ESP8266》

注意:

  • 不是每条AT指令都具备上述4种类型的命令。
  • **[ ]**括号内为缺省值,不必填写或者可能不显示。
  • 使用双引号标识字符串数据 “string”,例如:AT+CWSAP=“ESP756290”,“21030826”,1,4
  • 默认波特率为 115200
  • AT指令必须大写,并且以回车换行符结尾(CRLF)。

AT+CWMODE_CUR指令为例:

《100ask七天物联网训练营学习笔记 - ESP8266》

AT+CWMODE_CUR测试指令:

// 发送指令
AT+CWMODE_CUR=?

// 指令回复:可以设置的值为1-3
+CWMODE_CUR:(1-3)

OK
    

AT+CWMODE_CUR查询指令:

// 发送指令
AT+CWMODE_CUR=?

// 指令回复:当前值为2,即为AP模式
+CWMODE_CUR:2

OK
    

AT+CWMODE_CUR设置指令:

// 发送指令
AT+CWMODE_CUR=?

// 指令回复:设置模式1成功
AT+CWMODE_CUR=1
    
OK
    

可以看出AT+CWMODE_CUR指令就只具有测试指令、查询指令及设置指令,并没有执行指令。

通常执行指令是一些无参数且直接执行的指令,例如复位指令。

2.2 常用指令

在官方文档中指令分为系统、Wi-Fi、TCP三大类,下面列出几个最常用的。

- AT:测试模块是否启动
- AT+RST:重启模块
  • AT+CWMODE_CUR:测试、查询、设置工作模式,不保存Flash
    • AT+CWMODE_DEF:测试、查询、设置工作模式,保存Flash
    • AT+CWJAP_CUR:查询、设置Station连接AP参数,不保存Flash
    • AT+CWJAP_DEF:查询、设置Station连接AP参数,保存Flash
    • AT+CWSAP_CUR:查询、设置SoftAP参数,不保存Flash
    • AT+CWSAP_DEF:查询、设置SoftAP参数,不保存Flash

还有很多其他指令,用到时可以查阅官方文档(4a-esp8266_at_instruction_set_cn.pdf)以及官方示例(4b-esp8266_at_command_examples_cn.pdf)。

3. TCP、UDP

《100ask七天物联网训练营学习笔记 - ESP8266》

可以看出UDP与TCP都为传输层协议,如何选择主要还是根据需求,TCP可以保证可靠传输,而且只能一对一,UDP虽然不是可靠传输但是可以一对多且传输效率比较高。

3. 测试步骤

3.1 配置ESP8266

3.1.1 设置Wi-Fi模式

AT+CWMODE=1

3.1.2 ESP8266连接路由器

AT+CWJAP=“Of Course I Still Love You”,“xxxxxx”

3.1.3 查询ESP8266设备在局域网段内的IP

AT+CIFSR

3.1.4 创建UDP连接

AT+CIPSTART=“UDP”,“192.168.31.192”,8888,8888,2

3.1.5 接收数据

这里不需要ESP8266模块做什么,等待模块接收到命令后,会从串口发出

3.1.6 发送数据

首先要告诉ESP8266,命令长度,然后再发送命令

AT+CIPSEND=32

{“data”:“doorbell”,“status”:“1”}

3.1.7 断开连接

AT+CIPCLOSE

下面是串口收发记录:

// 1.设置Wi-Fi模式
AT+CWMODE=1

OK

// 2.ESP8266连接路由器
AT+CWJAP="Of Course I Still Love You","xxxxxx"
WIFI DISCONNECT
WIFI CONNECTED
WIFI GOT IP

OK

// 3.查询ESP8266设备在局域网段内的IP
AT+CIFSR
+CIFSR:STAIP,"192.168.31.95"
+CIFSR:STAMAC,"ac:0b:fb:c8:4f:39"

OK

// 4.创建UDP连接,ESP8266发送命令,微信小程序接收
AT+CIPSTART="UDP","192.168.31.192",8888,8888,2
CONNECT

OK

// 5.此时通过手机微信小程序点击按钮发出命令,由ESP8266接收
+IPD,42:{ "room":"saloon","dev":"led","status":"1"}
+IPD,42:{ "room":"saloon","dev":"led","status":"0"}
+IPD,42:{ "room":"saloon","dev":"led","status":"1"}
+IPD,42:{ "room":"saloon","dev":"led","status":"0"}
    
// 6.发送数据
AT+CIPSEND=32

OK
// 继续发送32个字符的命令,此时小程序的门铃图标变亮
{ "data":"doorbell","status":"1"}

// 7.断开连接
AT+CIPCLOSE
CLOSED

OK

3.2 进入手机微信小程序

我们使用百问微信小程序进行测试,从小程序入口进入七天物联网智能家居实战训练班,进入UDP实验。点击绑定设备,输入3.1.3查询到的ESP8266内网IP地址及3.1.4设置的UDP端口号进行绑定。

《100ask七天物联网训练营学习笔记 - ESP8266》

    原文作者:_kukukukiki__
    原文地址: https://blog.csdn.net/weixin_44185351/article/details/123831240
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞