ardupilot设置指南
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
介绍
需要的部件
∙一块ArduPilot Mega 板
∙一个带有连接器的ArduPilot Mega IMU 板
∙一个MediaTek GPS 模块或uBlox GPS 模块。
(与适配器一起订购,并为ArduPilot编程).
∙双母头舵机线,数量为ArduPilot Mega 控制的通道数加1。
基本设置为4通道,但APM 可最多控制8个通道。
其中一个通道用来控制ArduPilot Mega。
∙用来无线遥测的两个Xbee 无线模块和两个适配器。
我们在空中使用这个Xbee,地面使用这个Xbee和这个天线. 可以在空中使用这个XtreamBee 适配器,并地面使用Sparkfun USB 适配器; 或者可以使用两个XtreamBee 适配器,在地面上的那个使用一条FTDI 传输线连到电脑上。
你还需要一个至少5通道的遥控设备,一个烙铁,一条mini USB线,当然还有一个能飞的东西!(我们偏爱EasyStar和SkyFun飞翼).
方法
仔细阅读说明书!某一天自驾仪将成为一个能在沃尔玛买到的即插即用设备,但可惜不是现在。
飞行器各不相同,而作为一个开源项目我们尽可能支持广泛的硬件配置。
这就意味着在飞行之前你必须配置自驾仪。
一旦你配置好,你还需要根据自己的飞机来调整自驾仪。
采用循序渐进的方法,也就是说,首先处理基本问题,每次只改变一到两个设置,然后测试是否合适,在进行下一项调整。
另外重要一点是只有在理解之后再做尝试。
在还没有良好理解和阅读注意事项之前使用使用默认设置。
反复阅读基本章节。
保留以前的版本,这对排除问题是很有用的,或者也可以恢复到以前正常工作的版本。
如果存在疑问,在飞真机之前使用模拟器!
连接到电脑上
APM 使用一条miniB USB 数据线。
如下所示插到板子上:
当吧你的APM 用USB 数据线连到电脑上时,Windows 7 将识别FTDI USB转串口芯片并安装正确的驱动。
如果没有识别,或者你使用早期版本的Windows,你需要从这里下载和安装正确的驱动。
安装好之后,重启电脑,再次插上数据线。
电脑将识别芯片,并在Windows 设备管理器里面显示,如下所示(你的COM 端口可能序号不同,它是Windows 根据你连接过多少其他的设备而分配的)。
那就是你用来与APM 交互的COM 端口。
现在就可以使用APM 了!
下面是根据设置遥控设备配置APM 的说明: 1连接遥控接收器和舵机
2设置正确的舵机运动方向
遥控设置和飞机设置都各不相同,你经常会发现一个或几个舵机是反向的。
除了编辑配置文件并重新加载程序之外,你还可以使用IMU板上的拨动开关来调整舵机方向。
大多数用户会使用默认设置,即所有开关都朝下。
从左到右(左侧是靠近滑动开关的那一侧)分别是横滚、俯仰、方向和混控模式。
对于横滚、俯仰和方向,往下是正常,往上是反向。
对于混控模式,往下是普通模式,往上是升降副翼/V尾。
当使用升降副翼/V尾时,前三个开关分别是升降副翼反向,升降副翼通道1反向和升降副翼通道2反向。
下面是我的Skyfun 三角翼的一个例子:
油门通道反向仍然必须在配置文件中设置——我们不希望某人意外拨动一个开关就导致油门升到最大!
设置舵机方向
正确设置舵机方向的最简单的方法是在开机之后。
当APM处于稳定模式,控制舵面移动的方向应该保持飞机水平直线飞行。
拿住飞机,确保翼面在手动飞行模式下正确移动(如果不正常,在发射器上设置舵机反向)。
然后切换到稳定飞行模式(你可以使用命令行解析器来设置该模式,将在后文中介绍)
当你前后倾斜飞机,升降舵应该相应移动(当机头向下倾斜时,升降舵应该抬起,反之亦然)。
如果舵机运动方向错误,拨动第二个开关,如上表所示。
当你移动发射器摇杆时,舵机在稳定模式下的运动方向应该和手动模式下的方向一致。
对副翼做同样到操作。
首先检查在手动模式下是否正确,然后检查稳定模式。
当你倾斜飞机使它向左倾斜转弯时,右侧副翼应该向上运动,左侧副翼应该向下运动。
如果方向反了,拨动第一个开关。
如果需要反向油门通道,将APM_Config.h文件中的这一行改成"ENABLED":
# define THROTTLE_REVERSE DISABLED
APM 软件
从APM 2.0 开始, 上传APM 固件最简单的方法是使用任务规划器。
可以在这里下载最新的APM 任务规划器(叫做APMPlanner(xxx).zip)。
解压文件,运行ArdupilotMegaPlanner.exe。
它将提示你选择代码目录,我们将在以后介绍。
直接单击"OK" 按钮。
这将在你屏幕的顶部打开一个菜单条。
如果你插上了APM,将显示它连接的串口。
(如果你有好几个串口,所有都将显示。
如果你不确定哪个是连着APM 的,检查Windows 设备管理器)。
确保波特率(baud rate)设为115200。
在Action 菜单中,选择Upload Firmware, 然后单击"Update Check"。
任务规划器将从网上获取最新的固件选项。
通常会列出好几种固件选项: APM1280 或APM2560 板子的默认固件,和每种板子用来与在Xplane 里模拟的固件版本。
选择需要的一种。
然后选择你的板子类型(APM1280 或APM2560), 单击"Upload Firmware", 固件将上传到APM 板子里。
命令行解析器和设置/测试模式
∙设置
遥控设置
飞行控制模式
检查舵机反向设置
∙记录
∙测试
命令行解析器(Command Line Interpreter,CLI)是你设置和测试APM的主要方式。
它有
点类似于传统的DOS提示符。
你必须使用这个解析器来设置APM,然后才能够飞行。
注意在改变滑动开关的位置之后你必须重启板子,它才能够识别设置并加载正确的模式。
(这意味着在使用CLI并将开关切回飞行模式后,必须在飞行前将板子断电并重新上电。
)
CLI的使用步骤包括以下三步:
1将IMU板的滑动开关拨到靠近舵机插头的位置,如图所示。
(在准备飞行时需要将其拨回靠近拨动开关的位置)
2用USB/FTDI传输线将板子与电脑相连
3如图所示,单击Arduino工具栏上串口监视器(Serial Monitor)按钮,打开串口监视器窗口
(确保串口波特率为115200,行结束符(line ending)选择"Carriage Returns"):
现在你可以在串口监视器上放的输入框内输入命令,然后按回车键。
输入"exit" 退出。
这里我输入"help" 查看命令列表:
起始命令包括:
∙"logs": 记录回读信号/设置模式。
(在飞行之后使用)
∙"setup": 初始设置模式
∙"test": 测试模式
设置
设置过程根据你的遥控设定和需要的飞行模式配置APM。
输入"setup" 然后按回车键进入该模式。
在飞行前必须进行遥控设置和飞行模式设置。
你还应该测试GPS锁定(在测试模式中使用gps命令),这通常需要在空旷的户外进行。
允许的设置命令包括:
∙"reset": 重置APM为默认设置
∙"radio": 设置遥控
∙"modes": 设置触发开关每个位置对应的飞行模式
∙"show": 显示EEPROM中当前所有设置
遥控设置
在这个模式中你必须移动发射器摇杆到它们的极限位置,如下所述:
移动右摇杆到右上角,再到右下角,再到左上角,再到左下角。
对左摇杆重复以上操作。
移动顺序其实不重要,重要的是每个摇杆都碰到了4个角。
这是一张典型的遥控设置过程的截图:
注: 如上图所示,你连接的通道的读数的最小值应该在1000-1300左右,最大值在1900-2000左右。
(如果读数恰好为1000和2000,那就是说通道没有连上。
) 如果你的读数都在1500左右,可能有三个原因:
4在测试过程中你没有将摇杆移动到极限位置(4个角落)
5你的接收连接不正确,可能是插反了,或者插错引脚,或者没有连上
6你的APM板子版本较老,需要更新PPM固件。
参阅相关说明
飞行控制模式
下面叙述如何设置飞行模式:
在CLI中,进入设置模式。
输入"modes" 并按回车。
现在当你拨动遥控上的开关时,你可以看到窗口中显示对应的飞行模式。
如果你想改变飞行模式,使用发射器上的―方向/副翼‖摇杆。
将摇杆左右移动,飞行模式就会变化。
输入回车键保存设置并退出。
参见这个例子:
这里是一个视频教程:
检查舵机反向设置
现在是检查舵机反向设置的好时候。
相关说明在这里。
记住如果你的飞机有升降副翼(飞翼或三角翼),你还要用拨动开关设置混控。
如果你的飞机是普通飞机,但是发现通道1和2有某种关联,那就意味着你不小心设置了升降副翼混控。
将拨动开关拨到下方,切回普通模式。
记录
该模式允许你读取和管理记录在16MB数据记录器中的飞行记录文件。
注: 你必须在使用记录功能之前先执行erase命令。
没有使用erase命令将导致不正确的记录和其他问题。
∙"dump (n)": 读取记录"n"
∙"erase": 清除所有记录
∙"enable (name) or all": Enable logging "name" or everything
∙"disable (name) or all": Disable logging "name" or everything
测试
你可以在交互测试模式中测试你的硬件和设置。
请参阅详细说明。
APM测试套件
APM附有12个测试功能,可以检查所有主要的子系统。
因此你可以一个一个检查它们是否工作正常。
要使用测试功能,在CLI中输入"test",然后输入"help",可以看到所有的测试功能:
可用的测试包括:
∙"radio": 显示每个遥控通道的输入读数
∙"gps": 显示GPS模块的当前数据。
如果GPS没有锁定,那么结果是0
∙"imu": 显示当前的x,y,z轴姿态
∙"gyro": 显示偏航陀螺和加速度计的读数
∙"battery": 显示当前的电池电压(需安装电压监视器)
∙"relay": 测试板上的继电器
∙"waypoints": 显示当前设置的航点
∙"airspeed": 显示差分气压传感器数据(需安装差分气压传感器)
∙"airpressure": 显示板上的绝对气压传感器的数据
∙"compass": 显示地磁计的数据(需安装地磁计)
∙"xbee": 显示从Xbee无线模块读入的数据(需安装Xbee模块)
∙"eedump": 导出板上EEPROM存储器的当前数据
遥控输入
说明: 照此说明连接遥控接收机和APM。
打开发射器,移动摇杆。
输入以脉宽调变(PWM)值的方式显示。
输入则以舵机偏移角度的方式显示。
在串口控制台中输入回车退出本测试。
典型数据:
故障检修:如果所有的显示值都不随你的遥控输入变化,可能的原因包括: 1你没有配置遥控输入。
参见相关说明。
2遥控连线不正确。
(插反了?)
3你拿到的可能是早期有问题的固件。
你可以自行升级固件,请参考本说明。
(译注:国内版本应该不存在该问题)
GPS输入
说明: 本测试显示GPS模块的输出。
该模块应该插在APM板的GPS端口上。
通常情况下,只有在户外空旷地点测试GPS才有意义。
某些GPS模块在木制建筑内也可以锁定卫星(如果GPS与天空之间没有间隔太多层的话,但是结果不可预料)。
当GPS模块冷启动时(一天以上没有通电),通常需要约15分钟才能锁定卫星。
典型数据:
故障检修:如果你在户外很长时间(15分钟以上)都无法锁定卫星,可能的原因包括: ∙如果你使用MediaTek GPS 模块, 需要在上电之后重置APM 板,才能正确发送配置字串。
我们未来会修正这个问题,但现在应在测试GPS之前按一下重置按钮。
∙你确定将GPS 插到APM 板上,而不是IMU 板上那个差不多的端口(写着"NO GPS!")上?
∙传输线有问题(检查连接器的针是否弯曲)
∙GPS 固件损坏。
重新加载固件的说明在这里:uBlox, MediaT ek
∙你使用的GPS模块不受支持。
当前仅支持DIY Drones 的uBlox 和MediaTek 模块
IMU 输出
说明: 本测试记录板子移动时,DCM算法的输出结果。
当传感器校准时,IMU 板上的LED 将快速闪烁20-30秒,然后开始显示数据。
偏航(yaw)数据可能略有漂移,因为它只能根据运动时的GPS数据和/或地磁计(如果使用了的话)数据进行校正,而这些数据在室内通常不正确。
旋转板子时的典型数据(roll, pitch, yaw):
故障检修:如果板子移动时数据不变,可能有电路连接问题,最可能是焊接错误引起的。
检查焊点!
原始传感器输入数据
说明:本测试显示陀螺仪(左侧三列)和加速度计(右侧三列)的原始数据。
记住陀螺仪显示每个轴向上的旋转速率,而加速度计显示绝对角度。
因此当停止旋转板子时,陀螺仪将回到初始数据。
样例数据:
Battery
Updated Mar 25, 2011 by hazy...@ 说明: 本测试仅在如此说明所述的电压传感器之后有效。
四个数据位是四个分压器的输出值。
如果你照上述说明所述连接电池,这将表示电池每个电芯的电压——3S电池有3个电芯,
4S电池有4个。
由于电芯是串联的,因此最后一个电池电压就是电池组的总电压。
在下图所示的例子中,我使用了一个3S 11.1v 电池(实际上是11.4v)。
第4个分压器没有使用,所以可以忽略那一列数据。
样例数据:
继电器
说明: 注:这不是beta版代码中的功能,请等待...本测试仅在每5秒时切换继电器的开关状态。
典型数据:
你应当每5秒听到一个微弱的声音。
再次声明,本测试在当前代码中不可用。
Waypoints
Updated Mar 25, 2011 by hazy...@ 说明: 本测试假设你已经使用航点规划器输入了任务命令并已保存到EEPROM 中。
此时,将显示EEPROM 中的命令。
一共可以有256个命令。
数据显示当前内存中的所有数据的每一字段,每个字段的涵义请参见命令指南。
在航点中,高度数据的单位为厘米(因此100m 将显示10000).
样例数据:
AirspeedTest
Updated Mar 25, 2011 by hazy...@ 说明:本测试假定你已经按照说明安装了空速传感器。
测试传感器时,轻轻地向差分压力传感器的上管中吹气。
样例数据:
Airpressure
Updated Mar 25, 2011 by hazy...@
说明:本测试根据当前海拔高度校准气压传感器,并输出相对海拔高度(如果上下移动板子的话)和原始数据。
典型数据:
MagnetometerTest
Updated Mar 25, 2011 by hazy...@ 地磁仪测试
说明:
1.0代码不支持地磁仪。
但如果你有地磁仪的话,可以用\libraries\APM_Compass\examples 目录中的APM_Compass_test文件测试。
将该固件传到你的板子上,通过串口终端观察数据。
串口波特率为38,400。
连接地磁仪的说明在这里.
(注: 目前板子的方向标志是错的。
正确的标志请参见该帖。
)
典型数据:
故障检修:
记住地磁仪只关注方向。
如果方向数据反了,可能是你把板子上下颠倒了(即将地磁仪焊接到板子上那样)。
不用担心——在设置里面可以配置。
Xbee 测试
说明:
根据该说明连接Xbee 模块。
确保APM 通过USB 与电脑相连,并且地面Xbee 模块也通过USB 与电脑相连。
在CLI中,输入"test" 进入测试模式,然后输入"xbee"。
在PC上,启动X-CTU 工具。
确保X-CTU 中的串口设置为连接到地面模块的串口,波特率为57600 bps (默认值) 或你的APM 端口的设置。
(在下图中,我将Xbees 和Port 3 的波特率都设为38400). 样例数据:
在APM 端,串口监视器应当显示下面的数据:
在PC 端, X-CTU 工具应当在终端窗口显示类似下面的数据:
你也可以测试距离。
开始测试,你应该可以看待类似下图的数据:
在CLI中按回车键退出测试。
附注:
如果你想修改Xbee 模块的速率,可以在APM_Config.h 文件中设置。
在文件中加上这行,并将38400 改为你想设置的速率:
#define SERIAL3_BAUD 38400
EEPROM
Updated Mar 25, 2011 by hazy...@ 说明: 本测试显示EEPROM中的所有数据。
这可能对调试问题有帮助。
因此如果某人要你的EEPROM 数据,你可以导出、复制并粘贴到其他文件中。
样例数据:
#summary 原始GPS数据
本测试显示GPS 模块的原始输出数据。
如果你在常规GPS 测试中遇到问题,本测试可能对调试有所帮助。
对多数用户不推荐, 仅用于底层GPS 调试。
如果你希望以ASCII 方式显示数据, 在Test 标签页中修改这行:
Serial.print(incoming,BYTE);// will output Byte values
to this...
Serial.print(incoming,ASCII);// will output ASCII values
GPS 选择指南
硬件安装说明在这里.
// *解释*
// Diydrones是一个开源站点,不同人使用不同的设备。
// 因为可以使用不同的 GPS 模块,所以需要告知 APM 你使用哪一种。
//
// *说明*
// 查看下面的 GPS 模块列表, 查找你的模块,按一下方式定义
// 例子" #define GPS_PROTOCOL GPS_PROTOCOL_UBLOX " 请注意只修改
// "GPS_PROTOCOL_UBLOX "部分,并且你的设置应该完全相同
//
// *可用选项*
// GPS_PROTOCOL_NONE 没有安装GPS
// GPS_PROTOCOL_IMU X-Plane 接口或 ArduPilot IMU.
// GPS_PROTOCOL_MTK MediaTek GPS.
// GPS_PROTOCOL_MTK16 MediaTek GPS 1.6版固件
// GPS_PROTOCOL_UBLOX UBLOX GPS
// GPS_PROTOCOL_SIRF SiRF-based GPS,二进制模式. 未测试
// GPS_PROTOCOL_NEMA NEMA格式,国内MTK模块
// ******************
// *SELECTED OPPTION*
#define GPS_PROTOCOL GPS_PROTOCOL_UBLOX
// ******************
空速传感器指南
硬件安装说明在这里.
// *解释*
// 空速传感器帮助 APM 更精确地计算空速,因此能够更好地处理风和空速计算
//
// *说明*
// 因为空速传感器是一个附件,你需要告知 APM 安上了一个空速传感器
// 如果你正确安装了一个空速传感器,则将"#define AIRSPEED_SENSOR DISABLED"
// 改为 "#define AIRSPEED_SENSOR ENABLED"
// *可用选项*
// #define AIRSPEED_SENSOR DISABLED
// #define AIRSPEED_SENSOR ENABLED
// *****************
// *SELECTED OPPTION*
#define AIRSPEED_SENSOR ENABLED
// *****************
遥测指南
硬件安装指南在这里。
1) 速度选择
// *EXPLAINED*
// Telemetry is information that is sent over a wireless
link between the UAV and your laptop, this is used when a GCS(Ground Control Station)
like HK*GCS or QGCS is
// used and it sends that information through "Telemport" on your APM through a Xbee module(wireless module see link above)
//
// *INSTRUCTIONS*
// Because telemetry is a additional add on you need to
tell APM that you are using one,
// if you followed the instructions in the link above
exactly then you need to do the following.
// The Xbee modules has different speed settings
(Baudrates) the default baud rate for telemetry is 57600, if you do not have enough
knowledge yet we
// Suggest you use the default baud. simply change the
statement "#define SERIAL3_BAUD 57600"to whatever speed you would like if you
chose to change it.
//
// *AVAILABLE SPEED OPTIONS* NOTE: WHEN CHOSING A BUAD SPEED FOR YOUR TELEMETRY YOU NEED TO SET UP YOUR
// #define SERIAL3_BAUD 9600 XBEE TO THE SAME SPEED AS WELL AS YOUR GCS(gound control station)
// #define SERIAL3_BAUD 19200 INSTRUCTIONS CAN BE FOUND IN LINK ABOVE
// #define SERIAL3_BAUD 38400
// #define SERIAL3_BAUD 57600
// #define SERIAL3_BAUD 115200
// ******************
// *SELECTED OPPTION*
#define SERIAL3_BAUD 57600
// ******************
2) 端口选择
// *EXPLAINED*
// The telemetry can be set up to exit the APM board through 2 ports "0" and "3"
// "0" being your USB and "3" being your TelemPort because of this you need to tell APM through wich port
// you want the Telemetry(information) to go.
//
// *INSTRUCTIONS*
// Simple change the following statement from"#define GCS_PORT 0" to "#define GCS_PORT 3"
//
// *AVAILABLE OPPTIONS*
// # define GCS_PORT 0 (APM will send information through the mini usb port)
// # define GCS_PORT 3 (APM will send information through the Telemport to be sent wirelessly by Xbee module)
// ******************
// *SELECTED OPPTION*
#define GCS_PORT 3
// ******************
3) 地面站协议选择
// *EXPLAINED*
// Now that you have your telemetry speed selected and you have chosen the port you want the information to exit you must now select // what GCS Protocol you want to use. The Protocol is the different Information formats used by different GCS software and you need to select the one you want.
//
// *INSTRUCTIONS*
// Look at the list provided below and simply change the statement from
// "#define GCS_PROTOCOL GCS_PROTOCOL_NONE" to "#define GCS_PROTOCOL GCS_PROTOCOL_(your choice)"
//
// *AVAILABLE OPPTIONS*
// GCS_PROTOCOL_NONE No GCS output
// GCS_PROTOCOL_STANDARD standard APM protocol
// GCS_PROTOCOL_SPECIAL special test protocol (?)
// GCS_PROTOCOL_LEGACY legacy ArduPilot protocol
// GCS_PROTOCOL_XPLANE HIL simulation ground station
// GCS_PROTOCOL_IMU ArdiPilot IMU output // GCS_PROTOCOL_JASON Jason's special secret GCS protocol
// ******************
// SELECTED OPPTION
#define GCS_PROTOCOL GCS_PROTOCOL_LEGACY
// ******************
电池监视配置
硬件安装指南在这里
配置
1.1 BATTERY_EVENT 开/关
// *解释*
// 电压传感器用来精确监视飞行时的电池状态。
//
// *说明*
// 在安装好硬件之后,需要告知 APM 你的设置。
// In your Config.h file you need to Enable your voltage monitoring, to do
// this you need to change the statement from
// BATTERY_EVENT "DISABLED" to "ENABLED"
//
// *AVAILABLE OPTIONS*
// BATTERY_EVENT DISABLED
// BATTERY_EVENT ENABLED
//
// *****************
// *SELECTED OPTION*
#define BATTERY_EVENT ENABLED
// *****************
1.2 BATTERY_SELECTION
// *EXPLAINED*
// Because everyone uses different batteries you need to tell the APM what sort of batteries
// you use, unfortunately there are too many types of batteries and we cannot #define all of
// them so we only have a selection between most common used ones.
//
// *INSTURUCTIONS*
// The most commonly used batteries is a 3cell(3S) or a 4cell(4S) to find out what you have look
// On the label or spec sheet of your battery you will see a descriptions that looks something
// like this ”20-30C DISCHARGE 5000mah 4 cell 14.8V”that means that you have a 4 cell(4S)
// battery and you need to tell the APM that. Here is how change the statement form
// BATTERY_TYPE 0 (default/3S) to BATTERY_TYPE 1 (4S)
//
// **************
// *SELECTED OPTION*
#define BATTERY_TYPE 1
// ***************
1.3 LOW_VOLTAGE_SETTING
// *EXPLAINED*
// Exactely as the title suggests ,pick a voltage that // you consider as a low voltage.
//
// *INSTRUCTIONS*
// Change statement from #define LOW_VOLTAGE 11.4
// to any voltage you consider as low for your battery type.
//
// *****************
// *SELECTED OPTION*
#define LOW_VOLTAGE 11.4
// *****************
//
1.4 INPUT_VOLTAGE
*EXPLAINED*
In order to insure more accurate voltage readings you
// can measure the Voltage on the 5V rail on your APM oilpan
// and #define it here.
//
// *INSTRUCTIONS*
// NOTE:you need a multimeter for this.
// Take the multimeter and measure the voltage
// with the negative probe on the bottom row of the servo
// connectors on APM board and with the positive probe on
// the 5V rail on oilpan and insert the reading here. // NOTE:if you have no multimeter insert 5V (defualt)
// *******************
// *SELECTED OPTION*
#define INPUT_VOLTAGE5.0
// *******************
1.5 VOLT_DIV_RATIO
(under constuction)
//#define VOLT_DIV_RATIO 3.0
连接Xbee 无线模块
安装无线遥测并不困难,并且它能极大地增强UAV的能力。
我们推荐Xbee 无线模块,它
的控制距离能超过1英里。
首先要记住的是使用的Xbee 模块的频率应该与遥控设备的频率不同。
如果你用72Mhz 遥控,你可以使用2.4Ghz Xbee 模块。
在此配置下,我们使用Xbee Pro 无线模块。
但注意仅在希望使用900Mhz 视频传输时才用 2.4Ghz 的Xbee 设备,否则900Mhz 的Xbee 要好一些,它的距离更远。
如果你使用2.4Ghz 遥控,就应该用900Mhz Xbee 模块。
在此情况下,我们在飞机上使用这个Xbee Pro 和天线, 地面上使用这个Xbee Pro (和这个900Mhz 天线)。
所有的Xbee 模块都需要使用适配器与APM 相连。
可有如下两种选择: ∙飞机上用一个DIY Drones XtreamBee 适配器, 地面/电脑上用Sparkfun USB 适配器。
∙如果你有FTDI 传输线, 买两个DIY Drones XtreamBee 适配器.
设置Xbee 模块
Xbee 模块默认速率为9600bps,必须修改为APM 的串口速率57600bps。
(如果你想用不同的速率,在APM_Config.h 文件中加入这一行#define SERIAL3_BAUD [希望的速率]。
) 依次将每个模块连接到Sparkfun USB 适配器板上,将USB线插到电脑上,使用Digi的X-CTU 工具选择正确的串口并它们通信。
记住首先将改工具的波特率设为9600bps 来与新的Xbee 模块连接, 并在修改速率之后,再相应的改变X-CTU 的串口速率。
你还需要为模块指定唯一网络标识符(VID),这样它们才能配对。
可以使用任意3个数字,并保证两个模块的设置相同。
(注: 如果你的飞机与其他UAV一起飞行,检查网络标识符,不要与其他人的重复。
)
下图显示了当你点击X-CTU 的Modem Configuration 标签页中的"Read" 按钮时的截图(例子中我们将VID设为999 ):
注: 最近的Xbee 模块可能有不同的固件。
X-CTU 可能尝试下载新固件,这也可能失败(取消下载). 如果你的Xbee 模块报告为一个XBP09-DM (而不是正确的XBP09-DP), 执行以下操作:
在Modem Configuration 页中,从下拉菜单中选择XBP09-DP 并写入模块。
模块将工作一会儿,然后报告一个错误。
切换到第一个选项页,选择9600baud 然后读取,这应该能工作。
然后切回Modem Configuration 页, 读取模块,应该报告XBP09-DP。
按你需要的修改VID 和波特率(我的是999 和56k)然后写入。
现在模块应该正常工作了。
连接空中的Xbee 和APM
向前的插针:
如果你想将Xbee 模块安在飞机前方,你可能希望插头指向前方。
在此情况下,将4个分离的插针焊到IMU 板的"Telecom" 端口上,如图所示:
现在将黑色的塑料基座从插针上剥离出来(可能有点紧,但摇晃钳子可以办到),并弯曲90度,如图所示: (译注: 直接用弯针就行了,外国人闲的蛋疼)
向下的插针:
如果你打算将Xbee 安在APM 后方,你可能希望插头指向下方,这也不会太占地方。
该
情况下,将它们焊到板子底部。
这是EasyStar 上的一个例子:
现在APM 和一个Xbee 无线遥测模块在飞机上安好了:
线路连接
将XtremeBee 适配器(其上插着Xbee 模块) 与IMU 板通过四根杜邦线相连,如图所示。
适配器应当处于"Master" 模式. ("Master" 和"Slave" 就是交换TX 和RX 线).
你也可以用一个两端都是母头的舵机线连接其中3个插针,连线可以稍微干净一点。
如图所示:
地面端
如果你在地面端使用XtreamBee 适配器,将其连接到一条FTDI 传输线,并插到USB扣上,如图所示。
适配器同样应该处于Master 模式.
如果你使用Sparkfun USB 适配器, 只要简单地用USB线连接,如图所示:
连接测试
如果你在电脑上打开一个终端程序(也可以使用Arduino IDE 的串口监视器),选择正确的串口,波特率设置为刚才Xbee 模块的波特率(默认为57600)。
之后,你可以看见APM 的遥测数据。
代码中有"Serial3.println" 的时候, 都将通过Xbees 向地面发送数据。
你可以
记录任何想要的数据。
你也可以打开地面控制软件(设置正确的串口和波特率),它将开始显示APM 的数据。
此外,如果你想测试Xbee 连接的距离,将飞机上的Xbee 模块的RX 和TX 脚相连,然后执行X-CTU 程序的距离测试功能。
我们使用的模块距离应该在一英里左右。
测试代码
ArduPilot Mega有四个串口,因此普通的Arduino 串口命令需要一个标识符来指示你想读写哪个串口。
例如: Serial1.print(), Serial2.print()。
连接到USB/FDTI 的串口为Serial0. 连接到无线模块的串口为Serial3.
这是一个简单的演示程序,将向所有四个串口打印数据,以便检查Xbee 连接是否工作。
下面是使用说明:
1)将Xbee 插到一个USB 端口,APM 插到另外一个端口。
使用Arduino 加载演示程序, 然后在Arduino IDE 中将串口设置为连接到APM 板的串口。
然后打开串口监视器,设置波特率为38400。
你应当看见重复的"Port 0",如图所示,显示APM 的USB 端口发送的数据:
2)现在将串口切换到连接到Xbee 的串口,重新打开串口监视器。
你应当看到重复的"Port 3", 显示APM's 的Xbee 端口发送的数据:
Xbee 变砖后的修理。