Ender-3 S1 ProにKlipperを導入する手順

Ender-3 S1 Proの更なる出力品質改善と高速化および遠隔監視のため、Klipperを導入しました。
日本語でまとまった情報が見当たらなかったので記事にします。

本記事ではラズパイ4を使ってEnder-3 S1 ProをKlipper化した後、WebCam・スマートプラグの連携をすることで、3Dプリンターの印刷品質と高速化、および管理しやすさの改善を目指します。

Klipperとは

KlipperはRaspberry Pi(ラズパイ)などを利用してプリンターの動作を制御するオープンソースソフトウェアです。
Klipperを導入すると、下記のメリット・デメリットがあります。

Klipperのメリット
  • 高速化:たとえば150mm/s(通常の3倍)くらいの速度で普通に印刷できるようになります
  • 出力品質の改善:ゴースト(にじみ)や角の部分の余分な膨らみ、糸引きが軽減できます
  • 遠隔監視・操作:組み合わせればスマホで監視や印刷終了後に電源を切るなどできます
  • Zオフセット、CR-TOUCH/BL-TOUCHを使ったメッシュレベリングも可能
Klipper化のデメリット
  • 3Dプリンタ付属のパネルは基本的に使えなくなる(別売のタッチパネルはあります)
  • RaspberryPiやタブレットなど追加のコンピュータが必要
  • あまり爆速でプリンターを酷使すると消耗・劣化が早まる(かもしれない)

なお、3DプリンターのKlipper化にはプリンタファームウェアの書き換えが必要ですが、Crealityのファームウェアを書き戻すことで元の3Dプリンターに戻せます。

KlipperのWebインターフェース画面の例

Klipper その他のQandA

私が導入時に疑問に思ったことを下記にまとめます。

Klipperソフトウェアの金額はいくらですか?

関連するソフトはいずれもOSSなので基本的に無償です。
スポンサーに感謝しつつ、できるところはドネーションしてはいかがでしょうか。

日本語で表示できますか?

WebUIの表示言語を日本語にすることは可能です。
ただし、エラーコードなどは翻訳されないので、そこだけは頑張って読みましょう(DeepLなどWeb翻訳に投げるという意味)。

KlipperとOctopi / OctoPrintの違いは?

Klipperならではの特典は外部CPUを使った高速化と出力品質の改善です。

Octopi / OctoPrintはプリンタの遠隔監視や操作はできるようになりますが、プリンタの制御はプリンタに任せたままになります。(高速化や印刷品質の改善はできません)

SonicPadとラズパイ利用の違いは?

Ender系でKlipperを利用するなら純正のSonicPadを購入する手段もあります。が、拡張性を持たせたい(自分で色々いじりたい)場合はRaspberry Piに軍配が上がるのではないでしょうか。

価格的にはラズパイ利用の方が数段安く上がるかと思います。
ただし、ラズパイ利用はメーカー保証外の使い方になるため、トラブルは自己責任となります。

Klipperのインストールには何が必要ですか?

ハードの基本的な構成はRaspberryPi(3B・4を推奨)と3Dプリンターをつなぐのみです。
希望に応じてWebカメラやスマートプラグ、タッチパネルで拡張できます。

ソフト面では、RaspberryPiに入れるOS(本記事ではKlipperのWebインターフェースが付くMainsail)とユーティリティのKIAUHを入れれば、必要なものは大体揃います。インストール方法は以下で順に説明します。

Klipperは特別なスライサーソフトが必要ですか?

不要です。Ultimaker CuraやPrusaSlicerなど一般的なスライサーが使えます。

一度Klipper化した3Dプリンターは元に戻せますか?

プリンターメーカーがサポートサイトで公開しているファームウェアを入れることで元に戻せます。
(ただし、Ender-3 S1 Proの場合、ファームを入れ直したら日本語は選択肢にありませんでした)

CR-Touch(BL-Touch)を使った自動レベリング・補助レベリングはできますか?

GUIで使えます!(具体的な方法は後述します)

Klipperを導入する手順:ハードを用意する

Klipperを導入するためには、外部CPU(ここではRaspberry Pi)と接続用のUSBケーブルがあればまずはOKです。

その他にあると良いもの、便利なものも含めてリストしておきます

Raspberry Pi

ラズパイは3Bか4が良いと思います。Picoで実装している人もいるようですが、ある程度処理に負荷がかかることが想定されるので、フルサイズのものを使った方が良いと思います。

Amazonリンク:Raspberry Pi 4

Amazonで売っているRaspberry Pi 4にはケース付きのフルセットみたいな商品もありますが、結構割高です。
ケースは3Dプリンターで作れますし、Type-C出力の電源と信頼できるマイクロSDカード(64GBくらい)を別に買った方が良いかと思います。

Amazonリンク:raspberry pi 4 電源

Amazonリンク:マイクロSDカード(64GB サンディスクほか)

USBケーブル(Type-A Type-C変換)

Ender-3 S1 / S1 Proの場合、USBの端子がType-Cのため、ラズパイとつなぐためにはType-AーType-Cの変換ケーブルが必要です。
Type-C側がL字のものの方が、出っ張りが少なくなって良いかもしれませんね。

Amazonリンク: Type-AーType-C ケーブル

(オプション)加速度センサー

Klipperでは、壁面にできてしまうにじみ模様(ゴースティング・リンギング)をソフトウェアの制御で抑制する機能を持っています。

これを活用するために加速度センサー(ADXL345)があると便利です。半田ごてを使える方はぜひ。

Amazonリンク:ADXL345

(使うのは1個だけですが、私は問題発生時にハードとソフトの切り分けに使えるだろうと2個入りを買いました)

写真はInputShaper補正前後の壁面のにじみです。
ウロコ模様にご注目。効果抜群と思いませんか?

(オプション)タッチパネル

Klipper化してしまうと、基本的に本体の液晶パネルは機能しなくなります(Webインターフェースを使う)。タッチパネルが欲しい人は、別売のパネルを買いましょう。

私はAliExpressで下記を購入しました。

AliExpress:Bigtreetech-タッチスクリーンfitft50 v2.0,5インチ静電容量式LCDディスプレイ

なお、ケースはThingiversの下記データを使わせてもらいました。

BTT PITFT50 by strangecalling
BigTreeTech Pi TFT50 enclosure. Screen simply clips in to the case and all raspberry pi connections are available.UPDATED Bottom cover included, fastners requir...

上記ケース、ファンが取り付けられるので温度管理的にも安心です。4センチ角のファンを使います。
私は下記を使いました。騒音も控えめで結構良かったです。

Amazonリンク:GeeekPi 2個Raspberry Pi 4静音ファン 40x40x10mm 4010ファンDC 5V

(オプション)Webカメラ

Webカメラはプリント出力するだけなら特に不要ですが、遠隔監視をするのに便利です。
Webカメラを接続すると、Web UI、Curaのモニター画面、スマホ(Obico)などで動作状況を確認できるようになります。

LogicoolのC920が動作報告が多いようなので安心です。ラズパイのカメラモジュールだとv2までは動くようですが、記事執筆時点では(それなりにいじってみたけれど)カメラモジュールv3は認識されませんでした。

Amazonリンク:ロジクール Webカメラ C920n

(オプション)スマートプラグ

「印刷が終了してヘッドの温度が一定値以下になったらプリンターの電源を切る」なんて動作を自動でできたら便利ですよね。

TP-LinkのTapo P105をKlipperに組み合わせることで実現できます。

導入で少し手間はかかりますが試してみてはいかがでしょうか。
やり方は別記事で紹介します。

Amazonリンク:TP-Link WiFi スマートプラグ Tapo P105/A

なお延長タップにTapo P105をつなぐ場合、タップはN側が広いタイプが必要です。

Amazonリンク:サンワサプライ 電源タップ 3個口・2P (5m) TAP-3W5N

Klipperを導入する手順:ソフトをインストールする

ソフトのインストールはRaspberry PiにMainsailOS、KIAUHユーティリティをインストールし、KIAUHを通して作ったイメージをプリンターに書き込めば完了です。

なお、本記事はこちらの情報を元に作成しています(英語)>https://3dprintbeginner.com/install-klipper-on-ender-3-s1-pro/

RaspberryPiにMainsailOSをインストールする

Raspberry Pi Imagerを使ってMainsailOSをマイクロSDカードに書き込みます。

MainsailOSのダウンロード先はこちらです
https://github.com/mainsail-crew/MainsailOS/releases

選択肢がありすぎて、RaspberryPi用のイメージが隠れてしまっています。
「Show all 23 assets」をクリックして、更に広げます。

↓ラズパイ用のイメージは32bit版と64bit版がありますが、32bitを選びましょう。私は64bitを先に試したのですが、USBシリアルがエラーを起こしてしまい、プリンターにつながりませんでした。

Raspberry Pi imagerを持っていない場合はこちらからダウンロード・インストールしてください。

Raspberry Pi OS – Raspberry Pi
From industries large and small, to the kitchen table tinkerer, to the classroom coder, we make computing accessible and affordable for everybody.

Raspberry Pi imagerにて下記「カスタムイメージを使う」を選びます。

イメージファイルは先にダウンロードした.img.xzのままでも、展開した.imgでもOKです。
OSのファイル選択画面で選んでOKします。

続けて、Raspberry Piで使うWi-fi設定などをしてしまいます。画面右下の歯車アイコンをクリックします。

設定はこんな感じです。

設定したら、マイクロSDカードに書き込み、ラズパイを起動しましょう。

KIAUHをインストールする

ユーティリティソフトであるKIAUHをインストールします。
まずはラズパイにSSHでリモート接続します。

ssh pi@raspberrypi.local

おそらくパスワードを求められると思いますので、上記OSイメージを作るときにセットしたパスワードを入力しましょう。

続けて、下記を順に実行します。

git clone https://github.com/th33xitus/kiauh.git
cd kiauh
chmod +x kiauh.sh scripts/*
./kiauh.sh

KIAUHの画面が出れば成功です。

一旦メニューから抜けましょう。キーボードのQ→Enterを押下です。

MailsailOSをアップデートする

続けて、MainsailOSに入っている機能(Klipperなど)をアップデートしておきます。

手順はブラウザでMainsailOSのに入って行います。
ブラウザでimagerで設定したRaspberry Piの「ipアドレス」か「http://raspberrypi.local」に接続し、画面の手順で操作します。

しばらく待つとアップデートが完了します。

Ender-3 S1 Pro用のFirmwareを作る

KlipperのFirmwareを3Dプリンター側に書き込みます。
まずは裏蓋を剥がしてご自分のEnder-3 S1 /Proが使っているCPUがSTM32F103かSTM32F401か確認しましょう。(裏蓋を外すときに、門柱の内側のボルトも外さないといけないので注意です)

SSHの画面に戻り、下記を順に実行します。

cd klipper
make menuconfig

下記の画面が出てきますので、それぞれの項目を十字キーで入力します。
S1 Pro STM32F401の場合は下記の通りです。

他のCPUや機種の場合、設定はネットで探すしかないです。
特にBootloader offsetの値を間違えると、プリンターが再起不能になる場合があるので注意してください。

画像に alt 属性が指定されていません。ファイル名: 68ab03d84cdefb15f26a4739cb3d6a65.png

設定できたらQ>Yで設定を保存できます。

画面がもとのコンソールに戻ったら、makeと入力してエンターするとファームウェアのビルドが始まります。klipper.binが出来上がるのを待ちましょう。

make

出来上がったファイルをSDカードに書き込みます。
Raspberry Piからファイルを取り出すため、SFTPに対応したクライアントソフトを使います。

私はMacユーザなのでFileZillaを使いました>FileZillaダウンロードリンク

SFTPで接続したら/home/pi/klipper/outにあるKlipper.binをSDカードにコピーしましょう。

CPUがSTM32F401の場合、binファイルの置き場所はSDカード直下ではありません。
SDカード直下に[STM32F4_UPDATE]フォルダを作って、その下にbinファイルを入れることになります。

出来上がったSDカードをEnder-3 S1 Proに挿して、電源を入れ直したらファームの上書きが始まります。
大体10秒くらいで終わるらしいのですが、1分ほど待ってから電源をOFFし、SDカードを抜きましょう。

Ender-3 S1 Proを再度電源ONし、RaspberryPiも再起動しましょう。

Ender-3の液晶パネルが起動画面の最初で止まるのが正しくKlipperファームを入れられた合図です。

Webインターフェースにも赤くてやばそうなメッセージが出ますが、問題ありません。
プリンターの設定ファイルがないよ!と怒っている合図です。printer.cfgファイルを作れば直ります。

アップロードするファイルはいくつか取得場所があります。Ender-3 S1 Proのファイルは前述の3D PRINT BEGINNERのサイトにて配布されています。

ただ、正直何ヶ所か直したほうが良い所があるので、自分は以下のように修正しています(左が修正後)

もしくは、Ender-3 S1 用のprinter.cfgファイルはklipperのデータとして入っているので、これを改変(主に[extruder]の最大温度をmax_temp: 300にする)もアリです。

ファイルの場所は下記です。(Klipperを入れたラズパイからSFTPで取得します)
/home/pi/klipper/config/printer-creality-ender3-s1-2021.cfg

他の機種の場合のサンプル(Ender-3 / V2 / V2 neo / max / plus / s1/ s1 plus)もこのフォルダにあるので、機種にあったものを選んでください。

printer.cfgファイルを追加したら、Firmware Restartをします。

画面上のERRORが消えたらとりあえずの準備は完了です!
お疲れ様でした。

Klipperを導入する手順:レベリング等調整する

Klipperを導入したら、まずz_offsetを調整すれば印刷できるようになります。
その他、Pressure AdvanceやInput Shaperを調整すると印刷品質を向上できます。

以下で順に説明します。

z_offsetとメッシュレベリングを設定する

Zオフセットの調整(コピー用紙スルスルするやつね)や、CR-TOUCHを使ったオートレベリング(補助レベリング)はMaisailのUIから行います。

まずはZオフセットから調整しましょう。

ダッシュボードのConsoleに下記を順に入力しましょう。

G28
probe_calibrate

下記のように調整用の画面が表示されます。
コピー用紙をスルスルしながら+ーを変更し、ちょうど良い高さになったらACCEPTをクリックします。

最後にConsoleに戻って「SAVE_CONFIG」を忘れずに実行しましょう。

続けてメッシュレベリングを実行します。

とりあえず、コンソールで「G28」を入力して、ヘッドの位置を戻しましょう。
ヘッドの位置を戻したら、下記のボタンを順に押します。

「CALIBRATE」ボタンをクリックすると下の入力欄が表示されます。
Nameは[日付_01]のように付けると良いと思います。

改めてCALIBRATEをクリックすると実際の測定が始まります。

めっちゃ斜めじゃないか!とか言わないで。なんか恥ずかしい。

測定が終わったらDashboard画面に戻って、Consoleから「SAVE_CONFIG」を実行し、設定を保存しましょう。

試し刷りしてみる

とりあえずレベリング調整が終わったので、印刷してみましょう。
Slicerソフトが吐き出した.gcodeファイルをWebUI画面上にドロップするとファイルが読み込まれます。

まずはBed_Lebelテストのファイルを印刷してみてはいかがでしょうか。

Bed level test 200*200mm by k3rbot
A 3 by 3 grid square of 20 by 20 cm and 0.2mm thickness to test the levelling of your bed.Works for the Ender 3

Pressure advanceを調整する

ここから先は更なる出力品質を改善したい方向けの情報です。

1つ目の項目はPressure advanceです。
この項目を調整することで、サイコロの角などで樹脂がはみ出る現象を緩和できます。

やりやすい方法を紹介してくれている方がいるので、素直にそちらのリンクを紹介させていただきます。

Klipperのチューニング:Pressure advance|Eitoku
Klipperのチューニング項目はいくつかありますが、測定が結構面倒だけど効果が絶大なPressure advanceについて書きたいと思います。 おかしいところがあれば、ご連絡ください。修正したいと思います。 Pressure advanceとは Pressure advanceとは、印刷のにじみを減らす機能です...

加速度センサーを使ったKlipperの調整(InputShaperを設定する)

続いて、加速度センサーを使って「にじみ(ゴースティング・リンギング)」と言われる現象を改善します。ゴースティングはヘッド・ベッドが振動することで発生するそうで、ソフトの力で逆向きの振動を与えて緩和するんだとか。すごい・・・。

写真の横に波打っているウロコ模様がゴースティングで、上が調整後になります。

使うセンサーはこちらです>Amazonリンク:ADXL345
上記ADXL345センサーを下記のブラケットに付けて使います。

Ender 3 S1 ADXL345 Sprite Adapter by Harrypulvirenti
This design is an adapter for the ADXL345 Accelerometer to be mounted on the Creality Sprite Extruder of the Ender 3 S1.There are two versions of the adapter:Th...

なお、調整の詳細については、下記のサイトでかなり詳しく説明されていますので、素直に紹介させていただきます。>加速度センサーを使ったKlipperの調整

Klipperを導入する手順:スライサーソフトを設定する

スライサーソフトは特に変更しなくても使えるのですが、いくつか直すとより便利になります。

スライサーソフトの設定でできるようになること
  • CuraやPrusaSlicerから直接印刷ジョブをアップロード・実行できるようにする
  • Webインターフェースで表示するサムネイルを追加する
  • Klipperの見積もり精度を向上する
  • Klipper上で設定したStart / End G-codeを呼び出して使えるようにする

日本語で丁寧に解説してくださっているサイトがあるので、そちらのリンクを紹介します。

Klipperを使う際のSlicer設定について|Eitoku
Klipperを使う際のSlicer設定について、情報が散らばっており、まとまった記事がないので書いてみました。 今回扱うSlicerは、自分のよく使っている下記の2つとなります。 ・PrusaSlicer (version 2.4.2で試しています) ・Ultimaker Cura (version 5.1.0で試...

Klipperを導入する手順:その他のハードを接続する

ここから先はWebカメラ取り付けと電源プラグの改善です。
どちらも便利この上ないので、おすすめですよ。

Webカメラ(Logicool C920)を接続する

Webカメラを取り付けると、下記のように出力中の画像がライブで見れるようになります。
画像はWebUIのほか、Curaのモニター画面やスマホのアプリ(Obico)でも見れます。

Webカメラは割とどの機種でも大丈夫みたいなのですが、最短撮影距離が短いもので、動作報告が多い機種がおすすめです。

個人的なおすすめは価格もこなれてきた下記になります。
Amazonリンク:ロジクール Webカメラ C920n

設定はcrounsnest.confに記載します。

記載内容は下記の通りです。

[cam 1]
mode: mjpg # mjpg/rtsp
port: 8080 # Port
device: /dev/video0 # See Log for available …
resolution: 960x720 # widthxheight format
max_fps: 30 # If Hardware Supports this it will be forced, otherwise ignored/coerced.

私の環境だと、1920×1080だと画像がシャープに出ないようです。
この場合、resolution: 960×720とすることで解決しました。

それと、オートフォーカスが悪さをするようなら、固定にしてしまうのも手です。
設定はcrounsnest.confに記載する方法もあるのですが、うまく動作しないことがあるようなので、cronを使って起動時に下記を呼ぶと良いでしょう。(下記80はご自身の環境で合わせてください)

#!/bin/bash

sleep 30
v4l2-ctl -d /dev/video0 -c focus_automatic_continuous=0
v4l2-ctl -d /dev/video0 -c focus_absolute=80
@reboot sh ~/bootup-script/camera-focus.sh

スマートプラグ(TP-LINK Tapo P105)を利用する

スマートプラグを導入すると、印刷完了後にノズル温度が50度まで下がったらプリンタの電源を自動で切る、といった運用ができるようになります。

私はTP-LinkのTapo P105というプラグを導入しました。
この機種なら、Python経由でラズパイから電源ON/OFFをする仕方がありますので、Klipperの制御に組み込むことができます。

詳細は手順がやや複雑なので別記事でまとめます↓

Tp-Link [Tapo P105]をKlipper/Mainsailで制御し印刷完了時に電源を落とす方法

まとめ:Ender-3 S1 ProにKlipperを導入する手順

Ender-3 S1 ProのKlipper化の方法について、ハードの準備、ソフトのインストール、その他のハードの設定などを紹介しました。

正直、Klipper化は印刷速度も150mm/sくらいまでは普通に出せるようになりますし、出力の品質も改善し、遠隔監視ができるようになる、といいことだらけです。

多少Linuxの操作が必要なので、若干のハードルはありますが、ぜひ試してみてはいかがでしょうか。

最後に本記事で紹介・利用したハードをリストしておきます。