5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)

标题: 【测试】尝试用STM32F4Discovery开发板和10dof模块(GY-86)组Paparazzi飞控 [打印本页]

作者: xukejing    时间: 2015-2-1 15:05
标题: 【测试】尝试用STM32F4Discovery开发板和10dof模块(GY-86)组Paparazzi飞控
2013年的时候,我用模块组了一个mwc飞控,因为i2c接口相同,mega2560的rom也够大,该硬件也可以刷apm海盗的程序。
尝试用arduino 2560开发板和10dof(GY-86)组MWC飞控
当时引用了两个很火的帖子
发点大家喜闻乐见的东西,同时把arduino 2560开发板和10dof(GY-86)组mwc连线图法上来
新人DIY四轴分享点经验,避免其他人重复走我走过的弯路
  今年我原本是打算用模块和洞洞板组个pix飞控的,于是买了STM32F4Discovery开发板,STM32F103开发板,还有一些arduino pro mini用来做PPM编码。年初时候下载好各种原理图和线路图,收集好芯片资料,准备学习之余大干一场。不料今年学业特别的忙,各种CFD的计算,各种后处理,写论文,等到正事办完也到寒假了,于是只好降低难度,先组个芯片少一些的。我观察了Paparazzi和CC3d飞控,硬件上把传感器的SPI和I2C接口跟微处理器的I2C接上就能用了,然后源代码都是可以修改的
  Paparazzi官网上已经有神人用STM32F4Discovery开发板DIY了飞控板,还做了一个分线板发布在github上(分线板工程文件  源代码链接 )。我参(chao)考(xi)了他的原理图,然后又优(tou)化(lan)了一下,有些不常用的接口没接。因为有组mwc飞控的经验(关键原因还是不想浪费GY-86模块),所以我把gy86的i2c接到了PB10和PB11上,主要是为了方便连线(原理上接到PB8和PB7也是可以的)。我没有使用PB6和PB9,因为F4Discovery开发板上CS43L22音频芯片的I2C接口已经把这两个端口用了。PA*至PE*端口的接线可以参考头文件里的配置,如下图
(, 下载次数: 286) (, 下载次数: 285) (, 下载次数: 311) (, 下载次数: 309) (, 下载次数: 318)
LINUX下开发飞控有很多坑,我踩了一路的地雷,各种报错,等到程序调通,脑细胞也已经死伤惨重。这里有个注意点(很关键),官网wiki上没有提到,编译stlink后,把编译得到的st-flash、st-info等4个程序复制到bin目录下去,复制完后把权限改成775(我就是因为忘改执行权限,能生成elf程序,但下载的时候会报错,反复调试了很多次才想到这个问题,st-flash忘给权限了)。github上的stm32F4discovery例程的AirFrame配置是有问题的,编译会报错,其他配置参数都可以删掉重写,除了关键的这句board="stm32f4_discovery“定义,它可以使程序支持ST-Link方式下载。我的这个stm32f4_discovery_test.xml文件已经改得面目全非了,抄袭了quadshot模型的部分配置。
(, 下载次数: 303)
  如上图所示,STM32F4discovery.h文件里的LED部分默认是注释掉的,所以AirFrame的配置也要跟着修改一下,去掉LED闪光功能(不去掉调试报错)。最后保证语法没错能调通的基础上,把lisa2.0板的定义去掉,把stm32f4Discovery板的定义加进去,这样下载按钮就有STLink选项了。代码调通后,通过STlink上传至STM32F4Discovery开发板,如下图所示。
(, 下载次数: 317)





作者: tufeii    时间: 2015-2-1 15:14
楼主有尝试过GY-88接I2C吗?另外,接口在配置文件中如何定义的 ?我的lisa 飞控用GY-88接到I2C上没反应。

作者: tufeii    时间: 2015-2-1 15:20
另外STM32F4 自带的bootloader 也可以直接通过usb 写入配置文件到飞控而省去了stlink 吧?使用DFU-UTIL就可以吧?


作者: xukejing    时间: 2015-2-1 15:54
tufeii 发表于 2015-2-1 15:14
楼主有尝试过GY-88接I2C吗?另外,接口在配置文件中如何定义的 ?我的lisa 飞控用GY-88接到I2C上没反应。

我用STlink是验证一下官网给的代码是不是对的,用discovery开发板,不得不带着STlink烧写器上天,同样任务载荷下留空时间要损失了。正常的飞控板,程序上传也可以从microUSB口那里通过DFU上传,把BOOT0接3V重启,如果不成功,就BOOT0接3V同时把BOOT1接GND再重启,这样就进DFU模式了。
GY86用的是ms5611传感器,有两种读取方式,一个是spi方式读,一个是i2c方式读。GY-88的传感器也都可以走i2c接口,气压传感器用bmp085,路径都在\sw\airborne\peripherals,分别是bmp085.h,mpu60x0——i2c.h,hmc58xx.h
lisa飞控默认是用的aspirin2spi模块,目录在\sw\airborne\subsystems\imu
#include "subsystems/imu/imu_mpu60x0_defaults.h"
#include "peripherals/mpu60x0_spi.h"
然后结构体变量里也用的spi接口的数据,所以导致了GY-88接到I2C上没反应。
struct ImuAspirin2Spi {
  volatile bool_t gyro_valid;
  volatile bool_t accel_valid;
  volatile bool_t mag_valid;
  struct Mpu60x0_Spi mpu;
  struct spi_transaction wait_slave4_trans;
  volatile uint8_t wait_slave4_tx_buf[1];
  volatile uint8_t wait_slave4_rx_buf[2];
  volatile bool_t slave4_ready;
};
可以在imu目录下新建一个模块gy88,按i2c方式添加变量


作者: tufeii    时间: 2015-2-1 16:06
xukejing 发表于 2015-2-1 15:54
我用STlink是验证一下官网给的代码是不是对的,用discovery开发板,不得不带着STlink烧写器上天,同样任 ...

一看楼主就是单片机高手,可惜小弟初学,又是个外行。学起来很艰难,新建一个对我来说不容易,更不用说按照I2C方式添加bianliang .I hope if you can help me out.


作者: ab_k    时间: 2015-2-1 16:33
完全看不懂

作者: tufeii    时间: 2015-2-1 16:59
xukejing 发表于 2015-2-1 15:54
我用STlink是验证一下官网给的代码是不是对的,用discovery开发板,不得不带着STlink烧写器上天,同样任 ...

可否用 imu 路径下的drotek 10 dof模块替代新建gy-88?气压计好像是baro单独管理的。


作者: caosix2    时间: 2015-2-1 17:02
本帖最后由 caosix2 于 2015-2-1 17:07 编辑

非常支持 楼主的 DIY 行动  。。。

不过呢:我觉得 应该 模块化:事半功倍 啊。

请参看——我得帖子:

有对DIY【模块化】简易飞控感兴趣的吗?(自己掌握核心软件)避免限高50米之类。  ...2

姿态测量模块直接用现成的,卡尔曼程序都不用自己做。
输出:3个量给 三轴陀螺仪,CCPM 混控 等程序也省了

自己 只做 核心的 东西,可以 快速感受到 自己的成果。




作者: tufeii    时间: 2015-2-1 17:05
尝试了下在配置文件里改imu为drotek 10dof ,build 能够通过,upload 后依然无法识别gy-88 ,同时板上的imu初始化指示灯只是常亮,并无初始化的过程(闪亮多次后常量)。

作者: xukejing    时间: 2015-2-1 17:14
tufeii 发表于 2015-2-1 17:05
尝试了下在配置文件里改imu为drotek 10dof ,build 能够通过,upload 后依然无法识别gy-88 ,同时板上的imu ...

我也是参考了drotek 10dof的写法,新建了imu_gy86_i2c.h和imu_gy86_i2c.c
I2C读imu的代码是对的。无法识别gy-88,airframe里的xml配置文件可能还有疏漏,导致还在按spi的方式工作,没有读i2c接口,或没把i2c接口读到的数据用于姿态结算。


作者: 莱布    时间: 2015-2-1 17:39
完全看不懂

作者: code    时间: 2015-2-2 12:33
mark

作者: 驭风者    时间: 2015-2-2 21:35
留个爪印,日后学习

作者: w450101859    时间: 2015-2-5 23:18
mark 一下  目前还在使用PAPARAZZI 阶段

作者: 去远方    时间: 2015-2-10 22:17
高手,关注

作者: 碧海蓝天SHAO    时间: 2015-2-12 23:55
技术贴不顶说不通,期待楼主最终成果,造福模友

作者: NeoLu    时间: 2015-3-20 09:34
关注

作者: victor振振    时间: 2015-3-22 22:44
关注中,很想自己研究这些开源飞控,可惜对硬件有欠缺呀

作者: wangluoqishi    时间: 2015-4-6 23:31
进展到什么地步了?

作者: xukejing    时间: 2015-4-11 22:24
(, 下载次数: 70)
差点烂尾楼了,原来以为寒假能宅在屋里研究点业余爱好,结果各种访亲逛街和旅游到开学,然后开学又带着几个做毕设的小师弟搞项目。师弟赶着要毕业答辩,时间很紧,忙得一塌糊涂。
今晚逛论坛,抽空赶紧写点组飞控的经验。paparazzi飞控用开发板和模块组起来很容易,组块ppz飞控板的成本基本跟mwc一样,很便宜的,希望大伙儿能推广起来。当然,ppz飞控的局限性也是有的,比如上图那个地面站,习惯性下不到地图。


作者: xukejing    时间: 2015-4-11 22:40
用stm32f4discovery和gy86组ppz飞控,写代码和飞控接线时有几个要点,下面我列举以下
1 gy86接到i2c2上(PB11-SDA,PB10-SCL),不用做上拉
2 mpu6050的地址是0xD0,我们可以观察一下GY86的原理图,mpu6050的AD0被接地了,所以地址是0xD0。AHRS失败的原因都是i2c号接错或者地址写错了导致的。
3 数传接到串口6上(PC6-tx,PC7-rx)
4 GPS接到串口3上(PD8-tx,PD9-rx)
5 gy86板载气压计的使用通过飞机xml配置文件中的  <define name="USE_BARO_MS5611"/> 来开启,并连接到I2C2


作者: fufang001    时间: 2015-4-14 20:58
xukejing 发表于 2015-4-11 22:24
差点烂尾楼了,原来以为寒假能宅在屋里研究点业余爱好,结果各种访亲逛街和旅游到开学,然后开学 ...

估计和谷歌地图墙了有关,换个地图源就可以了,bing选项试一下

作者: fufang001    时间: 2015-4-14 21:13
xukejing 发表于 2015-4-11 23:06
吐槽一下paparazzi开发团队尽把一些代码半成品发网上,复制黏贴完还要修改,山寨起来太不方便了。
...

楼主对paparazzi很有研究么?


作者: xukejing    时间: 2015-4-15 08:09
fufang001 发表于 2015-4-14 20:58
估计和谷歌地图墙了有关,换个地图源就可以了,bing选项试一下

好的,谢谢


作者: xukejing    时间: 2015-4-15 08:16
fufang001 发表于 2015-4-14 21:13
楼主对paparazzi很有研究么?

嗯,是的。imu部分的配置应该按我给的方式写。


作者: crazyboyyy    时间: 2015-4-15 09:14
MARK

作者: BAOJU    时间: 2015-4-15 11:53
看不懂
都是高手

作者: BAOJU    时间: 2015-4-15 11:53
看不懂
都是高手
我就默默的看着

作者: menglongfc    时间: 2015-4-24 14:09
discovery的传感器已经够飞啦

作者: newpark    时间: 2015-5-5 11:24
高手,高手,佩服

作者: makeflyeasy    时间: 2015-5-9 01:56
赞一个!

作者: duan123    时间: 2015-5-12 12:35
MARK

作者: szh123    时间: 2015-5-16 09:04
我看有人用这个开发版刷入pixhawk  bootloader  这样是不是能直接写apm固件了?

作者: jy02345230    时间: 2015-5-27 15:54
谢谢分享。。。。。顶贴走人!~~


作者: sheng136long    时间: 2015-10-24 10:08
哥,你好,我正在用MEGA2560+GY-86做APM,有些针脚的定义不清楚,请教一下,能告诉我您的QQ号吗,或是电话?谢谢啊


作者: xukejing    时间: 2015-12-29 15:09
sheng136long 发表于 2015-10-24 10:08
哥,你好,我正在用MEGA2560+GY-86做APM,有些针脚的定义不清楚,请教一下,能告诉我您的QQ号吗,或是电话 ...

用GY86可以用ArduCopterNG的代码。针脚定义无非是一些I2C,SPI,TXRX什么的,接线参考下图

引用的地址http://bbs.5imx.com/bbs/forum.php?mod=viewthread&tid=736706


作者: tufeii    时间: 2016-1-8 20:38
tufeii 发表于 2015-2-1 15:20
另外STM32F4 自带的bootloader 也可以直接通过usb 写入配置文件到飞控而省去了stlink 吧?使用DFU-UTIL就可 ...

是的






欢迎光临 5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年) (http://5imx.com/) Powered by Discuz! X3.3