websockify-msp-js:透過 WebSocket 遠端存取 Betaflight 飛行控制器

websockify-msp-js:透過 WebSocket 遠端存取 Betaflight 飛行控制器

介紹 websockify-msp-js 如何將 Betaflight MSP 橋接至 WebSocket,讓 Betaflight Configurator、Node.js、Python 與 ROS 2 都能透過網路存取飛行控制器。

websockify-msp-js:透過 WebSocket 遠端存取 Betaflight 飛行控制器

大多數情況下,Betaflight Configurator 都是透過 USB 與飛行控制器通訊。然而,當飛行控制器部署於 Raspberry Pi Companion Computer、機器人平台,或位於無法直接連接 USB 的環境時,遠端管理與除錯就變得不那麼容易。

為了解決這個問題,我們開發了 websockify-msp-js。它是一個輕量級的 MSP Proxy,可將 Betaflight 的 MultiWii Serial Protocol (MSP) 橋接到 WebSocket,讓既有的 Betaflight Configurator 與各種 WebSocket 應用程式都能透過網路直接與飛行控制器通訊。


為什麼需要 MSP Proxy?

MSP 是 Betaflight 最核心的通訊協議之一,負責飛行控制器與上位機之間的資料交換。傳統上,MSP 主要透過 USB 或 UART 傳輸,因此大多數工具都假設飛行控制器直接連接在本機。

Betaflight 社群曾利用 websockify 將 TCP 橋接到 WebSocket,也曾出現 Node.js 版本 websockify-js。然而,這些專案已多年未更新,因此我們重新實作了一個專為 MSP 設計的 Proxy,提供更容易整合與維護的方案。

設計目標

  • 保持與 Betaflight Configurator 完全相容
  • 支援 MSP v1 與 MSP v2
  • 可直接部署於 Raspberry Pi
  • 支援 UART 與 USB
  • 提供封包過濾功能
  • 提供 Web UI 即時除錯

系統架構

[Betaflight Configurator] <-> [WebSocket] <-> [RPi 上的 MSP Proxy] <-> [UART/USB] <-> [TFC1]

MSP Proxy 僅負責橋接不同傳輸層,不修改任何 MSP 封包,因此對 Betaflight Configurator 而言,它仍然是一個標準的 MSP Serial 連線。

GitHub Repository:

https://github.com/t2t-io/websockify-msp-js

Getting Started

安裝

$ git clone https://github.com/t2t-io/websockify-msp-js.git
$ cd websockify-msp-js
$ npm install

啟動

$ node index.js -s /dev/ttyAMA0 -c msp
$ node index.js -s "/dev/ttyUSB0?baudrate=230400" -c msp

使用 Betaflight Configurator 連線至 ws://<RPi_IP>:6761

設定 Betaflight Configurator

Step 1 啟用 Manual Connection Mode。

圖 1:於 Options 啟用 Manual Connection Mode。

Step 2 選擇 Manual Selection,輸入 Raspberry Pi IP 與 Port 6761。

圖 2:透過 WebSocket 連線至 MSP Proxy。

成功連線後,Configurator 的使用方式與 USB 幾乎沒有差異。

圖 3:MSP Proxy Console,可即時觀察與過濾 MSP 封包。


MSP 封包過濾與除錯

# Inclusion Filter
$ node index.js -s /dev/ttyAMA0 -c msp -f "MSP_STATUS,MSP_ATTITUDE,MSP_ANALOG"

# Exclusion Filter
$ node index.js -s /dev/ttyAMA0 -c msp -f "@MSP_ATTITUDE,@MSP_RAW_IMU"

啟用 Web UI:

$ node index.js -s /dev/ttyAMA0 -c msp -w

圖 4:透過 Web UI 即時檢視 MSP 封包,並動態調整過濾規則。


實際應用

除了 Betaflight Configurator,websockify-msp-js 也適合:

  • Raspberry Pi Companion Computer
  • Headless Betaflight Configuration
  • Node.js / Python 自動化工具
  • ROS 2 任務規劃
  • Remote Ground Station
  • Web Dashboard

結語

websockify-msp-js 將 MSP 從傳統的 Serial Transport 延伸到 WebSocket,而不需要修改任何既有的 MSP 工具。

對我們而言,它不只是遠端設定工具,更是 Raspberry Pi Companion Computer 的基礎通訊元件,可作為自主飛行、ROS 2、雲端控制與自動化測試的共同基礎。

有任何問題?需求?建議?

我們期待聽到您的聲音!

您正在尋找