nrf24l01

使用nRF24L01进行树莓派和arduino通讯.

冷暖自知 提交于 2020-03-11 21:44:24
参考https://shumeipai.nxez.com/2017/03/20/communication-between-arduino-and-raspberry-pi.html nRF2401代码下载git clone https://github.com/nRF24/RF24.git arduino端代码没什么问题. 树莓派端: 1. Raspberry Pi Model B Rev 2 版本需要修改代码: RF24 radio(22, 0); 替换为: RF24 radio(RPI_V2_GPIO_P1_15, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ); sudo ./gettingstarted sudo: unable to resolve host rpi-b: Name or service not known RF24/examples/GettingStarted/ ================ SPI Configuration ================ CSN Pin = CE0 (PI Hardware Driven) CE Pin = Custom GPIO22 Clock Speed = 8 Mhz ================ NRF Configuration =============

基于rt-thread使用ESP8266实现onenet平台上报

被刻印的时光 ゝ 提交于 2020-02-25 21:41:18
目录 一、前言 二、硬件环境 三、功能描述 四、组件与软件包列表 1、SAL 组件 2、netdev 组件 3、AT 组件 4、at device软件包 5、pahomqtt软件包 6、onenet软件包 五、应用实现 1、nrf24l01温度数据采集 2、onenet数据上报 六、结果展示 1、平台设备数据流展示 2、平台应用展示 一、前言 其实在2019年8月份就写了一篇《基于rt-thread使用nrf24l01实现多点通信》,详细记录了怎么修改nrf24l01软件包实现多点通讯,来采集多个18B20节点的温度数据的功能。使用文件系统进行数据存储、使用OneNet软件包与OneNet云端交互也是在那个时候就完成的。 那为什么当时没写呢?没别的原因 ,就是 赖 赖 赖!!!!!拖 拖 拖 !!!! 那为什么现在又要写了呢?是因为当我现在再来看之前做的这个项目的时候,都不敢相信是自己做的,对于使用的各个软件包功能、实时过程中的一些细节等问题当时是记得非常清楚理得非常顺的,但时间一久到现在完全忘了,如同过眼云烟,再去理的时候相当痛苦。再加上最近想在单片机上实现一个web功能,所以准备重拾当时的这个项目,借此文档重新梳理一遍。备忘!!! 二、硬件环境 STM32F103ZET6:512KFALSH、64KSRAM。正点原子精英开发板 SD Card、ESP8266模块

2020-02-09 Arduino nRF24L01无线遥控

寵の児 提交于 2020-02-09 19:47:52
材料: 智能小车一辆(含驱动电机,4个;驱动板一块;Arduino一块;电池1.5V,6节;nRF24L01一块;其他杜邦线等) 无线遥控器(含Arduino一块,nRF24L01一块,LCD16x2显示器IIC一块,Joystick手柄XYZ一把,彩色按钮5个!电池一块9V锂电池,亚克力板2块,杜邦线若干等) 我在这个小项目碰到的问题: 1,是nRF24L01的库,CE和CSN(7和8针脚)一定要看库里的定义! 2,显示器和nRF24L01通信的冲突,有延时! 3,按钮的消抖问题 4,亚克力板制作花了我很多时间手动切割! 辛苦了2个礼拜,总算搞好!感谢CSDN,让我学习了很多!完成了儿时的梦想! 来源: CSDN 作者: Aokiwoyi 链接: https://blog.csdn.net/weixin_44105105/article/details/104238509

contiki netstack数据收发结构

匆匆过客 提交于 2019-12-03 02:41:49
摘要 本文介绍了contiki netstack的MAC层以下数据收发层次结构,并讨论如何移植新的无线器件做为contiki的无线收发器。 正文 contiki netstack的数据收发层级 Radio:主要完成物理层无线数据的收发和控制 Framer: 完成对数据帧的打包和解析 RDC: radio duty cycling, 周期性访问radio,主要为了减少功耗 MAC: 数据链路层 Netstack: 网络协议栈 contiki内各层级的配置与用处 contiki可以在contiki-conf.h中进行配置 #define NETSTACK_CONF_NETWORK rime_driver //使用rime协议栈 #define NETSTACK_CONF_MAC nullmac_driver //不使用mac层协议 #define NETSTACK_CONF_RDC contikimac_driver //使用contikimac rdc #define NETSTACK_CONF_FRAMER framer_nrf24 //使用nrf24的frame结构 #define NETSTACK_CONF_RADIO nrf24_radio_driver //使用nrf24做为无线器件 NETSTACK_CONF_RADIO 定义contiki

STM32--SPI配置nrf24l01调试笔记

匿名 (未验证) 提交于 2019-12-03 00:22:01
地址配置 //发送/接收地址一 const u8 TX_ADDRESS[TX_ADR_WIDTH]={ 0x34 , 0x43 , 0x10 , 0x10 , 0x01 }; //发送地址 const u8 RX_ADDRESS[RX_ADR_WIDTH]={ 0x34 , 0x43 , 0x10 , 0x10 , 0x01 }; //发送/接收地址二 const u8 TX_ADDRESS1[TX_ADR_WIDTH]={ 0x35 , 0x43 , 0x10 , 0x10 , 0x01 }; //发送地址 const u8 RX_ADDRESS1[RX_ADR_WIDTH]={ 0x35 , 0x43 , 0x10 , 0x10 , 0x01 }; void NRF24L01_TX_Mode( void ) { NRF24L01_CE= 0 ; NRF24L01_Write_Buf(NRF_WRITE_REG+TX_ADDR,(u8*)TX_ADDRESS,TX_ADR_WIDTH); //写TX节点地址 NRF24L01_Write_Buf(NRF_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS1,RX_ADR_WIDTH); //设置TX节点地址,主要为了使能ACK NRF24L01_Write_Reg(NRF_WRITE_REG+EN_AA,

基于stm32f407的无线视屏传输项目

允我心安 提交于 2019-12-01 07:06:18
材料:STM32F407两块 NRF24L01两个,OV2640摄像头一个,TFTLCD4.3寸显示屏一个, IS62WV51216(sram)一个 。 注:一开始在无线传输模块的选材上有串口wifiESP8266和NRF24L01两个,先选择了ESP8266进行测试,这个wifi模块传输距离,面对阻隔物体的传输比NRF24L01强,但是经过深入学习总结,这个模块传输速度很慢,因为限制在了串口的速率上,比如115200的波特率计算下来10kb/s左右的传输速率,而NRF24L01则是115kb/s的传输速率,所以最后放弃了ESP8266.局限于各方面因素只能选择NRF24L01,如果有后生的话,有能力的话,建议选择sdio接口的WIFI模块。这个模块是我在正点原子论坛上了解到的,速度很块。 上图: 视频链接: http://v.youku.com/v_show/id_XMjUxNzI0MDM3Mg==.html?from=s1.8-1-1.2&spm=a2h0k.8191407.0.0 自己在这个项目中的思路: 1.先将摄像头数据过去回来打印出来,在遮挡摄像头等变化的时候看某一个位置点的数据是否有变化。 2.将获取回来的摄像头数据按照lcd屏的写入数据方式写进去,调试图像和摄像头配置 3.将NRF24L01通信的8位数据传输方式改为16位数据传输方式

nrf24l01+的接收代码

我只是一个虾纸丫 提交于 2019-11-30 02:51:59
这个是接着上一篇《nrf24l01+发送代码》,有发送必须要有接收,这就把接收代码贴出来。代码形式还是跟发送一样,分两个函数。 #include <reg51.h> #include <api_r.h> #define uchar unsigned char /***************************************************/ #define TX_ADR_WIDTH 5 // 5字节宽度的发送/接收地址 #define TX_PLOAD_WIDTH 4 // 数据通道有效数据宽度 #define LED P1 uchar code TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01}; // 定义一个静态发送地址 uchar RX_BUF[TX_PLOAD_WIDTH]; uchar TX_BUF[TX_PLOAD_WIDTH]; uchar flag; uchar DATA = 0x01; uchar bdata sta; sbit RX_DR = sta^6; sbit TX_DS = sta^5; sbit MAX_RT = sta^4; sbit wela=P2^6; sbit dula=P2^7; /****************************************

NRF24l01的多对一通信

元气小坏坏 提交于 2019-11-30 02:51:38
文章目录 前言 必看 NRF一对一通信 NRF多对一通信 总结 遇到的问题 前言 怎么说呢,今天又看了一天的nrf,很多东西看起来特别简单,但实际用起来,你会发现漏洞百出。根本不知从何下手。下来就分享一下我的经验。对你应该会有所帮助。以下是基于stm32实现的nrf无线通信。 必看 这篇博客不适合无基础的人来看,因为下面程序我只给出部分程序,所以没基础你可能看不懂程序配置的是什么。我主要分享的是多对一通信时不同通道寄存器的参数如何求取 NRF一对一通信 首先NRF一对一通信没得说很简单,而且出问题的几率很小。一对一通信我就不多讲了,给出主要配置收发的程序。 例(1)一对一通信,发送模式的主要配置 如果单做一对一通信建议就用通道p0吧。 //设置发送地址 const u8 TX_ADDRESS [ TX_ADR_WIDTH ] = { 0x34 , 0x43 , 0x10 , 0x10 , 0x01 } ; //地址可以随便修改(仅针对通道P0的地址) const u8 RX_ADDRESS [ RX_ADR_WIDTH ] = { 0x34 , 0x43 , 0x10 , 0x10 , 0x01 } ; //接收地址 /*******************************************************************/ //配置发送模式 void

NRF24L01模块----6通道通讯测试

偶尔善良 提交于 2019-11-30 02:50:49
一、MCU与NRF24L01通讯 采用SPI通讯协议,速率最大为10M,与普通SPI元器件稍有不同的是,多了一个CE引脚,用来开启接收、发送,以及使器件进入待机模式。具体看IC DATASHEET说明。 写寄存器指令格式为 :1、SPI写寄存器地址 + 0x20 2、SPI写参数 读寄存器指令格式为 :1、SPI写寄存器地址 2、SPI读参数 但少数几个指令,只需写入一个参数,如: 读STATUS寄存器 : 不能使用NOP指令,读取出来参数不正确。 应使用读普通寄存器的方式,STATUS寄存器地址为0x07; 二、数据的发送 当设置芯片的寄存器,“CE”引脚需要为低电平。 用到以下几个寄存器: 1、将接收端地址写入发送地址寄存器“ TX_ADDR ” 2、将接收端地址写入PIPE0通道地址寄存器“ RX_ADDR_P0 ”,开启自动应答后,PIPE0将接收接收端的应答信号。 3、使能“EN_AA”寄存器开启自动应答,使能“ EN_RXADDR ”中PIPE0对应的bit。 4、设置重发寄存器“ SETUP_RETR ”,设置重发次数以及时间间隔。 5、设置发送频道的频率“ RF_CH ”,以及发送功率、速率“ RF_SETUP ” 6、设置配置寄存器“ CONFIG ”,开启中断以及设置发送。 如果以上寄存器设置完毕,拉低“CE”将需要发送的数据通过“ WR_TX_PLOAD

nrf52832与nrf24L01+通信

血红的双手。 提交于 2019-11-30 02:50:28
使用2.4G无线芯片nrf24L01+与蓝牙芯片nrf52832通信,nrf52832工作在2.4G模式。 nrf24L01+使用以前调试通过程序,两个nrf24L01+通信良好。 nrf52832模块使用sdk13.0中esb历程\nRF5_SDK_13.0.0_04a0bfd\examples\proprietary_rf\esb_ptx,两个nrf52832可以实现互相通信 完成以上两个基础步骤后,开始nrf24L01+与nrf52832通信。 两个设备之间的通信要匹配一下参数: 1、通讯速率 bitrate 2、数据传输宽度 payload length 3、通讯频率 frequency 4、通道号 pipe 5、CRC校验 6、ACK应答 7、白化 8、通讯地址 其中,在nrf52832中,4~7可以不用更改,是默认值,通道0,16位CRC校验,禁止自动应答(这个可以打开),白化是disable的。这些与nrf24L01+一致,也可以更改成一致的。 nrf52832的接收例程中prx更改地方为 main中 nrf_esb.h中 nrf24L01+中的初始化如下: 注意: 最后红色框里面这两句很重要,有些nrf24L01+的历程里面没有,如果没有这两句是不能喝nrf52832通讯的,所以这一点要强调一下。 手册中定义为 ps:中文的nrf2401手册中没有翻译这两个寄存器