文档章节

nRF24L01与Arduino实现的收发器

gc87
 gc87
发布于 2015/07/19 15:04
字数 620
阅读 140
收藏 1

    我的实验是基于一块arduino duemilanove(下文称为Du板) 和一块arduino nano v3(下文成为Na板)来实现的主从模式的消息收发。通讯模块为nRF24L01,关于arduino以及nRF24L01的参数特性就不在这里叙述了。

    程序库使用的是Mirf这个库,使用非常简便。按照下图来中Mirf对应的方式来连接电路。


    我的目的是让Du板可以接收pc通过串口发来的消息,转化后通过nrf发送到另一端的Na板,再由Na板转换之后,通过串口将数据发送到连接到Na板上的pc。反过来也可以进行同样的通讯过程。


    我写的arduino的程序迭代了3个重大版本,第一个版本使用了顺序的处理方式,主要是进行电路连接的正确性测试以及模块可用性的测试;第二个版本开始尝试arduino中的多任务处理,使用了protothread库(http://dunkels.com/adam/pt/),它可以设置时间片大小,进行多任务切换。这个版本中双向发送信息时出现大量丢包,Du板给Na板发送丢包,Na板给Du板发送也会掉包,并且protothread虽然小巧,但是任务调度上给我的感觉不太好,于是产生了第三个版本的程序;第三个版本多任务处理库替换成了Scoophttps://github.com/fabriceo/SCoop),这是一个功能比较完善的库,代码写起来也比较舒服,但还是会出现丢包的情况,Du板给Na板发送消息时,Na板接受的信息基本没有失真的情况,但是反过来由Na板给Du板发送消息的时候,收不到的情况非常严重。

 

    最后得出结论——与软件没有关系,是硬件的问题导致了消息失真,有可能是Na板的接口电压所致。官网上有解决办法——http://forum.arduino.cc/index.php?topic=202655.0 国内有人做过实验,用10uF——400uF的电容接在vccnRF之间就可以解决丢包失真的问题。

 

    我实验的所有源码都在这个github仓库中:https://github.com/gc87/windup


© 著作权归作者所有

gc87
粉丝 1
博文 7
码字总数 4099
作品 1
昆明
程序员
私信 提问
nrf2401 - 最廉价的2.4G无线通信方案

所有的使用Arduino 的朋友大多都会知道大名鼎鼎的XBee 这个土豪级的ZigBee 的通信模块。我们是做产品开发的,对于XBee这个产品可谓是又爱又恨,不得不承认他确实是一个好货,从做工到功能都无...

rayliang
2017/02/09
0
0
alicedodo/arduino-nrf2401-bootloader

arduino-nrf2401-bootloader 介绍 这是一个专门为arduino UNO/Nano/Pro Mini打造的无线下载bootloader,可通过NRF24L01+模块或串口烧写程序.2 Kb Flash.兼容STK500V2协议,支持avrdude,支持ard...

alicedodo
04/28
0
0
contiki netstack数据收发结构

摘要 本文介绍了contiki netstack的MAC层以下数据收发层次结构,并讨论如何移植新的无线器件做为contiki的无线收发器。 正文 contiki netstack的数据收发层级 Radio:主要完成物理层无线数据...

lgl88911
2013/08/17
1K
1
Arduino单片机使用和开发问题记录

Arduino单片机使用和开发问题记录 1、将程序上传到板子时Arduino IDE提示“avrdude: stk500_getsync(): not in sync: resp=0x00” 网上查遇到这个问题的人比较多,有说驱动问题的,有说IDE设...

青夜之衫
2017/12/05
0
0
arduino智能家居DIY教程1 网关篇

智能家居越来越火了,看着一波又一波的高大上的产品汹涌袭来,但是作为创客来说,DIY才是硬道理!特此我们推出了这一系列的智能家居教程,让创客朋友们亲手体验改造的乐趣。在此非常感谢@智能...

ITEAD创易工作室
2014/06/18
2.4K
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
9
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
9
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
9
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部