【遥控器开发基础教程5】疯壳·开源编队无人机-SPI(2.4G 双机通信)

2023-05-16

COCOFLY教程
——疯壳无人机·系列
SPI(2.4G 双机通信)
    

    
    
    
    图1
    
    一、NRF24L01
    1.1 NRF24L01 简介
    
    NRF24L01 是由NORDIC 生产的工作在 2.4GHz~2.5GHz 的ISM 频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型“SchockBurst”模式控制器、功率放大器、晶体振荡器、调制器和解调器。
    NRF24L01 的输出功率频道选择和协议的设置均可以通过 SPI 接口进行设置,因此,其具有极高的兼容性,几乎可以连接到各种单片机芯片,并完成无线数据传送工作。除此之外,NRF24L01 的功耗也非常的低,当工作在发射模式下发射功率为 0dBm 时电流消耗仅为 11.3mA ,接收模式时为 12.3mA,掉电模式和待机模式下电流消耗更低。所以 NRF24L01 可以广泛地应用在无线键鼠、无线门禁、无线电台、智能工业设备、玩具等场合。
    如下表所示列举了 NRF24L01 的特性参数。
    
    
    表1
    如下图所示为 NRF24L01 芯片实物图
    
    
    图2
    
    二、2.4G 双机通信
    2.1 NRF24L01 使用方法
    
    NRF24L01 是以包的形式进行发送的,具体的包格式如下表所示。
    
    
    表2
    NRF24L01 在通信前需要进行一系列的参数配置,而在配置其参数时,NRF24L01 必须工作待机模式,即 CE 脚拉低。在发送模式下的配置流程如下表所示。
    
    
    表3
    配置为接收模式的流程如下表所示。
    
    
    表4
    配置完后就是发送和接收的处理了,发送的流程如下表所示。
    
    
    表5
    接收流程如下表所示。
    
    
    表6
    三、2.4G 双机通信实验
    2.4G 双机通信实验涉及到遥控器端和飞控端,两者的 2.4G 通道均设置为
    110。首先配置遥控器端的左摇杆的按键为外部中断模式,一旦按下做摇杆按键, 就发送“Remoter”这个字符串到飞控上,飞控接收到后,把 LED 航情灯进行闪烁,然后再向遥控器回发“Airplane”这个字符串,遥控收到后,闪烁电源指示灯。无论是遥控器还是飞控使用 NRF24L01 均使用到了 STM32 的硬件 SPI,不同的是遥控器使用的是 SPI2,而飞控使用的是 SPI1。STM32 的 SPI 配置方法可以参考飞控开发基础《SPI(六轴传感器数据获取)》。
    
    3.1遥控器端
    
    本次实验中遥控器端触发无线数据的发送是通过外部中断实现的,具体的外
    
    
    部中断配置可以参考《遥控器开发实战-中断》。在该中断中向飞控发送“Remoter” 字符串,具体代码如下图所示。
    
    
    图3
    遥控器端的 NRF24L01 的初始化代码如下图所示。
    
    
    图4
    遥控器端的接收处理是在主循环中轮询实现的,收到飞控发来的信息后,电源指示灯闪烁,具体代码如下图所示。
    
    
    图5
    
    3.2飞控端
    
    飞控端的无线数据接收在主循环中实现,接收到遥控器发送的信息后,电源指示灯闪烁,且向遥控端回发“Airplane”,具体代码如下图所示。
    
    
    图6
    飞控端的 NRF24L01 的初始化代码如下。
    
    
    图7
    
    3.3实验现象
    把遥控器端代码下载到遥控器内、飞控端代码下载到飞控内。上电,此时按下遥控器的左摇杆按键,可见飞控四个电机底部的 LED 航情灯闪烁,然后遥控的电源指示灯也闪烁。这就意味着飞控收到了来自遥控器端的信息并且回发了信息给遥控器,且遥控器也收到了来自飞控端的回发信息。如下图所示为飞控航情灯以及遥控左按键及电源指示灯。
    
    
    图8
    
    

    

更多完整学习资料和对应开源套件,请登陆官网:“疯壳”

如需定制开发,请通过官网“疯壳”网页底部的“联系我们”进行联系

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【遥控器开发基础教程5】疯壳·开源编队无人机-SPI(2.4G 双机通信) 的相关文章

随机推荐

  • MySQL存储数据加密

    加密方式主流的有两种 ENCODE 与 DECODE 建一张测试表 create table users username varchar 128 用户昵称 password blob 密码 engine 61 innodb default
  • 线程池BUG复现和解决

    逻辑很简单 xff0c 线程池执行了一个带结果的异步任务 但是最近有偶发的报错 xff1a java util concurrent RejectedExecutionException Task java util concurrent
  • 移动端开发——APP端上H5容器化建设

    1 背景 当前移动端和前端的结合愈加紧密 xff0c 尤其是在偏重活动运营的电商App中 xff0c 受制于App版本审核 xff0c 具备研发成本低 可灵活发布等特点的H5页面受到青睐 xff0c 使其在APP端上承接了越来越多的业务 然
  • C++时间与字符串转换

    1 常用的时间存储方式 1 xff09 time t类型 xff0c 这本质上是一个长整数 xff0c 表示从1970 01 01 00 00 00到目前计时时间的秒数 xff0c 如果需要更精确一点的 xff0c 可以使用timeval精
  • 解决linux环境下nohup: redirecting stderr to stdout问题

    在生产环境下启动Weblogic时 xff0c 发现原来好好的nohup信息输出到指定文件中的功能 xff0c 突然出问题了 现象是控制台输出的信息一部分输出到了我指定的文件 xff0c 另一部分却输出到了nohup out xff0c 而
  • [转]Redis作为消息队列与RabbitMQ的性能对比

    周末测试了一下RabbitMQ的性能 xff0c RabbitMQ是使用Erlang编写的一个开源的消息队列 xff0c 本身支持很多的协议 xff1a AMQP xff0c XMPP SMTP STOMP xff0c 也正是如此 xff0
  • Python3.7 实现TCP通信

    TCP 连接程序分为服务端和客户端两部分 服务端步骤如下 xff1a 1 创建套接字Socket 什么是套接字 应用层通过传输层进行数据通信时 xff0c TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题 为了区别不同的应用程序
  • CentOS、Ubuntu、Debian三个linux比较异同

    Linux有非常多的发行版本 xff0c 从性质上划分 xff0c 大体分为由商业公司维护的商业版本与由开源社区维护的免费发行版本 商业版本以Redhat为代表 xff0c 开源社区版本则以debian为代表 这些版本各有不同的特点 xff
  • LDAP 中 CN, OU, DC 的含义

    1 LDAP的存储规则 区分名 xff08 DN xff0c Distinguished Name xff09 和自然界中的树不同 xff0c 文件系统 LDAP 电话号码簿目录的每一片枝叶都至少有一个独一无二的属性 xff0c 这一属性可
  • bat修改hosts文件

    attrib R C WINDOWS system32 drivers etc hosts 64 echo 64 echo 127 0 0 1 aaaa bbb com gt gt C WINDOWS system32 drivers et
  • 使用org.apache.tools.zip实现zip压缩和解压

    import java io import org apache tools zip import java util Enumeration 功能 zip压缩 解压 支持中文文件名 说明 本程序通过使用Apache Ant里提供的zip工
  • freeModbus代码解读及移植笔记

    freeModbus的代码库还是很好用的 xff0c 本人在wince和C8051F410下均移植成功 xff08 只用到RTU模式 xff09 但freeModbus提供的文档比较少 xff0c 只能对照着Modbus协议一点点试着读懂源
  • MySQL变量:local_infile

    local infile服务器变量指示能否使用load data local infile命令 该变量默认为ON 该变量为OFF时 xff0c 禁用客户端的load data local infile命令 Sql代码 mysql gt sh
  • strcpy函数实现

    C语言标准库函数strcpy的一种典型的工业级的最简实现 返回值 xff1a 返回目标串的地址 对于出现异常的情况ANSI C99标准并未定义 xff0c 故由实现者决定返回值 xff0c 通常为NULL 参数 xff1a strDesti
  • C++库介绍

    1 C 43 43 标准库 xff08 STL xff09 STL六大组件 容器 算法 迭代器 仿函数 适配器 配接器 空间配置器 1 容器 各种数据结构 xff0c 如vector list deque set map等 xff0c 用来
  • 【C++】extern “C“ 用法详解

    前言 前面简单了解了C 43 43 中的extern 34 C 34 之后 xff0c 可能很多小伙伴对这个陌生的词非常困惑 xff0c 不能理解他的使用场景 所以本章内容就来详细了解extern 34 C 34 的用法 xff0c 这里使
  • FreeRTOS学习第三篇——FreeRTOS任务创建(下)

    声明 xff1a 本文为博主的学习篇章 xff0c 欢迎大家指错 xff0c 共同学习 在解决一下上篇遗留下来的问题之前 xff0c 还得提前做些功课 xff0c 了解一些FreeRTOS的全局变量 PRIVILEGED DATA stat
  • printf用法之打印二进制,八进制,十进制,十六进制

    printf用法之打印2进制 xff0c 八进制 xff0c 十进制 xff0c 十六进制 printf是格式化输出函数 xff0c 它可以直接打印十进制 xff0c 八进制 xff0c 十六进制 xff0c 输出控制符分别为 d o x
  • 【飞控开发基础教程7】疯壳·开源编队无人机-SPI(气压计数据获取)

    COCOFLY教程 疯壳 无人机 系列 SPI xff08 气压计数据获取 xff09 图1 一 SPL06 简介 SPL06 是歌尔公司最新推出新款气压传感器 xff0c 最新推出新款气压传感器SPL06 001 xff0c 歌尔是全球领
  • 【遥控器开发基础教程5】疯壳·开源编队无人机-SPI(2.4G 双机通信)

    COCOFLY教程 疯壳无人机 系列 SPI 2 4G 双机通信 图1 一 NRF24L01 1 1 NRF24L01 简介 NRF24L01 是由NORDIC 生产的工作在 2 4GHz 2 5GHz 的ISM 频段的单片无线收发器芯片