小白能懂:嵌入式进阶:RTOS嵌入式系统框架
第一章 嵌入式常用裸机编程框架
第二章 面向对象编程基础
第三章 ESP8622物联网基础
前言
学习韦东山老师的七天物联网实战及直播课相关内容,以其课程笔记为骨,记录一下学习的过程,可能会加入一些自己的感想。
最后欢迎点赞、收藏与评论交流!
本文主要介绍一些物联网的基础,通过ESP2822模块完成,主要内容包括:AT指令,网络基础,UDP连接及stm32相应的程序框架。
一、AT指令
主要以ESP8266 Non-OSAT指令集进行说明。
1 AT指令说明
AT 指令主要可以细分为四种类型:
类型 | 指令格式 | 描述 |
---|---|---|
测试指令 | AT+=? | 该命令⽤于该命令⽤于查询设置指令的参数以及取值范围 |
查询指令 | AT+? | 该命令⽤于返回参数的当前值 |
设置指令 | AT+=<…> | 该命令⽤于设置⽤户⾃定义的参数值 |
执行指令 | AT+ | 命令⽤于执⾏受模块内部程序控制的变参数不可变的功能 |
指令格式需要注意的有:
- 不是每条 AT 指令都具备上述 4 种类型的命令。
- [ ] 括号内为缺省值,不必填写或者可能不显示。
- 使⽤双引号表示字符串数据 ”string”,例如:AT+CWSAP=“ESP756290”,“21030826”,1,4
- 默认波特率为 115200。
- AT 指令必须⼤写,并且以回⻋换⾏符结尾(CR LF)。
2 常用AT指令
- 基础指令
常用的基础指令如下所述:
指令 | 描述 |
---|---|
AT | 测试 AT 启动 |
AT+RST | 重启模块(开发板上电后一般要重启) |
ATE | 开关回显功能 |
AT+RESTORE | 恢复出⼚设置(当ESP8622设置错乱后可以恢复出厂设置) |
AT+UART_CUR | UART 当前临时配置 |
AT+UART_DEF | UART 默认配置,保存到 Flash |
AT+SLEEP | 设置 sleep 模式 |
AT+WAKEUPGPIO | 设置 GPIO 唤醒 Light-sleep 模式 |
- WIFI指令
常用的WIFI指令如下所述:
指令 | 描述 |
---|---|
AT+CWMODE_CUR | 设置 Wi-Fi 模式 (STA/AP/STA+AP),不保存到 Flash |
AT+CWMODE_DEF | 设置 Wi-Fi 模式 (STA/AP/STA+AP),保存到 Flash |
AT+CWJAP_CUR | 连接 AP,不保存到 Flash |
AT+CWJAP_DEF | 连接 AP,保存到 Flash |
AT+CWLAPOPT | 设置 AT+CWLAP 指令扫描结果的属性 |
AT+CWLAP | 扫描附近的 AP 信息 |
AT+CWQAP | 与 AP 断开连接 |
- TCP/IP指令
常用的TCP/IP指令如下所述:
指令 | 描述 |
---|---|
AT+CIPSTATUS | 查询⽹络连接信息 |
AT+CIPDOMAIN | 域名解析功能 |
AT+CIPSTART | 建⽴ TCP 连接,UDP 传输或者 SSL 连接 |
二、网络基础
三、UDP连接
因为手机端的IP地址未知,ESP8266的IP可以进行打印,因此一般选择UDP进行连接。一般步骤如下所述:
- 配置 WiFi 模式
AT+CWMODE=3 // softAP+station mode
--OK
- 连接路由器
AT+CWJAP="SSID","password" // SSID and password of router
--OK
- 查询 ESP8266 设备的 IP 地址
此步骤目的是手机与ESP模块进行连接。
AT+CIFSR
--
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"1a:fe:34:a5:8d:c6"
+CIFSR:STAIP,"192.168.101.133"
+CIFSR:STAMAC,"18:fe:34:a5:8d:c6"
OK
- 创建 UDP 传输。
AT+CIPSTART="UDP","192.168.101.110",8080,1112,2
--CONNNECT
--OK
//“192.168.101.110”, 8080 为 UDP 传输的远端 IP 和端⼝,即前⽂ PC 建⽴的 UDP 端⼝;
//1112 为 ESP8266 本地的 UDP 端⼝,⽤户可⾃⾏设置,如不设置则为随机值;
//2 表示当前 UDP 传输建⽴后,UDP 传输远端仍然会更改;UDP 传输远端会⾃动更改为最近⼀个与ESP8266 UDP 通信的远端。(一开始不知道手机的IP,未连接时,随便给一个IP就可以,当手机连接上ESP8622后,单片机的UDP变为最新的IP->手机的IP)
- 发送数据
AT+CIPSEND=7 // Send 7 bytes
>UDPtest // enter the data,no CR
--
Recv 7 bytes
SEND OK
发送数据时,如果输⼊的字节数超过了设置⻓度(n):
- 系统将提示 busy,并发送数据的前 n 个字节,发送完成后响应 SEND OK。
- 超出⻓度的部分数据被认为是⽆效数据,不被接受。
发送数据到其他指定远端。例如,发数据到 192.168.101.111, 端⼝ 1000。
AT+CIPSEND=7,"192.168.101.111",1000 // Send 7 bytes
>UDPtest // enter the data, no CR
--
Recv 7 bytes
SEND OK
- 接收数据
当 ESP8266 设备接收到服务器发来的数据,将提示如下信息:
+IPD,n:xxxxxxxxxx // received n bytes, data=xxxxxxxxxxx
- 断开连接
断开 UDP 传输
AT+CIPCLOSE
--
CLOSED
OK
流程图如下所述:
四、Stm32与ESP8622程序框架
智能家居物联网实战的程序框架如下所述:
总结
本文主要介绍了一些stm32物联网操作的基础,主要是AT指令的相关介绍与物联网的基础知识。