現在看下來開源的飛控已經很穩定了,就是PX4和APM(國內有個基于模型開發的,不過在國外,全球的市場看,不太行,加油吧~),剩下就是FPV這塊了,也是一個樹下7個娃。接著就是一些開源的小飛控。
所以對于現在不用DJI商用飛控這些無人機,那現在選擇也就是PX4了,至于為什么不是APM,我也說不明白,PX4總體是更高級一些的,而且在設計之初就選用很好的技術路線,所以也是高端和專業的代名詞。
PX4,一種是開發板就是上面有IMU,MCU,接口什么的,專注于飛行本身。還有一種是偏向于上層控制的,就是一個較強的計算模塊來發送飛行指令的。
隨著開源硬件樹莓派,這些廉價的ARM硬件盛行,有人就在想,和PX4飛行固件能不能碰撞出不一樣的火花,那有人就想,直接讓樹莓派運行固件就好。
就是這樣
樹莓派硬件運行PX4飛控固件, 這文章好像是21年寫的。
當時的文章現在在現在看起來是有點呆逼的
重溫這篇文章,或是重寫這個文章的理由也很簡單,重溫這個硬件,以及試著給地平線設計一個飛行的載板,地平線的邊緣算力是有點強的。
閑話不多說,開始!
我們從板子的設計上面看,就是6個功能塊:GPS,雙路的IMU,多樣的RC輸入,氣壓,額外的接口(ADC,I2C,UART),電源控制。
1. 雙IMU芯片。Navio2采用兩只IMU芯片,既可以提高飛行性能,也實現了冗余設計,提高了可靠性。
2. 改進的MS5611性能。之前MS5611與總線上其他芯片共享,會產生噪聲。Navio2獨立MS5611于I2C總線上,消除了這一影響。
3. 用微控制器代替PCA9685 PWM發生器。之前版本采用PCA9685芯片產生PWM,但其每個通道的頻率不能獨立控制,給馬達和舵機帶來問題。Navio2采用微控制器代替,可以按組設置每個輸出通道的頻率,解決這個問題。
4. PPM/SBUS解碼由微控制器代替DMA完成。之前Navio+采用DMA采樣PPM信號,占用大量系統資源。Navio2由微控制器完成PPM/SBUS采樣,釋放Raspberry Pi 2的處理器核心用于其他任務。
5. AUX SPI。Navio2是第一個利用Raspberry Pi的AUX SPI控制器的HAT。兩個SPI控制器允許更有效地分配傳感器。
6. ADC接口。之前Navio+的ADC通道只在板底的焊盤上可用,不方便。Navio2的這些通道在DF13接口上可方便訪問。
7. 更好的Linux集成。PWM、ADC、SBUS和PPM通過Linux sysfs集成,可以方便從任何編程語言訪問。未來會有更深入的集成。
具體的傳感器就是這幾個
因為還面臨一個硬件驅動的問題,所以給出的驅動代碼也要學習!
MPU9250,實際上是內部集成了一個 MPU6500 六軸傳感器和一個 AK8963 三軸磁力計,他們共用一個 IIC 接口,這樣組合成一個九軸傳感器。
MPU9250使用的是SPI,20Mhz的采樣頻率
函數庫很簡單的,就是一個更新函數就可以得到數據的
寫一個獲取ACC的函數
這個是芯片的引腳,現在的資料都是IIC的,SPI的設計需要看芯片手冊的
這里放一個IIC的原理圖
SPI的使用就是傳輸速率很穩定性上面
MPU9250內置慣性測量單元(IMU)芯片可以通過SPI接口或IIC接口與主機通信。相比而言,SPI接口有以下優點:
1. 速度更快。SPI通常可以達到更高的通信速度,最大可以達到10MHz以上。IIC通常最高只有400KHz,通信速度較慢。
2. 并行通信。SPI采用并行通信,可以同時發送和接收多位數據,通信效率更高。IIC采用串行通信,一次只能發送和接收1位數據。
3. 更簡單。SPI只需要4條線(SCLK,MOSI,MISO,CSN)即可完成全雙工通信。IIC需要至少2條線(SDA,SCL),通信協議也較為復雜。
4. 可實現更長傳輸距離。采用SPI可以實現較長(10米以上)的傳輸距離。IIC由于采用開漏輸出,傳輸距離較短,一般只有幾米。
5. 支持更高靈活性。SPI通信可以由片選信號(CSN)控制從機,主機可以與多個從機通信; each從機也可以有自己的通信速率。IIC只能固定通信,通信速率也相同。
6. 更強的抗干擾能力。SPI采用差分信號,對噪聲更加魯棒。IIC易受電磁干擾影響,通信質量較差。
ST的這個IMU,我源碼里面沒有找到驅動?
隨便看了看,IIC,不是SPI的
數據手冊里面有
芯片的引腳圖
定義
原理圖
兩個IMU,SPI的接口
emmmm,我要不是搞錯了+和2這個版本,要不就是驅動里面沒有寫這個芯片的驅動。
寫了,我搞錯了。
也是SPI的
這個是氣壓傳感器,電阻橋
氣壓傳感器是使用的IIC
這個是2,最大的改變就是STM32芯片的引入是處理RC信號的
這個是+,兩個版本
這個是老版本的
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
打印出來的數據
這個是擴展的接口
這個就是有趣的東西,有了這個就可以設計電路板了
2代少了PWM的驅動芯片,ADS1115,ADC轉換芯片。
這個好像是一代的引腳來著
這東西不難設計,主要是不想自己寫驅動,想直接用。
還有這個小玩意兒,我也是設計完了,上圖是印度小哥的
目前,我就繪制IMU,GPU,留些接口就行,這個STM32的設計是需要一些時間的。
審核編輯 :李倩
-
微控制器
+關注
關注
48文章
7269瀏覽量
149491 -
gpu
+關注
關注
27文章
4557瀏覽量
127978 -
地平線
+關注
關注
0文章
317瀏覽量
14784
原文標題:讓地平線X3運行PX4(硬件篇)
文章出處:【微信號:TT1827652464,微信公眾號:云深之無跡】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論