网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
04月02日
漏签
0
天
arduino吧
关注:
75,226
贴子:
229,853
看贴
图片
吧主推荐
视频
游戏
1
2
3
4
5
6
7
8
下一页
尾页
176
回复贴,共
8
页
,跳到
页
确定
<<返回arduino吧
>0< 加载中...
【arduino】把nRF24L01当Zigbee用——廉价物联网无线连接方案
只看楼主
收藏
回复
精钢白菜
闻名一方
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
[正式发布]让你节约钱的一个协议。由于目前学业紧张,故一周一上网,请耐心等待。这个项目目前已经暂停,程序凌乱,明年上了大学再把它封装为一个库,为人类物联网发展献一份力,届时将秒杀Mirf等所有此类库。
精钢白菜
闻名一方
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
本文本来是参加科技竞赛的论文
1.概述
物联网是继计算机、互联网和移动通信之后的又一次信息产业的革命性发展,也是将会改变我们生活方式的火爆新兴产业。但现在的物联网技术在网关和传感器的连接之间还存在空白,目前主流的Zigbee系统价格昂贵,制约了它的普及和应用。
本文旨在介绍我专为廉价MCU设计的无线自组网协议及其基于arduino和nRF24L01无线模块的无线系统的实现。包括无线网络协议和为其定制的开发板。
深圳市绿都电子有限公司
国民技术授权代理商绿都电子,为您提供国民技术N32L406系列低功耗单片机,基于Arm M4F内核,高性能,超低功耗,内置LCD屏驱,集成丰富的接口和模拟外设,适用于超低功耗产品应用
2025-04-02 09:07
广告
立即查看
精钢白菜
闻名一方
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
2.项目背景
智能家庭与物联网技术密切相关,目前已经有较为成熟的物联网应用平台,如乐为物联,yeelink,但在智能家庭、智能农业等传感器终端与网关的连接构建方面却有些空白。能实现这个功能的目前有WIFI、Zigbee、蓝牙,但它们都有一定的局限性。
WIFI协议因为门槛低而被许多公司用作物联网终端的联接,但由于其硬件价格昂贵,功耗大,支持的总设备数量很少,不适合量大的传感器终端。
Zigbee协议已经较为成熟和完善,被许多人视作是未来智能家庭的主要解决方案,但它最初是为工业应用设计的,但硬件(图一)价格非常高昂。Zigbee协议很复杂且不开源,对于一个电子爱好者来说,想要用好它有一定难度。
Ad hoc(无线对等网络)网络是一种特殊的无线移动网络,最早应用与军事。网络中所有节点的地位平等(网络程序一样),无需设置任何的中心控制节点。网络中的节点不仅具有普通移动终端所需的功能,而且具有数据转发能力。它适合被用于无法或不便预先铺设网络设施的场合、需快速自动组网的场合等。它的这些特点非常适合物联网的应用。但现在的AD-HOC协议大都很复杂,只能在较好的单片机上运行,要降低成本,就要开发一种更加轻量化的协议。
Arduino是一个开源平台,已有十年的发展,入门的门槛低,容易学习,更重要的是这个开源平台上库文件非常多,而且很方便使用。Arduino的MCU不仅有AVR,更有ARM(图二),甚至是X86。入门不久的我也能使用ARM了。Arduino常见的MCU是AVR系列的Atmega328,与8051相比,主要的优点是稳定,速度较快,数字引脚驱动能力强,能提供20mA 拉电流,40mA灌电流,用它可以直接驱动一个有源蜂鸣器或多个LED。
Noric公司的nRF24L01无线单收发芯片工作在2.4G(ISM频段),可以买到1000M和100M传输距离两种版本(图三,下方的是100m版),两版本可直接互换,内置auto ACK(自动应答)和丢失自动重发功能,价格便宜,速度快,可扩展性好,但目前常用于一对一或一对多通信,多数航模遥控器用的正是这款芯片。我使用了Arduino系列中最小的promini(图四),并设计了一块PCB板子。
精钢白菜
闻名一方
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
注:以上图就不补了,相信大家也知道
精钢白菜
闻名一方
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
2.2研究目的
基于Arduino平台和nRF24L01无线芯片开发一种要求低的无线协议,大幅降低建造一个无线网络的成本,提高其易用性,以促进物联网走进千家万户。
2.3主要创新点
1.使用电压降延迟,巧妙地解决了电量控制的问题,使电量较少的节点承担更少的任务,延长网络的寿命。常规方法是将电量信息加入泛洪的路由信息中,让节点生成路由表时将电量、距离、时间延迟等进行计算,这种方式计算复杂且计算本身也会耗电,这正是AD HOC网络设计的主要难题之一。
2.备用下一跳列表(addr_second)增大了系统的鲁棒性,只带来很少的运算量。
3.结合了nRF24L01芯片自带的auto ACK(自动应答)和自动重发数据包功能,单片机与无线芯片共同承担工作,提高了性能。
3.无线协议部分
精钢白菜
闻名一方
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
3.1无线协议的基本构思
要想在低端单片机上运行,我将此无线协议的特点定位为:简单、方便、高效、稳定,适用于节点数在100个以为内的场合,并且尽量减少内存占用。因此我使用了一个字节的地址,它是静态地址,并且可以通过串口进行设置,存在flash中(以后会发展为无线设置地址,设置后将会存在EEPROM中)。
为了使得无线协议能够简化,我将其节点分为主节点(参与泛洪及动态路由)和寄生节点(只能发出或接受数据包,不进行转发)
设计寄生节点,主要针对的是电池供电的传感设备,他们只需要在使用的时候发出路由请求(仅泛洪一次模式)即可。我主要针对的是传感器网络,这也是廉价单片机的主要用途之一,它需要周期性地发送数据,故使用先验式路由协议效果更好。
为了使无线协议能够高效运行,我没有使用最优路径算法,而是在发送泛洪数据包的同时构建了路由表,并在这个过程中通过延时巧妙地减轻电量较低的设备的负荷(针对电池供电的主节点)。
这个无线协议中,我将数据的发送模式分为3类:完全泛洪,仅泛洪一次,直接链接(此时开启自动应答和自动重发数据包)
无线协议部分我创新地开创了备用下一跳列表,使得系统更加健壮,运算要求又不至于提高过多。
为了防止广播风暴等问题,每一数据包上都有PID校验位和发出者地址位,同一个数据包在一个节点上只能被处理一次。我没有像OLSR(最优链路状态协议)那样使用MPR集,因为这对于廉价的单片机而言,运算量相对较大,占用的内存大,同时也不适合我采用的路由表构建方式。
最终的程序大约1000行,使用C语言编写。
精钢白菜
闻名一方
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
3.2数据格式
由于nRF24L01的一个数据包长为32字节,因为我必须很好地安排链路层命令。
[0]:传输模式
[1]:目的地址
[2]:发出者地址
[3]:PID校验位(先读一空引脚值,再依次加1)
[4]:上一跳地址
[5]:应用层指令
[6]~[30]:数据
[31]:校验位
注:这样的安排现在看来并不好用,应该吧所有控制位都放到末尾才好。
精钢白菜
闻名一方
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
3.3避免在发送信号时产生碰撞的三个防撞机制:
1.CD(载波检测)用于检测当前信道是否已被占用。
2.电压下降延时:这一处延时可以利用延时长度来计算路由开销,增长电池供电节点存活期。
3.自身的地址延时:用于在其它两个延时不起作用时作为防碰撞机制,地址“大”的推迟发射。
发射过程:
载波等待--压降延时--地址延时--配置芯片转发。
配置底层芯片的发送函数代码:
void tx_send(unsigned char addr){//new
Serial.println("tx_send");
digitalWrite(MYCE, 0);
unsigned long timecast=millis();
SPI_RW_Reg(FLUSH_TX,0);
while(SPI_Read(CD)) // Dealy for CD(载波)
{Serial.println("CDwait!");
digitalWrite(MYCE, 1);
delayMicroseconds(500);
digitalWrite(MYCE, 0);
if((millis()-timecast)>my_address*70)
{
Serial.println("CD BREAK!!");
break;
}
}
digitalWrite(MYCE, 1);
delay_with_power(); //delay for power (电压降)
delayMicroseconds(my_address*100); //delay for address(地址)
digitalWrite(MYCE, 0);
if(addr==0xFF)
{
SPI_Write_Buf(WRITE_REG + TX_ADDR,ALL_ADDR, 5);
SPI_RW_Reg(WRITE_REG + EN_AA, 0x00);
Serial.println("Send to All")
熊猫办公
单片机,领先的AI写作工具,原创内容快速创作,支持扩写/速写/改写/摘要等各种功能。熊猫办公单片机,3分钟快速创作,均为原创内容,放心使用。
2025-04-02 09:07
广告
立即查看
精钢白菜
闻名一方
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
3.4泛洪的实现
泛洪是网络中一个常见的操作,将信息发送给网络中所有节点的操作,是AD HOC网络协议的基本功能,要求将数据发送给每一个节点而不重复,因此我采用了循环冗余校验(PID)和地址同时比较的方法来排除重复数据。
泛洪过程框图如下:
注:调整PID表顺序是防止重复的数据包过多导致过快地刷新PID-地址列表数组导致旧数据包被认为是新的。
精钢白菜
闻名一方
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
爪机无力,发不了文件里的图
精钢白菜
闻名一方
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
发一些图解馋
自由字幕组
默默无闻
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
不错!楼主研发的东西正是我需要的,我原来搭建的物联网系统同样是采用nRF24L01组网,不过自己写的协议通讯效率较低而且容错率较低。。。
精钢白菜
闻名一方
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
@春泥蛋炒饭,我的新帖迁到了这里,请加精。
未透露姓名
赫赫有名
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
来自垃圾堆里的Lumia928
神秘阿当
闻名一方
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
记得填坑啊
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示