5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 12522|回复: 30

【开源】中国版超低成本基于STM32F4的PaparazziUAV飞控板

[复制链接]
发表于 2016-3-20 16:22 | 显示全部楼层 |阅读模式
本帖最后由 xukejing 于 2016-6-6 11:39 编辑

我最近把我设计的新飞控在ppz官方论坛上开源了,国内玩家可能还不知道,发个帖汇报一下。
这是我设计的超低成本飞控板,叫Paparazzi Hyper X,原件总花费小于200人民币。这个ppz飞控有什么惊人的改变,敢叫 “ultra low cost UAV autopilot board”。首先传感器不再使用昂贵的Aspirin V2.2 IMU,开创性地(zuo shang tian de)使用了了超级廉价的GY-86 10DOF IMU(当然,我不知道GY-86支持ppz以后会不会提高售价)。其次,电源和信号部分做了优化。
虽然廉价,但依然支持各种逆天的自适应导航算法。不管你空中变气动参数,还是空中抛载荷,不用调导航PID,压航线还是那么牛逼哄哄的。
虽然廉价,但完美支持quadshot飞行器(我的地面站里已经有个调好的基于PPZ Hyper X的quadshot固件)。如果你还在纠结怎么实现固定翼和多旋翼模式的转换,试试ppz的代码吧。

ppz官方论坛的首发帖:http://lists.paparazziuav.org/Ne ... -China-td17792.html
地面站和飞控代码编译要用linux系统,我最近部署好一台virtualbox虚拟电脑(以前的那台基于ubuntu14.04的地面站被我玩崩溃了,新整了个基于最新ubuntu15.10的),可以从百度网盘下载:http://pan.baidu.com/s/1bu3wOQ
详细的飞控说明的word文档的下载地址:http://pan.baidu.com/s/1hrhywfE
如果你已经有ppz的开发环境,可以下载我的源代码补丁,放到paparazzi的工作目录中,就可以支持新飞控版了http://pan.baidu.com/s/1bnLnJCN
原理图下载地址:http://pan.baidu.com/s/1bojBSRX

原理图的缩略图:
162535gn822xmwy12n8azw.jpg








欢迎继续阅读楼主其他信息

发表于 2016-3-20 20:07 | 显示全部楼层
此贴必需火
来自苹果客户端来自苹果客户端
发表于 2016-3-20 20:56 | 显示全部楼层
这个可以有,楼主威武
来自苹果客户端来自苹果客户端
 楼主| 发表于 2016-3-20 21:50 | 显示全部楼层
virtualbox虚拟电脑,已部署好paparazzi开发工具,用户名ppz,密码ppz,管理员账号root,密码ppz,可以从百度网盘下载:http://pan.baidu.com/s/1bu3wOQ
源代码补丁,如果你熟悉ppz开发,可以只下载补丁,就可以支持新飞控版了,仍然可以使用你原来的地面站:http://pan.baidu.com/s/1bnLnJCN

Paparazzi Hyper X Autopilot

1 概述
Paparazzi Hyper X 无人机飞控基于STM32F4Discovery开发板设计。基于STM32F407VGT6,最高168MHZ,带浮点计算单元,有192KBRAM1024KBFlash


·                    STMicroelectronics STM32F4VGT6 Cortex M4 MCU

·                    板载 STLinkv2 编程器

·                    板载5V和3V稳压电路

·                    MPU6050 陀螺

·                    HMC5883 磁场计

·                    MS5611 气压传感器

·                    UBLOX GPS NEO 6M

·                    两个3.3V TTL UART (UART3, UART6, 5V 兼容)

·                    一个 I2C3.3V bus (I2C2, 5V兼容)

·                    11个舵机 PWM 输出

·                    4 个状态灯(绿黄蓝红)

·                    1个LIS302DL MEMS 加速度计接在SPI1

·                    6 个ADC 模拟电压采集 (4号口用于电池电压采集)  

·                    8 个遥控 PWM 输入

2 细节特征

10 DOFIMU GY-86
212940mo2u8puzuu8cw8o8.jpg
传感器使用GY-86 IMU板,该板自带5V转3.3V的电路。GY-86(MPU6050-HMC5883-MS5611) 的硬件与 Drotek 10DOF很像,但它们的I2C地址不同,因此需要对PPZ代码做适当改动。MPU6050的地址是7位长度的b110100X,最后一位的X是LSB位,由AD0的逻辑电平决定。在GY86中,AD0被拉低到GND,因此地址是b1101000。因为I2C的数据长度被定义为8位,所以GY-86的7位地址左移一位变成8位后是b11010000,以16进制表示就是0XD0
为了启用GY-86模块,在PPZ的机体配置文件里要加入以下代码


  
File: conf/airframes/myplane.xml
  
  
<subsystem name="imu"  type="gy86_10dof">
  
<configure name="GY86_I2C_DEV"  value="i2c2"/>
  
<define name="IMU_GY86_ORIENTATION_IC_UP"  value="1"/>
  
</subsystem>
  


MS5611与MPU6050并联在I2C2总线上。读MS5611的代码不在IMU的驱动上。如果要启用MS5611,机体配置文件上要插入这句话<definename="USE_BARO_MS5611"/>

启用了还不够,为了使读到MS5611的数据用于定点和导航,以下代码要加入到PPZ的机体配置文件。

  
File: conf/airframes/myplane.xml
  
  
  <modules>
  
    ...
  
     <load  name="baro_ms5611_i2c.xml">
  
     <define  name="SENSOR_SYNC_SEND"/>
  
<define  name="MS5611_I2C_DEV" value="i2c2"/>
  
     <define  name="MS5611_SLAVE_ADDR=0xEE"/>
  
     <define name="MS5611_SEND_BARO_ALTITUDE"/>
  
    </load>
  
  </modules>
  

PPMEncoder编码器

ArduPPM是APM项目里的8通道编码器,现在被Hyper X飞控采用了。ArduPPM程序被运行在一块arduino pro mini上。编码版能直接与接收机插一起的构型是引用(shan zhai)了国内ppz论坛一个大虾的开源方案,欢迎编码板原作者批评指正
ppm1.jpg ppm2.jpg


3 引脚说明
dau board.jpg

  
LED
  
  
Pin #
  
  
Name
  
  
Type
  
  
Description
  
  
Color
  
  
PD13
  
  
LED_3
  
  
Out
  
  
above LIS302DL
  
  
Orange
  
  
PD12
  
  
LED_4
  
  
Out
  
  
left of LIS302DL
  
  
Green
  
  
PD14
  
  
LED_5
  
  
Out
  
  
right of LIS302DL
  
  
Red
  
  
PD15
  
  
LED_6
  
  
Out
  
  
below LIS302DL
  
  
Blue
  
  
PA9
  
  
LED_9
  
  
Out
  
  
same as USB power (VBUS, needs to be enabled in header  file)
  
  
Green
  


  
UART3
  
  
Pin #
  
  
Name
  
  
Type
  
  
Description
  
  
PD8
  
  
UART3 TX
  
  
Out
  
  
UART3 Serial Output
  
  
PD9
  
  
UART3 RX
  
  
In
  
  
UART3 Serial Input
  


  
UART6
  
  
Pin #
  
  
Name
  
  
Type
  
  
Description
  
  
PC6
  
  
UART6 TX
  
  
Out
  
  
UART6 Serial Output
  
  
PC7
  
  
UART6 RX
  
  
In
  
  
UART6 Serial Input
  



  
I2C2
  
  
Pin #
  
  
Name
  
  
Type
  
  
Description
  
  
PB10
  
  
I2C2 SCL
  
  
I/O
  
  
I2C2 Serial Clock
  
  
PB11
  
  
I2C2 SDA
  
  
I/O
  
  
I2C2 Serial Data
  


  
ADC
  
  
Pin #
  
  
Name
  
  
Type
  
  
Description
  
  
PB1
  
  
AUX1
  
  
I/O
  
  
ADC_1
  
  
PC5
  
  
AUX2
  
  
I/O
  
  
ADC_2
  
  
PC4
  
  
AUX3
  
  
I/O
  
  
ADC_3
  
  
PA4
  
  
AUX4/BAT
  
  
I/O
  
  
ADC_4, is used for BAT voltage
  
  
PC1
  
  
AUX5
  
  
I/O
  
  
ADC_5
  
  
PC2
  
  
AUX6
  
  
I/O
  
  
ADC_6
  

  
PWM
  
  
Pin #
  
  
Name
  
  
Type
  
  
Description
  
  
PE9
  
  
PWM0
  
  
Out
  
  
Servo 1
  
  
PE11
  
  
PWM1
  
  
Out
  
  
Servo 2
  
  
PE13
  
  
PWM2
  
  
Out
  
  
Servo 3
  
  
PE14
  
  
PWM3
  
  
Out
  
  
Servo 4
  
  
PE5
  
  
PWM4
  
  
Out
  
  
Servo 5
  
  
PE6
  
  
PWM5
  
  
Out
  
  
Servo 6
  
  
PA3
  
  
PWM6
  
  
Out
  
  
Servo 7
  
  
PA2
  
  
PWM7
  
  
Out
  
  
Servo 8
  
  
PA1
  
  
PWM8
  
  
Out
  
  
Servo 9
  
  
PA0
  
  
PWM9
  
  
Out
  
  
Servo 10
  
  
PB14
  
  
PWM10
  
  
Out
  
  
Servo 11
  
  
PB15
  
  
PWM11
  
  
Out
  
  
Servo 12
  

  
PPM
  
  
Pin #
  
  
Name
  
  
Type
  
  
Description
  
  
PC9
  
  
PPM
  
  
In
  
  
PPM input
  


4 Daughterboard分线板
dau-board2.jpg
dau3.jpg

dau4.jpg
Hyper X基于STM32F4 Discovery,是为具有一定动手能力的并且刚接触飞控开发学生用户设计的。该飞控被我设计得尽可能地简单。在一些数据接口上,我利用了MCU的电平兼容性,省掉了电平转换芯片。另外,分线板上不用对I2C数据口做上拉,STM32F4Discovery母板和GY-86IMU板上已有上拉电路。为了提高舵机控制部分的可靠性,在几个PWM输出口上都有100欧姆的阻抗匹配电阻,该电路我实测过在3米长数据线里把500KHz信号传3米妥妥的。两个UART串口的电源各有一个100nf电容做旁路解耦以保证母板供电稳定(这个实测没必要,我调试时候作死地把9块9包邮的超大波纹的山寨USB手机电源直接接开发板上了,实测不死机,discovery板自带的稳压电路已经够用)。ADC1至4有1N4148高速开关管组成的钳位电路,只要不是手残接到220V市电了,接到继电器、接到马达、就算12S电池反接,各种作死也不会挂。诚然,ADC提高稳定性往往要牺牲采集精度。如果把1N4148换成1N4007整流管,那么就算380V工业用电长时间接着也不怕了,但ADC的精度也就彻底废了。我选用的是漏电流6uA的1N4148开关管组成的钳位电路,虽然漏电流已经很小了,但测量微小电压信号时依然不可避免地会引起失真。ADC分压电路在5V输入时候的电流大约200uA,数量级与漏电流差了10的二次方,钳位电路的影响可以忽略。但是换做微电压,比如0.1V输入时,分压电路的电流是4.5uA,这就与钳位电路的漏电流在一个数量级上了,误差就会很大。因此ADC1至4可以接电压电流模块,但不适合红外平衡传感器那种需要高精度的场合。ADC5和6没有做保护,但保留了对微电压信号的测量精度。


5 Build the code代码编译

1 解压我提供的ppz代码补丁,该补丁是个叫paparazzi.tar的压缩文件

2把里面的文件复制到ppz的工作目录里,我已经按文件夹的名字布置好各个文件了,放到对应的文件夹下。

3启动ppz地面站命令代码是cd ~/paparazzi && ./paparazzi

4在AC选项里选择我配置好的一个飞机,叫MYAC,它是个quadshot飞行器。其他的配置见图。
code.jpg
5先点Build,然后点Upload

6 可以上天咯!


6 STLink上传程序的一些细节

要用到st_flash st_util两个程序。我提供的虚拟机里已经做了stlink的部署,所以可以直接点upload上传。

如果你不用我提供的地面站,我也欢迎使用我编译出来的stlink程序,目录在我提供的虚拟机里的~/stlink文件夹或/bin文件夹下。把st_flash st_util两个文件拷贝到你的linux电脑的/bin目录,并给执行权限,完事。

欢迎大家去ppz官方论坛交流学习http://lists.paparazziuav.org/Ne ... -China-td17792.html





发表于 2016-3-21 13:52 | 显示全部楼层
你好,我也用arduino 自制了一个ppm编码器,一通道(tx输入)没有输出,其余通道正常,用万用表检查过连接没有问题,接收机接舵机输出正常,程序烧过arduppm和Paparazzi的,都是同一个问题,请问下大概是什么问题
发表于 2016-3-22 23:50 | 显示全部楼层

发表于 2016-3-27 07:05 | 显示全部楼层
期待楼主的视频
来自苹果客户端来自苹果客户端
发表于 2016-3-27 07:29 | 显示全部楼层
支持下楼主,开源是新的开始
来自苹果客户端来自苹果客户端
发表于 2016-3-29 07:40 | 显示全部楼层
好人好贴!
发表于 2016-3-30 15:43 | 显示全部楼层
好复杂!感觉MWC比较简单,而且成本很低。不过楼主的创新精神很赞我只会拿别人的玩 QQ图片20160328110447.jpg
发表于 2016-3-30 17:07 | 显示全部楼层
这个可以有,楼主威武
发表于 2016-4-6 01:03 | 显示全部楼层
发表于 2016-4-7 21:03 | 显示全部楼层
支持楼主      貌似现在支持CC3D和NAZE32板子了   但是不太会编译   要刷bootloader ?   该怎么编译上传到CC3D的板子上
发表于 2016-4-11 21:28 | 显示全部楼层
支持楼主
发表于 2016-4-16 12:29 | 显示全部楼层
楼主威武
发表于 2016-5-1 21:16 | 显示全部楼层
1000 发表于 2016-3-21 13:52
你好,我也用arduino 自制了一个ppm编码器,一通道(tx输入)没有输出,其余通道正常,用万用表检查过连接 ...

你好我也遇到了在这个问题,你的解决了吗?

发表于 2016-6-6 09:49 | 显示全部楼层
lz你好,我也是玩ppz的,看到你做新方案了,想邀请你一起讨论。你看能不能加下我们的QQ群
发表于 2016-6-8 12:04 | 显示全部楼层

lz啊 求加个好友啊
发表于 2016-6-10 17:59 | 显示全部楼层
可以打板了
来自苹果客户端来自苹果客户端
发表于 2016-6-13 22:28 | 显示全部楼层
楼主厉害!!!!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /2 下一条

快速回复 返回顶部 返回列表