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 就可以正常運作了。
最後結論是預設參數根本沒有跟這個硬體配合,所以很多外掛都要重新設定才行。
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。
留言
張貼留言