所有的使用Arduino 的朋友大多都会知道大名鼎鼎的XBee 这个土豪级的ZigBee 的通信模块。我们是做产品开发的,对于XBee这个产品可谓是又爱又恨,不得不承认他确实是一个好货,从做工到功能都无须质疑,让人最感到遗憾的是他并不太适合于做平民化的产品,¥150~¥300 多的集价只能让我们对它望而轻叹了,这货只能用来DIY玩一下,这样的售价在产品上应有将直接将产品的成本推到难以承受的地步,所以它必须被取代!
疯狂地google后终于也让我们找到了取代这个必备级土豪的最佳解决方案,开始还真是没低,但后来经多番在google上翻阅老外的博客后也确定了这一点,老外都觉得XBee贵!这个解决方案就是基于 nRF24L01 的 2.4G通信方案,它在淘宝上的售价极低,看了他的价格,如果在没有特殊情况下都没人再原意选择 ZigBee 和 蓝牙了吧,不相信?去淘一下就知道我是否言过其实。
好吧,废话不多说,先来看看 nRF23L01的介绍,(以下的文字来源于某厂商的文档资料,具体的文件请看附件)
NRF24L01是一款工作在2.4-2.5GHz世界通用ISM频段的单片收发芯片,无线收发器包括:频率发生器 增强型 SchockBurstTM 模式控制器 功率放大器 晶体放大器 调制器 解调器 输出功率频道选择和协议的设置可以通过SPI接口进行设置极低的电流消耗,当工作在发射模式下发射功率为6dBm时电流消耗为9.0mA 接受模式为12.3mA掉电模式和待机模式下电流消耗模式更低。
-
2.4Ghz
全球开放 ISM 频段免许可证使用 - 最高工作速率
2Mbps
,高效 GFSK 调制,抗干扰能力强,特别 适合工业控制场合 - 126 频道,满足多点通信和跳频通信需要
- 内置硬件 CRC 检错和点对多点通信地址控制
- 低功耗
1.9 - 3.6V
工作,待机模式下状态为22uA
;掉电模 式下为900nA
- 内置 2.4Ghz 天线,体积种类多样
- 模块可软件设地址,只有收到本机地址时才会输出数据(提 供中断指示),可直接接各种单片机使用,软件编程非常方便
- 内置专门稳压电路,使用各种电源包括 DC/DC 开关电源均有 很好的通信效果
-
2.54MM
间距接口,DIP 封装 - 工作于 Enhanced ShockBurst 具有 Automatic packet handling, Auto packet transaction handling,具有可选的内置包 应答机制,极大的降低丢包率。
- 与 51 系列单片机 P0 口连接时候,需要加 10K 的上 拉电阻,与其余口连接不需要。
- 其他系列的单片机,如果是 5V 的,请参考该系列单片机 IO 口输出电流大小,如果超过
10mA
,需要串联
电阻分压,否则容易烧毁模块! 如果是3.3V的,可以 直接和RF24l01模块的IO口线连接。 比如AVR系列单片机
如果是5V 的,一般串接2K 的电阻
工作方式
NRF2401 有工作模式有五种:
- 收发模式
- 配置模式
- 空闲模式
- 关机模式
收发模式
收发模式有 Enhanced ShockBurstTM 收发模式、ShockBurstTM 收 发模式和直接收发模式三种,收发模式由器件配置字决定,具体配置 将在器件配置部分详细介绍。
Enhanced ShockBurstTM 收发模式
Enhanced ShockBurstTM 收发模式下,使用片内的先入先出堆栈区, 数据低速从微控制器送入,但高速(1Mbps)发射,这样可以尽量节能, 因此,使用低速的微控制器也能得到很高的射频数据发射速率。与射 频协议相关的所有高速信号处理都在片内进行,这种做法有三大好处: 尽量节能;低的系统费用(低速微处理器也能进行高速射频发射);数 据在空中停留时间短,抗干扰性高。Enhanced ShockBurstTM 技术同时也减小了整个系统的平均工作电流。
在 Enhanced ShockBurstTM 收发模式下, NRF24L01 自动处理字头
和 CRC 校验码。在接收数据时,自动把字头和 CRC 校验码移去。在送 数据时,自动加上字头和 CRC 校验码,在发送模式下,置 CE 为高,至 少 10us,将时发送过程完成后。
Enhanced ShockBurstTM 发射流程
- 把接收机的地址和要发送的数据按时序送入 NRF24L01;
- 配置 CONFIG 寄存器,使之进入发送模式。C. 微控制器把 CE 置高 (至少 10us),激 发 NRF24L01