以 STM32 作为主控模块,在陀螺仪 MPU6050 的作用下控制云台的转动,从而扩大画面范围,图像传输到手机上起到实时监控的作用。为了防止因为抖动而造成的图像模糊等,添加了自稳功能。为了实现远程遥控,采用了 2.4GHz 无线通信模块,作为板与板间的通信,主要收发控制信号。
功能上分为两个处理模块,分别为接收端和发送端:发送端采用了STM32F103单片机配合MPU6050和NRF24L01两个模块,MPU6050用于检测姿态角,然后通过NRF24L01将姿态信息发送至接收端。接收端采用了STM32F407配合NRF24L01接收发送端的姿态信息然后控制云台的角度。云台为2轴云台:采用舵机驱动。实现功能:1)MPU6050姿态解算2)NRF24L01无线收发3)云台姿态控制
主要硬件选择
主控芯片:发送端STM32F103ZET6,接收端STM32F407ZGT6,集成了新的 DSP 和 FPU 指令,这两个芯片中STM32F407的性能比较强,具有168MHz主频。驱动模块舵机:KST,信号接收器接收到来自发送器运动信号并将其发送给舵机,再通过电路板上的 IC 驱动无核心马达使舵机开始转动。MPU6050作为本次体感云台设计的姿态检测模块,价格低,资料多。NRF24L01 无线通信模块,工作在 2.4GHz~2.5GHz 的 ISM 频段,可以通过 SPI接口设置协议和功率频道,能够适用于大部分单片机完成收发工作。
软件流程
系统发送流程图如上图,首先开始进行初始化,检查MPU6050和NRF24L01是否正常运行,如有问题则返回初始化并且报错,否则就读取数据并将将数据发送出去,一直循环;系统接收流程先初始化,检查NRF24L01通信是否正常,正常后信号接收器接收数据,并且控制舵机姿态。在“达尔闻说”微信,回复:云台设计,获取全部代码。
设计心得
这个项目可以用于学习NRF无线通信功能和MPU6050的数据读取,在MPU6050的数据上做了一阶滤波处理。其实完全没有必要做成两个模块的,但是在设计的初期有点菜,上班的过程中,断断续续搞了2个星期。难点主要还是在于无线收发和MPU6050数据的读取和处理。在设计中云台并没有加入姿态的位置闭环控制。很多地方都是搬别人的轮子,自己并没有解决掉实际上的难题。只是简单的实现了远程遥控云台,说起来是云台倒不如说是一个监视器。后续如果感兴趣的话,确实可以自己设计一个云台玩一玩。随着工作的这几个月,越来越觉得自己一直再做一些配置寄存器的活,这种活就是比较麻烦,实际上愿意花时间是没啥难度的,程序开发的难点还是在于算法。