Ender-3 S1 Proの更なる出力品質改善と高速化および遠隔監視のため、Klipperを導入しました。
日本語でまとまった情報が見当たらなかったので記事にします。
本記事ではラズパイ4を使ってEnder-3 S1 ProをKlipper化した後、WebCam・スマートプラグの連携をすることで、3Dプリンターの印刷品質と高速化、および管理しやすさの改善を目指します。
Klipperとは
KlipperはRaspberry Pi(ラズパイ)などを利用してプリンターの動作を制御するオープンソースソフトウェアです。
Klipperを導入すると、下記のメリット・デメリットがあります。
なお、3DプリンターのKlipper化にはプリンタファームウェアの書き換えが必要ですが、Crealityのファームウェアを書き戻すことで元の3Dプリンターに戻せます。
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にはケース付きのフルセットみたいな商品もありますが、結構割高です。
ケースは3Dプリンターで作れますし、Type-C出力の電源と信頼できるマイクロSDカード(64GBくらい)を別に買った方が良いかと思います。
Amazonリンク:マイクロSDカード(64GB サンディスクほか)
USBケーブル(Type-A Type-C変換)
Ender-3 S1 / S1 Proの場合、USBの端子がType-Cのため、ラズパイとつなぐためにはType-AーType-Cの変換ケーブルが必要です。
Type-C側がL字のものの方が、出っ張りが少なくなって良いかもしれませんね。
(オプション)加速度センサー
Klipperでは、壁面にできてしまうにじみ模様(ゴースティング・リンギング)をソフトウェアの制御で抑制する機能を持っています。
これを活用するために加速度センサー(ADXL345)があると便利です。半田ごてを使える方はぜひ。
(使うのは1個だけですが、私は問題発生時にハードとソフトの切り分けに使えるだろうと2個入りを買いました)
写真はInputShaper補正前後の壁面のにじみです。
ウロコ模様にご注目。効果抜群と思いませんか?
(オプション)タッチパネル
Klipper化してしまうと、基本的に本体の液晶パネルは機能しなくなります(Webインターフェースを使う)。タッチパネルが欲しい人は、別売のパネルを買いましょう。
私はAliExpressで下記を購入しました。
AliExpress:Bigtreetech-タッチスクリーンfitft50 v2.0,5インチ静電容量式LCDディスプレイ
なお、ケースはThingiversの下記データを使わせてもらいました。
上記ケース、ファンが取り付けられるので温度管理的にも安心です。4センチ角のファンを使います。
私は下記を使いました。騒音も控えめで結構良かったです。
Amazonリンク:GeeekPi 2個Raspberry Pi 4静音ファン 40x40x10mm 4010ファンDC 5V
(オプション)Webカメラ
Webカメラはプリント出力するだけなら特に不要ですが、遠隔監視をするのに便利です。
Webカメラを接続すると、Web UI、Curaのモニター画面、スマホ(Obico)などで動作状況を確認できるようになります。
LogicoolのC920が動作報告が多いようなので安心です。ラズパイのカメラモジュールだとv2までは動くようですが、記事執筆時点では(それなりにいじってみたけれど)カメラモジュールv3は認識されませんでした。
(オプション)スマートプラグ
「印刷が終了してヘッドの温度が一定値以下になったらプリンターの電源を切る」なんて動作を自動でできたら便利ですよね。
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 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の値を間違えると、プリンターが再起不能になる場合があるので注意してください。
設定できたら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テストのファイルを印刷してみてはいかがでしょうか。
Pressure advanceを調整する
ここから先は更なる出力品質を改善したい方向けの情報です。
1つ目の項目はPressure advanceです。
この項目を調整することで、サイコロの角などで樹脂がはみ出る現象を緩和できます。
やりやすい方法を紹介してくれている方がいるので、素直にそちらのリンクを紹介させていただきます。
加速度センサーを使ったKlipperの調整(InputShaperを設定する)
続いて、加速度センサーを使って「にじみ(ゴースティング・リンギング)」と言われる現象を改善します。ゴースティングはヘッド・ベッドが振動することで発生するそうで、ソフトの力で逆向きの振動を与えて緩和するんだとか。すごい・・・。
写真の横に波打っているウロコ模様がゴースティングで、上が調整後になります。
使うセンサーはこちらです>Amazonリンク:ADXL345
上記ADXL345センサーを下記のブラケットに付けて使います。
なお、調整の詳細については、下記のサイトでかなり詳しく説明されていますので、素直に紹介させていただきます。>加速度センサーを使ったKlipperの調整
Klipperを導入する手順:スライサーソフトを設定する
スライサーソフトは特に変更しなくても使えるのですが、いくつか直すとより便利になります。
日本語で丁寧に解説してくださっているサイトがあるので、そちらのリンクを紹介します。
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の操作が必要なので、若干のハードルはありますが、ぜひ試してみてはいかがでしょうか。
最後に本記事で紹介・利用したハードをリストしておきます。