[Omnibus F4] 實用又經濟的入門飛控 F4 V3S

Omnibus F4 是繼 F3 之後,在拍賣網站上,比較容易取得、價格親民的飛行控制器(感謝台灣幾位對航模充滿熱忱的賣家投入,提供物美價廉的產品)。Omnibus F4 飛控,能夠外接的週邊也多,板子上留有許多杜邦接頭排針安裝孔位(很多5V、GND),可以自行決定要安裝的週邊,而且支援它的開源韌體 Betaflight 也相對成熟、並持續有新版出來。我評估了一段時間之後,決定入手 F4,用以學習四軸無人機。
買來這片板子之後,馬上更新了裡面的韌體固件,將之安裝到剛剛設計好的3D列印四軸教練機架上,並連接 FlySky A8S 遙控接收機、BN220 GPS接收器,自此開始學習 Betaflight 中的各項功能。無奈網路找不到任何有關這片Omnibus F4 V3S 板子的詳細說明 (像 Arduino Uno 那麼詳細的說明)只好自行慢慢摸索、試誤,並把已經理解的部份記錄下來,以下我在敘述的時候,會盡量用我所知道的專有名詞替換出現,在別處看到的話,你會知道講得是同一種東西。。在此之前,這份基本的說明書,讓你在試誤過程中,不至於犯下太大的接線錯誤,因而燒毀板子,也避免我這邊紀錄的內容有誤。

[Betaflight] 黑盒子功能認不到SD卡 Fatal Error

想在新買的 Omnibus F4 V3S 上,啟用 Betaflight v4.2.3 黑盒子紀錄功能,以便之後能更深入了解飛控的技術細節。沒想到預計一件簡單的事情,也能花上數小時的時間找問題。剛插入 SD 卡就遇到 SD卡 (TF) 認不到的問題。畫面顯示 Fatal error Reboot to retry:


In the beginning, I acted like an idiot due to the useless instructions on the Blackbox setting screen. After tens of reboots, I still cannot make my SD Card working in Betaflight. I even checked the solder point, when I doubt the solder point of pin headers may probably shorted the SD socket. But finally nothing found.看到不少網友遇到一樣的問題,獲得的診斷詢問、回答,大多都是「你用的 SD 卡是什麼?」、「要麼試試其他的SD卡?」、「你怎麼Format的?確定是用 FAT32 檔案系統,而不是NTFS?」、「你是用Windows的Format程式嗎?不行喔,因為Windows程式的 Format會把一個保護區域刪掉,你得用 SD卡專用的 Format程式」...這些鬼話連篇的解答。

[Betaflight] 更改顯示語言Change Betaflight Configurator Language

 剛剛安裝好的 Betaflight Configurator 10.7.0 ,貼心地為使用者自動辨識系統語言,在中文的Windows、Ubuntu 作業系統下,直接顯示繁體中文。然而 Betaflight 官方文件,只有英文版本。擔心以後讀文件,還要對應軟體裡面的某個地方,會有些吃力,希望能把 Configurator 改成英文介面。但找了好久,都找不到語言設定的選項,後來才發現,原來語言設定放在首頁的頁尾,眼睛太大朵,還真的不容易找到它。



[Betaflight] 用Ubuntu為Omnibus F4 V3S 刷新 Betaflight 韌體

Omnibus F4 是一片性價比好、比較大眾化的飛控 (Flight Controller, FC),500塊台幣左右,就能買到一片體積小、重量輕、功能夠用的完整飛控。我也是比較了各家飛控之後,決定採用這款夠經濟、也還不退流行的 Omnibus F4。目前拍賣網上的賣家,多半都是販售 Omnibus F4 V3 或者 Omnibus F4 V3S 這兩種版本,其中 V3S 是有加上 LC 訊號濾波器的新版本,濾波器讓圖傳讓馬達頻率改變時,減少雜訊,讓信號更純淨、畫面減少波紋。從電路板正面 (有大顆 STM32 MCU 的那面),就可以看出差異,右邊是有濾波器的 V3S:


Omnibus F4 V3S 升級版本

[教學] 認識 MicroPython (三) - 移植 Blink 範例程式到 NodeMCU

NodeMCU Blink範例程式
移植 Arduino IDE 裡面的 Blink 範例程式到 MicroPython,需要用到兩個 MicroPython 模組,time模組用來處理時間延遲,在 MicroPython 裡面,不會直接碰硬體計時器 Timer,或計數器 Counter,他把這些工作,包進去實時作業系統 RTOS 的管理中,以虛擬計時器的方式來實現。machine 模組裡面的 Pin 類別,則是用來控制 NodeMCU 的 GPIO 腳位。

[教學] 認識 MicroPython (二) - 啟用 WebREPL 遠端 WebSocket 服務

安裝了 MicroPython 之後,花了一點時間,參考官網介紹的那些模組與指令,粗淺了解一下支援 NodeMCU、ESP8266 的 Python 模組,同時也想試驗一下,把 Arduino IDE 中,最簡單的 Blink 範例程式移植到 MicroPython 來。
要在 MicroPython 裡面寫入程式,你可以直接用 Python 語言的寫檔語法:
fp = open('main.py', 'w')
fp.writeline('import time\n")
fp.writeline('from machine import Pin\n')
...
只是這樣的搞法,程式出現小錯誤,要用上述寫檔方法改正,會很麻煩。WebREPL目前有上傳、下載檔案的功能,還不如在電腦編輯好,再用這個工具上傳比較方便。

[教學] 認識 MicroPython (一) - 安裝 MicroPython 核心進去 NodeMCU v3

NodeMCU v3 with MicroPython
買來 Node MCU v3 也快一年了,開始試著學用 Arduino IDE 來操作,之前也先試驗過 ESP8266。但總覺得用 Arduino IDE 來開發 IoT ,實在不是個聰明的方法,太多瑣碎的東西需要處理。C語言缺乏一些簡單現成的資料結構、沒有好用的字串處理功能,加上Arduino IDE 對網路、檔案的處理還停留在韌體的概念,對於需要大量處理資料、字串的 IoT 應用,Arduino IDE 簡直是個惡夢。所以自從設計了 Node MCU + NodeMCU Base Ver 1.0 的殼子之後,這玩意兒就這麼擱置了。最近重新發現 MicroPython 這個社群,原來 NodeMCU (ESP8266) 或 NodeMCU 可以裝上他們的 Firmware,並用 Python 語言來開發應用,前幾年曾經看過 MicroPython,但那時還沒有學會 Python,也沒有特別注意。
如果 Microcontroller 單片機,可以用 Python 開發程式,那該是多幸福的事情啊?