STM32
直播中

陈静

7年用户 1284经验值
私信 关注
[问答]

怎样使用NRF24L01去实现Openmv和STM32单片机的无线传输呢

怎样使用NRF24L01去实现Openmv和STM32单片机的无线传输呢?其基本步骤有哪些?

回帖(1)

段朝思

2021-12-16 09:25:24

  • 前言


  想使用Openmv实现与单片机远程无线传输,但是直接用HC05蓝牙个人觉得有很多不如意,而工业级别的NRF24L01与之相较而言有不少优势:
  [tr]NRF24L01HC-05/HC-06[/tr]
稳定短距离内稳定
传输数据距离1100m传输距离在空旷处10m
SPI接口串口
优势太多仅作列举,其实我只是想节约一下接收端单片机的串口,而NRF24L01使用SPI传输,因此写了一个使用NRF实现Openmv和STM32单片机无线传输的工程。
如有错误,欢迎指正,相互交流,共同进步!
  方案

  

  • 直接在Openmv上通过SPI接口连接:

  


  • Openmv的IO口极其珍贵,而一块NRF24L01拥有8个引脚:

    也就是说,如果直接连接NRF24L01,那么Openmv可以用的IO口仅剩三四个,此时如果使用openmv同时做别的工程,可能引脚就会出现不够用的情况;
  • 如果直接连接NRF24L01,需要自己写Openmv部分的底层【虽然不是很麻烦,但是个人感觉使用python写底层,会很浪费程序运行时间】;

  

  • 使用Openmv串口发送,再使用一块核心板串口接收并通过SPI接口连接NRF24L01发送接收到的信息:

  


  • openmv只需要编写串口收发程序,且仅需要2个串口IO口;
    例程可在此下载openmv识别特定颜色且打印坐标到串口
  • STM32的NRF24L01的例程很多,可以移植程序,省时省力省心;
  • 节约Openmv的程序运行时间,避免拖慢速度

  工程

  选择芯片

  为了节约,我使用的STM32F0超值系列的STM32F030F4P6,这块核心板仅20个IO,体态轻盈又能满足需求,个人想直接放在Openmv背面,看都看不见也不会影响
  移植程序与F0系列相关资料和例程

  之前用过STM32F1和F4系列,由于F1是M3内核,而F0是M0内核,所以正点原子哥的程序不能直接照搬,自己写了好久,写完之后,大佬发给了我一份他的例程……【自闭】
不过在写这个程序的时候发现各有长短,这两份例程结合起来倒是十分管用,另外还找到了一份F1移植到F0上的“秘籍”,两份例程与这份文档我会合在一起上传,有需要的可以点此下载STM32F0例程库【两份】和F1移植到F0的资料
  转接配置



  • openmv部分直接使用串口收发
  • STM32F030F4P6相当于一个转接的桥,使用串口接收来自Openmv的信息
  • STMF030F4P6使用SPI连接NRF24L01,并将接收到的信息发送出去
  • 另一端接受设备(可以是STM32的任何系列)需要连接NRF24L01,配置成接收端无线接收数据

  程序

  STM32F0串口转NRF发送程序
举报

更多回帖

发帖
×
20
完善资料,
赚取积分