1. 前言 小弟最近看了一些中近距离(200m以内)的无线通信方法,像Zigbee/蓝牙/wifi等,实现起来比较复杂,需要一定程度的钻研。恰巧看到一款NRF24L01使用起来非常方便,并且本身有较佳的功耗和通信距离,网上有相当数量的学习资料和例程,因此上手把玩了一番。在调试过程中由于设备有限,遇到了些许bug,在此记录一下并分享给大家。1 o" u g7 |$ L- t 2. 硬件实现 学习阶段我们主要使用原子的STM32精英版作为主要调试平台,后期可以行使用一些最小开发版进行硬件和程序移植。 需求 ① 原子 STM32F103ZET6精英板 x1 ② NRF24L01模块 x2 ③ NRF24L01-串口转USB转换模块 x2 连接/ M4 e8 z- Z* O' Z+ | ①与电脑相连: NRF24L01模块通过NRF24L01-串口转USB转换模块与PC的USB口相连。(需要注意需提前安装CH340驱动以保证PC能识别到端口)8 Z2 g1 m* N( \9 | ②与单片机相连:STM32F103预留了wireless引脚块(使用SPI2),可以直接插入NRF24L01模块。另外可手动进行引脚匹配。 6 d! F! F( S; a# ?+ _6 H7 U6 k, J7 K ; s& M9 y4 b7 Q# I3 K! h& x" f 3. 软件实现 代码是有现成的,可以参考原子的源码及讲解课程第66讲 2.4G无线通信实验。/ J" ^( u) D. W3 K) B2 h 需要注意的是要收发端的NRF24L01参数设置一致才可实现相互通信,主要涉及 ①波特率9600(仅需确保PC串口波特率与NRF24L01-串口转USB转换模块一致,模块默认是9600) ②传输速率:2Mpbs6 ?7 l$ P" D6 @ ③收发地址:0xFF, 0xFF, 0xFF, 0xFF, 0xFF(串口转USB转换模块默认地址,若PC与STM32通信,修改修改两者一致) L3 x2 }' `- A7 M8 r ④通信频率:2.4Ghz(串口转USB转换模块默认,若PC与STM32通信,修改修改两者一致) ⑤CRC校验位:16位 注:PC端以上参数是封装在NRF24L01-串口转USB转换模块中的,需要使用串口发送AT命令来修改。; N. j4 q$ J0 V, m( \2 ^# b 6 J* ?7 A, [. ]) T 5 t- W3 s) b2 ]2 I$ O+ x& f) y: M 4. 测试结果# C' t1 R6 `) l- a% H 4.1PC与PC通信 插入两个NRF24L01模块,调用两个串口助手,使用其中一个串口发送消息’ABCDEFG’,另一个串口助手中可接收到’ABCDEFG’ 8 X6 G$ Z& N3 a3 H" W* x" n4 F : B* D5 n5 ~" F$ T7 I4 e 1 j; G+ N+ q4 { 4.2 STM32与STM32通信 # m1 w! W; X/ z& D4 c. j- ?# E# P 4.3 PC与STM32通信 写在前面:NRF24L01-串口转USB转换模块在对发送和接收数据时进行了处理,因此如果直接使用单片机发送’ABCDEF’的数据,则会出现PC接收不到的情况。原因在于转换模块第0个字节是系统保留的,用于每次传输的包长度统计,实际用户可用的字节为1-31个。例如PC串口发送‘ABC’,实际通过NRF24L01传输的是’3ABC’,接收端实际处理是应根据第0字节中的数来判断收到的数据包长度。0 b# J7 r3 I1 y9 I! W C 测试:使用stm32连续发送’3BCDEF’的字符串,则可在PC端的串口助手中收到’BCD’的字符串8 k9 _! Z# c- @2 ^1 t % N7 p. F! |- d/ d$ G% X 5. 结论 1.通信测试时需要确保通信两端的NRF24L01参数设置是一致的,包括地址、通信频率等。 2.NRF24L01-串口转USB转换模块在对发送和接收数据时进行了特殊处理,在调试PC与STM32的通信时需要注意这一机制。4 v0 ?5 B" c! `0 w! q1 S% b' q * _6 R6 ]7 L6 `% g G* t" H ; a2 J" _7 I( Y# d |
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】基于STM32使用HAL库实现USB组合设备CDC+MSC
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命
从STM32 MPU产品看嵌入式系统中微处理器的新变化
【Hot!】STM32全系列开发板都支持Arduino开发,你知道吗?
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【STM32H7S78-DK评测】XIP模板问题处理与电机控制
【经验分享】STM32驱动RC522读卡完整资料分享,包含原理图、PCB、驱动工程文件