Marlinのインストール

KINGROON KP3Sの公式ファームウェアは、Marlinというオープンソースの3Dプリンター用ファームウェアをベースにしている。

本来はライセンス違反だが、KINGROON KP3Sの公式ファームウェアはソースコードが公開されていない。

MarlinのライセンスはGPL-3.0なので、筆者はソースコードの公開をKINGROONに求めたことがあるが、整理がまだという理由でソースコードの公開を断られた。

ソースコードが公開されていない公式ファームウェアの代わりに、本家のMarlinをビルドしてインストールできる。

本家のMarlinにはKINGROON KP3S向けの設定が含まれていないので、KINGROON KP3S向けの設定(Configuration)は別途用意する必要がある。

ありがたいことに、KINGROON KP3S向けのMarlin用設定を公開している人たちがいて、その方々の成果を利用させてもらうことで、Marlin 2.0.7.2をKINGROON KP3Sにインストール可能だ。

普通の人は、ソフトウェアのソースコードを変更するような必要性に駆られたことはないだろうし、そうしたいと思うこともないだろうが、3Dプリンターの場合はそれが比較的一般的に行なわれている。

3DプリンターはOSを持たないマイコンで制御していることと、3Dプリンターの構造、ユーザー個々のカスタマイズの多様性に起因して、ソースコードに立ち戻らないと解決できない問題と直面することがあるからだ。

Marlinのソースコードからファームウェアを作り、それをKINGROON KP3Sにインストールできると、その挙動を完全に支配下に置くことができるようになり、意義が大きい。

3種類に増えたKINGROON KP3SのMPU

KINGROON KP3Sは、当初MCUにSTM32F103のみを搭載していた。

しかし、新型コロナ下での半導体製造の混乱によって、2021年の後半ぐらいからSTM32F407、GD32F303の2種類が加わった。

公式ファームウェアは3種類のMPUに対応したものが用意されたが、Marlinのビルド設定はSTM32F103を前提にしており、STM32F407、GD32F303での動作確認が取れていないため、動作確認が取れるまではインストールしない方がいいものと思われる。

MarlinのConfiguration

Marlinは、機種別に異なる部分を二つの設定ファイルを変更することで反映させる作りになっている。

  • Configuration.h
  • Configuration_adv.h

この二つのファイルをKINGROON KP3S向けに調整したものが、以下のリポジトリで公開されている。緑のボタンから「Download ZIP」でダウンロードする。2022年1月時点ではMarlin 2.0.7.2向けのConfigurationだ。

このリポジトリは「KP3S」というキーワードでGitHubの中を検索して発見した。

Marlin 2.0.7.2のソースコードは以下で公開されている。

この二つは、そのときのバージョン番号を示すフォルダに入れて対にして取っておくといいだろう。

image alt

ダウンロードした二つを両方解凍する。

本家のMarlinのソースコードにも以下の二つのファイルが含まれている。

  • Configuration.h
  • Configuration_adv.h

これらをKINGROON KP3S向けに調整されたものに置き換える。単純に上書きしてしまえばいい。

image alt

Marlinのソースコードを解凍し、KINGROON KP3S向けに調整されたConfigurationファイルを上書きしたフォルダを、本稿ではMarlinフォルダと呼ぶことにする。

Configurationファイルの変更点

本家のMarlinのConfigurationが、KINGROON KP3S向けにどう変更されたのか気になるだろう。

差分を取って分かるようにしておいた。

  • 「-」で始まる黄色い行は、変更後になくなった行。
  • 「+」で始まる緑の行は、変更後に増えた行。
  • ある行が書き換えられた場合は、「-」と「+」が連続で出てきて対を成している。
  • それ以外の色の付いていない行は、変更のあった行の位置関係を示すために住所のごとく含められているだけで、無変更の行。

タッチセンスがおかしいのでConfiguration.hの修正

dulfe氏のConfigurationファイルをそのまま使うと、恐らくタッチセンスがおかしいことになるはずだ。

具体的には、画面とタッチセンスの関係が180度逆の状態になっている。

Configuration.hに以下のような部分がある。

1
2
3
4
5
6
7
8
9
/**
 * TFT Rotation. Set to one of the following values:
 *
 *   TFT_ROTATE_90,  TFT_ROTATE_90_MIRROR_X,  TFT_ROTATE_90_MIRROR_Y,
 *   TFT_ROTATE_180, TFT_ROTATE_180_MIRROR_X, TFT_ROTATE_180_MIRROR_Y,
 *   TFT_ROTATE_270, TFT_ROTATE_270_MIRROR_X, TFT_ROTATE_270_MIRROR_Y,
 *   TFT_MIRROR_X, TFT_MIRROR_Y, TFT_NO_ROTATION
 */
#define TFT_ROTATION TFT_ROTATE_180

これを以下のように変更して、画面の回転をやめることでつじつまを合わせる。

1
#define TFT_ROTATION TFT_NO_ROTATION

タッチセンスの方を180度回転させた方が使いやすいように思うが、現状その方法を調べていない。

Visual Studio CodeでMarlinをビルドする

Marlinのソースコードから、どうやってKINGROON KP3Sで使えるファームウェアにするか?

MarlinのソースコードをKINGROON KP3Sにインストールできるファームウェアにするには、開発環境が必要だ。

最近ではMicrosoftが出しているVisual Studio Codeを使うのが一般的。

最初にVisual Studio Codeをインストールさえしてしまえば後は芋づる式に開発環境を整備でき、簡単にファームウェアを作ることができる。

開発環境というと難しそうだが、Visual Studio Codeはソフィスティケートされていてユーザー体験が素晴らしく、あっと言う間に開発プラットフォームの主役に躍り出たぐらいだ。

筆者はこのサイトもVisual Studio Codeで書いている。

必要なもののインストール

まずはVisual Studio Codeのインストール。

インストーラーで簡単にインストールできる。

インストールしたら、Visual Studio Codeの中に必要なものをインストールする。

Visual Studio Codeの中に「Extensions」という、スマートフォンでいうところのストアのようなものがあって、そこからいろいろなものをインストールできる。

左のツールパレットの「Extensions」をクリック。

image alt

上の検索窓に「PlatformIO」と打ち込むと「PlatformIO IDE」が見つかるので、これをインストールする。

インストールにはそこそこ時間がかかるはずだ。

image alt

ビルドの準備

インストールが終わったら、Visual Studio Codeの再起動を求められるので、一度終了して起動し直す。

image alt

メニュー「File>Open Folder」でMarlinフォルダを指定する。うまくMarlinフォルダを開けない場合は、Visual Studio CodeのアイコンにMarlinフォルダをドラッグ&ドロップすると確実だ。

image alt

すると、エディタでplatformio.iniが勝手に編集状態になるはずだ。ならなければ、Marlinフォルダにあるplatformio.iniを開く。

ツールパレット一番上の「Explorer」をクリックすると、左ペインがファイル選択画面になる。もう一度クリックすると消える。トグル動作だ。画面の横幅を確保するために、よく出し入れする。

image alt

中にある「default_envs = mega2560」の部分を……。

image alt

「default_envs = mks_robin_nano35」と書き換えて保存「File>Save…」する。

image alt

ファームウェアを作るには、左のツールパレットの「PlatformIO」をクリックし、「PROJECT TASKS>Default>General>Build All」をクリックしてビルドを実行する。

image alt

ここからまたSTM32F1のツールチェーンなど、必要なパッケージなどがインストールされる工程を経て、実際のビルド工程に移り、終了するはずだ。かなり時間はかかる。

出来たファームウェアは「Marlinフォルダ/.pio/build/mks_robin_nano35/Robin_nano35.bin」として出来る。

macOSだと「.」で始まるフォルダはFinderから不可視な点に注意。

Visual Studio Code上に表示されているそれを右クリックして「Reveal in Finder」するといい。

image alt

出来たファームウェアをリネームする

KINGROON KP3Sにインストールする場合は、出来たファームウェア「Robin_nano35.bin」を「Robin_nano.bin」にリネームする。

ファームウェアのインストールについては以下のページに書いた。

リネームを自動化したい場合は、以下のファイルを編集する。

Marlinフォルダ/buildroot/share/PlatformIO/scripts/mks_robin_nano35.py

以下の行を、

robin = open(target[0].dir.path +'/Robin_nano35.bin', “wb”)

次のように書き換える。

robin = open(target[0].dir.path +'/Robin_nano.bin', “wb”)

macOSの場合は、encryptメソッドの「env.AddPostAction〜」の前の行に以下のようにさらに追加すると、できたファームウェアのフォルダが自動的にFinderで表示されるようになる。

1
2
3
4
def encrypt(source, target, env):
# 中略
    os.system("open" + " " + target[0].dir.path) # この行を追加
env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", encrypt);

Windowsの場合は「open」の代わりに「explorer」でいけるはずだ。

1
2
3
4
def encrypt(source, target, env):
# 中略
    os.system("explorer" + " " + target[0].dir.path) # この行を追加
env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", encrypt);

ボーレートの変更

dulfe氏のConfigurationファイルを使ってMarlinをビルドすると、シリアル通信のボーレートが公式ファームウェアの115,200bpsから250,000bps(25万)に変わる。

パソコンとのUSB接続、OctoPrintに影響があるので注意したい。

Configurationの変更

dulfe氏のstockブランチのConfigurationファイルは公式ファームウェアの再現を目指したものなので、これだけではあまり意味がない。

こっちのdevelopブランチはdulfe氏が実際に使用しているConfigurationファイルとのことだ。ベッドサイズが縮小するカスタムエクストルーダーに合わせた設定などになっているようだ。

Configurationファイルの変更については、以下に記事を書いた。

3D Touch(BLTouch)対応のための設定、PWMノイズの低減のための設定などについて書いている。