Ender3ProにOctoPiを追加する

格安3Dプリンタを改良しようシリーズ。
今回は OctoPi について。
Ender3は本体の SDカードに stl データを書き込み、それをメニューから呼び込ませることでプリントする。
このネットワーク時代にそれは不便やろ。
ということで、ネットワークプリンタ化するのが OctoPrint。
https://octoprint.org/
具体的には USBシリアル使って、Gコードを送る WiFi 端末ということです。
OctoPrint は python ベースなので、OS 選ばず使える。
今回は3Dプリンタ専用ということでラズパイベースの「OctoPi」を設置します。

■何が便利か
ものすごい高機能なので、さっさと試すのが早いと思う。

■作り方
https://octoprint.org/download/
ここにあるページの説明になります。

■どのラズパイにするか
どれでもよいが、Zero は制限付となっています。
おそらく512MBのメモリが厳しいのでしょう。
同様に 3A+ もダメかもしれません。
もちろんがんばると Zero でもイケると思いますが、USB 給電とかいろいろハマりポイントもあるので、腕に覚えのある人以外は 3B 以降が無難です。

■ラズパイ以外に何が必要か
システムを入れる SDカード。
8GB もあれば十分ですが、別に 32GB でもよいです。
ラズパイの電源。4B とかはデカいの要求するので注意。
最終的には Ender3pro の DC24vから BEC つないで一本化するのがよいでしょう。
Ender3pro に接続する Mini-USB ケーブルが必要です。最近減りましたね。
通信は USBシリアルで行う形です。(/dev/ttyUSB0)
カメラがあると、印刷風景がネットワーク越しに見れたり、ラプス動画ができたりします。
ラズパイ純正カメラでも Webカメラでもいいです。
がんばればマルチカムもいける。

■システムイメージ焼付
最新のディスクイメージはコチラ。
https://octopi.octoprint.org/latest
SDカードに OctoPrint からダウンロードしたシステムイメージを焼き付ける。
最近は Etcher が多いですかね。マルチプラットフォームだし。
https://www.balena.io/etcher/
そういえばラズパイ公式からもイメージライタ出されていましたね。
https://www.raspberrypi.org/downloads/
こちらもマルチプラットフォームで、メジャーどころは選ぶだけでよいし、EEPROMなども焼けるので今後はこれが主流になるかもしれないですね。
OctoPrint の場合は、「Use Custum」でイメージファイルを指定して焼きましょう。
pythonのスクリプトも配布されているので、作り直すのがめんどくさい場合は、それを入れるのもアリです。

■WiFiの設定
ラズパイを使う上で、めんどくさいのがこの WiFi への参加。
モニタや HDMI を準備したくなるが、できるだけやりたくない。
ラズパイのディスクイメージは、2個のパーテションで構成されている。
先頭が FAT で、2個目が ext4(Linuxのファイルフォーマット)。
Windows などから見ると、先頭のドライブが開ける。
この中の「octopi-wpa-supplicant.txt」に WiFi の設定を書き込むことでブート時に WiFi に接続する。
改行コード(LF)に注意して書き込む。
書き方はコチラに FAQ がある。
https://community.octoprint.org/t/wifi-setup-and-troubleshooting/184
一般家庭の WiFi ルータだと、WPA/WPA2 で SSID/PASS 設定でイケルと思う。

## WPA/WPA2 secured
network={
ssid="自宅のSSID"
psk="ルータのパスワード"
}

あと国コードもココで直しておくと吉。

#country=GB # United Kingdom コメントアウト
country=JP #追加

ココがすんなりいかないと、ちょっとめんどくさい。
そこはあとガッツで手作業でいくしかない。
有線LANだと悩まないでいいです。

カメラの設定は同様に「octpi.txt」に入っています。
ラズパイカメラか USB カメラかで設定変える必要あるので、よく中身を見て修正しましょう。

■起動する
設定は一旦これで終了。
Mini-USBケーブルで Ender3pro と接続し電源オン。
最初は初期設定あるのでしばらく時間かかるかも。
心配なら HDMI で画面を出して確認してみよう。(通常運用時はつなぐ必要なし)
起動が完了したら Avahi に対応しているので、「http://octopi.local/」で Octopi が表示される。
Windows の場合は bonjour 入ってないとダメです。
もちろん IPアドレス直打ちでもよい。
SSH も動いているので、黒い画面派の人はそっちでアレコレやってもよい。
初期IDは「pi」でパスワードは「raspberry」です。(Rasbianと一緒)
sudo raspi-config で、rootパスワードの変更とか、TimeZone の変更とかしましょう。
直接必要ないかもしれないですが、初期の Locale が en-GB/UTF-8 なので、#とか入力するために、Locale を en-US/UTF-8 で LANG=C にの変更とかは個人的に最初にやってます。

■Cura(スライサー)への接続
Cura のプラグインを使うことで、Curaから直接プリントできるようになります。
OctoPrint から API を入手し、Cura のプラグインに入力しましょう。

■その他のプラグイン拡張
本体からアレコレあるので選んで使ってみる。
WebHookでプリントスタート終了をプッシュするとか、タイムラプス動画撮影するとか。
思いつきそうなハード改造はコチラにまとまってる。
https://howchoo.com/g/ntg5yzg1odk/using-octoprint-with-the-creality-ender-3-3d-printer
いろいろできる。

■まとめ
ラズパイ便利だなあ。
OctoPi は、ほぼ素の Rasbian なので、ちまたにあるIoT端末的に、いろいろ仕込むこともできる。
箱で囲って温湿度センサーを追加して管理強化するとか。
タイムラプス撮影時だけ照明点灯とか。
ラズパイをイジる入門としては、目的も作りやすいし対象としてはいい感じでないでしょうか。