Hackaday.io上的树莓派项目-开启微型无人机3.0的电源
收藏
分享
脑图
Hackaday.io上的树莓派项目-开启微型无人机3.0的电源
关于项目
项目描述:Micro Drone 3.0 是 Indiegogo 上非常成功的众筹项目,它向人们承诺了一台小型但又灵活又快速的四轴飞行器,并配有用于录制视频和 FPV 的无线摄像机。他们交付,我认为这是相当不错的,但有一些事情,我认为我们可以改善。
项目图片
项目详情
你为什么从事这个项目?
这很有趣,我着迷于机器人,车辆,特别是小的东西。
我想知道 "幕后" 发生了什么
我想了解更多关于控制理论, 以及需要什么才能让一些东西留在空中
定制和改进产品,解决产品的不足
我想有一个无人机,我可以用于航空摄影,在那里我不必担心这么多的控制,但更多的得到拍摄,但也不要花费数千美元在无人机上。
为什么 MD3.0 而不是 *插入随机其他无人机*?
这是负担得起的(不是太便宜,但也不是1000美元以上的野兽)
它比更大的无人机是安全的: 我是一个努布无人机传单, 所以我宁愿让这一个从天上掉下来, 而不是一个更大的模型
质量合理
它的强大到足以携带一些(非常)小的有效载荷
MD3.0 的缺点是什么?
它缺乏感官输入, 以更多的 "高端" 功能, 如高度保持, gps 锁等
固件是闭源的,因此无法调整
你在想什么样的模组?
备用(开源)固件,这将启用更多功能(fx. acro 模式)
添加指南针 + 气压计, 用于了解标题 + 高度
使用超720p@30fps镜头(110 度)将相机1080p@30-60p 升级至 1080p@30-60p
背后的故事
首先,首先要打开无人机,看看事情是如何设置的。如果一个电机端口上的 Mosfet 不会吸烟, 我可能不会开始摆弄它。
不幸的是,似乎有些人面对这个与他们的无人机,因为我见过一些抱怨的微型无人机3.0谷歌+组围绕它。无论如何, 我已经通过电子邮件发送了极端传单的问题, 他们已经迅速运送了更换 Pcb 免费!谢谢 Ef!!:-)
简言之,我最终有了一个多余的PCB,除了单个电机的驱动器外,其他所有工作都或多或少,这使得它成为逆向工程师的完美人选。
宏伟计划
为了开始这个项目,我有以下计划,看看是否可行:
看一眼PCB,试着推断出组件
研究和识别每个组件
研究其他无人机是否也使用这些组件
尝试找出组件之间的布线(在结束时想出某种原理图)
确定与微控制器接口的方法,以便能够编程(如果可能,并进行调试)
尝试备份原始固件(如果可能)
创建一个小固件,确认我的代码在 MD3.0 上运行!
硬件
在刮掉PCB上的胶水,并读取不同IC的文本后,无人机的3个主要组件是:
STM32F031K4: ARM Cortex-M0 微控制器,带 16K 闪存和 4K 内存
MPU-6050:带 MEMS 运动跟踪的六轴陀螺仪 + 加速度计
XN297: 2.4Ghz RF 芯片,用于与发射器通信
一些 LED、电机驱动器等。
其他具有类似硬件的无人机的研究
经过一下搜索,事实证明,至少有几个无人机使用相同(或相当相似)的硬件组件集,包括欢呼CX-10,所以肯定有希望得到的东西启动和运行。通读这些线索,看看 github 项目,给了我一些鼓励,我并不是完全一个人试图找出的东西,所以会有一些人伸出援手。
一般来说, 我对 RcGroup 的 Rc 极客社区印象深刻, 那些家伙真的知道他们在说什么!2007年初,我加入了这个网站,当时我想在自主的太阳能滑翔机上工作,但像过去一样,生活接管了,这个项目从未实现。滑翔机的框架与它 2 米的翼跨度确实使一个伟大的灯罩, 虽然...我仍然没有完全放弃希望...
与微控制器接口
要弄清楚在 STM32 上运行一些代码需要付出多少努力,我必须研究一下如何连接到它。在查看了PCB一会儿之后,我注意到它上已经破了一些PS(测试点)。
由于我已经设计过几次电子产品,我可以假设这些暴露的 TPs 用于生产测试和芯片编程,因为这也是我设计它时设计它。但是,我看不到一组清晰的标题,有时附带电子元件,这将公开 UART 或 JTAG 接口。我确实注意到一些好奇的丝网在一些TPs 标签 Sc, Rst, Sd, GND 和其他一些我真的不能读, 无论我多么努力。
通过STM32 数据表和硬件应用说明挖掘一点,事实证明,大多数这些 ARM 芯片或多或少地放弃了 JTAG 接口,转而使用较低的引脚数SWD (串行线调试),这需要 3 个引脚:
GND - 有一个共同点(一如既往)
时钟 - 驱动传输的时钟信号(在我们的案例中为 SC)
数据 - 双向数据信号(在我们的案例中为SD)
现在,这只是一个理论,直到这一点。我需要弄脏我的手, 看看我的假设是否正确。
为了开始任何事情,我需要找到一种方法来编程芯片。通常的方式是购买制造商提供的程序员,在这种情况下ST-Link v2,或一些第三方程序员。
因为在这一点上,我非常渴望开始,我不想花时间(或钱)找出在哪里购买这样的设备在丹麦,并等待了几天,直到它到达,所以我开始研究是否有任何工具在我的处置作为程序员使用。以前曾与许多微控制器合作过,包括 Arduino 中的 AVR,我知道应该可以从另一种微控制器中咬出编程协议。
因此,我开始调查,如果我可以只是使用Arduino编程STM32,但搜索不是很有成效。
为了另一个方向,我开始研究其他人如何编程这些STM32没有程序员,并发现很多人已经设法使用 OpenOCD(开放式片上调试器)与SWD,特别是他们设法使用嵌入式板的GPIO引脚,如小猎犬骨,和树莓派这样做。
我碰巧有一个树莓派1B在手,所以我迅速获取最新的Raspbian发行,安装了编译器和依赖项,并遵循了一些优秀的指南,如何开始与设备通信。
因此, 焊接到 Tps 上后, 连接到我的树莓派的 Gpio 端口, 我准备开始:
沟通
这是大约晚上11:30(晚上7点左右开始),所以我有点累,所以当天的目标是能够上传自己的固件,并闪烁LED(连接到STM32的PA1端口)。
有了 OpenOCD,我设法让基本通信启动并运行,没有汗水,当我启动它,它把设备进入一个"halt"模式,它也启动了一个gdb服务器,我可以附加我的ARM gdb到,所以调试代码也是可能的。
作为一个"条纹目标"之前开始混乱固件,我想采取现有固件的转储,以便能够恢复它。不幸的是,我发现闪光灯是读取保护,所以它是不可能的读出来。就是这样...
此时,我不得不在两个选项之间做出决定:
将现有固件放在其上,并尝试分析 IC 之间的信号,以详细了解它们如何通信
擦除闪光灯并测试我自己的固件
我选择了第二个 ,如果由于某种原因,我需要调试信号,我仍然有我的"生产"PCB在四边形,我可以使用跟踪这些信号。
代码
为 STM32 开发可以通过两种方式进行:
使用官方工具链 + Ide: Mdk,这应该是在 Windows 上
转到开源方式: Linux 上的 Gcc + libopencm3 + vim
正如你可能已经猜到的,我再次选择选项2
我提取了最新的裸骨"GCC ARM 嵌入式"工具链,它似乎在将 32 位兼容性包安装到我的 Ubuntu 上后工作,并且还克隆了 libopencm3 示例项目。
任何板的圣杯都是闪烁的 LED,所以这也是我开始的地方。
我编译了示例代码,将 LED GPIO 修改为 PA1 上的代码(我通过查看 PCB 布局来跟踪它),并修改了加载器以设置正确的闪存和内存大小。一旦完成,一个简单的"使;使闪光灯" 给了我一个 "迷你链接. 十六进制" 文件, 我设法上传到微控制器使用 Openocd 。
瞧!MD3.0 正在运行我的代码!
下一步
找出一种通过SWD打印消息的方法:因为我们没有UART,因此对于调试来说,使用不只是LED闪烁是非常有用的,尤其是当我们读取传感器,RX数据时:-)
跟踪 STM32 和 MPU+RX 之间的连接。
尝试更深入地了解备用固件。似乎有两个选择,这是最少的努力:乐队或多维。将需要尝试编译它们,重新映射 PIN,看看是否缺少任何其他内容。一旦工作,然后真正的乐趣开始
评论
0 / 100
查看更多
1503881740
2020-08-21
778
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号