版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于DHT11传感器和Nrf24L01模块的多点温湿度采集系统设计背景农业大棚种植具有大范围,温湿度要求高的特点。温度,湿度严重影响农作物的生长与产量,所以,对其的测量出其重要。基于这样的考虑,设计了该套多点温湿度采集无线传输系统。系统构成该系统由89C52RC单片机、DHT11温湿度传感器、Nrf24L01无线传输模块构成。具有多点温湿度采集、汇总的特点(本实验采用两个点采集汇总一点完成) 8 9 C 5 2 R C单一采集点Nrf24L01无线传输模块DHT11温湿度传感器接受点Nrf24L01无线传输模块硬件设计DHT11传感器简介DHT11产品概述DHT11数字温湿度传感器是一款含有已
2、校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。连接方便
3、,特殊封装形式可根据用户需求而提供。(1)传感器性能说明参数条件MinTypMax单位湿度分辨率111%RH8Bit重复性1%RH精度254%RH0505%RH互换性可完全互换量程范围03090%RH252090%RH502080%RH响应时间1/e(63%)25,1m/s 空气61015S迟滞1%RH长期稳定性典型值1%RH/yr温度分辨率111888Bit重复性1精度12量程范围050响应时间1/e(63%)630S(2)接口说明 建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻(3)电源引脚DHT11的供电电压为35.5V。传感器上电后,要等待 1s
4、以越过不稳定状态在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。(4)串行接口 (单线双向)DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据 +8bit校验和数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度
5、小数数据”所得结果的末8位。用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。1.通讯过程如图1所示图1总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开
6、始信号结束后,延时等待20-40us后, 读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。图2总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。数字0信号表示方法如图4所示 图4数字1信号表示方法.如图5所示 图5(5)测量分辨
7、率测量分辨率分别为 8bit(温度)、8bit(湿度)。(6)电气特性VDD=5V,T = 25,除非特殊标注参数条件mintypmax单位供电 DC355.5V供电电流测量0.52.5mA平均0.21mA待机100150uA采样周期秒1次注:采样周期间隔不得低于1秒钟。(7)应用信息(7.1)工作与贮存条件超出建议的工作范围可能导致高达3%RH的临时性漂移信号。返回正常工作条后,传感器会缓慢地向校准状态恢复。要加速恢复进程/可参阅7.3小节的“恢复处理”。在非正常工作条件下长时间使用会加速产品的老化过程。(7.2)暴露在化学物质中电阻式湿度传感器的感应层会受到化学蒸汽的干扰,化学物质在感应层
8、中的扩散可能导致测量值漂移和灵敏度下降。在一个纯净的环境中,污染物质会缓慢地释放出去。下文所述的恢复处理将加速实现这一过程。高浓度的化学污染会导致传感器感应层的彻底损坏。(7.3)恢复处理置于极限工作条件下或化学蒸汽中的传感器,通过如下处理程序,可使其恢复到校准时的状态。在50-60和70%RH的湿度条件下保持 5小时以上。(7.4)温度影响气体的相对湿度,在很大程度上依赖于温度。因此在测量湿度时,应尽可能保证湿度传感器在同一温度下工作。如果与释放热量的电子元件共用一个印刷线路板,在安装时应尽可能将DHT11远离电子元件,并安装在热源下方,同时保持外壳的良好通风。为降低热传导,DHT11与印刷
9、电路板其它部分的铜镀层应尽可能最小,并在两者之间留出一道缝隙。(7.5)光线长时间暴露在太阳光下或强烈的紫外线辐射中,会使性能降低。(7.6)配线注意事项DATA信号线材质量会影响通讯距离和通讯质量,推荐使用高质量屏蔽线。(8)封装信息(9)DHT11引脚说明Pin名称注释1VDD供电 35.5VDC2DATA串行数据,单总线3NC空脚,请悬空4GND接地,电源负极(10) 焊接信息手动焊接,在最高260的温度条件下接触时间须少于10秒。(11)注意事项(1)避免结露情况下使用。(2)长期保存条件:温度1040,湿度60以下。nRF24L01模块简介(1)nRF24L01芯片简介功能描述:真正
10、的GFSK 单片式收发芯片内置硬件链路层增强型ShockBurstTM 功能自动应答及自动重发功能地址及CRC 检验功能无线速率: 1 或2MbpsSPI 接口速率:08Mbps125 个可选工作频道很短的频道切换时间,可用于跳频与nRF 24XX 系列完全兼容I/O 可接受5V 电平的输入20 脚QFN 44mm 封装极低成本晶振60ppm使用低成本电感和双面PCB 板低工作电压:1.93.6V概述:nRF24L01 是一款工作在2.42.5GHz 世界通用ISM 频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型SchockBurstTM 模式控制器、功率放大器、晶体振荡器、调制
11、器、解调器。输出功率、频道选择和协议的设置可以通过SPI 接口进行设置。极低的电流消耗:当工作在发射模式下发射功率为-6dBm 时电流消耗为9mA,接收模式时为12.3mA。掉电模式和待机模式下电流消耗更低。结构框图:引脚及其功能:电气特性:条件:VDD=+3V,VSS=0V,TA=40到+85极限范围:VDD.+3.6VVSS0V输入电压VI-0.3V5.25V输出电压VO. VSSVDD总功耗PD(TA=85) 60mW温度工作温度-40+85存储器温度-40+125注意:强行超过一项或多项极限值使用将导致器件永久性损坏。术语表:功能描述:工作模式nRF24L01可以设置为以下几种主要模式
12、nRF24L01在不同模式下的引脚功能待机模式:待机模式I 在保证快速启动的同时减少系统平均消耗电流。在待机模式I 下,晶振正常工作。在待机模式II 下部分时钟缓冲器处在工作模式。当发送端TX FIFO 寄存器为空并且CE 为高电平时进入待机模式II。在待机模式期间,寄存器配置字内容保持不变。掉电模式:在掉电模式下,nRF24L01 各功能关闭,保持电流消耗最小。进入掉电模式后,nRF24L01 停止工作,但寄存器内容保持不变。启动时间见表格13。掉电模式由寄存器中PWR_UP 位来控制数据包处理方式:nRF24L01 有如下几种数据包处理方式: ShockBurstTM(与nRF2401,n
13、RF24E1,nRF2402,nRF24E2 数据传输率为1Mbps 时相同) 增强型ShockBurstTM 模式ShockBurstTM 模式:ShockBurst 模式下nRF24L01 可以与成本较低的低速MCU 相连。高速信号处理是由芯片内部的射频协议处理的,nRF24L01 提供SPI 接口,数据率取决于单片机本身接口速度。ShockBurst 模式通过允许与单片机低速通信而无线部分高速通信,减小了通信的平均消耗电流。在ShockBurstTM 接收模式下,当接收到有效的地址和数据时IRQ 通知MCU,随后MCU 可将接收到的数据从RX FIFO 寄存器中读出。在ShockBurs
14、tTM 发送模式下,nRF24L01 自动生成前导码及CRC 校验,参见表格12。数据发送完毕后IRQ 通知MCU。减少了MCU 的查询时间,也就意味着减少了MCU 的工作量同时减少了软件的开发时间。nRF24L01 内部有三个不同的RX FIFO 寄存器(6 个通道共享此寄存器)和三个不同的TX FIFO 寄存器。在掉电模式下、待机模式下和数据传输的过程中MCU 可以随时访问FIFO 寄存器。这就允许SPI接口可以以低速进行数据传送,并且可以应用于MCU 硬件上没有SPI 接口的情况下。增强型的ShockBurstTM 模式:增强型ShockBurstTM 模式可以使得双向链接协议执行起来更
15、为容易、有效。典型的双向链接为:发送方要求终端设备在接收到数据后有应答信号,以便于发送方检测有无数据丢失。一旦数据丢失,则通过重新发送功能将丢失的数据恢复。增强型的ShockBurstTM 模式可以同时控制应答及重发功能而无需增加MCU工作量。nRF24L01 在接收模式下可以接收6 路不同通道的数据,见图4。每一个数据通道使用不同的地址,但是共用相同的频道。也就是说6 个不同的nRF24L01 设置为发送模式后可以与同一个设置为接收模式的nRF24L01 进行通讯,而设置为接收模式的nRF24L01 可以对这6 个发射端进行识别。数据通道0 是唯一的一个可以配置为40 位自身地址的数据通道。
16、15 数据通道都为8 位自身地址和32 位公用地址。所有的数据通道都可以设置为增强型ShockBurst 模式。nRF24L01 在确认收到数据后记录地址,并以此地址为目标地址发送应答信号。在发送端,数据通道0被用做接收应答信号,因此,数据通道0 的接收地址要与发送端地址相等以确保接收到正确的应答信号。见图5 选择地址举例。nRF24L01 配置为增强型的ShockBurstTM 发送模式下时,只要MCU 有数据要发送,nRF24L01 就会启动ShockBurstTM 模式来发送数据。在发送完数据后nRF24L01 转到接收模式并等待终端的应答信号。如果没有收到应答信号, nRF24L01
17、将重发相同的数据包, 直到收到应答信号或重发次数超过SETUP_RETR_ARC 寄存器中设置的值为止,如果重发次数超过了设定值,则产生MAX_RT 中断。只要收到确认信号,nRF24L01 就认为最后一包数据已经发送成功(接收方已经收到数据),把TX FIFO中的数据清除掉并产生TX_DS 中断(IRQ 引脚置高)。在增强型ShockBurstTM 模式下,nRF24L01 有如下的特征:当工作在应答模式时,快速的空中传输及启动时间,极大的降低了电流消耗。低成本。nRF24L01 集成了所有高速链路层操作,比如:重发丢失数据包和产生应答信号。无需单片机硬件上一定有SPI 口与其相连。SPI
18、接口可以利用单片机通用I/O 口进行模拟由于空中传输时间很短,极大的降低了无线传输中的碰撞现象由于链路层完全集成在芯片上,非常便于软硬件的开发。增强型ShockBurstTM 发送模式:1、 配置寄存器位PRIM_RX 为低2、 当MCU 有数据要发送时,接收节点地址(TX_ADDR)和有效数据(TX_PLD)通过SPI 接口写入nRF24L01。发送数据的长度以字节计数从MCU 写入TX FIFO。当CSN 为低时数据被不断的写入。发送端发送完数据后,将通道0 设置为接收模式来接收应答信号,其接收地址(RX_ADDR_P0)与接收端地址(TX_ADDR)相同。例:在图5 中数据通道5 的发送
19、端(TX5)及接收端(RX)地址设置如下:TX5:TX_ADDR=0 xB3B4B5B605TX5:RX_ADDR_P0=0 xB3B4B5B605RX:RX_ADDR_P5=0 xB3B4B5B6053、 设置CE 为高,启动发射。CE 高电平持续时间最小为10 us。4、 nRF24L01 ShockBurstTM 模式:无线系统上电启动内部16MHz 时钟无线发送数据打包(见数据包描述)高速发送数据(由MCU 设定为1Mbps 或2Mbps)5、 如果启动了自动应答模式(自动重发计数器不等于0,ENAA_P0=1),无线芯片立即进入接收模式。如果在有效应答时间范围内收到应答信号,则认为数
20、据成功发送到了接收端,此时状态寄存器的TX_DS 位置高并把数据从TX FIFO 中清除掉。如果在设定时间范围内没有接收到应答信号,则重新发送数据。如果自动重发计数器(ARC_CNT)溢出(超过了编程设定的值),则状态寄存器的MAX_RT 位置高。不清除TX FIFO 中的数据。当MAX_RT 或TX_DS 为高电平时IRQ 引脚产生中断。IRQ 中断通过写状态寄存器来复位(见中断章节)。如果重发次数在达到设定的最大重发次数时还没有收到应答信号的话,在MAX_RX 中断清除之前不会重发数据包。数据包丢失计数器(PLOS_CNT)在每次产生MAX_RT 中断后加一。也就是说:重发计数器ARC_C
21、NT 计算重发数据包次数,PLOS_CNT 计算在达到最大允许重发次数时仍没有发送成功的数据包个数。6、 如果CE 置低,则系统进入待机模式I。如果不设置CE 为低,则系统会发送TX FIFO 寄存器中下一包数据。如果TX FIFO 寄存器为空并且CE 为高则系统进入待机模式II.发送端发送完数据后,将通道0 设置为接收模式来接收应答信号,其接收地址(RX_ADDR_P0)与接收端地址(TX_ADDR)相同。例:在图5 中数据通道5 的发送端(TX5)及接收端(RX)地址设置如下:TX5:TX_ADDR=0 xB3B4B5B605TX5:RX_ADDR_P0=0 xB3B4B5B605RX:R
22、X_ADDR_P5=0 xB3B4B5B605增强型ShockBurstTM接受模式:1、ShockBurstTM接受模式是通过设置寄存器中PRIM_RX 位为高来选择的。准备接收数据的通道必须被使能(EN_RXADDR 寄存器),所有工作在增强型ShockBurstTM 模式下的数据通道的自动应答功能是由(EN_AA 寄存器)来使能的,有效数据宽度是由RX_PW_Px 寄存器来设置的。地址的建立过程见增强型ShockBurstTM 发送章节。2、 接收模式由设置CE 为高来启动。3、 130us 后nRF24L01 开始检测空中信息。4、 接收到有效的数据包后(地址匹配、CRC 检验正确),
23、数据存储在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
24、的工作量,并且在鼠标/键盘等应用中也可以不要求硬件一定有SPI 接口,因此降低成本减少电流消耗。自动重应答功能可以通过SPI 口对不同的数据通道分别进行配置。在自动应答模式使能的情况下,收到有效的数据包后,系统将进入发送模式并发送确认信号。发送完确认信号后,系统进入正常工作模式(工作模式由PRIM_RX 位和CE 引脚决定)。自动重发功能(ART)(TX):自动重发功能是针对自动应答系统的发送方。SETUP_RETR 寄存器设置:启动重发数据的时间长度。在每次发送结束后系统都会进入接收模式并在设定的时间范围内等待应答信号。接收到应答信号后,系统转入正常发送模式。如果TX FIFO 中没有待发送
25、的数据且CE 脚电平为低,则系统将进入待机模式I。如果没有收到确认信号,则系统返回到发送模式并重发数据直到收到确认信号或重发次数超过设定值(达到最大的重发次数)。有新的数据发送或PRIM_RX 寄存器配置改变时丢包计数器复位。数据包识别和CRC 校验应用于增强型ShockBurstTM 模式下:每一包数据都包括两位的PID(数据包识别)来识别接收的数据是新数据包还是重发的数据包。PID识别可以防止接收端同一数据包多次送入MCU。在发送方每从MCU 取得一包新数据后PID 值加一。PID和CRC 校验应用在接收方识别接收的数据是重发的数据包还是新数据包。如果在链接中有一些数据丢失了,则PID 值
26、与上一包数据的PID 值相同。如果一包数据拥有与上一包数据相同的PID 值,nRF24L01 将对两包数据的CRC 值进行比较。如果CRC 值也相同的话就认为后面一包是前一包的重发数据包而被舍弃。1:接收方:接收方对新接收数据包的PID 值与上一包进行比较。如果PID 值不同,则认为接收的数据包是新数据包。如果PID 值与上一包相同,则新接收的数据包有可能与前一包相同。接收方必须确认CRC值是否相等,如果CRC 值与前一包数据的CRC 值相等,则认为是同一包数据并将其舍弃。2:发送方:每发送一包新的数据则发送方的PID 值加一。和CRC 校验应用在接收方识别接收的数据是重发的数据包还是新数据包
27、。如果在链接中有一些数据丢失了,则PID 值与上一包数据的PID 值相同。如果一包数据拥有与上一包数据相同的PID 值,nRF24L01 将对两包数据的CRC 值进行比较。如果CRC 值也相同的话就认为后面一包是前一包的重发数据包而被舍弃。CRC 校验的长度是通过SPI 接口进行配置的。一定要注意CRC 计算范围包括整个数据包:地址、PID和有效数据等。若CRC 校验错误则不会接收数据包,这一点是接收数据包的附加要求,在上图没有说明。载波检测CD:当接收端检测到射频范围内的信号时将CD 置高,否则CD 为低。内部的CD 信号在写入寄存器之前是经过滤波的,内部CD 高电平状态至少保持128us
28、以上。在增强型ShockBurstTM模式中只有当发送模块没有成功发送数据时,推荐使用CD检测功能。如果发送端PLOS_CNT显示数据包丢失率太高时,可将其设置位接收模式检测CD值,如果CD为高(说明通道出现了拥挤现象),需要更改通信频道;如果CD为低电平状态(距离超出通信范围),可保持原有通信频道,但需作其它调整。数据通道:nRF24L01 配置为接收模式时可以接收6 路不同地址相同频率的数据。每个数据通道拥有自己的地址并且可以通过寄存器来进行分别配置。数据通道是通过寄存器EN_RXADDR 来设置的,默认状态下只有数据通道0 和数据通道1 是开启状态的。每一个数据通道的地址是通过寄存器RX
29、_ADDR_Px 来配置的。通常情况下不允许不同的数据通道设置完全相同的地址。数据通道0 有40 位可配置地址。数据通道15 的地址为:32 位共用地址+各自的地址(最低字节)。图7 所示的是数据通道15 的地址设置方法举例。所有数据通道可以设置为多达40 位,但是15 数据通道的最低位必须不同。当从一个数据通道纵接收到数据,并且此数据通道设置为应答方式的话,则nRF24L01 在收到数据后产生应答信号,此应答信号的目标地址为接收通道地址。寄存器配置有些是针对所有数据通道的,有些则是针对个别的。如下设置举例是针对所有数据通道的: CRC 使能/禁止 CRC 计算 接收地址宽度 频道设置 无线数
30、据通信速率 LNA 增益 射频输出功率寄存器配置:nRF24L01 所有配置都在配置寄存器中,所有寄存器都是通过SPI 口进行配置的。SPI 接口:SPI 接口是标准的SPI 接口,其最大的数据传输率为10Mbps。大多数寄存器是可读的。SPI 指令设置:SPI 接口可能用到的指令在下面有所说明。CSN 为低后SPI 接口等待执行指令。每一条指令的执行都必须通过一次CSN 由高到低的变化。SPI 指令格式:参看图8 及图9R_REGISTER 和W_REGISTER 寄存器可能操作单字节或多字节寄存器。当访问多字节寄存器时首先要读/写的是最低字节的高位。在所有多字节寄存器被写完之前可以结束写S
31、PI 操作,在这种情况下没有写完的高字节保持原有内容不变。例如:RX_ADDR_P0 寄存器的最低字节可以通过写一个字节给寄存器RX_ADDR_P0 来改变。在CSN 状态由高变低后可以通过MISO 来读取状态寄存器的内容。中断:nRF24L01 的中断引脚(IRQ)为低电平触发,当状态寄存器中TX_DS、RX_DR 或MAX_RT 为高时触发中断。当MCU 给中断源写1时,中断引脚被禁止。可屏蔽中断可以被IRQ 中断屏蔽。通过设置可屏蔽中断位为高,则中断响应被禁止。默认状态下所有的中断源是被禁止的。SPI 时序:图8、9、10 和表9、10 给出了SPI 操作及时序。在写寄存器之前一定要进入
32、待机模式或掉电模式。在图8 至图10 中用到了下面的符号:Cn-SPI 指令位Sn-状态寄存器位Dn-数据位(备注:由低字节到高字节,每个字节中高位在前)与nRF24XX 兼容的寄存器配置:如何建立nRF24L01 从nRF2401/ nRF2402/ nRF24E1/ nRF24E2 接收数据:使用与nRF2401/ nRF2402/ nRF24E1/ nRF24E2 相同的CRC 配置设置PRIM_RX 位为1相应通道禁止自动应答功能与发射模块使用相同的地址宽度与发射模块使用相同的频道在nRF24L01 和nRF2401/ nRF2402/ nRF24E1/ nRF24E2 两端都选择1M
33、bit/s 的数据传输率设置正确的数据宽度设置PWR_UP 和CE 为高如何建立nRF24L01 发射,nRF2401/ nRF2402/ nRF24E1/ nRF24E2 接收数据:使用与nRF2401/ nRF2402/ nRF24E1/ nRF24E2 相同的CRC 配置设置PRIM_RX 位为0设置自动重发计数器为0 禁止自动重发功能与nRF2401/ nRF2402/ nRF24E1/ nRF24E2 使用相同的地址宽度与nRF2401/ nRF2402/ nRF24E1/ nRF24E2 使用相同的频道在nRF24L01 和nRF2401/ nRF2402/ nRF24E1/ nR
34、F24E2 两端都选择1Mbit/s的数据传输率设置PWR_UP 为高发送与nRF2401/ nRF2402/ nRF24E1/ nRF24E2 寄存器配置数据宽度相同的数据长度。设置CE 为高启动发射打包格式描述:增强型ShockBurstTM 模式下的数据包形式。重要的时序数据下面是nRF24L01 部分工作时序数据。nRF24L01 时序信息nRF24L01 在掉电模式下转入发射模式或接收模式前必须经过1.5ms 的待机模式。注意:当关掉电源VDD 后寄存器配置内容丢失,模块上电后需重新进行配置。(2)nRF24L01模块简介(一)、产品特性2.4GHz 全球开放ISM 频段,最大0dB
35、m 发射功率,免许可证使用支持六路通道的数据接收低工作电压:1.93.6V低电压工作高速率:2Mbps,由于空中传输时间很短,极大的降低了无线传输中的碰撞现象(软件设置1Mbps或者2Mbps的空中传输速率)多频点:125 频点,满足多点通信和跳频通信需要超小型:内置2.4GHz天线,体积小巧,15x29mm(包括天线)低功耗:当工作在应答模式通信时,快速的空中传输及启动时间,极大的降低了电流消耗。低应用成本:NRF24L01 集成了所有与RF协议相关的高速信号处理部分,比如:自动重发丢失数据包和自动产生应答信号等,NRF24L01的SPI接口可以利用单片机的硬件SPI口连接或用单片机I/O口
36、进行模拟,内部有FIFO可以与各种高低速微处理器接口,便于使用低成本单片机。便于开发:由于链路层完全集成在模块上,非常便于开发。自动重发功能,自动检测和重发丢失的数据包,重发时间及重发次数可软件控制自动存储未收到应答信号的数据包自动应答功能,在收到有效数据后,模块自动发送应答信号,无须另行编程载波检测固定频率检测内置硬件CRC 检错和点对多点通信地址控制数据包传输错误计数器及载波检测功能可用于跳频设置可同时设置六路接收通道地址,可有选择性的打开接收通道标准插针Dip2.54MM 间距接口,便于嵌入式应用、基本电气特性(三)、引脚说明说明:1) VCC脚接电压范围为1.9V3.6V之间,不能在这
37、个区间之外,超过3.6V将会烧毁模块。推荐电压3.3V左右。2) 除电源VCC和接地端,其余脚都可以直接和普通的5V单片机IO口直接相连,无需电平转换。当然对3V左右的单片机更加适用了。3) 硬件上面没有SPI的单片机也可以控制本模块,用普通单片机IO口模拟SPI不需要单片机真正的串口介入,只需要普通的单片机IO口就可以了,当然用串口也可以了(a:与51系列单片机P0口连接时候,需要加10K的上拉电阻,与其余口连接不需要。b:其他系列的单片机,如果是5V的,请参考该系列单片机IO口输出电流大小,如果超过10mA,需要串联电阻分压,否则容易烧毁模块! 如果是3.3V的,可以直接和RF24l01模
38、块的IO口线连接。比如AVR系列单片机如果是5V的,一般串接2K的电阻)单片机89C52RC软件设计api.h文件(采集点1、2,接收点共用)#ifndef _API_DEF_#define _API_DEF_/ Define interface to nRF24L01/ Define SPI pinssbit CE = P10; / Chip Enable pin signal (output)sbit CSN = P11; / Slave Select pin, (output to CSN, nRF24L01)sbit IRQ = P15; / Interrupt signal, fro
39、m nRF24L01 (input)sbit MISO = P14; / Master In, Slave Out pin (input)sbit MOSI = P13; / Serial Clock pin, (output)sbit SCK = P12; / Master Out, Slave In pin (output)/ SPI(nRF24L01) commands#define READ_REG 0 x00 / Define read command to register#define WRITE_REG 0 x20 / Define write command to regis
40、ter#define RD_RX_PLOAD 0 x61 / Define RX payload register address#define WR_TX_PLOAD 0 xA0 / Define TX payload register address#define FLUSH_TX 0 xE1 / Define flush TX register command#define FLUSH_RX 0 xE2 / Define flush RX register command#define REUSE_TX_PL 0 xE3 / Define reuse TX payload registe
41、r command#define NOP 0 xFF / Define No Operation, might be used to read status register/ SPI(nRF24L01) registers(addresses)#define CONFIG 0 x00 / Config register address#define EN_AA 0 x01 / Enable Auto Acknowledgment register address#define EN_RXADDR 0 x02 / Enabled RX addresses register address#de
42、fine SETUP_AW 0 x03 / Setup address width register address#define SETUP_RETR 0 x04 / Setup Auto. Retrans register address#define RF_CH 0 x05 / RF channel register address#define RF_SETUP 0 x06 / RF setup register address#define STATUS 0 x07 / Status register address#define OBSERVE_TX 0 x08 / Observe
43、 TX register address#define CD 0 x09 / Carrier Detect register address#define RX_ADDR_P0 0 x0A / RX address pipe0 register address#define RX_ADDR_P1 0 x0B / RX address pipe1 register address#define RX_ADDR_P2 0 x0C / RX address pipe2 register address#define RX_ADDR_P3 0 x0D / RX address pipe3 regist
44、er address#define RX_ADDR_P4 0 x0E / RX address pipe4 register address#define RX_ADDR_P5 0 x0F / RX address pipe5 register address#define TX_ADDR 0 x10 / TX address register address#define RX_PW_P0 0 x11 / RX payload width, pipe0 register address#define RX_PW_P1 0 x12 / RX payload width, pipe1 regis
45、ter address#define RX_PW_P2 0 x13 / RX payload width, pipe2 register address#define RX_PW_P3 0 x14 / RX payload width, pipe3 register address#define RX_PW_P4 0 x15 / RX payload width, pipe4 register address#define RX_PW_P5 0 x16 / RX payload width, pipe5 register address#define FIFO_STATUS 0 x17 / F
46、IFO Status Register register address#endif /* _API_DEF_ */(1)采集点1发送程序:#include #include #include #define uchar unsigned char#define uint unsigned int/*/#define TX_ADR_WIDTH 5 / 5字节宽度的发送/接收地址#define TX_PLOAD_WIDTH 6 / 数据通道有效数据宽度uchar code TX_ADDRESSTX_ADR_WIDTH = 0 x34,0 x43,0 x10,0 x10,0 x01; / 定义一个
47、静态发送地址uchar RX_BUFTX_PLOAD_WIDTH;uchar TX_BUFTX_PLOAD_WIDTH;uchar flag;uchar str_1TX_PLOAD_WIDTH=AZainm,outdataTX_PLOAD_WIDTH;/第一位为地址位uchar bdata sta;int count,h;uchar U8FLAG,k;uchar U8count,U8temp;uchar U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;uchar U8T_data_H_temp,U8T_data_L_temp,
48、U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;uchar U8comdata;uint U16temp1,U16temp2;sbit RX_DR = sta6;sbit TX_DS = sta5;sbit MAX_RT = sta4;sbit P2_3 = P23 ;/DHT11信号/*/*函数: init_io()描述: 初始化IO/*/void init_io(void)CE = 0; / 待机CSN = 1; / SPI禁止SCK = 0; / SPI时钟置低IRQ = 1; / 中断复位/*/*函数: init_ser()描述:
49、初始化串口/*/void init_ser()TMOD = 0 x20; /定时器T1使用工作方式2TH1 = 253; / 设置初值TL1 = 253;TR1 = 1; / 开始计时SCON = 0 x50; /工作方式1,波特率9600bps,允许接收 ES = 1;EA = 1; / 打开所以中断 TI = 0;RI = 0;/*函数:delay_ms()描述: 延迟x毫秒/*/void delay_ms(uchar x) uchar i, j; i = 0; for(i=0; ix; i+) j = 250; while(-j); j = 250; while(-j); /*/*函数:
50、SPI_RW()描述: 根据SPI协议,写一字节数据到nRF24L01,同时从nRF24L01读出一字节/*/uchar SPI_RW(uchar byte)uchar i; for(i=0; i8; i+) / 循环8次 MOSI = (byte & 0 x80); / byte最高位输出到MOSI byte = 1; / 低一位移位到最高位 SCK = 1; / 拉高SCK,nRF24L01从MOSI读入1位数据,同时从MISO输出1位数据 byte |= MISO; / 读MISO到byte最低位 SCK = 0; / SCK置低 return(byte); / 返回读出的一字节/*/*
51、函数:SPI_RW_Reg()描述: 写数据value到reg寄存器/*/uchar SPI_RW_Reg(uchar reg, uchar value)uchar status; CSN = 0; / CSN置低,开始传输数据 status = SPI_RW(reg); / 选择寄存器,同时返回状态字 SPI_RW(value); / 然后写数据到该寄存器 CSN = 1; / CSN拉高,结束数据传输 return(status); / 返回状态寄存器/*/*函数:SPI_Read()描述: 从reg寄存器读一字节/*/uchar SPI_Read(uchar reg)uchar reg_
52、val; CSN = 0; / CSN置低,开始传输数据 SPI_RW(reg); / 选择寄存器 reg_val = SPI_RW(0); / 然后从该寄存器读数据 CSN = 1; / CSN拉高,结束数据传输 return(reg_val); / 返回寄存器数据/*/*函数:SPI_Read_Buf()描述: 从reg寄存器读出bytes个字节,通常用来读取接收通道数据或接收/发送地址/*/uchar SPI_Read_Buf(uchar reg, uchar * pBuf, uchar bytes)uchar status, i; CSN = 0; / CSN置低,开始传输数据 sta
53、tus = SPI_RW(reg); / 选择寄存器,同时返回状态字 for(i=0; ibytes; i+) pBufi = SPI_RW(0); / 逐个字节从nRF24L01读出 CSN = 1; / CSN拉高,结束数据传输 return(status); / 返回状态寄存器/*/*函数:SPI_Write_Buf()描述: 把pBuf缓存中的数据写入到nRF24L01,通常用来写入发射通道数据或接收/发送地址/*/uchar SPI_Write_Buf(uchar reg, uchar * pBuf, uchar bytes)uchar status, i; CSN = 0; / C
54、SN置低,开始传输数据 status = SPI_RW(reg); / 选择寄存器,同时返回状态字 for(i=0; ibytes; i+) SPI_RW(pBufi); / 逐个字节写入nRF24L01 CSN = 1; / CSN拉高,结束数据传输 return(status); / 返回状态寄存器/*/*函数:RX_Mode()描述: 这个函数设置nRF24L01为接收模式,等待接收发送设备的数据包/*/void RX_Mode(void)CE = 0; SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); /
55、接收设备接收通道0使用和发送设备相同的发送地址 SPI_RW_Reg(WRITE_REG + EN_AA, 0 x01); / 使能接收通道0自动应答 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0 x01); / 使能接收通道0 SPI_RW_Reg(WRITE_REG + RF_CH, 40); / 选择射频通道0 x40 SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH); / 接收通道0选择和发送通道相同有效数据宽度 SPI_RW_Reg(WRITE_REG + RF_SETUP, 0 x07); / 数据传输率1M
56、bps,发射功率0dBm,低噪声放大器增益 SPI_RW_Reg(WRITE_REG + CONFIG, 0 x0f); / CRC使能,16位CRC校验,上电,接收模式 CE = 1; / 拉高CE启动接收设备/*/*函数:TX_Mode()描述: 这个函数设置nRF24L01为发送模式,(CE=1持续至少10us),130us后启动发射,数据发送结束后,发送模块自动转入接收模式等待应答信号。/*/void TX_Mode(uchar * BUF)CE = 0; SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); / 写
57、入发送地址 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); / 为了应答接收设备,接收通道0地址和发送地址相同 SPI_Write_Buf(WR_TX_PLOAD, BUF, TX_PLOAD_WIDTH); / 写数据包到TX FIFO SPI_RW_Reg(WRITE_REG + EN_AA, 0 x01); / 使能接收通道0自动应答 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0 x01); / 使能接收通道0 SPI_RW_Reg(WRITE_REG + SETUP_RETR,
58、0 x0a); / 自动重发延时等待250us+86us,自动重发10次 SPI_RW_Reg(WRITE_REG + RF_CH, 40); / 选择射频通道0 x40 SPI_RW_Reg(WRITE_REG + RF_SETUP, 0 x07); / 数据传输率1Mbps,发射功率0dBm,低噪声放大器增益 SPI_RW_Reg(WRITE_REG + CONFIG, 0 x0e); / CRC使能,16位CRC校验,上电CE = 1;/*/*函数:SendData(uchar *a)描述: 串口发送数据/*/SendData(uchar aTX_PLOAD_WIDTH)int i;fo
59、r(i=0;i0;j-) for(i=0;i27;i+);void Delay_10us(void)uchar i; i-; i-; i-; i-; i-; i-;void COM(void) uchar i; for(i=0;i8;i+) U8FLAG=2; while(!P2_3)&U8FLAG+);Delay_10us();Delay_10us();Delay_10us(); U8temp=0; if(P2_3)U8temp=1;U8FLAG=2;while(P2_3)&U8FLAG+); /超时则跳出for循环 if(U8FLAG=1)break; /判断数据位是0还是1 / 如果高电
60、平高过预定0高电平值则数据位为 1 U8comdata=1; U8comdata|=U8temp; /0 /rof /-/-湿度读取子程序 -/-/-以下变量均为全局变量-/-温度高8位= U8T_data_H-/-温度低8位= U8T_data_L-/-湿度高8位= U8RH_data_H-/-湿度低8位= U8RH_data_L-/-校验 8位 = U8checkdata-/-调用相关子程序如下-/- Delay();, Delay_10us();,COM(); /-void RH(void) /主机拉低18ms P2_3=0;Delay(180);P2_3=1;/总线由上拉电阻拉高 主机
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年陕西省商洛市广播电视台(融媒体中心)人员招聘考试备考题库及答案解析
- 2026年云南省丽江市林业系统人员招聘考试模拟试题及答案解析
- 2026年温州市龙湾区林业系统人员招聘考试模拟试题及答案解析
- 2026年浙江省衢州市广播电视台(融媒体中心)人员招聘笔试参考试题及答案解析
- 2026年湛江市麻章区广播电视台(融媒体中心)人员招聘笔试备考题库及答案解析
- 2026年湛江市霞山区广播电视台(融媒体中心)人员招聘笔试参考题库及答案解析
- 2026年四川省泸州市林业系统人员招聘考试参考试题及答案解析
- 2026年浙江省林业系统人员招聘考试模拟试题及答案解析
- 2026年新疆维吾尔自治区哈密市广播电视台(融媒体中心)人员招聘笔试参考题库及答案解析
- 2026年深圳市福田区广播电视台(融媒体中心)人员招聘笔试备考题库及答案解析
- 丁辛醇合成工艺流程图
- 山西河道水下清淤施工方案
- 产房母婴安全管理制度
- 2024-2025学年广东省江门市蓬江区七年级下学期期末地理试卷
- 陕西中考英语5年(21-25)中考真题分类汇编教师版-补全对话
- 穿越机操作基础知识培训课件
- 2025年(第十二届)输电技术大会:基于云边协同的南网无人机巡检体系在能源行业规模应用
- T细胞大颗粒淋巴细胞白血病护理查房
- 师德师风读本培训课件
- 低压电工复审课件教学
- 《涉外法治概论》课件 杜涛 -第1-6章 涉外法治的基础理论-涉外经济管理法律制度
评论
0/150
提交评论