【STM32】基于物联网的远程温湿度监测系统 --- ESP8266 + 机智云

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

工程和 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 位数据,高位先出。

数据格式如下:

8bit 湿度整数数据 + 8bit 湿度小数数据 + 8bit 温度整数数据 + 8bit 温度小数数据 + 8bit 校验位
(其中温、湿度小数部分为 0。)
8bit 校验位 = 8bit 湿度整数数据 + 8bit 湿度小数数据 + 8bit 温度整数数据 + 8bit 温度小数数据

举例:

在这里插入图片描述

  • 时序分析(附代码)

用户主机(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(); 
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

G.Chenhui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值