Mamba F405 MK2 使用Ardupilot固件



 22/12/25

真的老了,做甚麼事情如果不寫下來,當下以為記得,其實下次再弄的時候已經忘了。

很久以前訂了Mamba F405 Mk2打算來弄VTOL,花了一點時間安裝了Arduion的firmware之後沒把過程寫下,結果今天要再接下去的的時候已經忘了怎麼燒錄的。

研究一下應該是看這篇

https://ardupilot.org/plane/docs/common-loading-firmware-onto-chibios-only-boards.html#common-loading-firmware-onto-chibios-only-boards

使用的是STM自己的燒錄軟體,韌體是https://firmware.ardupilot.org/Copter/beta/MambaF405v2/

裏頭的arducopter_with_bl.hex

with_bl是with boot loader的意思,裝好之後下次就可以用MissionPlanner來刷固件。印象中刷固件的過程好像要拔起來,按住按鈕然後再插上。

有bootloader的話好像不用....要再研究。

今天的工作是慢慢的把周邊裝上。參考這一頁

https://ardupilot.org/plane/docs/common-serial-options.html

不過依照說明SERIAL3 TX3 / RX3 UART3 (Telem1)

安裝Telemetry到Serial3就沒反應,超鳥的,最後還是去看參數


SERIAL3_BAUD是指速度38400,SERIAL3_PROTOCOL 5是用在GPS

https://ardupilot.org/plane/docs/common-serial-options.html

感覺這個頁面寫的比較準...

正在考慮要不要換回預設的port,免得之後還要拆拆裝裝。

心得: 飛控還是別隨便亂買,Mamba會用只是單純的參考Ardupilot支持的硬體列表,加上淘寶價格還不錯。買回來發現因為飛塔為了要搭配4 in 1 ESC,所以最多只能控制四個馬達,不然如果要用在VTOL,要買Matek系列的飛控,他有針對各種布局出不同的硬體,但是缺點是單價高很多,縱使MCU沒變。

另外Mamba這片飛控沒有內建磁羅盤,不過想想也合理,因為飛塔下面就是電變,內建磁羅盤大概也被干擾到不要不要。

但是它內建OSD,外掛的ESC內建電流感應。這點還是不錯的。


22/12/26

今天裝GPS。我用的是BN-880 大陸晶片,內建compass,不知道效果如何,不過之前用過隨便的晶片都還不錯,其實也不見得一定拘泥於M8N這類美國晶片。

接上去一如既往地沒反應,所以做了一條線用電腦測試。是了幾種速度發現是9600跑的是NMEA協定,用電腦測是覺得這個晶片感度真的非常好,室內都能收到訊號,只是沒辦法定位而已。



這一個頁面是關於Serial的各種參數

https://ardupilot.org/plane/docs/parameters.html#serial1-baud

https://ardupilot.org/plane/docs/common-serial-options.html




最後找到問題了,因為預設參數,GPS是設定在SERIAL4的地方,而我們新增SERIAL6也是GPS,但是在GPS_TYPE2卻是0 (none) 把它關掉。結果Ardupilot就一直嘗試用SERIAL4去通信,所以當我把SERIAL4跟GPS_TYPE2都打開的時候,畫面會顯示GPS2 No Fix, No GPS。

最後就是把SERIAL4_PORTOCOL 設定為-1關閉 GPS_TYPE2設定為0 就可以正常運作了。

最後結論是預設參數根本沒有跟這個硬體配合,所以很多外掛都要重新設定才行。

MAMBA F405 MK2 


23/01/02

今天幾乎要把測試機完成了。又升級了一次固件,發現如果是用晶片廠的工具更新的話,參數會被抹除。

另外就是這塊飛控的溫飄超大,開機沒多久偵測的姿態就偏調,用放大鏡看晶片,編號好像怪怪的,順便查看另外一塊F4V3,是直接連型號都擦掉。看來大陸最近因為貿易戰的關係,好像很多晶片都拿不到...慘!

另外研究了一下說明,感覺氣壓計好像蠻重要的,所以就順便在網路上訂了一片單獨的I2C氣壓計外掛。

如果溫飄的問題沒解,我會再買一塊飛控。

做成飛機之前先驗證飛控用


未來飛機會長成這個樣子

後記:後來有一個臉友提醒IMU的問題,他教我用酒精擦過再看,字會比較清楚。結果居然改成MPU6500,昏倒...原本MAMBA MK2是用MPU6000的阿,阿共也真佛心,反正腳位相同,尺寸相同,功能類似就直接幫忙無償升級,真是謝謝喔....

阿這樣原本固件怎麼能用啦,我剛剛查了一下,整個原始碼include的library用不同的IMU就不同了,根本不是參數調整能解決的。靠北...


23/1/3

最後查到這個討論線程 https://discuss.ardupilot.org/t/mamba-f405-mk2-gyro-accel-drift-and-increasing-ground-speed/76436

一模一樣的漂移狀況,看來是無解。

後來放棄要換回BF的固件,發現到一些事情,這塊板子的config最新有2022A跟2022B

https://raw.githubusercontent.com/betaflight/unified-targets/master/configs/default/DIAT-MAMBAF405_2022A.config

https://raw.githubusercontent.com/betaflight/unified-targets/master/configs/default/DIAT-MAMBAF405_2022B.config

比對了一下 光開頭的#define B版就比A版加了ICM42688P這個陀螺儀,而且B版也多了氣壓計

而A版本身就有MPU6000跟6500

這一頁有比較明確的比對

https://www.diatone.us/collections/flightcontroller/products/mamba-mk4-f405mini-flight-control-20mm-m2

看起來我手邊的MK2就只是換了陀螺儀 而沒有氣壓計 應該要用A版的固件,而B版則是給MK4有氣壓計的版本,而最早的MAMBAF405US_I2C則只能用在MPU6000上面。

***以上是錯的A或B都是給MK4用的

***應該要用  Firmware Target : FURYF4OSD (Legacy)

所以正確的產品資訊頁應該是這個

https://www.diatone.us/collections/flightcontroller/products/mb-f405-mk2-fc

超混亂....

23/1/4 凌晨

居然試出來了 太神奇了捷克 要用以下步驟

用 DFU模式直接刷這個版本 https://firmware.ardupilot.org/Copter/latest/MambaF405US-I2C/

DFU直接刷不能用 再用MP刷一次。比較特別的是MP會問要哪個版本,有I2C跟2022兩個版本。

先選I2C,這次地平線會有反應,可是從HW ID 居然沒辨識出ACC感應器 但是就不會飄移 可是GS一樣跳動

然後再用MP刷一次 改選2022版本 就完全解決問題了,GS沒跳動 也不會飄移

23/01/04 上午

昨晚發現的方法居然沒有辦法連上SBUS....幹

搞了一個上午 似乎更新的順序都會影響

燒I2c -> MP更新2022  IMU OK, no RC

燒2022 -> I2c 不行 IMU no ok, no RC

最後的解法

燒v2 ->MP更新,然後copter的不能用,只能用Plane的版本,目前最好的解法,同時解決IMU跟RC IN。


留言