監視
3Dプリンタの印刷は、なんとなく要領を得てきて、どうやら最初の3層目くらいまでがうまく作られれば、 あとは大体問題ない。なので最初だけ少し状況をチェックしておき、問題なく下の層が作られていけばそのまま放置。 食いつきが悪かったりする場合にはストップして、改善を行う。
しかし、いかんせん時間がかかる。小さいもので30分、ちょっといろいろやると数時間単位で印刷に時間がかかってしまう。 安全を考えヘッドの移動速度を少なめにしているのも原因と思われるが、急いで作って失敗作だと意味が無いので、 ちゃんと出来上がる設定で、動かしたいと思う。
そこで、ずっとつきっきりにはいられないので、ラズパイのカメラを使って監視をしてみる。 使用するのはラズベリーパイZeroW。こいつにカメラを付けて、カメラ映像を流す。

ラズベリーパイにカメラを繋いで、mjpeg-streamerを起動させれば映像の垂れ流しが完成。 ZeroWなので、WiFiが使えるため、本体接続コードは電源用のUSBのみで可能。
では、素のraspbianにmjpg-streamerを入れる。その後自動起動化しておく。 Jessieなので、systemdで自動起動したかったのだが、なんだかうまくいかないので、init.dに起動シェルを記述して対応。
電源オンで自動的にうまく映像配信できるようになったので、一番印刷状態が見えそうな位置に取り付け。 というか、養生テープで正面に強引に貼り付けた。(ダサい)

見える映像は、それなりで、まあまあ状態は最低限わかる。部屋を暗くしておいてもプリンタ本体はLEDで内部が明るいので、 問題なく映る。なかなか便利だ。

3Dプリンタとの電源連動ができないが、まあラズパイは消費電力は大したことないので、つけっぱなしでもいいだろう。 落とす時のシャットダウンがリモートで行わなきゃなので、ちょっと面倒だけど。
また、見ていて、現在の進捗が何%なのかとか、残り予想時間があと何分とか、 そういった情報が出ているフロントパネルの情報も見れると、ありがたい。もう一つカメラ付けてフロントパネルを映そうかな。

あと、プリンタ内部のLEDは明るいけど、天板方面からの光なので、プリンタヘッド下は影となるので暗い。 プリンタヘッド下にもLED付けて点灯したいな。
OctoPi(OctoPrint)
ラズパイで調べてみると、どうやらラズパイを3Dプリントサーバ化するソフトがあるらしく、 OctoPrintというソフトらしい。また、OS(どうやらraspbian)込でも用意があるらしい。 そして、こいつにカメラを繋いでおけば監視機能があるらしい。(監視と言うか映像を流す機能) なるほど、みんな同じこと考えるよね。

ということで、この便利そうなOctoPiを入れてみようと思う。用意するのはラズベリーパイ3。 ラズパイの1,2,3どれでも大丈夫らしいのだが、どうもCuraEngineが入っていて、 stlファイル投げるとgcode化して印刷までしてくれるような記述があった。ラズパイZero(ラズパイ1と同等)では、 これらは荷が重いかもしれないので、ラズパイ3を使用してみる。

OctoPiのイメージファイルはこちらからダウンロード。
ダウンロードしたら、raspbianイメージの時と同様に、解凍して直接microSDカードに書き込む。 microSDへの書き込みはいつもの「Win32DiskImager」だ。

書き込み終わったら、microSDカードはそのままに、Win32DiskImagerを終了させる。 すると、エクスプローラにSDカードが見えるはずなので、そこにある「octopi-network.txt」というファイルを編集する。 これは予めWiFi接続設定をしておこうというもの。WiFi接続設定を初期状態だとコメントアウトされている箇所を 以下のように修正しておく。

## WPA/WPA2 secured iface wlan0-octopi inet manual wpa-ssid "WiFiのSSID" wpa-psk "パスワード"
これで、事前にWiFi設定の記述完了。まあ有線LAN接続するつもりがあれば、この作業は後でやっても大丈夫。
では、このmicroSDカードでラズベリーパイ3を起動する。起動すると、ホスト名はoctopiで設定されているようなので、 Teratermを使って「octopi.local」に接続を行う。ログインユーザとパスワードはラズパイデフォルトのものを使用する。

OctoPiのOS設定
ちなみに、この時点ですでにoctoprintが起動しているらしい。ブラウザで「http://octopi.local/」 に接続してみると、起動している画面が見える。

表示内容が英語なのだが、ブラウザの翻訳が効くので、翻訳させるといい感じに見せてくれる。便利。

OctoPiは中身はraspbianで動いているようなので、raspbianの時と同様の初期設定をしてやろう。 まずはraspi-configすると、ちょっと古めなraspi-configが起動。定番設定を行っておく。
sudo raspi-config
- Hostnameは変えても変えなくそのまま
- ChangeLocale(使用する文字コード設定)で日本語系に
- ChangeTimezone(Asia/Tokyo)で日本標準時設定
- PiCameraは使用可能にした方がいいかも
- Expand Filesystemは自動で動いている様子
その後は、以下の設定修正を行う。
- エイリアス修正
- rootログインの禁止
- IPv6の無効化
- ntp設定
- swap無効化
- piのパスワード修正(sudo passwd pi)
一通り終わったら、一度再起動しよう。
OctoPiの3Dプリンタ設定
これで、OctoPi本体側のOS設定は完了。次にOctoPiのOctoPrint側の設定を行う。 ホスト名を変更していなければ、http://octopi.localで繋がるので、 ブラウザで接続する。
ブラウザで接続してしばらく待っていると、以下のような設定ウイザード画面が出てくる。

ちょっと英語がぎっしりなので、chromeの翻訳を使って見た目を日本語にしよう。

すると、まずはアクセス制御の画面が出てくる。どうやらIP入れれば自由にアクセスできている状況だが、 ログイン方式にしろということらしい。

では、真ん中にあるユーザ名に「pi」を入れて、変更したパスワードをその下に入れよう。 octopi側にログイン管理用ユーザも作っておくと、そっちのユーザでのログインにも出来るのかな? 色々難しそうなので、それはやめておこう。

これで、下側の青いボタンを押すと、ログインしてくれて、うまくログインできると、ログイン成功となる。 chromeのアドレス表示の箇所にも鍵のマークが付いた。これで大丈夫そうなので、右下の「次へ」ボタンを押そう。

次にスライサーのプロファイル設定画面となった。iniファイルをアップロードするようだ。 Curaの15.04.06までのプロファイルをエクスポートして、それを入れると良いらしい。

ちょうど使っているCuraは15.04.6なので、ここから、プロファイルをエクスポートして、iniファイルとして保存する。 新しいCura(2系)はサポートされていない様子。よかった古いCura使ってて。ということはOctoPi内部のCuraも15系なのだろうな。 それなら、今やっている作業と同じ動きをしてくれそうで安心。

インポートボタンを押し、ポップアップからブラウズボタンを押して、iniファイルからのプロファイルインポートを行う。 ちなみに、サーバとしてはラズパイ3を使用しているのだが、画面のレスポンスはもっさりしていて遅い。 心に余裕を持って操作しよう。

うまくインポートできると、画面に取り込んだ結果が出る。問題なければ右下の次へを押そう。

次は、プリンタのプロファイルとなった。Curaでの「プリンタ設定」に相当する部分だろう。 PCでのCura同様にX-ONE2として設定してみる。

次に印刷可能エリアなどの設定。X-ONE2は150x150x150mmだと思うが、控えめに140x140x140mmとしてみた。 ギリギリまでは使わないようにとした配慮だ。ギリギリサイズのものは印刷しても失敗しそうだし。

次に「軸」?こんな設定はPC側Curaにはなかったような。よくわからないので、触らずそのまま放置。

最後にノズルの口径。0.4mmなのでデフォルト通り。そのままでOK。 これで一通り入力は完了のようなので、右下の次へを押して次に進む。

すると、これで全部初期設定は終わりらしい。おつかれさま。

最後に派手な画面でリロードを促してきた。了解です。

OctoPiとX-ONE2接続
OctPiサーバの準備ができたので、いよいよ実戦投入してみる。 X-ONE2横に持っていき、まずはUSBケーブルで繋ぐ。そしてOctPiとX-ONE2のそれぞれの電源を入れる。 web画面を繋いでみると、特別変わったところはなさそうだ。

では、そのまま左側の「接続する」ボタンを押してみよう。 すると、エラーになってしまった。接続ボタンの上の方を何も設定していないのが良くなかったようだ。

では、シリアル=/dev/ttyUSB0(これしか選択肢なかった)と、ボーレートは115200を選択、 プリンタプロファイルはX-ONE2(これしか登録してない)を選択してから、接続してみる。

すると、どうも繋がったらしい。ホットエンド(ノズル)の温度とヒートベッドの温度が表示されグラフに出ている。 冷えた状態なので、常温となっている。離れたところから状態が見えるのはなんか嬉しい。これすごいな。

右上の方にタブらしきものがあるので、見てみる。コントロールを選ぶと、カメラ画面とプリンタヘッドの手動移動ボタンが。 カメラを繋げば、画像がここに映りそうだ。監視にはもってこいだ。 ヘッドの移動もここで操作できるし、ベッドを下げるなどの操作ができて良い。

GCODEビューアがある。スライサーでつくったgcodeでのプリンタヘッドの移動予定内容が見えるのだろうか。

ターミナルでは、プリンタとの通信内容が見えているのだろうか?ノズルはベッドの温度が常時グラフ表示されているので、 その通信ログなどが見えるのかもしれない。おかしな動作のとき、ここを見ると何かデバッグできるのかもしれないが、 表示されている内容は何も理解できないので、どうやらそれは自分には無理そうだ。

タイムラプスでは、どうやら3Dプリントの様子をタイムラプス撮影してくれそうな雰囲気。これはおもしろそう。 ちゃんと使いこなして造形のタイムラプス映像を見たい。

では、一つ印刷させてみよう。左下にアップロードボタンがあるので、ここを押してstlファイルを選択してアップロードしてやる。

すると、スライスする設定画面が出てくるので、設定を入れてやる。Curaのように細かい設定は入力できず、 スライスプロファイルを選択することで設定が行われるので、色んな種類のスライスプロファイルを用意しておくと良さそうだ。 最低限PLA用とABS用などは必要だろう。

スライス後に印刷を選んだので、スライサーからgcodeファイルが出来上がったらそのまま印刷が始まる。 まずは、グラフ上で予定温度の薄い赤線が210度まで立ち上がり、実際のノズル温度がじわじわ上がっていく。 左上側には何か色んな情報が表示されるようになり、印刷作業が始まったようだ。

テスト用なのでかなり小さなものを印刷したが、9分程度で印刷は完了。プリンタヘッドの動作を最初から最後まで見ていたが、 最初の動きが微妙に変で、スカート作成を空中で行っていたような。しかしその後はきちんとベッド上で動作を始め、 一応予定していたものは出来上がった。もう少し色々検証が必要かもしれない。

ちなみに、カメラを装備したら、こんな感じで映った。カメラ位置がケース上なので、ノズル部分は見ることができないが、 それなりに写るので便利。そして印刷ステータスも同時に見れるのが便利。

あと、一時停止ボタンがあるので押してみると、3D印刷が一時停止した。 そのままresumeボタンを押すと、そのまま継続して印刷が続行した。 止めるタイミングによっては印刷造形に影響を与えそうなので、あまり押すのはよくなさそうだ。

では、停止ボタンを押すとどうなるか。押してみると本当に終わらせるかのメッセージが出てきた。 この段階ではまだ印刷は継続して動作中。ここで、Yesを押すと、止まるのだろう。もったいないので押さなかったけど。 下位層の造形失敗時には、これを押してやり直し作業かな。

3Dプリンタから離れた場所で印刷状況を監視しながら、問題があれば停止させることもできて、なかなか便利だ。