|
AR.Drone四轴飞行器自带的导航板上已经有: 超声波高度计 + 加速度计 + 陀螺仪
但是超声波高度计只有6米范围, 超高后在风较大时会自己飞跑(Flyaway), 气压高度计是一个很好的补充.
要按航线飞行/自动返航, 还得有: 电子罗盘 + GPS
于是想DIY一个AR.Drone的附加导航板: 气压高度计 + 电子罗盘 + GPS
买了块Arduino Nano, 它是基于开放原代码的超小 I/O 接口平台,带USB口, 很适合用于扩充更多的AR.Drone外设. 通过USB口与AR.Drone通信(在AR.Drone的Linux上产生一个串口设备/dev/ttyUSB0):
(原文件名:Arduino_3.jpg)
先把洞洞板规划好, 把气压高度计模块和电子罗盘放到Arduino板子插座下面, 以节省空间, 也可以防止气流对气压模块直吹:
(原文件名:PCB.PNG)
图中左边那个白色小块(上面带两个小眼)是MS5607B高分辨率(20厘米)气压高度计模块, 带I2C和SPI两种接口.
个子很小, 才5*3*1毫米, 我费了老大劲才焊上接线(我焊功很差的说, 千万别让我Show洞洞板背面. 呵呵!).
图中右边是电子罗盘HMC5883L模块(眼都看不清HMC5883L的密密管脚. 直接到淘宝买那种带PCB焊好的模块, 省事), 也是I2C接口:
(原文件名:IMG_2218.JPG)
插上Arduino Nano, 接上USB线(mini-USB口). 右边的空位是准备放C370 GPS的:
(原文件名:IMG_2220.JPG)
从USB串口得到电子罗盘HMC5883L输出:
X:-0.34 Y:-0.06 Z:-0.90
Heading: 9.54
X:-0.35 Y:-0.05 Z:-0.91
Heading: 8.75
X:-0.34 Y:-0.06 Z:-0.90
Heading: 9.22
X:-0.34 Y:-0.06 Z:-0.90
Heading: 9.87
X:-0.34 Y:-0.06 Z:-0.90
Heading: 9.22
X:-0.35 Y:-0.06 Z:-0.90
Heading: 9.12
Heading方向度数很稳的说.
气压高度计MS5607B输出 (放在茶几上):
A: 45.47m
A: 45.55m
A: 45.47m
A: 45.39m
A: 45.55m
A: 45.64m
A: 45.30m
A: 45.55m
A: 45.72m
A: 45.30m
A: 45.72m
气压高度计MS5607B输出 (放在茶几下的地面):
A: 44.80m
A: 44.72m
A: 44.97m
A: 44.63m
A: 44.72m
A: 44.63m
A: 44.80m
A: 44.88m
A: 44.97m
A: 44.80m
A: 44.72m
茶几上和茶几下的变化还挺灵的!
接下来要完成软件部分.
附:
洞洞板上的气压高度计MS5607B的Arduino程序(C语言):
点击此处下载 ourdev_625578EGMAML.zip(文件大小:5K) (原文件名:MS5607B.zip)
洞洞板上的电子罗盘HMC5883L的Arduino程序(C语言):
点击此处下载 ourdev_622127BOCEH6.zip(文件大小:3K) (原文件名:HMC5883L.zip)
Arduino开发工具(编译/上载/串口显示等) 下载:
http://arduino.cc/en/Main/Software
AR.Drone的USB线接法:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4596988&bbs_page_no=1&bbs_id=1025
AR.Drone的USB Host与新设备增加:
http://www.ardrone-fHimems.com/forum/viewtopic.php?f=8&t=829
AR.Drone设备接口(PWM/导航板等)分析, 刷机文件分析:
http://embedded-software.blogspot.com/
AR.Drone SDK 开发手册:
https://projects.ardrone.org/attachments/download/335/ARDrone_SDK_1_6_Developer_Guide.pdf
AR.Drone SDK 源码:
https://projects.ardrone.org/attachments/download/334/ARDrone_SDK_1_6_20110224.tar.gz
AR.Drone Linux内核源码及ARM交叉编译ToolChains (也可以用来编译C程序到AR.Drone上运行, 以扩展AR.Drone的功能):
https://projects.ardrone.org/wiki/ardrone-api/Gpl
AR.Drone API 官方论坛:
https://projects.ardrone.org/projects/ardrone-api/boards
更新:
2011.03.26: 修改气压高度计MS5607B的Arduino程序, 当高度值为负时的显示Bug. |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|