格安なのに結構しっかりとしていると話題の3Dプリンタ、KINGROONのKP3Sを改造してオートレベリング対応するため、BLTouch(のクローンである3DTouch)に対応させるべくファームウェアを更新したのでその方法をメモしておきます。
moyashi (@hitoriblog)さんの軽量化&静音化の改造パーツを取り付けるところまでは前回の記事で紹介しました。今回は オートレベリング用の3DTouch対応のためのファームウェア更新について手順と調べたことをまとめます。
バージョンの確認
最初に3Dプリンタのバージョンを確認しておきます。
まず、KINGROON KP3Sの本体のバージョンが複数あります。基本的にいまは3.0が主流となっており、Titan版と呼ばれるフィラメント送り出しの構造が改善されたものになっているようです。
さらに中に入っているKINGROON KP3Sのマザーボードのバージョンも複数あるようです。このバージョンを間違えて違うバージョンのファームウェアを書き込まないように確認が必要です。
今はリンク切れで入手できなくなってしまったのですが、2021年10月30日の時点でKINGROONの英語版サイトに掲載されていたファームウェアに同梱されていたPDFによれば、3Dプリンタの筐体に貼り付けられているシリアルナンバーでマイコンは判別できるようです。
私が2021年9月に買ったものは以下の通りです。
- 本体のバージョン:KP3S 3.0
- マザーボード:V1.2
- マザーボードに使われているマイコン:STM32F103VET6
更新手順
基本的には以下の手順で更新できます。
- ファームウェア更新用データをダウンロードしてくる
- 3Dプリンタに合わせて
robin_nano_cfg.txt
を編集する - ファームウェア更新用データと
robin_nano_cfg.txt
をmicroSDに保存して3Dプリンタにセットする - 3Dプリンタを再起動する(場合によっては2回再起動する必要あり?)
所々で困ったところがあったので各ステップの内容をメモしておきます。
基本的にはmoyashiさんのまとめページおよびファームウェアに同梱されていたドキュメントを参照しています。
現行のエクストルーダ(Titan版と呼ばれるフィラメント送り出しの構造が改善されているものです)と旧式(MK8エクストルーダ版と呼ばれることもあるようです)の情報と入り交じっているため※です。
ファームウェア更新について手順と調べたことを別記事でまとめます。
3DプリンタKINGROON KP3Sを購入しました | Memoteki
https://memoteki.net/archives/3793
ちなみに、上記の通り、前回の記事を書いた2021年11月の時点では
- moyashiさんがページ公開されてからしばらく経過して状況が変化した部分がある
- moyashiさんが公開されているページには掲載されていないが他で掲載されている情報が増えて(しかもそれが時期によって微妙に違ったりして)ややこしくなっている
と言う状況だったので、この記事ではファームウェア関連情報をまとめる予定だったのですが、 私がモタモタと情報整理しているうちにmoyashiさんがKINGROON KP3S INFOを更新されています! ありがたや。
日本語版のrobin_nano_cfg.txtもKP3S 3.0ベースに更新しておいた。 “ファームウェアの扱いと設定 – KINGROON KP3S情報” https://t.co/Yj0CQHGCHN
— moyashi (@hitoriblog) January 29, 2022
ファームウェア更新用データの入手
ファームウェア更新に必要なデータが複数種類公開されています。
基本的に大きく違うのは2カ所です。1つ目がマイコン用のファームウェア本体、2つ目がパラメータを保存したテキストファイルです。詳しくはこの記事の後半に調べたこととしてまとめています。
2022年2月12日現在、STM32F103が搭載された基板で3DTouchを使う場合は、2021年10月18日更新のファイルでTitan+3DTouch対応版として紹介されているものを使うのが良さそうです。
https://drive.google.com/file/d/1mSXZBLzWFwz71TwLO893RK2lJLcrCqDr/view
(3DTouch対応とは書かれていない) STM32F103/GD32F303対応のファームウェアとして公開されているもの(KP3S-Firmware-20210726stm103gd32.zip)で3DTouch対応しようとすると表示が中途半端になっていました。データが破損しているのか詳細は不明です。
3Dプリンタに合わせてrobin_nano_cfg.txt
を編集する
ダウンロードできるデータには中国語(簡体字)でコメントが書かれています。
DeepLなどで翻訳しながら読んでもよいと思いますが、詳細なパラメータについてはmoyashiさんのまとめページにかなり丁寧に説明があり、さらに日本語版のコメント入りファイルもあるのでそちらを参照するのがよいと思います。
私が使ったのはVersion 0.0.1の3DTouch用設定ファイルベースなのですが、そのときは以下の設定について変更しました。
- INVERT_E0_DIR
- DEFAULT_E0_STEPS_PER_UNIT
- X_PROBE_OFFSET_FROM_EXTRUDER
- Y_PROBE_OFFSET_FROM_EXTRUDER
- Z_PROBE_OFFSET_FROM_EXTRUDER
- GRID_MAX_POINTS_X
- GRID_MAX_POINTS_Y
以下の項目についても3DTouch用に設定するのに重要なものなのですが、あらかじめ設定されていたので変更は不要でした。
- BED_LEVELING_METHOD
- BLTOUCH
--- a/robin_nano_cfg.txt Fri Mar 5 02:57:16 2021
+++ b/robin_nano_cfg.txt Sun Feb 13 16:09:22 2022
@@ -1,2 +1,3 @@
-# robin_nano_cfg.txt [3D Touch] 日本語版 2021.3.5 Version.0.0.1 by @hitoriblog
+# robin_nano_cfg.txt [3D Touch] 日本語版 2021.10.30 Version 0.1.0 by @Tiryoh
+# robin_nano_cfg.txt [3D Touch] 日本語版 2021.3.5 Version.0.0.1 by @hitoriblog の派生物です
@@ -142,3 +143,3 @@
>INVERT_Z_DIR 1
->INVERT_E0_DIR 0
+>INVERT_E0_DIR 1
>INVERT_E1_DIR 0
@@ -149,3 +150,3 @@
>DEFAULT_Z_STEPS_PER_UNIT 800 # Z軸デフォルトパルス数 (単位:steps/mm)
->DEFAULT_E0_STEPS_PER_UNIT 185 # E0軸デフォルトパルス数 (単位:steps/mm)
+>DEFAULT_E0_STEPS_PER_UNIT 768 # E0軸デフォルトパルス数 (単位:steps/mm)
>DEFAULT_E1_STEPS_PER_UNIT 90 # E1軸デフォルトパルス数 (単位:steps/mm)
@@ -251,7 +252,7 @@
#プローブインターフェイス Z-Min または Z-Max
->Z_MIN_PROBE_PIN_MODE 2 # (0:未使用; 1:Z_MINに接続; 2:ZMAXに接続)
+>Z_MIN_PROBE_PIN_MODE 2 # (0:未使用; 1:Z-MINに接続; 2:Z-MAXに接続)
->Z_PROBE_OFFSET_FROM_EXTRUDER -0.8 # Z オフセット: -below +above [the nozzle]
->X_PROBE_OFFSET_FROM_EXTRUDER 27.5 # X オフセット: -left +right [of the nozzle]
->Y_PROBE_OFFSET_FROM_EXTRUDER 0 # Y オフセット: -front +behind [the nozzle]
+>Z_PROBE_OFFSET_FROM_EXTRUDER -1.3 # Z オフセット: -below +above [the nozzle]
+>X_PROBE_OFFSET_FROM_EXTRUDER 22.5 # X オフセット: -left +right [of the nozzle]
+>Y_PROBE_OFFSET_FROM_EXTRUDER 0.0 # Y オフセット: -front +behind [the nozzle]
>XY_PROBE_SPEED 4000 # プローブXY軸移動速度 (単位:mm/m)
@@ -264,4 +265,4 @@
->GRID_MAX_POINTS_X 3 # X軸グリッド数 (<= 15)
->GRID_MAX_POINTS_Y 3 # Y軸グリッド数 (<= 15)
+>GRID_MAX_POINTS_X 4 # X軸グリッド数 (<= 15)
+>GRID_MAX_POINTS_Y 4 # Y軸グリッド数 (<= 15)
>Z_CLEARANCE_DEPLOY_PROBE 20 # Z軸リフト量/ローディスタンス (> 0)
3Dプリンタにデータを書き込み
ファームウェア更新用データ(Robin_nano.bin
ファイルとmks_font
フォルダとmks_pic
フォルダ)と設定ファイルのrobin_nano_cfg.txt
をmicroSDカードに保存します。
microSDカードを3Dプリンタにセットします。
3Dプリンタを再起動します。場合によっては2回再起動する必要あるようです。再現性がないため2回再起動する必要がある場合とない場合の違いがよくわかっていません。
以上でファームウェア更新終了です。
初回の調整
このあとはZオフセット(3DTouchのプローブの先端とノズル先端の距離)を調整します。以下の記事の「自動ベッドレベリング(オートレベリング)の準備」を参照して実施します。この手順はセットアップ済OctoPiまたはプリンタとUSBケーブルで繋げられるPCが必要になります。
設定した内容はG-CodeのM503
で現在の設定をダンプできるので、その表示内容から確認できます。
M503
実行結果オートレベリング
3DプリンタのAutoLevelボタンを押す、またはOctoPrintからレベリング(G-CodeのM501
)を指令すれば、オートレベリングが始まります。
OctoPrintにはBed Level Visualizerというプラグインがあるのでこれを使うとレベリングが簡単にでき、さらに可視化もできます。
G28
@BEDLEVELVISUALIZER
G29
M500
G90
G28
以上でオートレベリングが完了です。このあとは無事に1層目が剥がれずに印刷できるか確認しつつ、印刷します。
調査内容
ここから先はファームウェアアップグレードに際して調べたことについてまとめます。
KP3Sにインストールできるファームウェアの選択肢
KP3SにはMarlinやKlipperをファームウェアとしてインストールすることができるようです。
公式サイト内にもBLTouchを使う場合はMarlinを使うような記載があります。
To install BL Touch leveling sensor on Kingroon KP3S 3D printer, we would recommend you to use it based on Marlin firmware.
Kingroon KP3S BLTouch Leveling Sensor Installation Tutorial — Kingroon 3D
https://kingroon.com/blogs/downloads/kingroon-kp3s-bltouch-installation
ファームウェアについてははるかぜさんの記事が詳しいです。
KP3Sのファームウェアの構成
デフォルトのKP3SのファームウェアはMKS Robin Nano Firmwareをカスタムしたものとなっており、そのMKS Robin Nano FirmwareにはMarlinをベースとしているものと、そうでないもの(独自開発?詳細は未確認)の複数種類があるようです。
MKS Robin Nanoは “Guangzhou Makerbase industry Co.,Ltd” が提供する3DプリンタCPUボードの名称で、仕様がGitHub上で公開されています。MKS Robin Nano FirmwareはこのMKS Robin Nano用に開発されたもののようです。ライセンスをきちんと全部確認したわけではないですが、オープンソースのライセンスを選択しているものが多いようです。KINGROONのマザーボードもこのMKS Robin Nanoをベースに開発したものと思われます。V1.2とV1.3で使用されているマイコンが変わっているのでKP3SでもマザーボードがV1.3と書かれているものもあるのかもしれません。
Marlinの構成としては大きく分けてブートローダ、ファームウェアの構成となっており、ビルド時に回転方向や速度等のパラメータも含まれた状態でファームウェアをビルドするようです。
MKS Robin Nanoはその点少し変わっており、ブートローダによってファームウェアを書き込む時にコンフィグファイルから設定を読み出しながらファームウェアを書き込むようです。
つまりパラメータ調整だけならばビルド環境がなくともファームウェアを更新できる仕様となっているようです。
Marlinベースのものは以下のGitHubリポジトリで公開されているようです。
ちなみにmoyashiさんが公開しているMarlinのページにはさらっとすごいことが書いてあります。
MarlinのライセンスはGPL-3.0なので、筆者はソースコードの公開をKINGROONに求めたことがあるが、整理がまだという理由でソースコードの公開を断られた。
Marlinのインストール – KINGROON KP3S情報
http://hitoriblog.com/kingroon_kp3s/docs/installing_marlin/
ほかにもrobin_nano_cfg.txt
を使う3Dプリンタがあるようで、それらのプリンタメーカーの中にもソースコードを公開していないところがあるようです。「代わりにrobin_nano_cfg.txt
からMarlin用の設定を復元できないか?」と言う質問もついでに書かれていますが、難しそうです。
調べて見つけたファームウェア一覧
基本的にはmoyashiさんのまとめページと公式YouTubeの動画に書かれているコメントを参照しています。
- 2020年8月4日更新のファイルでデフォルトのファームウェアとしてYouTubeコメント欄にて紹介されているもの
- 2020年9月10日更新のファイルで3DTouch対応させる用とのファームウェアとしてYouTubeコメント欄にて紹介されているもの。ファイル名からMK8エクストルーダ対応版と推測。
- 2021年4月12日更新のファイルでTitan対応版ファームウェアとしてYouTubeコメント欄にて紹介されているもの。
- 2021年4月12日更新のファイルでMK8エクストルーダ対応版ファームウェアとしてYouTubeコメント欄にて紹介されているもの。
- 2021年3月17日更新のファイルでTitan対応版ファームウェアとしてmoyashiさんのページで紹介されているもの。
- 2021年8月17日更新のファイルで2種類基板用のファームウェアが同梱されて公式ページで紹介されていた(リンク切れ)もの。
- ttps://www.kingroon.com/?do_action=action.download&Dld%=8
- 2021年10月18日更新のファイルでTitan+3DTouch対応版ファームウェアとして公式ページで公開されている+moyashiさんのページで紹介されている+私がKINGROONに問い合わせて案内されたもの。
- 2021年7月26日更新のファイルでSTM32F103/GD32F303対応のファームウェアとして公式ページで公開されている+moyashiさんのページで紹介されている+上記のリンク切れファイルに同梱されていたもの。
- 2021年7月12日更新のファイルでSTM32F407対応のファームウェアとして公式ページで公開されている+moyashiさんのページで紹介されている+上記のリンク切れファイルに同梱されていたもの。
「2021年8月17日更新のファイルで2種類基板用のファームウェアが同梱されて公式ページで紹介されていた(リンク切れ)もの」については文字コード簡体字中国語(GB2312)で書かれた変更履歴ファイルらしきもの(日付と変更内容らしき文章が記載されたもの)も同梱されていました。どういった事情でこのファイルが削除されたのか不明なのでここでは詳細は記載しませんが、調べてみて問題なさそうであればこのファイルの中身についてもどこかで記載したいと思います。
まとめ
KINGROONのKP3Sを改造してオートレベリング対応するため、3DTouchに対応させるべくファームウェアを更新する方法と選択候補となるファームウェアについて調べました。3DTouchを使うには3DTouch用として公開されているものを使うのがよさそうです。マザーボードのマイコンが異なる場合はこのファームウェアは使えないので別途調査が必要そうです。
環境に合わせて使うファイルが変わるのでややこしいですが、V1.2のマザーボードのKP3S 3.0は3DTouchによってオートレベリングができるようになりました。
コメント