grbl後継ファームウェアの比較・紹介(書きかけ)

grbl1.1のwikiを見ていたところ以下のようなお知らせが載っていました。

Attention: This project is discontinued and has not recceived new commits or accepted pull requests since Aug 30, 2019. For alternatives see µCNC, grblHAL, or FluidNC.

日本語にすると、2019年8月30日から更新していないよ!代わりに別のファームウェアを見てねという感じです。

grbl関連のボードに関して、2023年11月現在、私の感覚ではオリジナルのgrbl(v0.9やv1.1)は、中華CNC基板のファームウェアとして幅広く販売されており、また、ArduinoのCNCシールドを使用するユーザーも多いため、まだまだ多くのユーザーに利用されていると思います。
一方で、新しい制御ボードではgrbl-esp32やgrblHALなど、grblの後継ファームウェアが選択されてきています。

オリジナルのgrblはマイコンArduino Uno(ATmega 328p)の容量ギリギリまで使っているので、これ以上新機能が追加されて発展することはおそらくありません。これは安定しているとも言えます。

新規の制御基板では最近のマイコンが使われることが多いため、より機能の多いgrbl後継ファームウェアが利用可能となっています。
今後はgrblの後継ファームウェアを選ぶユーザーが増えていくかと思うので、ここで特徴等も合わせて実際に動かしてみて検証、紹介していこうかと思います。

ちなみにプログラミング関係の知識が多少必要ですが、マイコンが対応していればこれらのファームウェアは相互に入れ替えが可能なはずです。


後継ファームウェア

以下は2023年11月時点での情報です。
もしかしたら間違っている部分があるかもしれません。

基本的にどのファームウェアもgrblのGコードと互換性を維持しているため、実際に運用する場合の加工パス生成レベルでは違いはありません。
違うのは、各設定値の調整方法、調整可能範囲、追加機能などの点になります。

grbl-esp32

項目 内容
概要 grblのESP32マイコン用の移植ファームウェア。
wiki https://github.com/bdring/Grbl_Esp32/wiki
URL https://github.com/bdring/Grbl_Esp32
ライセンス GPLv3
更新頻度 バージョン表記なし。ほぼ更新停止
対応プロセッサ ESP32
ワイヤレス対応 WiFi: WebUI /Telnet、Bluetooth: Serial
採用されている制御基板 CNC xPRO v5、MKS DLC32

FluidNC

項目 内容
概要 前述grbl-esp32の後継ファームウェア。コンパイル無しでマシン定義をする。
wiki http://wiki.fluidnc.com/
URL https://github.com/bdring/FluidNC
ライセンス GPLv3
更新頻度 約1ヶ月ごと更新 v3.7.8(2023/09/06)→ v3.7.9(2023/10/02)https://github.com/bdring/FluidNC/releases
対応プロセッサ ESP32
ワイヤレス対応 WiFi: WebUI /Telnet /WebSocket、Bluetooth: Serial
採用されている制御基板 初期ファームウェアがFluidNCのものは現時点ではない。
変更可能な制御基板はリスト化されている。 http://wiki.fluidnc.com/en/hardware/existing_hardware

grblHAL

項目 内容
概要 32bitマイコンを対象にGrbl互換として構築されたファームウェア
wiki https://github.com/grblHAL/core/wiki
URL https://github.com/grblHAL/core
ライセンス GPLv3
更新頻度 バージョン表記なし。約1週間程度で機能更新。 https://github.com/grblHAL/core/blob/master/changelog.md
対応プロセッサ iMXRT1062, STM32F7xx, STM32H7xx, ESP32, RP2040, MSP432E401Y, TMC129x https://github.com/grblHAL/drivers
ワイヤレス対応 WiFi: WebUI /Telnet /WebSocket、Bluetooth: Serial
採用されている制御基板 BlackBox X32、FlexiHAL

μCNC

項目 内容
概要 様々なマイコンでGrbl互換として利用できるように構築されたファームウェア
wiki https://github.com/Paciente8159/uCNC/wiki
URL https://github.com/Paciente8159/uCNC
ライセンス GPLv3
更新頻度 約1ヶ月ごと更新 v1.8.0(2023/10/18)→ v1.8.1(2023/11/01)https://github.com/Paciente8159/uCNC/releases
対応プロセッサ AVR, STM32F1, STM32F4, SAMD21, ESP8266, ESP32, LPC1768, RP2040 https://github.com/Paciente8159/uCNC/wiki#current-%C2%B5cnc-supported-hardware
ワイヤレス対応 WiFi: Telnet、Bluetooth:Serial
採用されている制御基板 おそらく初期ファームウェアがμCNCの基板はない

動作確認

確認内容

項目 内容
インストール方法 ファームウェアを制御基板へインストールする方法(ソースコードからコンパイル?、インストーラー?)
※公式配布コンパイル済み制御基板専用ファームウェアを直接書き込みは記載しない。
マシン定義方法 軸名や各種スイッチと基板入出力との関連付け方法。ソースコードに記述?設定ファイル?
マクロ追加方法 スイッチ等に対応したマクロ(一連の処理)を追加する方法
カスタムGコード追加方法 マクロであったりカスタムの機能を追加する方法
Kinematics追加・変更方法 軸の動作方法(運動学)の変更方法。CoreXYやロボットアームなど
追加機能 サーボ対応、バックラッシュ補正、エンコーダー対応、ディスプレイ対応など元々のgrblになかった機能

検証環境

制御基板:Makerbase MKS DLC32
使われているマイコン:ESP32
ステッピングモータドライバー:A4988

余談ですが、Makerbaseの基板を始めとした中華基板系はオープンソースとなっていなかったり、オープンソースのコミュニティに寄与していなかったり支援していないこともあるためか、ファームウェア開発側からはあまり歓迎されていない雰囲気があるように思います。(ファームウェアに関係ないトラブルも多いという点もあるかもですが)
なので、この手の中華基板を使ってトラブル等ある場合は基本的には自分で調べて自己解決が必要になります。まぁ安いのでその辺はトレードオフですね。

grbl-esp32

項目 内容
インストール方法 ・ソースコードからコンパイルして書き込み
マシン定義方法 ・ソースコードMachine.hにて定義
マクロ追加方法 ・ソースコードにてマクロが有効化されている場合、パラメータ設定にてコマンド、ファイルを指定可能
・Gコードの範囲外の処理の場合はソースコード内にて記述が必要
wiki説明
カスタムGコード追加方法 ソースコードのGcode.cppを編集すれば可能だが、簡単に追加できるようなフックはない
Kinematics追加・変更方法 ・ソースコードのcustom_code_template.cppをベースに処理を記述
追加機能 サーボプッシュ通知、WEBUI、SDカード

関連記事:

FluidNC

項目 内容
インストール方法 ・公式配布バイナリを書き込み
・ソースコードからコンパイルして書き込み
Webインストーラーを使って書き込み
マシン定義方法 ・config.yamlを作成して制御基板にアップロード
マクロ追加方法 ・macroピンを定義することで有効化し、内容はconfigにて記載(Gコード、特殊コマンドのみ)
wiki説明
カスタムGコード追加方法 ソースコードのGcode.cppを編集すれば可能だが、簡単に追加できるようなフックはない
Kinematics追加・変更方法 ・定義済みのKinematicsはconfigファイルにて指定
・定義されていないものはソースコードにて追加(KinematicsSystemクラス)
wiki説明
追加機能 複数種類モーター対応ローカルファイルシステム、WEBUI、SDカード、ミニOLED対応

関連記事:

grblHAL

WebBuilderを使わない場合環境構築はその他に比べてめんどくさめ

項目 内容
インストール方法 Web Builderにてファイルを作成して書き込み(試験的)
・ソースコードからコンパイルして書き込み
wiki説明
マシン定義方法 ・ソースコードにて変更 例:xPRO v5用
マクロ追加方法
カスタムGコード追加方法 Mコード追加のテンプレート有り。ソースコード変更してコンパイル。
Kinematics追加・変更方法 ・corexyなど定義済みのものはconfig.hにて有効化
・未定義のものはKINEMATICS_APIを有効化して追加
追加機能

μCNC

項目 内容
インストール方法 ・ソースコードからコンパイルして書き込み
マシン定義方法 µCNC config builder にて設定したファイルを使いコンパイル
カスタムGコード追加方法
Kinematics追加・変更方法
追加機能

総評

あとから書く

軸やピンの設定、定義はFluidNCを除いてソースコードを変更してコンパイルするのが基本。
このため、ABC軸を振りたい場合や、軸とドライバーの順番変更などの少し設定変更の場合、FluidNC以外はハードル高い。多少プログラミングが分かることが前提となる。

逆に言えば、制御基板の使い方が完全に決まっており変わることがない場合はどのファームウェアを使っても問題はなさそう。