当前位置: 首页 > news >正文

凌霄飞控开发日志兼新手教程——基础篇:认识基本的文件内容和相关函数作用(25电赛备赛版)

目录

硬件部分

配置清单

电池

烧录器

上位机设置

遥控器通道

串口电压注意

串口分配

软件部分

认识基本文件(非常重要!):

main函数:

时分调度器:

User_task:

ANO_DT_LX:

ANO_LX:

LX_FC_FUN:

Drv_BSP:

Drv_Led:

Drv_Uart:


本篇文章是笔者对25年TI杯电赛H题(四旋翼无人机题)备赛的回顾总结,同时给后来的学习无人机(凌霄飞控)的学弟学妹们开一个新手教程。匿名科创虽然有提供比较专业的手册,但奈何内容过于精炼简洁,专业性比较强,对于新手入门仍然有一定的难度,整个飞控的程序框架是基于标准库的编程,易读性很好,最主要的部分就是飞控外设的引入(串口操作)、基本运动函数的封装、GPIO的操作、程控内容的设计。

硬件部分

由于这一部分大家不同的无人机硬件采买有不同的电机、机架、电池、接收机/遥控器等等,所以这一部分内容仅供大家参考。大家可以直接跳转到软件部分阅读。

配置清单

无刷电机:四颗KV1200的电机搭配上三叶螺旋桨;

机架:Q4机架,真正意义上的全包机架;

电调:搭配电机一套的四合一电调;

机载计算机:英伟达的Jetson Orin NX super;

视觉模块:MaixCAM视觉;

电池:三块格氏电池:4s 3300mAh(放电倍率30c)+5300mAh(45c)+4500mAh(30c)

其他外设:英特尔的深度相机(T265)(很不建议使用)

电池

经过测试,小块电池1300/3s满电量可以测试飞行5~6次,单次飞行时长30s左右,总飞行时长可达3分钟。7.17

烧录器

目前贴置在无人机上的烧录器型号为DAP-Link,我们有两款烧录器型号不相同,只是外观相同,另一块则是Jlink,可以通过设备管理器查看设备类型来分辨烧录器类型。7.17

上位机设置

每次试飞需连接上位机,首先检查上位机电池参数,如果是使用小电池则需要写入3s的参数,虽然电池参数错误也不会炸机,但是低电压报警会失效。7.17

遥控器通道

目前设置SWB三段开关来选中飞行模式,最上方为定高,中央位置为定点,向下打为程控

设置了SWC三段开关映射通道6,当开关在最上方时执行一键降落,在中间执行一键起飞,在最下方执行程控程序,故在设计完程序之后,先把SWB三段开关拨到最下方进入程控模式,再拨动SWC到最下方直接启动程序内容,如果出现意外可以通过SWC打到最上方执行一键降落,紧急情况直接打八字锁定飞机!7.17

串口电压注意

连接要使用5V,不能用3.3V

串口分配

  1. 串口1用于底部MaixCAM的调用
  2. 串口2用于RF_Nano的调用(可以删除,目前没什么大用处)
  3. 串口3用于激光雷达的调用(0x34帧)
  4. 串口4用于光流(不可随便改动)
  5. 串口5用于IMU通信(绝对不可改)

软件部分

认识基本文件(非常重要!):

以上几个文件是用户操作的可编程内容,这里不建议大家到手后再去重新烧录IMU的固件(IMU的固件是通过上位机来烧录的,大家初次使用的时候不要稀里糊涂地通过上位机把IMU里面的固件给清除了( ̄▽ ̄)~*)真正的程序还是像正常的单片机一样,通过keil工程编译之后,用烧录器下载到飞控的单片机里!

在图中,解压rar文件后,得到第一个文件夹,即ANO_LX_FC文件夹,这个就是主工程文件了!

例程1已经在主工程文件中生效啦,所以不需要自己放进去的,这里是防止用户乱改出错来复原的文件。

如图,FcSrc中的User_Task.c就是程控内容的编程内容了,用户的执行代码主要内容都在这个.c文件里设计存放,后续我们控制基本飞行的程序设计也是在这里面实现的。

然后我们打开工程来看所有的文件结构:

main函数:

大家可以看到,main函数里面是做了一个时分调度器,初始化函数也在这里执行。main函数里的内容是不需要进行改动的,因为这个框架是设定好的,这里也不建议大家去改动!因为有可能会影响调度器里的时间参数。


时分调度器:

然后就是这个时分调度器了,注释浅显易懂,类似于定时器的用法,不过和定时器不一样的地方在于,它的多任务之间并非并行进行的,而是串行进行。也可以在这个.c文件中直接封装一些简单静态函数,直接在调度器中调用。


User_task:

这里前面也介绍过,User_task就是用户任务,也就是我们需要飞控执行什么样的一连串指令动作,通过程序预设来实现功能,调用各种函数来实现飞行控制。这里值得一提的是,每一步的执行控制,都采用了状态机思想来实现,至于状态机编程相关的内容,我将在后续展开说说。


ANO_DT_LX:

这个.c文件主要是一些系统的封装函数,有关于上位机和飞控收发相关的函数,没有和上位机通信测试相关的需求的话,这个文件大概率是用不到的。

不过值得一提的是,这个函数里有一段控制飞控灯光的函数调用:

图中被我注释掉的内容就是灯光RGB控制内容,大家使用过凌霄飞控就知道,凌霄的灯光是大功率RGB,非常晃眼睛,而且变化还非常快,使用起来非常难受,所以建议大家注释掉这一段灯光数据内容。而且注释掉之后可以通过自己的函数来控制灯光的颜色变化,无论是作为调试还是赛题指示灯都是非常好用的!


ANO_LX:

这个.c文件里面的内容为飞控基础功能程序,不建议用户改动和调用。包括遥控器数据的接收,电池电压的测量,光流外设、灯光、电调控制等。(这个.c也不用大家去学习研究,基本用不上)


LX_FC_FUN:

这个.c文件就相当重要了!正如其名Function,也就是基本飞行控制函数的封装处了!这里封装了几个基本函数,包括解锁、上锁、一键起飞、一键下降、朝某一方向飞行的函数。这里其实对函数封装的还是偏简陋了,比如说没有控制飞行器自旋转向,或者上升下降固定高度的函数封装。不过通过匿名通信协议还是可以自己动手封装相关函数的。


Drv_BSP:

这个文件主要就是All_Init函数的参数设置,比如对应的串口波特率,对某一外设的初始化等等内容。这里我们可以直接修改对应串口的波特率,或者加入GPIO的初始化(自定义函数)等等,或者注释没有使用的函数内容,比如GPS等。


Drv_Led:

这里是一个灯光的驱动函数,注意这里的灯光调用规则,是通过改变结构体 led.brightness[i] 来控制灯光颜色的,这里的 ledOff() 是笔者自己添加的灭灯函数,凌霄的LED是四个caiseLED的融合,来显示不同颜色的光,所以通过改变 led.brightness[i] 的值,就可以实现不同的灯光显示。

比如这里笔者就把红绿蓝三色用宏定义来处理好,需要调用对应颜色的时候,先进行一次 ledOff() 清除原先的颜色(颜色会被叠加),然后调用宏定义,就可以显示对应的颜色。


Drv_Uart:

这个文件也是至关重要的,有关于F4系列五个主要串口的调用情况。

如果没更改过文件内容的话,那么应该Uart1被分配给GPS,而U4、U5则是被固定分配给光流和IMU,这两个是不可以更改的,至少与IMU之间的通信不可以缺失,光流可以用其他的传感器来替换。这里可以看到,文件使用了串口函数宏定义的方式,来快速定义串口解析函数。相关的串口中断函数也在这个文件中了,使用起来相当方便。


以上就是我们编写程序要用到的几大基本文件了,分别对应着不同的外设控制、串口分配、灯光、遥控等基本信息传递,以及基本的程序控制内容。

接下来的进阶版教程和相关函数的运用和理解,会在之后继续更新哦~

http://www.dtcms.com/a/345106.html

相关文章:

  • Quarkus 从入门到精通完整指南Q
  • Python socket远程部署工具服务
  • 云原生作业(k8s总结)
  • 爬虫基础学习-配置代理、以及项目实践
  • Spring Cloud系列—SkyWalking告警和飞书接入
  • CGI-CVE-2016-5385
  • 【实时Linux实战系列】实时网络流量监测与管理
  • tauri配置允许执行eval脚本,在打包cocos游戏web/phone移动端的时候一定要配置
  • canvas绘制图片等比缩放
  • 高边开关+BUCK+MOSFET:48V智能汽车动力链的“黄金三角”
  • Prometheus+Grafana监控mysql
  • AI推理革命:从Sequential Thinking到Agentic AI的演进之路——揭秘大语言模型思维进化的四重奏
  • 【Linux网络编程】Reactor反应堆模式
  • 氙灯市场报告:亚太成增长主力,汽车、医疗、科研多领域需求驱动行业发展
  • 永磁同步电机无速度算法--基于跟踪观测器的脉振正弦注入法
  • 无线数传模块实现:焦化厂四大车与除尘系统无线通讯连锁控制方案案例
  • ComfyUI 原生 REST API 技术文档
  • 视频拼接融合技术:打造全景视界的革命性产品
  • modbus绑定变量,并发送8位数据的办法
  • Vue中的methods 和 computed
  • Linux-Makefile
  • 网络编程6(JVM)
  • 【Redis】哨兵模式和集群模式
  • 红帽认证升级华为openEuler证书活动!
  • 【学习记录】c完整线程池实现
  • 未来已来?AI 预测技术在气象、金融领域的应用现状与风险警示
  • MySQL视图详解:从基础概念到实战案例
  • 人工智能-python-深度学习-软件安装阶段
  • 第2章 cmd命令基础:执行动态链接库(rundll32)
  • 大视协作码垛机器人:定制圆形吸盘破解桶型码垛难题