七、【中级篇】传感器DHT11、DHT22、DS18B20

本文介绍了传感器DHT11和DS18B20,详细讲解了它们的工作原理、接口类型、通信协议以及读写时序。DHT11用于采集温度和湿度,采用单线双向半双工模式;DS18B20则有九个字节的暂存器,用于存储温度等信息。
摘要由CSDN通过智能技术生成

1.传感器简介

智能终端是在感知层,如果想要感知采集数据必定需要使用传感器

市面上的传感器有很多:
检测气体的 温度 湿度 稀有气体含量(CO CO2 O2 甲醛 乙醇 甲烷 …)
检测液体的 温度 PH值 浑浊 液位
检测固体的 湿度 元素含量
检测人体 温度 血压 心率 血糖…

传感器的接口也有很多:
GPIO接口 串口接口(USART/UART IIC IIS SPI …) 并口接口

数字型传感器 和 模拟型传感器

传感器可以从采集种类、接口种类、采集到的数据种类分为很多种

串口与并口

串口:串行的接口或者串行的通信接口|串行的通讯接口,是指数据按照串行的方式进行传输(是指数据一位一位进行传输)
并口:并行的接口或者并行的通信接口|并行的通讯接口,是指数据按照并行的方式进行传输(是指数据多位多位进行传输)
注意:并不是说并口可以一次发送多位数据就说明并口比串口通信快,实际上正好相反,串口通信速度要比并口快
并口有很多的限制,(数据线与数据线之间会有电平干扰、需要同时发送同时接收)
在这里插入图片描述

单工与半双工

单工模式 A–>---->–B
半双工模式 A–>----<–B
全双工模式 ---->-----

略…

上拉电阻:是用来供应电流的

在这里插入图片描述

下拉电阻:是用来分担电流的

在这里插入图片描述

2.DHT11传感器

在这里插入图片描述

从手册中了解DHT11传感器:

  • 是用来采集温度和湿度的传感器
  • 采集到的是数字量
  • 4管脚的封装形式
  • 采集的范围:湿度 : 20% - 90%(误差:±5%),温度 : 0℃ - 50℃(误差:±2℃),
  • 分辨力 : 1(指的是采集的精度<只能采集整数部分>)
  • 连接方式:一个管脚用来接电源,一个管脚用来接地,一个管脚用来接MCU,一个管脚悬空(NC<没有连接>)
  • 串行接口:是指数据按照串行的方式进行传输
  • 单线双向(半双工的工作模式):指的是串行接口的工作模式
    单工模式,半双工模式,全双工模式
  • 一次完整的数据传输为40bit<5个字节>,高位先出
    8bit湿度整数数据+8bit湿度小数数据
    +8bit温度整数数据+8bit温度小数数据
    +8bit校验和
    数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据 +8bi温度整数数据+8bit温度小数数据”所得结果的末8位。
  • 软件有软件的协议,硬件也有硬件的协议:硬件的协议就是读写时序,读写时序都是官方定义出来的
    例子:DHT11在出产的时候,官方就已经定义好了一套读写时序,MCU想要和DHT11交互数据,就需要让MCU遵守DHT11的读写时序
  • 分析DHT11的读写时序

串行接口收发数据

需要把形参c保存的8bit二进制数据,通过高位先出的方式进行传输
假设:MCU连接了PC9管脚,可以使用位带发数据PCOut(9) 收数据PCIn(9)
数据线低电平代表数据0,数据线高电平代表数据1

/*发送数据*/
void func(u8 c)//10111110
{
	u8 i = 0;//循环变量
			
	for(i = 0; i < 8; i++)
	{
		if(c & 0x80)
			PCOut(9) = 1;
		else
			PCOut(9) = 0;
		c <<= 1;//01111100
	}
}

需要接收8bit二进制数据,传感器通过高位先出的方式发送数据
假设:MCU连接了PC9管脚,可以使用位带发数据PCOut(9) 收数据PCIn(9)
数据线低电平代表数据0,数据线高电平代表数据1

u8 func(void)
{
	u8 c = 0;//用来接收数据的变量
	u8 i = 0;//循环变量

	for(i = 0; i < 8; i++)
	{
		c <<= 1;//c >>= 1;
		if(PCIn(9) == 1)
			c |= 1;//c |= 0x80;
	}
}

分析DHT11的读写时序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

传输数据之前需要先检测DHT11存不存在|DHT11有没有损坏

void set_dht_output(void)//内部函数,把PC10管脚配置为输出模式
{
	GPIO_InitTypeDef Gpio_Value;//定义了GPIO初始化结构体类型的变量
	
	Gpio_Value.GPIO_Mode = GPIO_Mode_Out_PP;//选择了推挽的输出模式
	Gpio_Value.GPIO_Pin = GPIO_Pin_10;//选择了10号管脚
	Gpio_Value.GPIO_Speed = GPIO_Speed_50MHz;//选择了50MHz的输出速率
	GPIO_Init(GPIOC, &Gpio_Value);//按照上述配置初始化GPIOC组的管脚
}

void set_dht_input(void)//内部函数,把PC10管脚配置为输入模式
{
	GPIO_InitTypeDef Gpio_Value;//定义了GPIO初始化结构体类型的变量
	
	Gpio_Value.GPIO_Mode = GPIO_Mode_IN_FLOATING;//选择了浮空的输入模式
	Gpio_Value.GPIO_Pin = GPIO_Pin_10;//选择了10号管脚
	GPIO_Init(GPIOC, &Gpio_Value);//按照上述配置初始化GPIOC组的管脚
}

void dht_output_status(int n)
{
	set_dht_output();//先把PC10管脚初始化为输出模式
	if(n == 0)
		PCOut(10) = 0;
	else
		PCOut(10) = 1;
}

int dht_input_status(void)
{
	set_dht_input();//先把PC10管脚初始化为输入模式
	return PCIn(10);
}

void dht_init(void)//DHT11初始化
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
	//通过APB2总线使能GPIOC组的时钟
}
void get_dht_value(char buf[5])//获取DHT11传感器采集的数据
{
	u8 flag = 0;//该变量是用来获取PC10管脚的电平高低
	u8 time = 0;//该变量是用来计数
	
	dht_output_status(1);//把PC10管脚拉高
	dht_output_status(0);//把PC10管脚拉低
	delay_ms(20);//延时20ms
	dht_output_status(1);//把PC10管脚拉高
	//while(dht_input_status());//以死等的方式等待PC10管脚被拉低
	do
	{
		flag = dht_input_status();//获取PC10管脚的电平高低
		delay_us(2);//延时2us
		time++;//计数自增
	}while(flag == 1 && time <= 20);//以超时处理的方式等待PC10管脚被拉低
	if(time > 20)//判断是否超时
		return ;//提前结束程序
	while(!dht_input_status());//以死等的方式等待PC10管脚被拉高
	/*开始接收40bit的数据*/
	//...............
}

3.DS18B20传感器

DS18B20有九个字节的暂存器
0byte 温度低字节
1byte 温度高字节
2byte 温度上限
3byte 温度下限
4byte 配置
5 6 7byte 保留
8byte 校验

DS18B20的暂存器:共有九个字节
在这里插入图片描述

暂存器的配置位:

在这里插入图片描述

低五位保留

DS18B20的时序图:

在这里插入图片描述
在这里插入图片描述

DS18B20官方手册列举的案例:0xCC->11001100

在这里插入图片描述

外部模块介绍 (二) 温湿度传感器DHT11
qq_53567171的博客
02-17 1055
DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,内部由一个 8 位单片机控制一个电阻式感湿元件和一个 NTC 测温元件。DHT11 虽然也是采用单总线协议,但是该协议与 DS18B20 的单总线协议稍微有些不同之处。相比于 DS18B20 只能测量温度,DHT11 既能检测温度又能检测湿度,不过 DHT11 的精度和测量范围都要低于 DS18B20,其温度测量范围为 0~50℃,误差在±2℃;
DS18B20(温度)+DHT11(湿度)+LCD1602
08-12
ds18b20读取温度,dht11读取湿度,LCD进行显示,串口可以看到实时温度
【硬件模块】DS18B20温度传感器
最新发布
m0_63235356的博客
09-11 1462
DS18B20是只需要一根通讯线的温度传感器。首先先看看它的通信时序,一共就仨,初始化时序,写时序,读时序。第一个,初始化时序,我们(MCU)先拉低总线最少480us,然后释放总线(拉高)。DS18B20收到上升沿之后会在15~60us之后把总线拉低,拉低60~240us之后再释放总线。这样一套流程下来我们就算是初始化DS18B20了。那我们要做的就是先把MCU用于和DS18B20通信的那个引脚设置为输出模式。然后拉低480us(可以稍微久一点,但是我试过了,480us是没问题的)后,再拉高。
DHT11DHT22(AM2302)比较及使用方法
meaning2的博客
05-25 1万+
DHT11DHT22比较及使用方法DHT11DHT22(AM2302)技术性能特征DHT11DHT22介绍DHT11DHT22使用方法分析 DHT11DHT22(AM2302)技术性能特征 DHT11DHT22: 工作电压范围:3.3V-5.5V 工作电流 :平均0.5mA 输出:单总线数字信号 测量范围:湿度20–90%RH,温度0~50℃ 湿度0–99.9%RH
dht11ds18b20测温度
weixin_43322322的博客
09-04 4565
lcd显示室温 本文分为三部分: 硬件讲解 代码实现 ds18b20替代dht11 1.硬件讲解 材料: dht11温湿度传感器*1 arduino uno*1 lcd*1 杜邦线* n 面包板*1 电位计*1
DHT11DHT22使用区别(基于STM32)
热门推荐
JLouis94的博客
10-15 1万+
温湿度模块DHT11DHT22区别介绍DHT系列区别起始信号代码实现:数据处理代码实现调试问题DHT22读取失败实现代码 介绍 温湿度模块DHT11DHT22小项目用得比较多,虽然二者均是1-wire协议,但是细节部分还是有所差异。1-wire协议我就不多介绍了,网上很详细。这里着重介绍二者使用的区别DHT11 DHT22 DHT系列区别 DHT11DHT22 芯片手册 提取:hgew 起始信号 DHT11 DHT22 显然DHT11拉低要>18ms,而DHT22拉低只要&gt
DHT11 / DHT22温度传感器
03-30
通过C ++ Windows运行时组件使用C#代码中的DHT温度传感器在Windows 10和RPI2上实现单线协议。
DS18B20 DHT11 SHT10温湿度传感器 STM32驱动程序源代码.rar
03-22
在本文中,我们将深入探讨如何使用STM32微控制器驱动DS18B20DHT11和SHT10这三种常见的温湿度传感器。这些传感器广泛应用于环境监测、农业、智能家居等领域,STM32作为一款高性能的微处理器,为它们提供了理想的...
STM32单片机+DHT11 +DS18B20传感器的温湿度采集报警系统软件源代码.zip
03-18
STM32单片机+DHT11 +DS18B20传感器的温湿度采集报警系统软件源代码,可做为学习设计参考。 int main(void) { s16 i = 0; u8 sta = 0; //SysTick_Init(); Delay_init(); UART_Config(115200); LCD_Show(LCD_...
STC15W4K56+DS18B20+DHT11+电机控制温度传感器温湿度监控系统软件源码+说明文档.zip
04-14
STC15W4K56+DS18B20+DHT11+电机控制温度传感器温湿度监控系统软件源码+说明文档 int main() { uint16_t loop = 0; ///////////////////////////////////////////////// //注意: STC15W4K32S4系列的芯片,上...
STM32F103C8T6采集DS18B20DHT11、ADC展示在硬件IIC驱动的OLED0.96显示屏HAL库程序
07-26
DS18B20不同,DHT11的数据传输包含温度和湿度两个值。在STM32F103C8T6上配置DHT11,需要准确掌握其通信时序,并通过HAL库中的GPIO模块来实现。同样,读取并解析传感器返回的数据是必要的步骤。 硬件IIC(Inter-...
esp8266直接采集ds18b20dht11温湿度数据,控制led
01-31
esp8266直接采集ds18b20dht11获取温湿度数据,根据不同值控制led颜色。手机显示控制。
ds18b20dht11代码设计
m0_50067186的博客
01-31 1892
ds18b20dht11代码设计 Ds18b20代码设计 图1.2 DS18B20的初始时序 初始化时序:1-wire总线需获取存在脉冲来检测是否存在DS18B20,还要通过这个脉冲过程通知DS18B20准备好,单片机将要对它进行操作。脉冲检测过程中,首先单片机拉低引脚,持续480us到960us,然后单片机释放总线,DS18B20等待15us到60us后,会主动拉低引脚60us到240us,然后DS18B20会主动释放总线,这样IO口会被上拉电阻自动拉高,即初始
【蓝桥杯嵌入式备赛】11.拓展板之DHT11DS18B20
JayChanChan的博客
05-26 1443
引子 拓展板除了比较多路方便的PWM和ADC,还有几个传感器。比如温度传感器DS18B20和温湿度传感器DHT11。好像往年赛点都提供(听说第十届需要自己写),直接初始化以后调用函数就可以。 复制到自己的工程下在工程内也添加即可。 DS18B20 跳线帽:P3的TDQ连接P4的对应引脚 如果只是想把这个模块用起来其实初始化结束以后调用即可。如下: float temp_f; ds18b20_init_x(); while(1) { while(1) { temp_f = ds18b20_rea
蓝桥杯——扩展板DS18B20DHT11
qq_62725929的博客
02-25 1565
直接讲解这个板子上的使用方法(BS18B20以下简称BS):DS的温度数据为16位两个字节(字节0,字节1),高四位(SSSS)表示的是温度正负(0正1负),低四位是小数部分。其余是整数。读取的时候是一串16位数据,要获得小数部分就需要除16.0.DS的存储图:那如何与DS通讯呢?
arduino温湿度计库文件_DHT22 温湿度传感器接线图及工作原理
weixin_29736885的博客
12-05 3978
点击上面《智联开发arduino》订阅问:如何每次都能免费收到这种好文章呢?答:只需点击上面《智联开发arduino》关注即可一、功能简介DHT22也被称为AM2302,具有标准的单总线接口。它相比DHT11,拥有更高的精度和更大的量程。它是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术...
dht11温湿度传感器_树莓派4b 使用DHT22测量温湿度
weixin_42516040的博客
01-19 2315
一般的温湿度传感器dht11dht22dht11比较便宜,dht22dht11贵好几倍,自然测量的准确度肯定是dht22高一些。追求更高精准度的可以使用SHT1x。一、DHT22介绍如图,一个dht22温湿度传感器、商家卖的一般都是这种已经封装好了的,三个针脚(一个vcc,一个gnd,一个data):二、硬件连接接线很简单:Vcc接树莓派3.3v即1号针脚,Gnd接树莓派gnd,...
Dht11Ds18b20温度传感器使用
zhoubintiantian的博客
11-23 7877
使用MCU,STM32F103C8T6+OLED显示,板子自己手焊的。 说说使用感想DS18B20不愧是大厂的传感器,功能丰富,但使用起来确实有点麻烦。 DHT11应该就是国产模仿的吧,功能简单,没有唯一标识码,没有RAM,没有报警等等功能。 对照手册编写逻辑代码问题不大,关键就是STM32 HAL库里面us延时的问题,我用的是模仿在hal_rcc.c里面的一个函数 /** * @br
ESP32设备驱动-OLED显示DHT11DHT22传感器数据
视觉与物联智能
10-04 671
在文中,将介绍如何使用OLED显示DHT11DHT22传感器值。
DHT11温度传感器DS18B20温度传感器对比
05-04
DHT11DS18B20都是数字温度传感器,但是它们有一些不同之处: 1. 测量范围:DHT11的测量范围是0-50℃,精度为±2℃,而DS18B20的测量范围是-55℃至+125℃,精度为±0.5℃。 2. 通信协议:DHT11使用单总线通信协议...
写文章

热门文章

  • 七、【中级篇】传感器DHT11、DHT22、DS18B20 10345
  • 野火STM32F103指南者开发板资料 7644
  • 十一、【高级篇】无线通信模块(Nrf) 6194
  • 十二、【高级篇】WIFI模块-ESP8266 5465
  • 九、【中级篇】串口通信(USART、IIC)、读取EEPROM 5108

分类专栏

  • STM32F103系列专栏 付费 12篇
  • UNIX环境高级编程 13篇
  • linuxC语言学习 24篇
  • QT  应用程序开发 1篇
  • 数据结构 13篇
  • Linux-野火imx6ull学习笔记 31篇
  • 面试题以及错题整理 3篇
  • STM32FX-Study 2篇
  • C++学习之路 6篇

最新评论

  • 黑马程序员C++笔记--第三阶段核心:【类和对象】

    2401_86335440: 没更新完,不想看

  • 5、c语言四则计算器(包括括号)

    2301_80942809: 请问是需要特殊的开发环境才能运行吗?

  • 野火STM32F103指南者开发板资料

    阿玛戎托斯: 求开发版资料链接谢谢~

  • 野火STM32F103指南者开发板资料

    cyccyccc1238000: 开发板资料链接可以再发一下吗

  • 黑马程序员C++笔记--第二阶段实战:【通讯录管理系统】

    LY__0302: 有bug呀表情包

大家在看

  • SpringBoot框架下宠物用品电商的设计与开发
  • 华为od面试手撕代码真题题型7——滑动窗口
  • 案例分享:制造业网管系统建设最佳实践
  • 空空导弹 制导与控制系统设计 825
  • 如何搭建校园系统,搭建校园论坛系统的常见问题

最新文章

  • 十二、【高级篇】WIFI模块-ESP8266
  • 十一、【高级篇】无线通信模块(Nrf)
  • 十、【高级篇】RTC--实时时钟
2021年95篇
2020年7篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

玻璃钢生产厂家河南动物玻璃钢雕塑多少钱武威玻璃钢植物雕塑厂家浙江高质量玻璃钢雕塑图片仙桃玻璃钢游乐场门头雕塑广东公园玻璃钢雕塑销售厂家通用玻璃钢雕塑销售价格绍兴玻璃钢仿铜雕塑价格吉林园林玻璃钢雕塑定做室外玻璃钢雕塑厂商场美陈方案下载北京玻璃钢雕塑造型福建大型商场美陈哪里有安庆玻璃钢牌匾雕塑合肥玻璃钢雕塑设计甘肃雕塑玻璃钢北京新款玻璃钢面包雕塑浙江玻璃钢雕塑公司玻璃钢雕塑可发光吗孝感校园玻璃钢雕塑厂家玻璃钢雕塑摆件好评语中山玻璃钢景观雕塑景观小品偃师玻璃钢雕塑厂平顶山商场美陈雕塑哪家好安徽景观玻璃钢雕塑加工泡沫玻璃钢雕塑制作玻璃钢花盆粘土手工湖南定制玻璃钢雕塑价位四川节庆商场美陈供应江宁商场入口美陈黑龙江动物玻璃钢雕塑哪家便宜香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化