【STM32】基于物联网的远程温湿度监测系统

您所在的位置:网站首页 土壤温湿度检测代码 【STM32】基于物联网的远程温湿度监测系统

【STM32】基于物联网的远程温湿度监测系统

2024-07-04 21:40| 来源: 网络整理| 查看: 265

【STM32】基于物联网的远程温湿度监测系统 --- ESP8266 + 机智云 一、ESP-8266 烧录固件二、机智云创建产品三、手机端安装机智云 APP四、编写 DHT11 驱动五、机智云工程代码移植六、采集数据的上发七、控制数据的下拉八、ESP-8266 配置入网九、测试

工程和 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(); //设置为输出 DHT11_DQ_OUT = 0; //拉低 HAL_Delay_ms(20); //拉低至少18ms DHT11_DQ_OUT = 1; //拉高 HAL_Delay_us(30); //主机拉高20~40us } //等待DHT11的回应 //返回1:未检测到DHT11的存在 //返回0:存在 uint8_t DHT11_Check(void) { uint8_t retry = 0; DHT11_IO_IN(); //设置为输入 while(DHT11_DQ_IN && retry = 100) return 1; else retry = 0; while(!DHT11_DQ_IN && retry = 100) return 1; return 0; } //从DHT11读取一个位 //返回值:1/0 uint8_t DHT11_Read_Bit(void) { uint8_t retry = 0; while(DHT11_DQ_IN && retry


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3