搜索
bottom↓
楼主: MAPGPS

AR.Drone 附加导航板DIY (气压高度计 + 电子罗盘 + GPS) --- 基于Arduino

  [复制链接]

出0入0汤圆

发表于 2011-5-8 11:18:57 | 显示全部楼层
MAPGPS,我是新手,看你的电路图,那个电子罗盘的SCL和SDA脚为什么连接arduino nano的A4和A5脚,A4和A5除了模拟输入输出口,还有什么特定作用吗,在说明书上没找到相关说明,不知道是我看的不仔细还是怎么地,请指教,谢谢。

出0入0汤圆

发表于 2011-5-8 12:36:56 | 显示全部楼层
回复【100楼】Michelle198177
-----------------------------------------------------------------------


http://arduino.cc/en/Reference/Wire (原文件名:Arduino - Wire.png)

出0入0汤圆

 楼主| 发表于 2011-5-8 13:34:32 | 显示全部楼层
回复【99楼】_bobo 刀刀
回复【67楼】mapgps  
-----------------------------------------------------------------------
这个是假的,不能用吧,要用只能是用一个,其它的三个只能是摆设,,,,我也有一个箱底了,,,
-----------------------------------------------------------------------

我那个是真的, 能同时用多个USB口, 在AR.Drone上测试了同时用:
1 USB 读卡器带 8GB SD卡
1 USB 3G Modem

(原文件名:IMG_2250.JPG)

# fdisk -l

Disk /dev/sda: 7742 MB, 7742685184 bytes
84 heads, 38 sectors/track, 4737 cylinders
Units = cylinders of 3192 * 512 = 1634304 bytes

   Device Boot      Start         End      Blocks  Id System
/dev/sda1               3        4738     7557120   b Win95 FAT32
# mount /dev/sda1 /mnt
# df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
ubi1:system              12268      9500      2108  82% /
tmp                      63036       116     62920   0% /tmp
dev                      63036         0     63036   0% /dev
ubi0:factory              4928        40      4600   1% /factory
ubi2:update              13532      3280      9528  26% /update
ubi2:data                69152     42440     23148  65% /data
/dev/sda1              7553024     47840   7505184   1% /mnt
# ls -l /dev/ttyUSB*
crw-rw----    1 root     root     188,   0 Jan  1 00:09 /dev/ttyUSB0
crw-rw----    1 root     root     188,   1 Jan  1 00:09 /dev/ttyUSB1
crw-rw----    1 root     root     188,   2 Jan  1 00:09 /dev/ttyUSB2
# lsmod
Module                  Size  Used by    Tainted: G
nls_iso8859_1           4096  0
sd_mod                 23508  0
vfat                   10432  0
fat                    46364  1 vfat
nls_utf8                1888  0
nls_cp437               5760  0
nls_base                7040  5 nls_iso8859_1,vfat,fat,nls_utf8,nls_cp437
option                 21220  0
usbserial              28132  1 option
dwc_otg                72396  0
p6_sdhci                3588  0

出0入0汤圆

 楼主| 发表于 2011-5-8 14:14:22 | 显示全部楼层
回复【101楼】i7456
回复【100楼】michelle198177  
-----------------------------------------------------------------------
谢谢michelle198177的文档截图. I2C是固定接arduino nano的A4和A5脚.

回复【89楼】gampchu
楼主你的最新结果是什么?
-----------------------------------------------------------------------
气压高度计的PID控制程序写得差不多了.
绕开program.elf, 通过PWM串口直接控制四个电机的运转.
还没时间作外场测试.

最近在想一个防止AR.Drone飞丢(Fly-away)的程序.

出0入0汤圆

发表于 2011-5-8 14:22:29 | 显示全部楼层
先标记一下!!改天仔细研读

出0入0汤圆

发表于 2011-5-8 15:01:04 | 显示全部楼层
跟MS5607-B性能一样的产品还有MS5801-01BA和MS5803-01BA两款,这两种体积大点,好焊接,不过就是价格要高出不少。

出0入0汤圆

发表于 2011-5-11 10:08:29 | 显示全部楼层
回复【101楼】i7456
-----------------------------------------------------------------------

谢谢

出0入0汤圆

发表于 2011-5-11 10:09:54 | 显示全部楼层
回复【103楼】MAPGPS
-----------------------------------------------------------------------

谢谢

出0入0汤圆

发表于 2011-5-11 11:13:47 | 显示全部楼层
回复【楼主位】MAPGPS
-----------------------------------------------------------------------

楼主 求你qq 我在用ms5607 希望能和你交流一下 我的qq是569969746

出0入0汤圆

发表于 2011-5-11 16:38:29 | 显示全部楼层
不好意思,问个弱弱的问题,那个我接上了电子罗盘模块,那个在哪能看到输出的那些数据啊,谢谢

出0入0汤圆

 楼主| 发表于 2011-5-11 20:45:31 | 显示全部楼层
回复【109楼】Michelle198177
不好意思,问个弱弱的问题,那个我接上了电子罗盘模块,那个在哪能看到输出的那些数据啊,谢谢
-----------------------------------------------------------------------

在Arduino 0022 CC工具上那排图标按钮最后那个Serial Monitor, 弹出窗口串口显示

出0入0汤圆

发表于 2011-5-11 21:06:54 | 显示全部楼层
回复【110楼】MAPGPS
-----------------------------------------------------------------------

谢谢,可能是搞得不对,那个窗口打开后并没有见到数据,再调调试试

出0入0汤圆

 楼主| 发表于 2011-5-11 21:17:08 | 显示全部楼层
回复【111楼】Michelle198177
-----------------------------------------------------------------------
谢谢,可能是搞得不对,那个窗口打开后并没有见到数据,再调调试试
-----------------------------------------------------------------------

注意窗口下方选择正确的波特率!

出0入0汤圆

发表于 2011-5-11 21:27:07 | 显示全部楼层
MAPGPS,你好,我按照你的图接的电路,程序烧到板子上了,不知为什么就是没有显示电子罗盘的数据,再就是arduino上的那个方形芯片非常烫,这是什么原因,您接的那两个电阻是10k的吧,是不是接在3.3v和A2口之间啊,这样的作用是什么

出0入0汤圆

发表于 2011-5-11 21:55:40 | 显示全部楼层
后来,把那两个电阻去掉,就没那么烫了,但是还是没有数据,电子罗盘的VCC、GND、SCL、SDA分别接arduino的3.3v、GND、A5、A4,应该没错吧

出0入0汤圆

 楼主| 发表于 2011-5-11 21:56:59 | 显示全部楼层
回复【113楼】Michelle198177
mapgps,你好,我按照你的图接的电路,程序烧到板子上了,不知为什么就是没有显示电子罗盘的数据,再就是arduino上的那个方形芯片非常烫,这是什么原因,您接的那两个电阻是10k的吧,是不是接在3.3v和a2口之间啊,这样的作用是什么
-----------------------------------------------------------------------

那两个电阻是10k的,接在3.3v和A4/A5口之间, 是I2C要求的上拉电阻.

出0入0汤圆

 楼主| 发表于 2011-5-11 22:00:22 | 显示全部楼层
回复【114楼】Michelle198177
电子罗盘的vcc、gnd、scl、sda分别接arduino的3.3v、gnd、a5、a4,应该没错吧
-----------------------------------------------------------------------

没错.

出0入0汤圆

发表于 2011-5-11 22:01:47 | 显示全部楼层
回复【115楼】MAPGPS
-----------------------------------------------------------------------

额的神,谢谢,谢谢,终于有数据了,一定得好好恶补

出0入0汤圆

发表于 2011-5-11 22:02:17 | 显示全部楼层
回复【115楼】MAPGPS
-----------------------------------------------------------------------

额的神,谢谢,谢谢,终于有数据了,一定得好好恶补,您真耐心。

出0入0汤圆

发表于 2011-5-13 14:34:33 | 显示全部楼层
你好,我看了你ms5607的程序,下面这些参数你是这样定义的,和datasheet上写的不一样啊怎么?你的这个参数是看的ms5607的使用手册么?
你的程序:const long UT1  = (coefficients_[4] << 3) + 20224;
        const long dT   = temperature  - UT1;
        const long TEMP = 200 + ((dT * (coefficients_[5] + 50)) >> 10);
        const long OFF  = (coefficients_[1] <<2) + (((coefficients_[3] -512) * dT) >> 12);
        const long SENS = coefficients_[0]  + ((coefficients_[2] * dT) >> 10)  + 24576;
        const long X    = ((SENS* ((long)pressure  - 7168)) >> 14) - OFF;
        pressure    = ((X * 10) >> 5) + 2500;
        temperature = TEMP;

datasheet上写的:dT  = D2 - TREF = D2  - C5 * 2^8
                 TEMP =20°C +dT * TEMPSENS=2000 + dT *C6 / 2^23
                 OFF =OFFT1 +TCO*dT =C2 *2^17+(C4 *dT ) / 2^6
                 SENS =SENST1+ TCS* dT=C1 * 2^16+ (C3 * dT ) / 2^7
                 P  = D1 * SENS - OFF = (D1 * SENS / 2 ^21 - OFF) / 2 ^15

出0入0汤圆

发表于 2011-5-13 14:35:50 | 显示全部楼层
回复【110楼】MAPGPS
-----------------------------------------------------------------------

您加我qq吧,569969746.谢谢

出0入0汤圆

发表于 2011-5-14 15:43:56 | 显示全部楼层
MAPGPS,您好,我想问个问题,您加的这个附加导航板是不是还要再加个无线数传啊,我是这样理解的,不是要实现自主吗,在ar上和笔记本上各加一个无线数传,这样GPS测得的导航数据通过无线数传发送给笔记本,与给点的航线数据比较(就是个闭环),然后通过wifi给ar发送控制指令进行修正。请您指教,谢谢!

出0入0汤圆

 楼主| 发表于 2011-5-14 17:04:47 | 显示全部楼层
回复【121楼】Michelle198177
-----------------------------------------------------------------------

不用加无线数传. Arduino板子与AR.Drone通过串口直接通信.
在AR.Drone Linux上写程序读串口/dev/ttyPA0 (用命令: cat /dev/ttyPA0 就能测试看到Arduino传过来的传感器数据).
用AT飞控命令进行PID闭环控制.

今天把GPS接上了.


(原文件名:IMG_2343.JPG)


(原文件名:IMG_2347.JPG)


(原文件名:IMG_2350.JPG)

出0入0汤圆

发表于 2011-5-14 18:24:32 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2011-5-17 11:15:19 | 显示全部楼层
你好,我看了你ms5607的程序,下面这些参数你是这样定义的,和datasheet上写的不一样啊怎么?你的这个参数是看的ms5607的使用手册么?
你的程序:const long UT1  = (coefficients_[4] << 3) + 20224;
        const long dT   = temperature  - UT1;
        const long TEMP = 200 + ((dT * (coefficients_[5] + 50)) >> 10);
        const long OFF  = (coefficients_[1] <<2) + (((coefficients_[3] -512) * dT) >> 12);
        const long SENS = coefficients_[0]  + ((coefficients_[2] * dT) >> 10)  + 24576;
        const long X    = ((SENS* ((long)pressure  - 7168)) >> 14) - OFF;
        pressure    = ((X * 10) >> 5) + 2500;
        temperature = TEMP;

datasheet上写的:dT  = D2 - TREF = D2  - C5 * 2^8
                 TEMP =20°C +dT * TEMPSENS=2000 + dT *C6 / 2^23
                 OFF =OFFT1 +TCO*dT =C2 *2^17+(C4 *dT ) / 2^6
                 SENS =SENST1+ TCS* dT=C1 * 2^16+ (C3 * dT ) / 2^7
                 P  = D1 * SENS - OFF = (D1 * SENS / 2 ^21 - OFF) / 2 ^15

出0入0汤圆

发表于 2011-5-17 16:14:02 | 显示全部楼层
您好,楼主,最近一直在研究您的那个电子罗盘的程序,弄不大懂,想问一下,那个显示出来的数据,X,Y,Z分别代表什么,那个航向角是怎么算出来的,谢谢

出0入0汤圆

 楼主| 发表于 2011-5-17 17:56:48 | 显示全部楼层
回复【125楼】Michelle198177
-----------------------------------------------------------------------
X,Y,Z代表在XYZ轴上分别测到的磁场分量大小.
再用数学里的反正切函数求得航向角.

出0入0汤圆

发表于 2011-5-18 07:39:42 | 显示全部楼层
回复【126楼】MAPGPS
-----------------------------------------------------------------------

谢谢,也就是通过磁场求出航向角,那就是要找到各个磁场分量与航向角的关系式,OK,明白了。

出0入0汤圆

发表于 2011-5-18 07:49:36 | 显示全部楼层
回复【126楼】MAPGPS
-----------------------------------------------------------------------

再就是,我看到的那个求航向角的公式,是怎么来的,有什么资料可查吗,我的HMC5883L的资料里,看了几遍都没有这个公式啊,程序里面 Sens[]和Offset[3]应该是偏移量吧,是通过calibrate()这个函数得到的吧,那这个函数是自己编的,还是库函数里带的呢,好头痛啊,资料真不好找。

出0入0汤圆

 楼主| 发表于 2011-5-18 21:36:27 | 显示全部楼层
回复【128楼】Michelle198177
-----------------------------------------------------------------------
程序里面 Sens[]是三个轴向敏感度, Offset[]是三个轴向偏移量,是通过calibrate()和 cal() 这两个函数得到的. 是网上找来的别人编的函数.

Google找资料. 比如:
http://forum.sparkfun.com/viewtopic.php?f=14&t=18510

出0入0汤圆

发表于 2011-5-19 08:18:57 | 显示全部楼层
回复【129楼】MAPGPS
-----------------------------------------------------------------------

谢谢,看来,找资料,写程序,一个都不能少啊。我编程能力几乎是0,得努力啊。楼主做的工作看似轻松,实则也是花费了大量的精力和时间啊,不容易,呵呵。up!up!

出0入0汤圆

发表于 2011-5-20 14:21:46 | 显示全部楼层
楼主,MS5607B 是3.3v的,即使电源接了nano的3.3v,但是nano 的SCL,SDA 都是5v的,会不会把MS5607B 给烧掉?
另外据说 arduino 的i2c自身是有接上拉电阻的,不需要外面再接,除非要级联很多个i2c设备, 是这样么

出0入0汤圆

发表于 2011-5-20 15:58:38 | 显示全部楼层
A: 11.66m
A: 11.66m
A: 11.66m
A: 11.66m
A: 11.66m
A: 11.66m
A: 11.66m
A: 11.66m
A: 11.66m
A: 11.66m
A: 11.66m
A: 11.66m
A: 11.66m
A: 11.66m

的确要加上拉电阻,才能读到数据。 但是,我的气压计被焊坏了吗???  5555555555555 ,永远都是 11.66m ,无论怎么改变高度

出0入0汤圆

发表于 2011-5-20 16:06:44 | 显示全部楼层
MS5607B 气压高度计

出0入0汤圆

发表于 2011-5-20 16:21:34 | 显示全部楼层
MS5607-B是由MEAS公司在瑞士分公司(原intersema厂家)设计并生产的新一代高分辨率的测高传感器,它提供SPI接口和I2C总线两种接口。20cm的高分辨率使得它更适合于高度测量和气压测量。该传感器模块包括一个高线性压力传感器和一个24位低功耗的AD转换器,传感器内部包含有工厂校准系数。它提供了一个精确的24位压力和温度值。不同的操作模式,允许用户优化转换速度和电流消耗。该传感器在测量气压的同时具有温度测量的功能。MS5607-B可以连接到几乎所有微控制器,通讯协议简单,不需要装置内部编程存储器。小尺寸,便于集成应用。

出0入0汤圆

 楼主| 发表于 2011-5-20 23:02:15 | 显示全部楼层
回复【131楼】auuuux
楼主,ms5607b 是3.3v的,即使电源接了nano的3.3v,但是nano 的scl,sda 都是5v的,会不会把ms5607b 给烧掉?
另外据说 arduino 的i2c自身是有接上拉电阻的,不需要外面再接,除非要级联很多个i2c设备, 是这样么
-----------------------------------------------------------------------

5V的Arduino与3.3V的I2C设备互连方案要点:
1) SCL/SDA上拉电阻接3.3V
2) 禁用Arduino A4/A5的内部上拉电阻(内接5V).
就是MS5607B.pde程序的这段:
//To inactivate internal 5V pull-up when interfacing with 3.3V I2C device, add following line in the main pde to ignore sbi():
#define sbi(sfr, bit) (if (bit != 4 && bit != 5) _SFR_BYTE(sfr) |= _BV(bit))

出0入0汤圆

发表于 2011-5-23 21:08:10 | 显示全部楼层
回复【135楼】MAPGPS
-----------------------------------------------------------------------

楼主,你ms5607做没做二次差别啊,需要二次差补么。

出0入0汤圆

发表于 2011-5-23 21:33:08 | 显示全部楼层
回复【135楼】MAPGPS
-----------------------------------------------------------------------

不需要二次差补么,/* 二次温度补偿程序 */
    if(TEMP<2000)
    {
        if(TEMP<-1500)
                {
                OFF2=OFF2+15*(TEMP+1500)*(TEMP+1500);
                SENS2=SENS2+8*(TEMP+1500)*(TEMP+1500);
                }
        else
                {
                TEMP2=(dT*dT)/pow(2,31);
               OFF2=(61*(TEMP-2000)*(TEMP-2000))/pow(2,4);
                 SENS2=2*(TEMP-2000)*(TEMP-2000);
                }
    }
    else
    {
       TEMP2=0;
        OFF2=0;
        SENS2=0;
    }
       
    TEMP=TEMP-TEMP2;
    OFF=OFF-OFF2;
    SENS=SENS-SENS2;

我做了差补以后,气压值不变化了

出0入0汤圆

发表于 2011-5-23 23:09:25 | 显示全部楼层
这个一定要几号。

出0入0汤圆

发表于 2011-5-24 10:44:50 | 显示全部楼层
回复【132楼】auuuux
-----------------------------------------------------------------------

我的这个也是,数据不变化,你读取的D1 conversion 数据有变化么,我那一步就没有变化

出0入0汤圆

发表于 2011-5-24 11:06:40 | 显示全部楼层
回复【132楼】auuuux
-----------------------------------------------------------------------

我重新看了一下,我的D1 conversion 有数据,数据可以变化,并且随高度有变化,但是用sens off 和那些系数一运算变化就看不出来了 你的公式能给我看看么 ,我的qq 569969746 电话是 15201127357 希望可以与你交流讨论

出0入0汤圆

 楼主| 发表于 2011-5-24 18:03:05 | 显示全部楼层
回复【137楼】569969746
TEMP2=(dT*dT)/pow(2,31);
-----------------------------------------------------------------------

那个在Arduino上运算会整数溢出的!
建议:
TEMP2=((float)dT/pow(2,15))*((float)dT/pow(2,16));

原来发的那个IntersemaBaro.h也有运算整数溢出问题, 这是我改过的:
    uint32_t ConvertPressureTemperature(uint32_t pressure, uint32_t temperature)
    {
        // calcualte 1st order pressure and temperature (MS5607 1st order algorithm)
        const int32_t dT    = temperature - coefficients_[4] * 256;                     // difference between actual and reference temperature
        //const int32_t temp  = (2000 + (dT * coefficients_[5]) / pow(2, 23)) ; // / 100;       // actual temperature

        //const int64_t OFF   = static_cast<int64_t>(coefficients_[1]) * pow(2, 17) + dT * coefficients_[3] / pow(2, 6); // offset at actual temperature
        //const int64_t SENS  = static_cast<int64_t>(coefficients_[0]) * pow(2, 16) + dT * coefficients_[2] / pow(2, 7); // sensitivity at actual temperature
        //const int32_t press = ((pressure * SENS / pow(2, 21) - OFF) / pow(2, 15)); // / 100;      // temperature compensated pressure
         
        //MAPGPS: adapt formulas to avoid overflow
        const int32_t OFF   = coefficients_[1] * 4 + ((float)dT / 2048) * ((float)coefficients_[3] / 1024);
        const int32_t SENS  = coefficients_[0] * 2 + ((float)dT / 4096) * ((float)coefficients_[2] / 1024);
        const int32_t press =  ((float)pressure / 2048) * ((float)SENS / 1024) - OFF;

        return press;
    }

我的还没做二次温度补偿 (现在气温>20度).
你调试好那段二次温度补偿程序, 我以后就直接用啦:)

出0入0汤圆

发表于 2011-5-24 18:35:47 | 显示全部楼层
楼主,您好,现在我卡在电子罗盘上了,那个程序看的有点晕,问题如下:1.那个calibration函数,是校准函数吗,里面的sens[]和offset[]分别代表什么啊,offset[]是偏移量吗,什么的偏移量,怎么产生的。2.您算的那个Heading角度用的公式,不大明白,怎么是arctan2(reading[1],reading[0])+pi/180,我看资料,不是应该是arctan(y/x)吗。3.那个看资料说,如果罗盘是水平放置的,Heading角直接用arctan(y/x)求出,若是有倾角,不是应该根据pitch角和roll角,先进行换算,再求出Heading吗。

谢谢啦!

出0入0汤圆

 楼主| 发表于 2011-5-24 19:52:50 | 显示全部楼层
回复【142楼】Michelle198177
-----------------------------------------------------------------------

参靠下面贴子:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4355857&bbs_page_no=1&search_mode=1&search_text=罗盘&bbs_id=1025
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3546165&bbs_page_no=1&search_mode=1&search_text=罗盘&bbs_id=1025

出0入0汤圆

发表于 2011-5-24 20:43:02 | 显示全部楼层
回复【141楼】MAPGPS
回复【137楼】569969746  
temp2=(dt*dt)/pow(2,31);  
-----------------------------------------------------------------------
那个在arduino上运算会整数溢出的!
建议:
temp2=((float)dt/pow(2,15))*((float)dt/pow(2,16));  
原来发的那个intersemabaro.h也有运算整数溢出问题, 这是我改过的:
    uint32_t convertpressuretemperature(uint32_t pressure, uint32_t temperature)
    {
        // calcualte 1st order pressure and temperature (ms5607 1st o......
-----------------------------------------------------------------------

问题1:我用的avr单片机,编译环境是iccavr,怎么定义int64啊
问题2:int64的变量OFF SENS 可不可以用double 类型代替啊。
问题3:你自己修改的程序const int32_t OFF   = coefficients_[1] * 4 + ((float)dT / 2048) * ((float)coefficients_[3] / 1024);  const int32_t SENS  = coefficients_[0] * 2 + ((float)dT / 4096) * ((float)coefficients_[2] / 1024);
        const int32_t press =  ((float)pressure / 2048) * ((float)SENS / 1024) - OFF; 坐移或右移数据 就是类似“/1024”的这样的数你是怎么弄的,我这个不明白

出0入0汤圆

发表于 2011-5-24 21:09:20 | 显示全部楼层
回复【141楼】MAPGPS
-----------------------------------------------------------------------

麻烦帮我解答上几个问题,谢谢啊,我qq 569969746

出0入0汤圆

 楼主| 发表于 2011-5-24 21:22:38 | 显示全部楼层
回复【144楼】569969746
-----------------------------------------------------------------------

象我那样把乘法拆成两部分来算, 就用不着int64啦.
float的精度已够了.

我是把 SENS 和 OFF 都除以了pow(2, 15), 这样 SENS 和 OFF 就不会溢出, 计算 press 的那个式子也简化了.
你做二次温度补偿计算时, 要注意这点.

或将:
(SENS/pow(2, 15))
(OFF/pow(2, 15))
当变量看.

出0入0汤圆

发表于 2011-5-25 11:36:47 | 显示全部楼层
嗯 做二次温度补偿计算时需要注意哪些,我的程序就是这样的,
   long TEMP2=0;
   long OFF2=0;
   long SENS2=0;
   dT=D2-(C5*256) ;//pow(2,8)
   TEMP=2000+(dT*C6/8388608) ;//pow(2,23)
   
    if(TEMP<2000)
    {
        if(TEMP<-1500)
                {
                OFF2=OFF2+15*(TEMP+1500)*(TEMP+1500);
                SENS2=SENS2+8*(TEMP+1500)*(TEMP+1500);
                }
        else
                {
                TEMP2=(dT*dT)/pow(2,31);
               OFF2=(61*(TEMP-2000)*(TEMP-2000))/pow(2,4);
                 SENS2=2*(TEMP-2000)*(TEMP-2000);
                }
    }
    else
    {
       TEMP2=0;
        OFF2=0;
        SENS2=0;
    }
       
    TEMP=TEMP-TEMP2;
    OFF=OFF-OFF2;
    SENS=SENS-SENS2;

我现在温度也大于20°,更低的温度没办法实验,只能等到冬天再说了,不知道上面的这个应该对吧,照这ms5607的Datasheet写的。

出0入0汤圆

发表于 2011-5-25 11:37:07 | 显示全部楼层
回复【146楼】MAPGPS
-----------------------------------------------------------------------

嗯 做二次温度补偿计算时需要注意哪些,我的程序就是这样的,
   long TEMP2=0;
   long OFF2=0;
   long SENS2=0;
   dT=D2-(C5*256) ;//pow(2,8)
   TEMP=2000+(dT*C6/8388608) ;//pow(2,23)
     
    if(TEMP<2000)
    {
if(TEMP<-1500)
{
OFF2=OFF2+15*(TEMP+1500)*(TEMP+1500);
SENS2=SENS2+8*(TEMP+1500)*(TEMP+1500);
}
else  
{
TEMP2=(dT*dT)/pow(2,31);
               OFF2=(61*(TEMP-2000)*(TEMP-2000))/pow(2,4);
  SENS2=2*(TEMP-2000)*(TEMP-2000);
}
    }
    else  
    {
       TEMP2=0;
OFF2=0;
SENS2=0;
    }

    TEMP=TEMP-TEMP2;
    OFF=OFF-OFF2;
    SENS=SENS-SENS2;

我现在温度也大于20°,更低的温度没办法实验,只能等到冬天再说了,不知道上面的这个应该对吧,照这ms5607的Datasheet写的。

出0入0汤圆

发表于 2011-5-25 11:38:44 | 显示全部楼层
还有个问题,你的高度转换的程序是这个函数吧:   
int32_t PascalToCentimeter(const int32_t pressurePa)
    {
        // Lookup table converting pressure in Pa to altitude in cm.
        // Each LUT entry is the altitude in cm corresponding to an implicit
        // pressure value, calculated as [PA_INIT - 1024*index] in Pa.
        // The table is calculated for a nominal sea-level pressure  = 101325 Pa.
        static const int32_t PZLUT_ENTRIES = 77;
        static const int32_t PA_INIT       = 104908;
        static const int32_t PA_DELTA      = 1024;

        static const int32_t lookupTable[PZLUT_ENTRIES] = {
            -29408, -21087, -12700,  -4244,   4279,
             12874,  21541,  30281,  39095,  47986,
             56953,  66000,  75126,  84335,  93628,
            103006, 112472, 122026, 131672, 141410,
            151244, 161174, 171204, 181335, 191570,
            201911, 212361, 222922, 233597, 244388,
            255300, 266334, 277494, 288782, 300204,
            311761, 323457, 335297, 347285, 359424,
            371719, 384174, 396795, 409586, 422552,
            435700, 449033, 462560, 476285, 490216,
            504360, 518724, 533316, 548144, 563216,
            578543, 594134, 609999, 626149, 642595,
            659352, 676431, 693847, 711615, 729752,
            748275, 767202, 786555, 806356, 826627,
            847395, 868688, 890537, 912974, 936037,
            959766, 984206};

        

        if(pressurePa > PA_INIT)
             return lookupTable[0];
        else
        {
           const int32_t inx = (PA_INIT - pressurePa) >> 10;      
           if(inx >= PZLUT_ENTRIES - 1)
               return lookupTable[PZLUT_ENTRIES - 1];
           else
           {
                const int32_t pa1 = PA_INIT - (inx << 10);
                const int32_t z1 = lookupTable[inx];
                const int32_t z2 = lookupTable[inx+1];
                return (z1 + (((pa1 - pressurePa) * (z2 - z1)) >> 10));
            }
        }
    }

能简单解释一下不。谢谢

出0入0汤圆

发表于 2011-5-25 15:24:41 | 显示全部楼层
回复【143楼】MAPGPS
-----------------------------------------------------------------------

高度转换的的地方看不太懂,求指点。

出0入0汤圆

发表于 2011-5-25 16:15:16 | 显示全部楼层
回复【146楼】MAPGPS
-----------------------------------------------------------------------

我找到的P转换h的程序是这样子的:
loat h1(float P)
{
        P=P/100;
        long int i,j;
       float h;
// 折线法计算高度 //
    if(p<349)
    {
     i=210;                          //21
     j=15464;                     //15458
    }
    else if(p<400.5)
    {
        i=186;                     //18.6
        j=14626;                 //14620
    }
    else if(p<450)        //448.5   
    {
        i=168;               //18.6
        j=13905;           //13899
    }
    else if(p<499)     
    {
        i=154;             //15.4
        j=13275;         //13271
    }
    else if(p<549)
    {
        i=142;            // 14.2
        j=12676;        //12672
    }
    else if(p<600)     //599
    {
        i=132;           //13.2
        j=12127;       //12123
    }
    else if(p<650)   //648.5
    {
        i=123;        //12.3
        j=11587;   //11584
    }
    else if(p<700)
    {
        i=116;       //11.6
        j=11132;   //11130
    }
    else if(p<748)   //744
    {
        i=109;     // 10.9
        j=10642;  //0.640
    }
    else if(p<800)   //798
    {
        i=104;        //10.4
        j=10268;   //10266
    }
    else if(p<850)
    {
        i=98;       //9.8
        j=9788;   //9787
    }
    else if(p<897.5)
    {
        i=94;      //9.4
        j=9448;  //9447
    }
    else if(p<947.5)  //945
    {
        i=90;     //9.0
        j=9089;  //9088
    }
    else if(p<1006)
    {
        i=86;   //8.6
        j=8710;//8710
    }
    else if(p<1100)
    {
        i=81;  //8.1
        j=8207;//8207
    }
    h = 10*j-p*i;      
    return(h);
}

出0入0汤圆

发表于 2011-5-25 17:30:39 | 显示全部楼层
回复【143楼】MAPGPS
-----------------------------------------------------------------------
我用上面的折线求高度的函数求出我的海拔高度是300多米,我现在在北京。。。我看了一下我在温度补偿后得到的高度,值是100466,这个数据跟海平面的气压小不少,不知道是啥原因。我的程序如下:

   usigned long D1,D2; //Pressure,Temprature;
   long dT,TEMP,P;
   long  OFF,SENS,P2,h;
   long TEMP2=0;
   long OFF2=0;
   long SENS2=0;

void ms5607_proc(void)
{
   dT=D2-(C5*256) ;//pow(2,8)
   TEMP=2000+(dT*C6/8388608) ;//pow(2,23)
   OFF =C2*4+((float)dT / 2048) * ((float)C4 / 1024);
   SENS=C1*2+((float)dT / 4096) * ((float)C3 / 1024);
   P= ((float)D1 / 2048) * ((float)SENS / 1024) - OFF;

不知道哪个环节出错了。

出0入0汤圆

 楼主| 发表于 2011-5-25 22:30:18 | 显示全部楼层
回复【152楼】569969746
-----------------------------------------------------------------------

不用太在意那个绝对值海拔300米.
相对值变化有效就行.

我是通过爬楼梯来测试高度变化的.
也坐电梯测试过.

出0入0汤圆

发表于 2011-5-25 22:43:27 | 显示全部楼层
回复【153楼】MAPGPS
-----------------------------------------------------------------------

你的那个高度转换是怎么转换的,我看不懂。呵呵

出0入0汤圆

发表于 2011-5-25 22:43:52 | 显示全部楼层
回复【153楼】MAPGPS
-----------------------------------------------------------------------

你的那个高度转换是怎么转换的,我看不懂。呵呵

出0入0汤圆

 楼主| 发表于 2011-5-25 22:54:00 | 显示全部楼层
回复【155楼】569969746
回复【153楼】mapgps  
-----------------------------------------------------------------------
你的那个高度转换是怎么转换的,我看不懂。呵呵
-----------------------------------------------------------------------

其实我那个本质上也是折线法计算高度.
只是等间距(1024)折点而已, 这样就可用数组来表示, 而不象你那个要一堆IF ELSE语句.

出0入0汤圆

发表于 2011-5-25 23:01:13 | 显示全部楼层
嗯,现在又有新问题了,我这个传感器,就是补偿的值现在是逐渐自己下降,下降的很快还。不知道怎么了,是不是坏了,你的那个有这种现象么,我想检测大概40cm的变化,你觉得用它靠谱么。

出0入0汤圆

发表于 2011-5-25 23:01:35 | 显示全部楼层
回复【156楼】MAPGPS
-----------------------------------------------------------------------

嗯,现在又有新问题了,我这个传感器,就是补偿的值现在是逐渐自己下降,下降的很快还。不知道怎么了,是不是坏了,你的那个有这种现象么,我想检测大概40cm的变化,你觉得用它靠谱么。

出0入0汤圆

发表于 2011-5-25 23:03:08 | 显示全部楼层
回复【156楼】MAPGPS
-----------------------------------------------------------------------

p的值从100000左右开始自己下降,速度还挺快的。

出0入0汤圆

发表于 2011-5-25 23:12:03 | 显示全部楼层
回复【158楼】569969746
-----------------------------------------------------------------------

有的时候自己又好了,我真是无语,不知道是哪的原因

出0入0汤圆

发表于 2011-5-26 10:13:27 | 显示全部楼层
回复【156楼】MAPGPS
-----------------------------------------------------------------------

问一下,你测的那个数据,你家的茶几大概高度多少啊,你觉得我用这个芯片检测40cm的高度变化靠谱么。

出0入0汤圆

发表于 2011-5-26 17:38:55 | 显示全部楼层
回复【156楼】MAPGPS
-----------------------------------------------------------------------

我现在用的这个芯片好像不咋稳定啊,我就只测量D1 ,就是芯片自己转换测得的pressure,就不稳定,经常自己就越来越大,然后有的时候就稳定在一个差不多的值上面。

出0入0汤圆

 楼主| 发表于 2011-5-26 19:25:10 | 显示全部楼层
回复【161楼】569969746
-----------------------------------------------------------------------

茶几大概高度0.5米.
大气压是周期性变化的, 在一天内有好几个峰点和谷点. Google一下有很多这样的知识性东东.

出0入0汤圆

发表于 2011-5-31 10:40:08 | 显示全部楼层
楼主,现在我在搞GPS这一部分,我是先进行GPS的测试,连到电脑上,接收的经纬度差不多靠谱,就是时间很不准,超前8个小时,想烧写固件修正一下,但是怎么也烧写不上,想问问您,时间不准对这个没影响吧,要是没影响就不改了,谢谢。

出0入0汤圆

 楼主| 发表于 2011-5-31 18:41:14 | 显示全部楼层
回复【164楼】Michelle198177
-----------------------------------------------------------------------

这不影响使用.
GPS用GMT时间, 与我们有8小时的时差.

出0入0汤圆

发表于 2011-5-31 19:32:04 | 显示全部楼层
mark 电子罗盘

出0入0汤圆

发表于 2011-6-1 09:27:10 | 显示全部楼层
回复【163楼】MAPGPS
-----------------------------------------------------------------------
那你觉得我用这个实时检测半米的高度变化靠谱么

出0入0汤圆

发表于 2011-6-1 09:28:04 | 显示全部楼层
回复【163楼】MAPGPS
-----------------------------------------------------------------------
那你觉得我用这个实时检测半米的高度变化靠谱么

出0入0汤圆

发表于 2011-6-1 10:03:54 | 显示全部楼层
楼主,那个GPS与AR连接,如何实现pin1从0v变为5v,是不是您加载的dwc_otg.ko驱动的结果,这个驱动怎么加载的,是不是通过您改造的那个USB的那个刷机线与电脑连接,然后再加载这个驱动

出0入0汤圆

 楼主| 发表于 2011-6-1 18:36:08 | 显示全部楼层
回复【169楼】Michelle198177
-----------------------------------------------------------------------
加载的dwc_otg.ko是通过Telnet到AR.Drone的Linux里运行命令:
insmod /data/video/dwc_otg.ko
Pin1从0v变为5v
之前要先把dwc_otg.ko通过FTP上载到目录/data/video下.

也可将Pin2的12V接Arduino Nano的VIN脚来供电. Nano带电源模块, 会在+5V脚产生5V输出, 可供GPS用.

出0入0汤圆

发表于 2011-6-1 19:45:12 | 显示全部楼层
楼主,我很菜,那个通过FTP上载,是用FTP工具,通过USB线上载到目录下吗?

出0入0汤圆

 楼主| 发表于 2011-6-1 20:40:20 | 显示全部楼层
回复【171楼】Michelle198177
楼主,我很菜,那个通过ftp上载,是用ftp工具,通过usb线上载到目录下吗?
-----------------------------------------------------------------------

不是通过usb线.
是PC机WiFi连接AR.Drone. 有IP就能干任何IP based东东 ---- FTP, TELNET, ...

出0入0汤圆

发表于 2011-6-1 20:52:58 | 显示全部楼层
明白了

出0入0汤圆

发表于 2011-6-1 20:55:56 | 显示全部楼层
我现在在用您说的第二种方法,连接GPS,telnet后,输入那个cat命令,但是显示,not found,试了好几次都不行。我是将GPS的TX接AR的RX,GPS的GND和AR的GND相接,将AR的pin2(12v)接arduino的VIN,然后arduino的5v接GPS的5v,应该是这样吧,为什么不行呢,楼主帮忙看看

出0入0汤圆

 楼主| 发表于 2011-6-1 21:10:51 | 显示全部楼层
回复【174楼】Michelle198177
-----------------------------------------------------------------------

Arduino的GND也要跟AR.Drone和GPS的地接在一起.

你输的啥cat命令?
应该是:
cat /dev/ttyPA0

而且串口波特率要一致.
/dev/ttyPA0缺省115200
GPS缺省9600

你改哪边都行, 只要一致.
改 /dev/ttyPA0 成 9600 的Linux 命令:
stty -F /dev/ttyPA0 9600

出0入0汤圆

发表于 2011-6-1 21:24:38 | 显示全部楼层
回复【175楼】MAPGPS
-----------------------------------------------------------------------
谢谢,数据出来了,明天再试试第一种方法。对Linux命令不熟,格式错了,呵呵cat后面直接跟了反斜杠,还有,我的GPS是470,是不是波特率是4800啊,因为我一改9600,AR的绿灯就变红了,最后改了4800好了

出0入0汤圆

发表于 2011-6-7 16:06:41 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-13 10:28:21 | 显示全部楼层
楼主,我杯具了,今天用FTP软件,上传了dwc_otg.ko文件,为保险,还用find命令查看了一下,确实是上传到了/data/video里了,然后执行insmod。完事之后为了检验一下,给ar装上电池后,我用表测量pin1口,看看是不是5v,结果还是0.我是把ar翻过了肚子朝上测量的,不知是不是这个缘故,没反应之后,把ar翻过了方正后,就闻到糊味了,然后就看见一个螺旋桨冒烟了,赶紧断电,一摸那个螺旋桨下面的电机,很热,但是别的螺旋桨都没事。再装上电池,还是这样,很热,而且就一个螺旋桨的红灯亮,其他都不亮,不知怎么回事,难道真的坏了,大家谁遇到这种情况,给讲讲吧。谢谢啦。

出0入0汤圆

发表于 2011-6-13 16:08:30 | 显示全部楼层
又悲剧了,一天两次杯具真是不想活了,啊~~~。拿了另一个AR试了试,我测量的时候,是不是给不小心短路了还是啥的,开始pin6还能输出电压,后来就没了,通电后,总是红灯亮,就是不变绿,wifi也没了,试了试四个螺旋桨,热的很快,赶紧断电。这是怎么了,怎么办,要刷机吗,救命啊。

出0入0汤圆

 楼主| 发表于 2011-6-13 18:33:59 | 显示全部楼层
回复【179楼】Michelle198177
-----------------------------------------------------------------------

Pin 2 上有12V电压, 你的表针将其与相邻针脚短接了 ---- 烧电路了!
导致了硬件故障. 不是刷机能解决的了.

八成是电源模块烧了 --- 电调发热估计它上面的5V输入也变12V了(电源模块击穿了!).

出0入0汤圆

发表于 2011-6-13 19:47:46 | 显示全部楼层
楼主,用ftp软件上传,为什么不行呢,明明能找到dwc_otg.ko,但是pin1电压还是0

出0入0汤圆

 楼主| 发表于 2011-6-13 20:14:24 | 显示全部楼层
回复【181楼】Michelle198177
楼主,用ftp软件上传,为什么不行呢,明明能找到dwc_otg.ko,但是pin1电压还是0
-----------------------------------------------------------------------

运行3条命令:
gpio 127 -d ho 1
gpio 127 -d i
insmod /data/video/dwc_otg.ko

最好在AR.Drone的USB口上接个U盘(或SD读卡器, 或Arduino USB)来测. U盘灯亮了就表示有5V, 这样安全.
(那万用表笔很容易滑碰到别的针脚, 造成短接)


关于电源模块, 有DIY修好的先例:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4614269&bbs_page_no=3&bbs_id=1025

出0入0汤圆

发表于 2011-6-13 20:29:11 | 显示全部楼层
好的,我试试,insmod是上载模块的,那个前两个命令是为了为什么,查不到,谢谢

出0入0汤圆

发表于 2011-6-13 20:30:43 | 显示全部楼层
可能坏了两个AR,再这么下去,就都让我折腾死了

出0入0汤圆

 楼主| 发表于 2011-6-13 20:37:55 | 显示全部楼层
回复【183楼】Michelle198177
好的,我试试,insmod是上载模块的,那个前两个命令是为了为什么,查不到,谢谢
-----------------------------------------------------------------------

http://www.ardrone-fHimems.com/forum/viewtopic.php?f=8&t=829

出0入0汤圆

发表于 2011-6-13 20:54:33 | 显示全部楼层
输入了三行命令,最后出现insmod:can't insert '/data/video/dwc_otg.ko':invalid module format

出0入0汤圆

发表于 2011-6-13 20:55:32 | 显示全部楼层
MARK

出0入0汤圆

 楼主| 发表于 2011-6-13 21:21:45 | 显示全部楼层
回复【186楼】Michelle198177
输入了三行命令,最后出现insmod:can't insert '/data/video/dwc_otg.ko':invalid module format
-----------------------------------------------------------------------

用dmesg命令看看insmod出错的原因.

Google "insmod invalid module format" 有答案.

出0入0汤圆

发表于 2011-6-14 06:10:01 | 显示全部楼层
楼主,我看了你以前发的一个帖子,我的英文不是很好,觉得上面的意思是不是有三个解决方案,一个是通过编译器改版本号,一个是升级AR固件,还有一个是把编译好的dwc_otg.ko里的有关版本的那一条删掉。这是我的理解,哎,我的英语语法不咋地,谢谢。

出0入0汤圆

发表于 2011-6-14 15:52:51 | 显示全部楼层
神人神帖。

出0入0汤圆

 楼主| 发表于 2011-6-14 20:21:33 | 显示全部楼层
回复【189楼】Michelle198177
楼主,我看了你以前发的一个帖子,我的英文不是很好,觉得上面的意思是不是有三个解决方案,一个是通过编译器改版本号,一个是升级ar固件,还有一个是把编译好的dwc_otg.ko里的有关版本的那一条删掉。这是我的理解,哎,我的英语语法不咋地,谢谢。
-----------------------------------------------------------------------

差不多是那样.
本质上就是要把dwc_otg.ko里的版本号搞成跟你的AR.Drone固件内核版本号一样(用 uname -a 查看).

如果Linux功底不够或不想深入去学, 那就用变通的方法:
将AR.Drone Pin 2的12V接到Arduino Nano的VIN针脚来供电, 这样在Arduino Nano的+5V针脚上可以输出5V给GPS等供电.
然后在Arduino上编程, 通过串口来控制AR.Drone飞行, 参考rcgroups上miru的方案:
http://www.rcgroups.com/forums/showthread.php?t=1420951&page=1

坛子里的ty9000用过miru的方案:
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4789710&bbs_page_no=1&bbs_id=1025

出0入0汤圆

发表于 2011-6-15 06:12:28 | 显示全部楼层
回复【191楼】MAPGPS
-----------------------------------------------------------------------

好的,谢谢,你说的第二种方案我试过,我是想向您弄的一样简介,才尝试第一种的,可是水平不行,保险点,还是用第一种吧,要是时间宽裕, 再试试第一种。

出0入0汤圆

发表于 2011-6-15 10:38:19 | 显示全部楼层
楼主,我查了一下版本号,是一样的,不是版本的问题,刚才删了.ko文件,又重新上传了一下,没问题了,刚才测了电压,变成5v了,谢谢你啦。我会继续努力的!

出0入0汤圆

发表于 2011-6-16 19:28:51 | 显示全部楼层
楼主,求救,我换了个AR,不知怎么地,这回pin1就是变不成5v,我用find命令查了,cdw_otg.ko确实在/data/video下,输入那三条指令后,又用lsmod指令查了,确实是上载了cdw_otg模块,但是,pin1仍是0v,奇怪的是,我断电之后,在重新启动AR后,lsmod命令后,发现,又没有了cdw_otg模块了,怎么回事。再就是那前两条gpio命令,怎么又让127是输入,又让127是输出地,这不是矛盾吗。

出0入0汤圆

 楼主| 发表于 2011-6-16 20:01:19 | 显示全部楼层
回复【194楼】Michelle198177
-----------------------------------------------------------------------

用dmesg命令看出错信息.

输入的那三条命令是一次性的, 即重启复原.
在你深入学习Linux后, 你可将它们写成脚本(Shell scripts), 放到系统启动的批处理文件里, 就可自动执行了.

那两条GPIO命令就是要让127轮变一下, 使能(Enable) USB PHY.

出0入0汤圆

发表于 2011-6-16 23:22:37 | 显示全部楼层
楼主,我用dmesg查看了一下,linux不熟,您帮忙看一下吧,哪里出错了,谢谢
# dmesg
0] UBI: number of PEBs reserved for bad PEB handling: 2
[    0.988074] UBI: max/mean erase counter: 2/1
[    0.988093] UBI: image sequence number: 0
[    0.988148] UBI: attaching mtd3 to ubi1
[    0.988174] UBI: physical eraseblock size:   131072 bytes (128 KiB)
[    0.988198] UBI: logical eraseblock size:    126976 bytes
[    0.988220] UBI: smallest flash I/O unit:    2048
[    0.988240] UBI: sub-page size:              512
[    0.988262] UBI: VID header offset:          2048 (aligned 2048)
[    0.988284] UBI: data offset:                4096
[    0.988633] UBI: background thread "ubi_bgt0d" started, PID 764
[    1.032065] UBI: attached mtd3 to ubi1
[    1.032092] UBI: MTD device name:            "Psystem"
[    1.032114] UBI: MTD device size:            16 MiB
[    1.032135] UBI: number of good PEBs:        127
[    1.032154] UBI: number of bad PEBs:         1
[    1.032173] UBI: max. allowed volumes:       128
[    1.032193] UBI: wear-leveling threshold:    4096
[    1.032213] UBI: number of internal volumes: 1
[    1.032232] UBI: number of user volumes:     1
[    1.032251] UBI: available PEBs:             0
[    1.032271] UBI: total number of reserved PEBs: 127
[    1.032292] UBI: number of PEBs reserved for bad PEB handling: 2
[    1.032316] UBI: max/mean erase counter: 19/11
[    1.032337] UBI: image sequence number: 1308171649
[    1.032393] UBI: attaching mtd4 to ubi2
[    1.032420] UBI: physical eraseblock size:   131072 bytes (128 KiB)
[    1.032444] UBI: logical eraseblock size:    126976 bytes
[    1.032466] UBI: smallest flash I/O unit:    2048
[    1.032485] UBI: sub-page size:              512
[    1.032507] UBI: VID header offset:          2048 (aligned 2048)
[    1.032530] UBI: data offset:                4096
[    1.032873] UBI: background thread "ubi_bgt1d" started, PID 767
[    1.252075] UBI: attached mtd4 to ubi2
[    1.252104] UBI: MTD device name:            "Pupdate"
[    1.252127] UBI: MTD device size:            95 MiB
[    1.252148] UBI: number of good PEBs:        762
[    1.252167] UBI: number of bad PEBs:         4
[    1.252187] UBI: max. allowed volumes:       128
[    1.252207] UBI: wear-leveling threshold:    4096
[    1.252227] UBI: number of internal volumes: 1
[    1.252246] UBI: number of user volumes:     2
[    1.252266] UBI: available PEBs:             0
[    1.252286] UBI: total number of reserved PEBs: 762
[    1.252308] UBI: number of PEBs reserved for bad PEB handling: 7
[    1.252332] UBI: max/mean erase counter: 5/4
[    1.252351] UBI: image sequence number: 2082763925
[    1.252684] UBI: background thread "ubi_bgt2d" started, PID 771
[    1.253721] Initializing USB Mass Storage driver...
[    1.254192] usbcore: registered new interface driver usb-storage
[    1.254247] USB Mass Storage support registered.
[    1.254694] usbcore: registered new interface driver libusual
[    1.254755] i2c /dev entries driver
[    1.255840] sdhci: Secure Digital Host Controller Interface driver
[    1.255872] sdhci: Copyright(c) Pierre Ossman
[    1.257487] parrot5-i2cm parrot5-i2cm.0: controller probe successfully
[    1.259050] parrot5-i2cm parrot5-i2cm.1: controller probe successfully
[    1.259467] p264 driver : p264 init
[    1.259656] p264 driver : probe
[    1.260551] p264 driver : init device ok
[    1.260655] p264 : fiq number 20
[    1.262685] camera 0-0: P6 camif driver attached to camera 0
[    1.263588] camera 0-0: p6 camif driver detached from camera 0
[    1.264159] camera 1-0: P6 camif driver attached to camera 0
[    1.265069] camera 1-0: p6 camif driver detached from camera 0
[    1.265515] Parrot6 SPI driver $Revision: 1.8 $
[    1.266537] p6_spi: clock = 26000000Hz
[    1.266563] p6_spi: tsetupcs = 76ns
[    1.266581] p6_spi: tholdcs = 76ns
[    1.267397] HIFInit
[    1.268723] input: p6_kbd_input as /class/input/input0
[    1.321671] p6_kbd_input p6_kbd_input.0: driver loaded
[    1.322191] dmamem dmamem.0: No static mem pool : big memory allocation can f
ail
[    1.325629] Netfilter messages via NETLINK v0.30.
[    1.325833] nf_conntrack version 0.5.0 (2048 buckets, 8192 max)
[    1.326169] CONFIG_NF_CT_ACCT is deprecated and will be removed soon. Plase u
se
[    1.326204] nf_conntrack.acct=1 kernel paramater, acct=1 nf_conntrack module
option or
[    1.326232] sysctl net.netfilter.nf_conntrack_acct=1 to enable it.
[    1.326921] ip_tables: (C) 2000-2006 Netfilter Core Team
[    1.327134] ClusterIP Version 0.8 loaded successfully
[    1.327270] arp_tables: (C) 2002 David S. Miller
[    1.327359] TCP cubic registered
[    1.327385] NET: Registered protocol family 17
[    1.328157] RPC: Registered udp transport module.
[    1.328187] RPC: Registered tcp transport module.
[    1.351012] UBIFS: recovery needed
[    1.366995] UBIFS: recovery deferred
[    1.367035] UBIFS: mounted UBI device 1, volume 0, name "system"
[    1.367057] UBIFS: mounted read-only
[    1.367080] UBIFS: file system size:   14221312 bytes (13888 KiB, 13 MiB, 112
LEBs)
[    1.367113] UBIFS: journal size:       1015809 bytes (992 KiB, 0 MiB, 6 LEBs)
[    1.367142] UBIFS: media format:       w4/r0 (latest is w4/r0)
[    1.367165] UBIFS: default compressor: none
[    1.367186] UBIFS: reserved for root:  671707 bytes (655 KiB)
[    1.367971] VFS: Mounted root (ubifs filesystem) readonly.
[    1.368270] Freeing init memory: 116K
[    1.369821] ------------[ cut here ]------------
[    1.369856] WARNING: at /home/peline/.ardrone/linux/ARDrone_Version_20110401/
Linux/kernel/linux/drivers/serial/../parrot/serial/parrot5.c:156 parrot5_serial_
int+0x2a0/0x41c()
[    1.369900] Modules linked in:
[    1.369922] [<c029e768>] (dump_stack+0x0/0x14) from [<c003758c>] (warn_on_slo
wpath+0x4c/0x68)
[    1.370000] [<c0037540>] (warn_on_slowpath+0x0/0x68) from [<c01642cc>] (parro
t5_serial_int+0x2a0/0x41c)
[    1.370064]  r6:00000000 r5:c037709c r4:c037709c
[    1.370097] [<c016402c>] (parrot5_serial_int+0x0/0x41c) from [<c005cc7c>] (ha
ndle_IRQ_event+0x44/0x84)
[    1.370171] [<c005cc38>] (handle_IRQ_event+0x0/0x84) from [<c005e37c>] (handl
e_level_irq+0xd0/0x154)
[    1.370239]  r7:00000001 r6:c7a976a0 r5:00000005 r4:c03510e0
[    1.370278] [<c005e2ac>] (handle_level_irq+0x0/0x154) from [<c0025044>] (__ex
ception_text_start+0x44/0x60)
[    1.370353]  r7:00000001 r6:00000000 r5:00000005 r4:c03510e0
[    1.370392] [<c0025000>] (__exception_text_start+0x0/0x60) from [<c00258a8>]
(__irq_svc+0x48/0x8c)
[    1.370460] Exception stack(0xc781d9c8 to 0xc781da10)
[    1.370479] d9c0:                   00000000 00000000 00000000 00003613 00000
000 c7936800
[    1.370536] d9e0: 00000000 00003613 c7936800 c7956d60 00000000 c781da3c c781d
a40 c781da10
[    1.370597] da00: c019b4cc c019ee54 60000013 ffffffff

[    1.370656]  r7:00000001 r6:00000020 r5:fc000000 r4:ffffffff
[    1.370695] [<c019ec80>] (ba315_cmdfunc+0x0/0x20c) from [<c019b4cc>] (nand_do
_read_ops+0x174/0x414)
[    1.370764]  r8:c7936800 r7:c79368c0 r6:00000001 r5:000000bc r4:c798e080
[    1.370811] [<c019b358>] (nand_do_read_ops+0x0/0x414) from [<c019bac0>] (nand
_read+0x90/0xb4)
[    1.370910] [<c019ba30>] (nand_read+0x0/0xb4) from [<c0195554>] (part_read+0x
9c/0xd0)
[    1.370979]  r9:000098a8 r8:000000bc r6:c783b3a0 r5:00000000 r4:00ac98a8
[    1.371026] [<c01954b8>] (part_read+0x0/0xd0) from [<c01a6fb0>] (ubi_io_read+
0x64/0xe8)
[    1.371095]  r6:00ac98a8 r5:00000000 r4:00ac0000
[    1.371127] [<c01a6f4c>] (ubi_io_read+0x0/0xe8) from [<c01a6a98>] (ubi_eba_re
ad_leb+0x1a8/0x29c)
[    1.371193] [<c01a68f0>] (ubi_eba_read_leb+0x0/0x29c) from [<c01a4848>] (ubi_
leb_read+0xd4/0x12c)
[    1.371257] [<c01a4774>] (ubi_leb_read+0x0/0x12c) from [<c010e124>] (ubifs_re
ad_node+0x40/0x1a4)
[    1.371334]  r8:c7a51000 r7:000000bc r6:00000009 r5:c7a51000 r4:c7956d60
[    1.371381] [<c010e0e4>] (ubifs_read_node+0x0/0x1a4) from [<c0122d60>] (ubifs
_load_znode+0x94/0x36c)
[    1.371456] [<c0122ccc>] (ubifs_load_znode+0x0/0x36c) from [<c0110af0>] (ubif
s_lookup_level0+0xd0/0x188)
[    1.371529] [<c0110a20>] (ubifs_lookup_level0+0x0/0x188) from [<c0111d24>] (u
bifs_tnc_locate+0x44/0x17c)
[    1.371592] [<c0111ce0>] (ubifs_tnc_locate+0x0/0x17c) from [<c0111e8c>] (ubif
s_tnc_lookup_nm+0x30/0x108)
[    1.371647] [<c0111e5c>] (ubifs_tnc_lookup_nm+0x0/0x108) from [<c010870c>] (u
bifs_lookup+0x80/0x14c)
[    1.371705] [<c010868c>] (ubifs_lookup+0x0/0x14c) from [<c0090e88>] (do_looku
p+0xcc/0x194)
[    1.371768]  r8:c740be74 r7:c781dea8 r6:c740be08 r5:c7407e18 r4:00000000
[    1.371815] [<c0090dbc>] (do_lookup+0x0/0x194) from [<c0091ee0>] (__link_path
_walk+0x3f4/0xeb8)
[    1.371875] [<c0091aec>] (__link_path_walk+0x0/0xeb8) from [<c0092b48>] (path
_walk+0x50/0x9c)
[    1.371933] [<c0092af8>] (path_walk+0x0/0x9c) from [<c0092d04>] (do_path_look
up+0x128/0x150)
[    1.371991]  r7:00000001 r6:c034b310 r5:c781dea8 r4:c781c000
[    1.372032] [<c0092bdc>] (do_path_lookup+0x0/0x150) from [<c0092da8>] (__path
_lookup_intent_open+0x54/0x94)
[    1.372097]  r8:c034b9c8 r7:00000001 r6:c02fcb19 r5:ffffff9c r4:c781dea8
[    1.372144] [<c0092d54>] (__path_lookup_intent_open+0x0/0x94) from [<c0092e0c
>] (path_lookup_open+0x24/0x2c)
[    1.372208]  r7:c034ba50 r6:00000021 r5:c7ac26e0 r4:c781dea8
[    1.372247] [<c0092de8>] (path_lookup_open+0x0/0x2c) from [<c008e06c>] (open_
exec+0x30/0xcc)
[    1.372305] [<c008e03c>] (open_exec+0x0/0xcc) from [<c008e500>] (do_execve+0x
54/0x1d4)
[    1.372357]  r6:c02fcb19 r5:c7ac26e0 r4:00000000
[    1.372389] [<c008e4ac>] (do_execve+0x0/0x1d4) from [<c0028f14>] (kernel_exec
ve+0x40/0x8c)
[    1.372457] [<c0028ed4>] (kernel_execve+0x0/0x8c) from [<c002545c>] (run_init
_process+0x1c/0x24)
[    1.372521]  r7:00000000 r6:00000000 r5:00000000 r4:c036aec0
[    1.372559] [<c0025440>] (run_init_process+0x0/0x24) from [<c002551c>] (init_
post+0xb8/0x100)
[    1.372616] [<c0025464>] (init_post+0x0/0x100) from [<c000846c>] (kernel_init
+0xd0/0xf8)
[    1.372670]  r5:00000000 r4:c036aec0
[    1.372695] [<c000839c>] (kernel_init+0x0/0xf8) from [<c003ab8c>] (do_exit+0x
0/0x7c4)
[    1.372752]  r4:00000000
[    1.372772] ---[ end trace 4e3c9514091d29dd ]---
[    1.559924] UBIFS: completing deferred recovery
[    1.563500] UBIFS: deferred recovery completed
[    2.298887] UBIFS: mounted UBI device 0, volume 0, name "factory"
[    2.298919] UBIFS: mounted read-only
[    2.298944] UBIFS: file system size:   6221824 bytes (6076 KiB, 5 MiB, 49 LEB
s)
[    2.298975] UBIFS: journal size:       1015809 bytes (992 KiB, 0 MiB, 6 LEBs)
[    2.299004] UBIFS: media format:       w4/r0 (latest is w4/r0)
[    2.299027] UBIFS: default compressor: none
[    2.299048] UBIFS: reserved for root:  293871 bytes (286 KiB)
[    2.327660] UBIFS: recovery needed
[    2.349577] UBIFS: recovery completed
[    2.349615] UBIFS: mounted UBI device 2, volume 0, name "update"
[    2.349645] UBIFS: file system size:   15745024 bytes (15376 KiB, 15 MiB, 124
LEBs)
[    2.349677] UBIFS: journal size:       1015809 bytes (992 KiB, 0 MiB, 6 LEBs)
[    2.349706] UBIFS: media format:       w4/r0 (latest is w4/r0)
[    2.349729] UBIFS: default compressor: none
[    2.349750] UBIFS: reserved for root:  743676 bytes (726 KiB)
[    2.379081] UBIFS: recovery needed
[    2.402016] UBIFS: recovery completed
[    2.402054] UBIFS: mounted UBI device 2, volume 1, name "data"
[    2.402083] UBIFS: file system size:   77328384 bytes (75516 KiB, 73 MiB, 609
LEBs)
[    2.402116] UBIFS: journal size:       3809280 bytes (3720 KiB, 3 MiB, 30 LEB
s)
[    2.402145] UBIFS: media format:       w4/r0 (latest is w4/r0)
[    2.402168] UBIFS: default compressor: none
[    2.402189] UBIFS: reserved for root:  3652410 bytes (3566 KiB)
[    2.503828] Parrot6 SDHCI driver $Revision: 1.7 $
[    2.504083] gpio 37 is not selected.
[    2.504097] Please do it in your board code
[    2.504129] p6 mux select pin @0xfd000058 : 0x55500010->0x55500410
[    2.504157] gpio 36 is not selected.
[    2.504167] Please do it in your board code
[    2.504191] p6 mux select pin @0xfd000058 : 0x55500410->0x55500510
[    2.512059] mmc0: SDHCI controller on p6-sdhci [p6-sdhci.1] using DMA
[    3.055716] mmc0: queuing CIS tuple 0x01 length 3
[    3.095182] mmc0: queuing CIS tuple 0x1a length 5
[    3.112351] mmc0: queuing CIS tuple 0x1b length 8
[    3.115805] mmc0: queuing CIS tuple 0x14 length 0
[    3.118924] mmc0: queuing CIS tuple 0x80 length 1
[    3.119020] mmc0: queuing CIS tuple 0x81 length 1
[    3.119115] mmc0: queuing CIS tuple 0x82 length 1
[    3.119169] mmc0: new SDIO card at address 0001
[    6.227812] AR6000 Reg Code = 0x40000060
[   12.386402] channel hint set to 2412
[   12.398361] AR6000 updating target stats
[   12.792506] AR6000 connected event on freq 2412 with bssid 62:04:7e:62:68:51
listenInterval=0, beaconInterval = 100, beaconIeLen = 0 assocReqLen=0 assocResp
Len =0
[   12.792577] Network: Adhoc (Creator)
[   16.369936] start pwm clock
[   16.970961] camera 0-0: P6 camif driver attached to camera 0
[   19.219460] 00: 16: 44: 81: 61: f7:
[   19.297723] camera 1-0: P6 camif driver attached to camera 0
[   94.148370] dwc_otg: version 2.70a-parrot 22/03/2009
[   94.148657] DWC_otg: info->ctrl_mode = 2, info->vbus_detection = 0
[   94.148691] DWC_otg: MAPGPS: Force Host Mode: ctrl_mode = 1
[   94.149065] DWC_otg: before dwc_otg_core_init(): ctrl_mode = 1
[   94.174486] DWC_otg: IN dwc_otg_core_init(): ctrl_mode = 1
[   94.174518] DWC_otg: DWC_OTG_HOST_ONLY
[   94.387957] DWC_otg: OUT dwc_otg_core_init(): ctrl_mode = 1
[   94.387986] DWC_otg: Host Mode
[   94.388008] DWC_otg: after dwc_otg_core_init(): ctrl_mode = 1
[   94.388029] DWC_otg: dwc_otg_hcd_init()
[   94.388047] DWC_otg: Using DMA mode
[   94.388065] DWC_otg: Device using Buffer DMA mode
[   94.388110] dwc_otg dwc_otg.0: DWC OTG Controller
[   94.405057] /home/peline/.ardrone/linux/ARDrone_Version_20110401/Linux/kernel
/linux/drivers/usb/core/inode.c: creating file 'devices'
[   94.405136] /home/peline/.ardrone/linux/ARDrone_Version_20110401/Linux/kernel
/linux/drivers/usb/core/inode.c: creating file '001'
[   94.441891] dwc_otg dwc_otg.0: new USB bus registered, assigned bus number 1
[   94.442014] dwc_otg dwc_otg.0: irq 29, io mem 0x00000000
[   94.442068] DWC_otg: Init: Power Port (0)
[   94.442193] usb usb1: default language 0x0409
[   94.443098] usb usb1: uevent
[   94.461939] usb usb1: usb_probe_device
[   94.461980] usb usb1: configuration #1 chosen from 1 choice
[   94.462059] usb usb1: adding 1-0:1.0 (config #1, interface 0)
[   94.462320] usb 1-0:1.0: uevent
[   94.497922] hub 1-0:1.0: usb_probe_interface
[   94.497959] hub 1-0:1.0: usb_probe_interface - got id
[   94.497983] hub 1-0:1.0: USB hub found
[   94.498099] hub 1-0:1.0: 1 port detected
[   94.498120] hub 1-0:1.0: standalone hub
[   94.498138] hub 1-0:1.0: ganged power switching
[   94.498160] hub 1-0:1.0: individual port over-current protection
[   94.498186] hub 1-0:1.0: power on to power good time: 2ms
[   94.498234] hub 1-0:1.0: local power source is good
[   94.498258] hub 1-0:1.0: enabling power on all ports
[   94.607144] hub 1-0:1.0: state 7 ports 1 chg 0000 evt 0000
[   94.661751] /home/peline/.ardrone/linux/ARDrone_Version_20110401/Linux/kernel
/linux/drivers/usb/core/inode.c: creating file '001'
[   94.678286] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[   94.678351] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=
1
[   94.678381] usb usb1: Product: DWC OTG Controller
[   94.678403] usb usb1: Manufacturer: Linux 2.6.27.47-parrot dwc_otg_hcd
[   94.678428] usb usb1: SerialNumber: dwc_otg.0
[   94.678520] DWC_otg: MAPGPS: overcurrent_pin = 89
[   94.678543] DWC_otg: MAPGPS: force overcurrent_pin = 0 to avoid Oops
#

出0入0汤圆

发表于 2011-6-16 23:39:12 | 显示全部楼层
楼主,真是奇怪,我换了一个AR,没问题,能够输出5v,为什么这个就不行呢,会不会是硬件问题,因为这个AR前天测电压的时候,可能不小心短接了,螺旋桨的三个电机坏了,我是今天拆了一个牺牲品,换上了三个正常的电机,touch试过了,能飞,一切正常。您说,会不会是问题出在pin1脚本身上。

出0入0汤圆

 楼主| 发表于 2011-6-17 06:37:02 | 显示全部楼层
回复【197楼】Michelle198177
-----------------------------------------------------------------------

可能是Pin1所在的电源模块(VBUS电荷泵)损坏了.

出0入0汤圆

发表于 2011-6-28 20:23:42 | 显示全部楼层
楼主在吗,又来麻烦您了,我上次说有个AR坏了,今天准备修一修,这个AR就是通电后,马达灯都是红的,信号灯没有,而且电调很热,我测了测串口那的电压,pin4是3.2v,pin6是0.02v,估计是串口烧了,所以我就换了个主板,这个主板是从另一个支架断了的AR上拆下来的,通电后,信号灯亮了,是红的,马达也是红的,过一会,信号灯变绿,同时马达灯闪了一下,但仍是红的,不过电调不热了。telnet后,cat /data/syslog.bin 看了信息,貌似电调没问题,dmesg后,没看到串口信息,但是我查了一下那些正常的AR,也没看到串口信息啊。电压表测了串口,各个pin脚的电压正常。我用touch连了一下,顺便升级到了1.6.6(这个版本不知怎么地,视频效果好差,屏幕是花的),能连上,但是显示cut out of emergency。这是怎么回事,请您指点一下。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 06:47

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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