【STM32】基于物联网的远程温湿度监测系统 --- ESP8266 + 机智云
工程和 pcd 的链接放这里啦
链接:https://pan.baidu.com/s/1r3gKC3R_hFLWiIE3UTO_ow?pwd=fpuc
提取码:fpuc
一、ESP-8266 烧录固件
相关调试资料:ESP8266 AT 指令集
- 机智云固件 GAgent 下载

- 查看 ESP-01S 的规格书

- 选择相应 Flash 大小的 bin 文件
选择 conbine(四合一的文件)

- 使用 ESP 官方 Flash 下载工具
注意: 下载时GPIO0要接地
按下图所示进行配置,配置完成后,点击START,稍等片刻即可。

至此,机智云固件已烧录完成。
当使用 USB-TTL 连接 ESP8266 后,可以发现 ESP8266 的蓝灯闪烁与之前相比更为频繁,且串口会一直打印以下数据。

二、机智云创建产品
- 在机智云官网注册账号
- 创建产品

下面的步骤可以参考:开发向导,这个很详细。
- 添加数据点
产品开发的第一步是定义产品的功能,一个数据点可以定义为产品的某个功能,如开关等。
有关 DHT11 的相关参数信息可以参考:链接
温度:

湿度:

按键布尔值:

- 生成 MCU 工程代码
选择相应的 MCU,这里我选择的是 STM32F103C8T6。

Product Secret(产品密钥) 可以在产品的基本信息中找到,如下图。

完成以上步骤,即完成了产品的配置。
三、手机端安装机智云 APP
扫码下载即可。

四、编写 DHT11 驱动
- DHT11 简要介绍
DHT11 器件采用简化的单总线通信,DATA 引脚用于微处理器与 DHT11 之间的通讯和同步,一次传送 40 位数据,高位先出。
数据格式如下:
举例:

- 时序分析(附代码)
用户主机(MCU)发送一次开始信号后,DHT11 从低功耗模式转换到高速模式,待主机开始信号结束后,DHT11 发送响应信号,送出 40bit 的数据,信号发送如图所示。

注意: 主机(MCU)从 DHT11 读取的温湿度数据总是前一次的测量值。
- 总线空闲:
DHT11 的 DATA 数据线由上拉电阻拉高一直保持高电平,此时 DHT11 的DATA 引脚处于输入状态,时刻检测外部信号。
- MCU 发出请求信号:
MCU I/O 设置为输出同时输出低电平,且低电平保持时间不能小于 18ms,然后MCU I/O设置为输入状态。由于上拉电阻,MCU I/O 即 DHT11 的 DATA 数据线也随之变高,之后等待 DHT11 作出回答信号。
- DHT11 发出应答信号:
当 DHT11 的 DATA 引脚检测到外部信号有低电平时,等待外部信号低电平结束,延迟后 DHT11 的 DATA引脚处于输出状态,输出 80us的低电平作为应答信号,紧接着输出 80us 的高电平通知 MCU 准备接收数据,MCU I/O 此时处于输入状态,检测到 DHT11 回应信号后,等待 80us 的高电平后的数据接收。

- MCU 接收 40 位数据
由 DHT11 的 DATA 引脚输出 40 位数据,MCU 根据 I/O 电平的变化来判断是 “0” 还是 “1” 。
位数据 “0” 的格式为: 50us 的低电平和 26-28us的高电平。

位数据 “1” 的格式为: 50us 的低电平加 70us 的高电平。

- DHT11 发出结束信号
DHT11 的 DATA 引脚输出 40 位数据后,继续输出低电平 50us 后转为输入状态,由于上拉电阻存在,变为高电平。
// 本驱动采用 HAL 库,us 级延时使用通用定时器实现,对 IO 引脚的状态的改变采用位操作以及直接寄存器操作
// 复位DHT11
void DHT11_Rst(void)
{
DHT11_IO_OUT();

本文详细介绍了如何利用ESP8266和STM32F103C8T6搭建基于物联网的远程温湿度监测系统。通过机智云平台创建产品,配置MCU工程,编写DHT11传感器驱动,并实现数据的上发和下拉。ESP8266采用SoftAP模式进行配网,确保设备接入网络。整个过程包括固件烧录、数据采集、APP安装和设备交互等多个步骤。

7196

被折叠的 条评论
为什么被折叠?



