空气检测质点
空气检测质点
[源代码下载地址]
整体架构
V1.0成品图
数据采集
温湿度模块(型号:DHT11)
实物图
原理图
传输协议(串行接口,单线双向)
DATA引脚和微处理器之间采用单总线数据格式,每次通讯时间为4ms左右,完整的数据传输为40bit,高位先出。具体如下:
数据 | 含义 |
---|---|
温度高8位 | 串口发送的第一个数据 |
温度高8位 | 串口发送的第二个数据(默认00) |
湿度高8位 | 串口发送的第三个数据 |
湿度高8位 | 串口发送的第四个数据(默认00) |
校验8位 | 串口发送的第五个数据 |
代码实现
dht11.h 头文件
void dht11_gpio_input(void); 输入初始化
void dht11_gpio_output(void); 输出初始化
u16 dht11_scan(void); 扫描
u16 dht11_read_bit(void); 位读取
u16 dht11_read_byte(void); 字节读取
u16 dht11_read_data(u8 buffer[4]); 读取温度和湿度
main.c 在主函数中
if (dht11_read_data(buffer) == 0) 如果获取到40位数据后
{
hum = buffer[0] + buffer[1] / 10.0; 得到湿度值
temp = buffer[2] + buffer[3] / 10.0; 得到温度值
}
printf("温湿度模块\t 温度 = %.2f\t 湿度: %.2f \r\n", temp, hum);