当前位置:网站首页>NRF24L01故障排查
NRF24L01故障排查
2022-07-06 09:17:00 【XlinliY.Zhang】
一、概述
NRF24L01想必是大家在入门时候最常用的一款射频模块,它使用SPI接口,2.4G频段进行通讯,长距离低功耗,对于免连接通讯非常好用。但,我们常说浪费生命就用NRF24L01,它在射频的好用和在硬件搭建的难用几乎成正比,使用面包板 + 杜邦线跑通的可能性很渺小。所以针对这个问题,我专门写下这篇文章,用来帮助新手快速跑通NRF24L01;同时避免新手因误看垃圾教程,什么 "NRF24L01应该接5V增强供电",“肯定是淘宝假芯片”等,导致浪费时间和精力。
二、如何查出故障
1、工欲善其事必先利其器
- 对于NRF24L01,检查故障应该有两块开发板及两块NRF24L01,这样才方便测试通讯。
- 强烈建议购买一块万用表,使用万用表对查故障简直如虎添翼。
- 多多准备一些新的杜邦线,和准备面包板,这样可以避免接触不良从而浪费时间。
2、知己知彼百战百胜
在淘宝购买的时候,你以为你买到的就是NRF24L01了么,其实并不是,主流的货源主要分为这三个系列
- 欧美产NRF24L01(原厂正品)
- 台湾产NRF24L01(1:1山寨,问题不大)
- 国产 SI24L01 (仿造,通用,当不是完全通用)
在淘宝上,大部分商家因为价格问题都会选择国产SI24L01,这就导致了你看你买的是NRF其实是SI,那怎么方便这两者呢? 答案很简单,手机打开手电筒,照着模块上的丝印看,写NRF的是NRF,写SI的是SI,当然,牛屎封装(就是一坨圆圆的黑胶)的肯定是SI没得跑。
SI24
NRF24
分辨NRF还是SI对排障很有必有,因为部分库完全不通用.
3、对症下药,药到病除
(1)NRF24L01 欧美/台湾产:
程序可以参考这篇文章:Arduino MEGA 与UNO 通过nRF24L模块通讯
只要是NRF24L01,使用全新杜邦线,确保接触良好,完全可以正常使用,什么3.3V供电不够都是骗人的,这模块最大70mA电流就极限了,Arduino 3.3V电流完全够用。而且这模块没有大模块小模块只分,只有带转接板和不带转接板,部分模块带有一个LDO降压,支持5V输入,常见的模块如下图这种,接5V只会发热,甚至烧毁模块!!!!
对于有万用表的同学:
使用毫安档位,红表笔接3.3V,黑表笔接NRF24L01的VCC,根据电流,可分为
- 9mA左右,模块通讯异常,压根没工作
- 大于100mA,模块损毁,直接换货
- 其余电流,硬件通讯,模块运作正常,检查通讯信道
对于没有万用表的同学:
单独接收端模块连接上去后,串口应没有任何输出,在没有发射端的情况下,接收端应该串口无输出,如果一直输出0,可以考虑接线接触不良或者模块彻底损坏。
(2)SI24L01 国产:
对于这款模块,程序可用的只有店家经过测试的程序能通讯,需要找店家索取,且和NRF24L01匹配信道方式不同,较难通讯,由于笔者到目前用个10+个NRF24L01仍买到SI的,只有帮助别人进行查故遇到过,每一个SI24的问题花开两朵各表一枝,只能总结以下问题
- 库问题,导致程序无法运行,找店家索要程序
- 不同库文件信道表示方式不同,建议使用同款模块
- 使用开发板和多次使用的杜邦线导致接触不良
(3)信道不匹配:
还有一种可能就是接收和发送设置的信道不一样,导致模块虽然正常工作,但完全没有接收到,这点主要检查存在库对信道的编写不一样,建议不改动示例,使用相同库进行测试。
三、总结
XX24L01主要问题在于以下几点
- 驱动库没有统一标准
- 接触不良影响极大(浪费生命就用NRF24L01的原因,老手都日常翻车)
玩单片机到现在多年,大部分场景我都是拒绝使用NRF24L01的,每次使用单单SI 和 NRF就是个坑,一点点接触不良就会导致NRF24直接不工作,各种问题频繁出现,但其在低功耗长距离方面仍是其他通讯方式不可比拟的,如果非用不可,强烈建议使用转接板进行连接而不使用杜邦线,或者多掏钱买串口通讯的模块,或者集成了这些模块的开发板,这些模块帮你杜绝了芯片和硬件问题,能让专心应对程序BUG,让你你少掉几根头发。
当然在可以的情况下,建议切换通讯方案,使用ESPNOW、LORA、315\433MHz都是不错的替代方案或者使用串口透传进行数据传输。当然有经验的建议去看看STM32对NRF的处理,自己编写程序,完善DEBUG操作,使开发更加省时省力
边栏推荐
- Fashion-Gen: The Generative Fashion Dataset and Challenge 论文解读&数据集介绍
- OPPO VOOC快充电路和协议
- The first simple case of GNN: Cora classification
- js 变量作用域和函数的学习笔记
- Rough analysis of map file
- OSPF message details - LSA overview
- ESP8266通过arduino IED连接巴法云(TCP创客云)
- Redis cache update strategy, cache penetration, avalanche, breakdown problems
- Custom view puzzle getcolor r.color The color obtained by colorprimary is incorrect
- Basic operations of databases and tables ----- classification of data
猜你喜欢
Togglebutton realizes the effect of switching lights
Amba, ahb, APB, Axi Understanding
[golang] leetcode intermediate - fill in the next right node pointer of each node & the k-smallest element in the binary search tree
The dolphin scheduler remotely executes shell scripts through the expect command
RT-Thread 线程的时间片轮询调度
基於Redis的分布式ID生成器
Common properties of location
Mp3mini playback module Arduino < dfrobotdfplayermini H> function explanation
记一次云服务器被密码爆破的经历——关小黑屋、改密码、改端口
Page performance optimization of video scene
随机推荐
.elf .map .list .hex文件
E-commerce data analysis -- salary prediction (linear regression)
GNN的第一个简单案例:Cora分类
Pytoch implements simple linear regression demo
ES6 grammar summary -- Part I (basic)
优先级反转与死锁
1081 rational sum (20 points) points add up to total points
Navigator object (determine browser type)
inline详细讲解【C语言】
ES6 grammar summary -- Part 2 (advanced part es6~es11)
imgcat使用心得
There are three iPhone se 2022 models in the Eurasian Economic Commission database
Embedded startup process
Inline detailed explanation [C language]
(三)R语言的生物信息学入门——Function, data.frame, 简单DNA读取与分析
Pat 1097 duplication on a linked list (25 points)
C语言回调函数【C语言】
History object
PyTorch四种常用优化器测试
Time slice polling scheduling of RT thread threads