基于DHT11温湿度传感器和nrf24l01模块的多点数据采集Word下载.docx
《基于DHT11温湿度传感器和nrf24l01模块的多点数据采集Word下载.docx》由会员分享,可在线阅读,更多相关《基于DHT11温湿度传感器和nrf24l01模块的多点数据采集Word下载.docx(83页珍藏版)》请在冰豆网上搜索。
重复性
±
精度
25℃
4
0-50℃
5
互换性
可完全互换
量程范围
0℃
30
90
20
50℃
80
响应时间
1/e(63%)25℃,1m/s空气
6
10
15
S
迟滞
长期稳定性
典型值
%RH/yr
温度
℃
2
50
1/e(63%)
(2)接口说明
建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻
(3)电源引脚
DHT11的供电电压为3-5.5V。
传感器上电后,要等待1s以越过不稳定状态在此期间无需发送任何指令。
电源引脚(VDD,GND)之间可增加一个100nF的电容,用以去耦滤波。
(4)串行接口(单线双向)
DATA用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:
一次完整的数据传输为40bit,高位先出。
数据格式:
8bit湿度整数数据+8bit湿度小数数据
+8bi温度整数数据+8bit温度小数数据
+8bit校验和
数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。
用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。
1.通讯过程如图1所示
图1
总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。
DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后,读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可,总线由上拉电阻拉高。
图2
总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。
数字0信号表示方法如图4所示
图4
数字1信号表示方法.如图5所示
图5
(5)测量分辨率
测量分辨率分别为8bit(温度)、8bit(湿度)。
(6)电气特性
VDD=5V,T=25℃,除非特殊标注
min
typ
max
供电
DC
3
5.5
V
供电电流
测量
0.5
2.5
mA
平均
0.2
待机
100
150
uA
采样周期
秒
次
注:
采样周期间隔不得低于1秒钟。
(7)应用信息
(7.1)工作与贮存条件
超出建议的工作范围可能导致高达3%RH的临时性漂移信号。
返回正常工作条后,传感器会缓慢地向校准状态恢复。
要加速恢复进程/可参阅7.3小节的“恢复处理”。
在非正常工作条件下长时间使用会加速产品的老化过程。
(7.2)暴露在化学物质中
电阻式湿度传感器的感应层会受到化学蒸汽的干扰,化学物质在感应层中的扩散可能导致测量值漂移和灵敏度下降。
在一个纯净的环境中,污染物质会缓慢地释放出去。
下文所述的恢复处理将加速实现这一过程。
高浓度的化学污染会导致传感器感应层的彻底损坏。
(7.3)恢复处理
置于极限工作条件下或化学蒸汽中的传感器,通过如下处理程序,可使其恢复到校准时的状态。
在50-60℃和<
10%RH的湿度条件下保持2小时(烘干);
随后在20-30℃和>
70%RH的湿度条件下保持5小时以上。
(7.4)温度影响
气体的相对湿度,在很大程度上依赖于温度。
因此在测量湿度时,应尽可能保证湿度传感器在同一温度下工作。
如果与释放热量的电子元件共用一个印刷线路板,在安装时应尽可能将DHT11远离电子元件,并安装在热源下方,同时保持外壳的良好通风。
为降低热传导,DHT11与印刷电路板其它部分的铜镀层应尽可能最小,并在两者之间留出一道缝隙。
(7.5)光线
长时间暴露在太阳光下或强烈的紫外线辐射中,会使性能降低。
(7.6)配线注意事项
DATA信号线材质量会影响通讯距离和通讯质量,推荐使用高质量屏蔽线。
(8)封装信息
(9)DHT11引脚说明
Pin
名称
注释
VDD
供电3-5.5VDC
DATA
串行数据,单总线
NC
空脚,请悬空
GND
接地,电源负极
(10)焊接信息
手动焊接,在最高260℃的温度条件下接触时间须少于10秒。
(11)注意事项
(1)避免结露情况下使用。
(2)长期保存条件:
温度10-40℃,湿度60%以下。
2、nRF24L01模块简介
(1)nRF24L01芯片简介
功能描述:
真正的GFSK单片式收发芯片
内置硬件链路层
增强型ShockBurstTM功能
自动应答及自动重发功能
地址及CRC检验功能
无线速率:
1或2Mbps
SPI接口速率:
0~8Mbps
125个可选工作频道
很短的频道切换时间,可用于跳频
与nRF24XX系列完全兼容
I/O可接受5V电平的输入
20脚QFN4×
4mm封装
极低成本晶振±
60ppm
使用低成本电感和双面PCB板
低工作电压:
1.9~3.6V
概述:
nRF24L01是一款工作在2.4~2.5GHz世界通用ISM频段的单片无线收发器芯片。
无线收发器包括:
频
率发生器、增强型SchockBurstTM模式控制器、功率放大器、晶体振荡器、调制器、解调器。
输出功率、
频道选择和协议的设置可以通过SPI接口进行设置。
极低的电流消耗:
当工作在发射模式下发射功率为-6dBm时电流消耗为9mA,接收模式时为12.3mA。
掉电模式和待机模式下电流消耗更低。
结构框图:
引脚及其功能:
电气特性:
条件:
VDD=+3V,VSS=0V,TA=-40℃到+85℃
极限范围:
VDD…………………………….+3.6V
VSS………………………………0V
输入电压
VI………………………………-0.3V~5.25V
输出电压
VO…………………………….VSS~VDD
总功耗
PD(TA=85℃)………………………60mW
工作温度……………………-40℃~+85℃
存储器温度…………………-40℃~+125℃
注意:
强行超过一项或多项极限值使用将导致器件永久性损坏。
术语表:
工作模式
nRF24L01可以设置为以下几种主要模式
nRF24L01在不同模式下的引脚功能
待机模式:
待机模式I在保证快速启动的同时减少系统平均消耗电流。
在待机模式I下,晶振正常工作。
在待机
模式II下部分时钟缓冲器处在工作模式。
当发送端TXFIFO寄存器为空并且CE为高电平时进入待机模式
II。
在待机模式期间,寄存器配置字内容保持不变。
掉电模式:
在掉电模式下,nRF24L01各功能关闭,保持电流消耗最小。
进入掉电模式后,nRF24L01停止工作,
但寄存器内容保持不变。
启动时间见表格13。
掉电模式由寄存器中PWR_UP位来控制
数据包处理方式:
nRF24L01有如下几种数据包处理方式:
ShockBurstTM(与nRF2401,nRF24E1,nRF2402,nRF24E2数据传输率为1Mbps时相同)
增强型ShockBurstTM模式
ShockBurstTM模式:
ShockBurst模式下nRF24L01可以与成本较低的低速MCU相连。
高速信号处理是由芯片内部的射频协议处理的,nRF24L01提供SPI接口,数据率取决于单片机本身接口速度。
ShockBurst模式通过允许与单片机低速通信而无线部分高速通信,减小了通信的平均消耗电流。
在ShockBurstTM接收模式下,当接收到有效的地址和数据时IRQ通知MCU,随后MCU可将接收到的数据从RXFIFO寄存器中读出。
在ShockBurstTM发送模式下,nRF24L01自动生成前导码及CRC校验,参见表格12。
数据发送完毕后IRQ通知MCU。
减少了MCU的查询时间,也就意味着减少了MCU的工作量同时减少了软件的开发
时间。
nRF24L01内部有三个不同的RXFIFO寄存器(6个通道共享此寄存器)和三个不同的TXFIFO寄存器。
在掉电模式下、待机模式下和数据传输的过程中MCU可以随时访问FIFO寄存器。
这就允许SPI接口可以以低速进行数据传送,并且可以应用于MCU硬件上没有SPI接口的情况下。
增强型的ShockBurstTM模式:
增强型ShockBurstTM模式可以使得双向链接协议执行起来更为容易、有效。
典型的双向链接为:
发送方要求终端设备在接收到数据后有应答信号,以便于发送方检测有无数据丢失。
一旦数据丢失,则通过重新发送功能将丢失的数据恢复。
增强型的ShockBurstTM模式可以同时控制应答及重发功能而无需增加MCU
工作量。
nRF24L01在接收模式下可以接收6路不同通道的数据,见图4。
每一个数据通道使用不同的地址,但是共用相同的频道。
也就是说6个不同的nRF24L01设置为发送模式后可以与同一个设置为接收模式的nRF24L01进行通讯,而设置为接收模式的nRF24L01可以对这6个发射端进行识别。
数据通道0是唯一的一个可以配置为40位自身地址的数据通道。
1~5数据通道都为8位自身地址和32位公用地址。
所有的数据通道都可以设置为增强型ShockBurst模式。
nRF24L01在确认收到数据后记录地址,并以此地址为目标地址发送应答信号。
在发送端,数据通道0被用做接收应答信号,因此,数据通道0的接收地址要与发送端地址相等以确保接收到正确的应答信号。
见图5选择地址举例。
nRF24L01配置为增强型的ShockBurstTM发送模式下时,只要MCU有数据要发送,nRF24L01就会启动ShockBurstTM模式来发送数据。
在发送完数据后nRF24L01转到接收模式并等待终端的应答信号。
如果没有收到应答信号,nRF24L01将重发相同的数据包,直到收到应答信号或重发次数超过SETUP_RETR_ARC寄存器中设置的值为止,如果重发次数超过了设定值,则产生MAX_RT中断。
只要收到确认信号,nRF24L01就认为最后一包数据已经发送成功(接收方已经收到数据),把TXFIFO中的数据清除掉并产生TX_DS中断(IRQ引脚置高)。
在增强型ShockBurstTM模式下,nRF24L01有如下的特征:
当工作在应答模式时,快速的空中传输及启动时间,极大的降低了电流消耗。
低成本。
nRF24L01集成了所有高速链路层操作,比如:
重发丢失数据包和产生应答信号。
无需单片机硬件上一定有SPI口与其相连。
SPI接口可以利用单片机通用I/O口进行模拟
由于空中传输时间很短,极大的降低了无线传输中的碰撞现象
由于链路层完全集成在芯片上,非常便于软硬件的开发。
增强型ShockBurstTM发送模式:
1、配置寄存器位PRIM_RX为低
2、当MCU有数据要发送时,接收节点地址(TX_ADDR)和有效数据(TX_PLD)通过SPI接口写入nRF24L01。
发送数据的长度以字节计数从MCU写入TXFIFO。
当CSN为低时数据被不断的写入。
发送端发送完数据后,将通道0设置为接收模式来接收应答信号,其接收地址(RX_ADDR_P0)与接收端地址(TX_ADDR)相同。
例:
在图5中数据通道5的发送端(TX5)及接收端(RX)地址设置如下:
TX5:
TX_ADDR=0xB3B4B5B605
RX_ADDR_P0=0xB3B4B5B605
RX:
RX_ADDR_P5=0xB3B4B5B605
3、设置CE为高,启动发射。
CE高电平持续时间最小为10us。
4、nRF24L01ShockBurstTM模式:
无线系统上电
启动内部16MHz时钟
无线发送数据打包(见数据包描述)
高速发送数据(由MCU设定为1Mbps或2Mbps)
5、如果启动了自动应答模式(自动重发计数器不等于0,ENAA_P0=1),无线芯片立即进入接收模式。
如果在有效应答时间范围内收到应答信号,则认为数据成功发送到了接收端,此时状态寄存器的TX_DS位置高并把数据从TXFIFO中清除掉。
如果在设定时间范围内没有接收到应答信号,则重新发送数据。
如果自动重发计数器(ARC_CNT)溢出(超过了编程设定的值),则状态寄存器的MAX_RT位置高。
不清除TXFIFO中的数据。
当MAX_RT或TX_DS为高电平时IRQ引脚产生中断。
IRQ中断通过写状态寄存器来复位(见中断章节)。
如果重发次数在达到设定的最大重发次数时还没有收到应答信号的话,在MAX_RX中断清除之前不会重发数据包。
数据包丢失计数器(PLOS_CNT)在每次产生MAX_RT中断后加一。
也就是说:
重发计数器ARC_CNT计算重发数据包次数,PLOS_CNT计算在达到最大允许重发次数时仍没有发送成功的数据包个数。
6、如果CE置低,则系统进入待机模式I。
如果不设置CE为低,则系统会发送TXFIFO寄存器中下一包数据。
如果TXFIFO寄存器为空并且CE为高则系统进入待机模式II.
增强型ShockBurstTM接受模式:
1、ShockBurstTM接受模式是通过设置寄存器中PRIM_RX位为高来选择的。
准备接收数据的通道必须被使能(EN_RXADDR寄存器),所有工作在增强型ShockBurstTM模式下的数据通道的自动应答功能是由(EN_AA寄存器)来使能的,有效数据宽度是由RX_PW_Px寄存器来设置的。
地址的建立过程见增强型ShockBurstTM发送章节。
2、接收模式由设置CE为高来启动。
3、130us后nRF24L01开始检测空中信息。
4、接收到有效的数据包后(地址匹配、CRC检验正确),数据存储在RX_FIFO中,同时RX_DR位置高,并产生中断。
状态寄存器中RX_P_NO位显示数据是由哪个通道接收到的。
5、如果使能自动确认信号,则发送确认信号。
6、MCU设置CE脚为低,进入待机模式I(低功耗模式)。
7、MCU将数据以合适的速率通过SPI口将数据读出。
8、芯片准备好进入发送模式、接收模式或掉电模式
两种数据双方向的通讯方式
如果想要数据在双方向上通讯,PRIM_RX寄存器必须紧随芯片工作模式的变化而变化。
处理器必须保证PTX和PRX端的同步性。
在RX_FIFO和TX_FIFO寄存器中可能同时存有数据。
自动应答(RX):
自动应答功能减少了外部MCU的工作量,并且在鼠标/键盘等应用中也可以不要求硬件一定有SPI接口,因此降低成本减少电流消耗。
自动重应答功能可以通过SPI口对不同的数据通道分别进行配置。
在自动应答模式使能的情况下,收到有效的数据包后,系统将进入发送模式并发送确认信号。
发送完确认信号后,系统进入正常工作模式(工作模式由PRIM_RX位和CE引脚决定)。
自动重发功能(ART)(TX):
自动重发功能是针对自动应答系统的发送方。
SETUP_RETR寄存器设置:
启动重发数据的时间长度。
在每次发送结束后系统都会进入接收模式并在设定的时间范围内等待应答信号。
接收到应答信号后,系统转入正常发送模式。
如果TXFIFO中没有待发送的数据且CE脚电平为低,则系统将进入待机模式I。
如果没有收到确认信号,则系统返回到发送模式并重发数据直到收到确认信号或重发次数超过设定值(达到最大的重发次数)。
有新的数据发送或PRIM_RX寄存器配置改变时丢包计数器复位。
数据包识别和CRC校验应用于增强型ShockBurstTM模式下:
每一包数据都包括两位的PID(数据包识别)来识别接收的数据是新数据包还是重发的数据包。
PID识别可以防止接收端同一数据包多次送入MCU。
在发送方每从MCU取得一包新数据后PID值加一。
PID和CRC校验应用在接收方识别接收的数据是重发的数据包还是新数据包。
如果在链接中有一些数据丢失
了,则PID值与上一包数据的PID值相同。
如果一包数据拥有与上一包数据相同的PID值,nRF24L01将
对两包数据的CRC值进行比较。
如果CRC值也相同的话就认为后面一包是前一包的重发数据包而被舍弃。
1:
接收方:
接收方对新接收数据包的PID值与上一包进行比较。
如果PID值不同,则认为接收的数据包是新
数据包。
如果PID值与上一包相同,则新接收的数据包有可能与前一包相同。
接收方必须确认CRC
值是否相等,如果CRC值与前一包数据的CRC值相等,则认为是同一包数据并将其舍弃。
2:
发送方:
每发送一包新的数据则发送方的PID值加一。
和CRC校验应用在接收方识别接收的数据是重发的数据包还是新数据包。
CRC校验的长度是通过SPI接口进行配置的。
一定要注意CRC计算范围包括整个数据包:
地址、PID和有效数据等。
若CRC校验错误则不会接收数据包,这一点是接收数据包的附加要求,在上图没有说明。
载波检测—CD:
当接收端检测到射频范围内的信号时将CD置高,否则CD为低。
内部的CD信号在写入寄存器之前是经过滤波的,内部CD高电平状态至少保持128us以上。
在增强型ShockBurstTM模式中只有当发送模块没有成功发送数据时,推荐使用CD检测功能。
如果发送端PLOS_CNT显示数据包丢失率太高时,可将其设置位接收模式检测CD值,如果CD为高(说明通道出现了拥挤现象),需要更改通信频道;
如果CD为低电平状态(距离超出通信范围),可保持原有通信频道,但需作其它调整。
数据通道:
nRF24L01配置为接收模式时可以接收6路不同地址相同频率的数据。
每个数据通道拥有自己的地址并且可以通过寄存器来进行分别配置。
数据通道是通过寄存器EN_RXADDR来设置的,默认状态下只有数据通道0和数据通道1是开启状态的。
每一个数据通道的地址是通过寄存器RX_ADDR_Px来配置的。
通常情况下不允许不同的数据通道设置完全相同的地址。
数据通道0有40位可配置地址。
数据通道1~5的地址为:
32位共用地址+各自的地址(最低字节)。
图7所示的是数据通道1~5的地址设置方法举例。
所有数据通道可以设置为多达40位,但是1~5数据通道的最低位必须不同。
当从一个数据通道纵接收到数据,并且此数据通道设置为应答方式的话,则nRF24L01在收到数据后产生应答信号,此应答信号的目标地址为接收通道地址。
寄存器配置有些是针对所有数据通道的,有些则是针对个别的。
如下设置举例是针对所有数据通道的:
●CRC使能/禁止
●CRC计算
●接收地址宽度
●频道设置
●无线数据通信速率
●LNA增益
●射频输出功率
寄存器配置:
nRF24L01所有配置都在配置寄存器中,所有寄存器都是通过SPI口进行配置的。
SPI接口:
SPI接口是标准的SPI接口,其最大的数据传输率为10Mbps。
大多数寄存器是可读的。
SPI指令设置:
SPI接口可能用到的指令在下面有所说明。
CSN为低后SPI接口等待执行指令。
每一条指令的执行都必须通过一次CSN由高到低的变化。
SPI指令格式:
<
命令字:
由高位到低位(每字节)>
数据字节:
低字节到高字节,每一字节高位在前>
参看图8及图9
R_REGISTER和W_REGISTER寄存器可能操作