[2022年2月版] 3DプリンタKINGROON KP3Sのファームウェア書き換え

格安なのに結構しっかりとしていると話題の3Dプリンタ、KINGROONのKP3Sを改造してオートレベリング対応するため、BLTouch(のクローンである3DTouch)に対応させるべくファームウェアを更新したのでその方法をメモしておきます。

moyashi (@hitoriblog)さんの軽量化&静音化の改造パーツを取り付けるところまでは前回の記事で紹介しました。今回は オートレベリング用の3DTouch対応のためのファームウェア更新について手順と調べたことをまとめます。

あわせて読みたい
3DプリンタKINGROON KP3Sを購入しました 2021年9月末に新しい3Dプリンタを購入しました。KINGROONのKP3Sという機種です。 ファームウェア入れ替えたり色々改造しようと考えているため、3Dプリンタ自体の紹介も...
目次

バージョンの確認

最初に3Dプリンタのバージョンを確認しておきます。

まず、KINGROON KP3Sの本体のバージョンが複数あります。基本的にいまは3.0が主流となっており、Titan版と呼ばれるフィラメント送り出しの構造が改善されたものになっているようです。

KINGROON KP3S情報

さらに中に入っているKINGROON KP3Sのマザーボードのバージョンも複数あるようです。このバージョンを間違えて違うバージョンのファームウェアを書き込まないように確認が必要です。

今はリンク切れで入手できなくなってしまったのですが、2021年10月30日の時点でKINGROONの英語版サイトに掲載されていたファームウェアに同梱されていたPDFによれば、3Dプリンタの筐体に貼り付けられているシリアルナンバーでマイコンは判別できるようです。

“Read before updating firmware.pdf”と言うファイル名で公開されていたPDFの中身

私が2021年9月に買ったものは以下の通りです。

  • 本体のバージョン:KP3S 3.0
  • マザーボード:V1.2
    • マザーボードに使われているマイコン:STM32F103VET6
V1.2の基板にアクセスした様子 STM32F103VET6と書かれたマイコンが中央に見える

更新手順

基本的には以下の手順で更新できます。

  1. ファームウェア更新用データをダウンロードしてくる
  2. 3Dプリンタに合わせてrobin_nano_cfg.txtを編集する
  3. ファームウェア更新用データとrobin_nano_cfg.txtをmicroSDに保存して3Dプリンタにセットする
  4. 3Dプリンタを再起動する(場合によっては2回再起動する必要あり?)

所々で困ったところがあったので各ステップの内容をメモしておきます。

基本的にはmoyashiさんのまとめページおよびファームウェアに同梱されていたドキュメントを参照しています。

KINGROON KP3S情報
3D Touchで自動ベッドレベリング KINGROON KP3Sは3D Touchによる自動ベッドレベリング(オートベッドレベリング)に対応しています。その方法や注意点を解説。
KINGROON KP3S情報
ファームウェアの扱いと設定 KINGROON KP3Sのファームウェアのアップデート方法や、ファームウェアの設定変更を解説。

現行のエクストルーダ(Titan版と呼ばれるフィラメント送り出しの構造が改善されているものです)と旧式(MK8エクストルーダ版と呼ばれることもあるようです)の情報と入り交じっているため※です。

ファームウェア更新について手順と調べたことを別記事でまとめます。

3DプリンタKINGROON KP3Sを購入しました | Memoteki
https://memoteki.net/archives/3793

ちなみに、上記の通り、前回の記事を書いた2021年11月の時点では

  • moyashiさんがページ公開されてからしばらく経過して状況が変化した部分がある
  • moyashiさんが公開されているページには掲載されていないが他で掲載されている情報が増えて(しかもそれが時期によって微妙に違ったりして)ややこしくなっている

と言う状況だったので、この記事ではファームウェア関連情報をまとめる予定だったのですが、 私がモタモタと情報整理しているうちにmoyashiさんがKINGROON KP3S INFOを更新されています! ありがたや。

ファームウェア更新用データの入手

ファームウェア更新に必要なデータが複数種類公開されています。
基本的に大きく違うのは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対応しようとすると表示が中途半端になっていました。データが破損しているのか詳細は不明です。

KP3Sの操作画面の様子 AutoLevelのボタンの画像がほかと違って枠なしになっている
moyashiさんのKINGROON KP3S INFOに掲載されているリスト

3Dプリンタに合わせてrobin_nano_cfg.txt を編集する

ダウンロードできるデータには中国語(簡体字)でコメントが書かれています。
DeepLなどで翻訳しながら読んでもよいと思いますが、詳細なパラメータについてはmoyashiさんのまとめページにかなり丁寧に説明があり、さらに日本語版のコメント入りファイルもあるのでそちらを参照するのがよいと思います。

KINGROON KP3S情報
ファームウェアの扱いと設定 KINGROON KP3Sのファームウェアのアップデート方法や、ファームウェアの設定変更を解説。

私が使ったのは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)

Gist
KINGROON KP3S純正ファームウェアで使用している設定ファイル KINGROON KP3S純正ファームウェアで使用している設定ファイル. GitHub Gist: instantly share code, notes, and snippets.

3Dプリンタにデータを書き込み

ファームウェア更新用データ(Robin_nano.binファイルとmks_fontフォルダとmks_picフォルダ)と設定ファイルのrobin_nano_cfg.txtをmicroSDカードに保存します。

microSDカードを3Dプリンタにセットします。

3Dプリンタを再起動します。場合によっては2回再起動する必要あるようです。再現性がないため2回再起動する必要がある場合とない場合の違いがよくわかっていません。

2回再起動が必要になるケースの初回起動後の様子 Settingsアイコンが破損している
2回目再起動中の様子 1回目再起動時と同様にデータの書き込みが始まる
2回目再起動後の様子

以上でファームウェア更新終了です。

初回の調整

このあとはZオフセット(3DTouchのプローブの先端とノズル先端の距離)を調整します。以下の記事の「自動ベッドレベリング(オートレベリング)の準備」を参照して実施します。この手順はセットアップ済OctoPiまたはプリンタとUSBケーブルで繋げられるPCが必要になります。

KINGROON KP3S情報
3D Touchで自動ベッドレベリング KINGROON KP3Sは3D Touchによる自動ベッドレベリング(オートベッドレベリング)に対応しています。その方法や注意点を解説。

設定した内容はG-CodeのM503 で現在の設定をダンプできるので、その表示内容から確認できます。

Marlin Firmware
Report Settings Print a concise report of all runtime-configurable settings (in SRAM) to the host console. This command reports the active settings which may or may not be the ...
M503実行結果

オートレベリング

3DプリンタのAutoLevelボタンを押す、またはOctoPrintからレベリング(G-CodeのM501 )を指令すれば、オートレベリングが始まります。

OctoPrintにはBed Level Visualizerというプラグインがあるのでこれを使うとレベリングが簡単にでき、さらに可視化もできます。

Bed Level Visualizerでメッシュを可視化した様子
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

ファームウェアについてははるかぜさんの記事が詳しいです。

note(ノート)
3Dプリンター用ファームウェア一覧|はるかぜポポポ|note 3Dプリンターはご存じの通り、3DモデルをスライサーにかけてGcodeを作り、そして3Dプリンターの中の制御ボードとファームウェア(制御ボードに書き込まれたソフトウェア)がG...

KP3Sのファームウェアの構成

デフォルトのKP3SのファームウェアはMKS Robin Nano Firmwareをカスタムしたものとなっており、そのMKS Robin Nano FirmwareにはMarlinをベースとしているものと、そうでないもの(独自開発?詳細は未確認)の複数種類があるようです。

https://github.com/makerbase-mks/MKS-Robin-Nano-V1.X#firmware

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と書かれているものもあるのかもしれません。

GitHub
GitHub - makerbase-mks/MKS-Robin-Nano-V1.X: MKS Robin Nano is a powerful 32-bit 3D printer control b... MKS Robin Nano is a powerful 32-bit 3D printer control board with STM32F103VET6. Support Marlin2.0. Support MKS Robin TFT24/28/32/35/43 touch Screens. The mothe...

Marlinの構成としては大きく分けてブートローダ、ファームウェアの構成となっており、ビルド時に回転方向や速度等のパラメータも含まれた状態でファームウェアをビルドするようです。
MKS Robin Nanoはその点少し変わっており、ブートローダによってファームウェアを書き込む時にコンフィグファイルから設定を読み出しながらファームウェアを書き込むようです。
つまりパラメータ調整だけならばビルド環境がなくともファームウェアを更新できる仕様となっているようです。

GitHub
GitHub - makerbase-mks/MKS-Robin-Nano-Firmware: MKS Robin Nano firmware source code, you can use IAR... MKS Robin Nano firmware source code, you can use IAR IDE build it and update it on your nano board.Of course, you can change source code and add new function wi...

Marlinベースのものは以下のGitHubリポジトリで公開されているようです。

GitHub
GitHub - makerbase-mks/Mks-Robin-Nano-Marlin2.0-Firmware: The firmware of Mks Robin Nano, based on M... The firmware of Mks Robin Nano, based on Marlin-2.0.x, adding the color GUI. - GitHub - makerbase-mks/Mks-Robin-Nano-Marlin2.0-Firmware: The firmware of Mks Rob...

ちなみに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用の設定を復元できないか?」と言う質問もついでに書かれていますが、難しそうです。

GitHub
Lacking Configuration.h and another 2 GPL violations Creative3D and Twotrees · Issue #15137 · Marlin... Purchased new Creative3D Elf Corexy printer that comes with MKS Robin Nano and is advertised as Marlin 32 bit firmware. All I could get from them are binaries a...

調べて見つけたファームウェア一覧

基本的にはmoyashiさんのまとめページと公式YouTubeの動画に書かれているコメントを参照しています。

KINGROON KP3S情報
3D Touchで自動ベッドレベリング KINGROON KP3Sは3D Touchによる自動ベッドレベリング(オートベッドレベリング)に対応しています。その方法や注意点を解説。
KINGROON KP3S情報
ファームウェアの扱いと設定 KINGROON KP3Sのファームウェアのアップデート方法や、ファームウェアの設定変更を解説。

「2021年8月17日更新のファイルで2種類基板用のファームウェアが同梱されて公式ページで紹介されていた(リンク切れ)もの」については文字コード簡体字中国語(GB2312)で書かれた変更履歴ファイルらしきもの(日付と変更内容らしき文章が記載されたもの)も同梱されていました。どういった事情でこのファイルが削除されたのか不明なのでここでは詳細は記載しませんが、調べてみて問題なさそうであればこのファイルの中身についてもどこかで記載したいと思います。

ファイル名が文字化けしているテキストファイルが同梱されていました

まとめ

KINGROONのKP3Sを改造してオートレベリング対応するため、3DTouchに対応させるべくファームウェアを更新する方法と選択候補となるファームウェアについて調べました。3DTouchを使うには3DTouch用として公開されているものを使うのがよさそうです。マザーボードのマイコンが異なる場合はこのファームウェアは使えないので別途調査が必要そうです。
環境に合わせて使うファイルが変わるのでややこしいですが、V1.2のマザーボードのKP3S 3.0は3DTouchによってオートレベリングができるようになりました。

この記事が気に入ったら
フォローしてね!

よかったらシェアしていただけると励みになります!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Memotekiの管理人です。このブログには学んだことや共有しておきたいことをマイペースにメモしていきます。2020年からは日記も書き始めました。

コメント

コメントする

目次