現(xiàn)在看下來(lái)開源的飛控已經(jīng)很穩(wěn)定了,就是PX4和APM(國(guó)內(nèi)有個(gè)基于模型開發(fā)的,不過在國(guó)外,全球的市場(chǎng)看,不太行,加油吧~),剩下就是FPV這塊了,也是一個(gè)樹下7個(gè)娃。接著就是一些開源的小飛控。
所以對(duì)于現(xiàn)在不用DJI商用飛控這些無(wú)人機(jī),那現(xiàn)在選擇也就是PX4了,至于為什么不是APM,我也說不明白,PX4總體是更高級(jí)一些的,而且在設(shè)計(jì)之初就選用很好的技術(shù)路線,所以也是高端和專業(yè)的代名詞。
PX4,一種是開發(fā)板就是上面有IMU,MCU,接口什么的,專注于飛行本身。還有一種是偏向于上層控制的,就是一個(gè)較強(qiáng)的計(jì)算模塊來(lái)發(fā)送飛行指令的。
隨著開源硬件樹莓派,這些廉價(jià)的ARM硬件盛行,有人就在想,和PX4飛行固件能不能碰撞出不一樣的火花,那有人就想,直接讓樹莓派運(yùn)行固件就好。
就是這樣
樹莓派硬件運(yùn)行PX4飛控固件, 這文章好像是21年寫的。
當(dāng)時(shí)的文章現(xiàn)在在現(xiàn)在看起來(lái)是有點(diǎn)呆逼的
重溫這篇文章,或是重寫這個(gè)文章的理由也很簡(jiǎn)單,重溫這個(gè)硬件,以及試著給地平線設(shè)計(jì)一個(gè)飛行的載板,地平線的邊緣算力是有點(diǎn)強(qiáng)的。
閑話不多說,開始!
我們從板子的設(shè)計(jì)上面看,就是6個(gè)功能塊:GPS,雙路的IMU,多樣的RC輸入,氣壓,額外的接口(ADC,I2C,UART),電源控制。
1. 雙IMU芯片。Navio2采用兩只IMU芯片,既可以提高飛行性能,也實(shí)現(xiàn)了冗余設(shè)計(jì),提高了可靠性。
2. 改進(jìn)的MS5611性能。之前MS5611與總線上其他芯片共享,會(huì)產(chǎn)生噪聲。Navio2獨(dú)立MS5611于I2C總線上,消除了這一影響。
3. 用微控制器代替PCA9685 PWM發(fā)生器。之前版本采用PCA9685芯片產(chǎn)生PWM,但其每個(gè)通道的頻率不能獨(dú)立控制,給馬達(dá)和舵機(jī)帶來(lái)問題。Navio2采用微控制器代替,可以按組設(shè)置每個(gè)輸出通道的頻率,解決這個(gè)問題。
4. PPM/SBUS解碼由微控制器代替DMA完成。之前Navio+采用DMA采樣PPM信號(hào),占用大量系統(tǒng)資源。Navio2由微控制器完成PPM/SBUS采樣,釋放Raspberry Pi 2的處理器核心用于其他任務(wù)。
5. AUX SPI。Navio2是第一個(gè)利用Raspberry Pi的AUX SPI控制器的HAT。兩個(gè)SPI控制器允許更有效地分配傳感器。
6. ADC接口。之前Navio+的ADC通道只在板底的焊盤上可用,不方便。Navio2的這些通道在DF13接口上可方便訪問。
7. 更好的Linux集成。PWM、ADC、SBUS和PPM通過Linux sysfs集成,可以方便從任何編程語(yǔ)言訪問。未來(lái)會(huì)有更深入的集成。
具體的傳感器就是這幾個(gè)
因?yàn)檫€面臨一個(gè)硬件驅(qū)動(dòng)的問題,所以給出的驅(qū)動(dòng)代碼也要學(xué)習(xí)!
MPU9250,實(shí)際上是內(nèi)部集成了一個(gè) MPU6500 六軸傳感器和一個(gè) AK8963 三軸磁力計(jì),他們共用一個(gè) IIC 接口,這樣組合成一個(gè)九軸傳感器。
MPU9250使用的是SPI,20Mhz的采樣頻率
函數(shù)庫(kù)很簡(jiǎn)單的,就是一個(gè)更新函數(shù)就可以得到數(shù)據(jù)的
寫一個(gè)獲取ACC的函數(shù)
這個(gè)是芯片的引腳,現(xiàn)在的資料都是IIC的,SPI的設(shè)計(jì)需要看芯片手冊(cè)的
這里放一個(gè)IIC的原理圖
SPI的使用就是傳輸速率很穩(wěn)定性上面
MPU9250內(nèi)置慣性測(cè)量單元(IMU)芯片可以通過SPI接口或IIC接口與主機(jī)通信。相比而言,SPI接口有以下優(yōu)點(diǎn):
1. 速度更快。SPI通常可以達(dá)到更高的通信速度,最大可以達(dá)到10MHz以上。IIC通常最高只有400KHz,通信速度較慢。
2. 并行通信。SPI采用并行通信,可以同時(shí)發(fā)送和接收多位數(shù)據(jù),通信效率更高。IIC采用串行通信,一次只能發(fā)送和接收1位數(shù)據(jù)。
3. 更簡(jiǎn)單。SPI只需要4條線(SCLK,MOSI,MISO,CSN)即可完成全雙工通信。IIC需要至少2條線(SDA,SCL),通信協(xié)議也較為復(fù)雜。
4. 可實(shí)現(xiàn)更長(zhǎng)傳輸距離。采用SPI可以實(shí)現(xiàn)較長(zhǎng)(10米以上)的傳輸距離。IIC由于采用開漏輸出,傳輸距離較短,一般只有幾米。
5. 支持更高靈活性。SPI通信可以由片選信號(hào)(CSN)控制從機(jī),主機(jī)可以與多個(gè)從機(jī)通信; each從機(jī)也可以有自己的通信速率。IIC只能固定通信,通信速率也相同。
6. 更強(qiáng)的抗干擾能力。SPI采用差分信號(hào),對(duì)噪聲更加魯棒。IIC易受電磁干擾影響,通信質(zhì)量較差。
ST的這個(gè)IMU,我源碼里面沒有找到驅(qū)動(dòng)?
隨便看了看,IIC,不是SPI的
數(shù)據(jù)手冊(cè)里面有
芯片的引腳圖
定義
原理圖
兩個(gè)IMU,SPI的接口
emmmm,我要不是搞錯(cuò)了+和2這個(gè)版本,要不就是驅(qū)動(dòng)里面沒有寫這個(gè)芯片的驅(qū)動(dòng)。
寫了,我搞錯(cuò)了。
也是SPI的
這個(gè)是氣壓傳感器,電阻橋
氣壓傳感器是使用的IIC
這個(gè)是2,最大的改變就是STM32芯片的引入是處理RC信號(hào)的
這個(gè)是+,兩個(gè)版本
這個(gè)是老版本的
Selected: MPU9250 Connection established: True Acc: +0.014 +0.139 +9.974 Gyr: -0.042 +0.022 +0.011 Mag: -3525.450 +29.584 +0.000 Acc: -0.010 +0.268 +10.036 Gyr: -0.042 +0.019 +0.015 Mag: -14.963 +43.390 -50.130 Acc: -0.010 +0.278 +9.888 Gyr: -0.043 +0.021 +0.012 Mag: -16.566 +42.852 -50.302 Acc: +0.010 +0.187 +10.041 Gyr: -0.039 +0.021 +0.011 Mag: -14.963 +42.314 -50.817 Acc: -0.062 +0.158 +9.855 Gyr: -0.039 +0.020 +0.011 Mag: -15.497 +42.493 -49.959 Acc: -0.067 +0.196 +10.056 Gyr: -0.044 +0.020 +0.013 Mag: -14.963 +43.748 -50.130
打印出來(lái)的數(shù)據(jù)
這個(gè)是擴(kuò)展的接口
這個(gè)就是有趣的東西,有了這個(gè)就可以設(shè)計(jì)電路板了
2代少了PWM的驅(qū)動(dòng)芯片,ADS1115,ADC轉(zhuǎn)換芯片。
這個(gè)好像是一代的引腳來(lái)著
這東西不難設(shè)計(jì),主要是不想自己寫驅(qū)動(dòng),想直接用。
還有這個(gè)小玩意兒,我也是設(shè)計(jì)完了,上圖是印度小哥的
目前,我就繪制IMU,GPU,留些接口就行,這個(gè)STM32的設(shè)計(jì)是需要一些時(shí)間的。
審核編輯 :李倩
-
微控制器
+關(guān)注
關(guān)注
48文章
7395瀏覽量
150633 -
gpu
+關(guān)注
關(guān)注
27文章
4632瀏覽量
128442 -
地平線
+關(guān)注
關(guān)注
0文章
327瀏覽量
14865
原文標(biāo)題:讓地平線X3運(yùn)行PX4(硬件篇)
文章出處:【微信號(hào):TT1827652464,微信公眾號(hào):云深之無(wú)跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論