2016年8月25日木曜日

Raspberry Pi で M3D The Micro を小型無線3Dプリンタにする

これまで書いてきたアレコレを結合してWiFi対応の小型3Dプリンタを作ります。



今回の完成形はこんな感じでWiFi越しにブラウザでプリント状況を確認しながら

3Dプリンタの操作ができるようにするところまでです。

頑張ればタッチパネルモニタで本体操作することもできそうですがそれはまたいずれ。

WiFi3Dprinter_1.jpg



※茶色いPLAが見てはいけないものに見えてしまった方は軽く目を閉じてページをスクロールしてください。



材料


材料は過去に紹介したこいつらです。





【3Dプリンタ】

M3D The Micro

Kickstarter で歴史的人気を得た超小型3Dプリンタ。

いつの間に Amazon でも取り扱いが始まっていたようです。

小さくてカッコいい以外に何の取り柄もないので通常であればPCの接続が必須。









【コントローラ】

Raspberry Pi 3 + LCD ディスプレイ

Raspberry Pi 2 以前ではだめです。Raspberry Pi 3 推奨。

何故なら、2以前は WiFi ではないから。

そして、USBに色々繋ぐため消費電力的にしんどいから。

ちなみに、今回は LCD ディスプレイは無くても構いませんが、

OctoPiPanelを使うとタッチパネルでプリンタを操作できるようになるようです。







【USBカメラ】

LED付きUSBデジタル顕微鏡

敢えての顕微鏡。

実用上は普通の Web カメラを使った方が便利です。

Web カメラの場合は UVC 対応で LED 付きのタイプを推奨。

個人的にはこのあたりとか怪しさ満開でそそられます。





Raspberry Pi に OctoPrint をセットアップする



今回はOctoPrintを使います。

Raspberry Pi で動作する3Dプリンタサーバには他にも

Repetier-Serverというもっと高機能なものがありますが

M3D The Micro のプロファイルがあるのは OctoPrint だけだったので断念。



Raspberry Pi3 を OctoPrint 専用にセットアップする場合は

Raspbianの代わりにOctoPiを使えばいきなり設定完了です。



今回は LED モニタを残したかったので稼働中の Raspberry Pi に追加インストールします。

Raspberry Pi3 に Raspbian を入れて WiFi 化するところまでは過去記事で説明してあります。



前置きが長くなりましたが、このあたりの記事を参考に OctoPrint を設定します。

RaspberryPiにoctoPrintを入れて3DPrinter ATOMをスタンドアローン稼働させるまでの流れ



git から clone して OctoPrint 本体をインストール。

clone する場所はどこでも良いです。

私は home 直下が汚くなるのが嫌なのでサブディレクトリを掘っています。

pi@raspberrypi: ~ $ mkdir git
pi@raspberrypi: ~ $ cd git
pi@raspberrypi: ~/git $ sudo apt-get install python-pip python-dev git
pi@raspberrypi: ~/git $ git clone https://github.com/foosel/OctoPrint.git
pi@raspberrypi: ~/git  $ cd OctoPrint
pi@raspberrypi: ~/git/OctoPrint $ sudo pip install -r requirements.txt



piユーザをグループに追加して一旦ログアウト。
OctoPrint はユーザ権限で起動するので、これをやっておかないとエラーになります。
また、グループの追加が反映されるのは次回ログイン時なので、
OctoPrint の起動前にログアウトしておく必要があります。
pi@raspberrypi: ~/git/OctoPrint $ sudo usermod -a -G tty pi
pi@raspberrypi: ~/git/OctoPrint $ sudo usermod -a -G dialout pi
pi@raspberrypi: ~/git/OctoPrint $ sudo usermod -a -G staff pi
pi@raspberrypi: ~/git/OctoPrint $ exit



M3D The Micro の USB ケーブルを Raspberry Pi に接続してから OctoPrint を起動。

pi@raspberrypi: ~/git/OctoPrint $ ./run



この状態で WiFi に繋がっているPCのブラウザから

http://{Raspberry PiのIPアドレス}:5000/ にアクセスして

画面が表示されたら成功。

WiFi3Dprinter_2.jpg



OctoPrint と M3D The Micro を接続



画面上部の「Settings」から設定画面に入ります。

左側のメニューから「Plugin Manager」を探します。

Plugin の検索フォームに「M3」と入力すると「M33-Fio」というプラグインが見つかります。

古いBlog記事などでは「M3D-Fio」と紹介されていますが、どうやら商標絡みで名前が変わったようです。

WiFi3Dprinter_3.jpg


もし、PluginManager に何も出てこない場合は権限が足りません。

pi ユーザを tty , dialout , staff グループに追加し

ログアウト/ログインしてから OctoPrint を再起動すれば直るはず。



pi@raspberrypi: ~/ $sudo chmod g+w /usr/local/lib/python2.7/dist-packages/octoprin
t_setuptools/



CuraEngine でスライスする



実はこのままでは GCode を直接送らないとプリントできません。

CuraEngine というプラグインを入れて STL をスライスできるようにします。



CuraEngine のインストールの仕方はサイトによって色々な手順が書かれていますが、

上手くいかないものもあったりして地味に苦戦します。



まず、プロファイル等を持ってくるためにUltimakerのページからdebパッケージをダウンロードします。

このとき、必ず ver 15.04.x をダウンロードします。

新しいものは OctoPrint が対応していないので駄目です。

https://ultimaker.com/en/products/cura-software/list



ダウンロードしたパッケージを解凍します。

pi@raspberrypi: ~/ $ sudo dpkg-deb --extract cura_15.04.5-debian_amd64.deb /



このとき /usr/share/cura/ に入る CuraEngine バイナリは ARM 用ではないので、

このままだと動作しません。



次に、OctoPrint の github に載っている手順

CuraEngine をビルドしなおして上書きます。



pi@raspberrypi: ~/git/ $ sudo apt-get -y install gcc g++
pi@raspberrypi: ~/git/ $ git clone -b legacy https://github.com/Ultimaker/CuraEngine.git
pi@raspberrypi: ~/git/ $ make -C CuraEngine
pi@raspberrypi: ~/git/ $ sudo mkdir -p /usr/share/cura/
pi@raspberrypi: ~/git/ $ sudo cp CuraEngine/CuraEngine /usr/share/cura/



CuraEngine のバイナリをビルドした後、OctoPrint の Plugin Manager で

「Cura Engine」をインストールし、さらに左メニューに追加された

「Cura Engine」というメニューを開きます。



OctoPrint が自動で Cura Engine を見つけてくれていれば

何も入力しなくてもこのようになるはずです。

プロファイルは M33-Fio が入れてくれたっぽいです。(たぶん)

WiFi3Dprinter_4.jpg



プリントしてみる



ここまでくればリモートからプリントが可能です。

トップ画面で「Connect」ボタンを押して「Machine State」が

「Operational」になることを確認します。

WiFi3Dprinter_5.jpg



Operational にならないようなら接続が悪い、電源が入っていない、

プラグインが上手くいっていない、のどれかではないかと思います。



Operational になったら、左下のメニューから STL ファイルをアップロードします。

一旦アップロードしたファイルは保管してくれるので、後から iPad などで

プリント操作することも可能。



STL ファイルを slice して gco ファイルにする必要があります。

非常にわかりづらいですが、ファイル名の右下にある

小さいボタン(赤丸のところ)をクリックして slice の設定をします。

WiFi3Dprinter_6.jpg



このあたりの画面が出てくるまで、これが M3D だったことを忘れていました。

WiFi3Dprinter_7.jpg

WiFi3Dprinter_8.jpg



この後、slice するのですが、「slicing (0%)」という表示のまま

動かなくなったら Cura Engine のビルドに失敗しています。

試しに Shell 上で CuraEngine ファイルを実行してみるとエラーになると思います。

その場合、CuraEngine をビルドしなおしてビルドエラーになっていないことを

確認してからバイナリを差し替えます。





カメラと接続する



実は、過去記事で説明したカメラのストリーミング配信の設定をそのまま使えます。

USB顕微鏡をRaspberry Pi3 でストリーム配信」で説明した設定のまま。

起動スクリプトもそのままでOKです。



OctoPrint の settings メニューから「Webcam」を選びます。

WiFi3Dprinter_9.jpg



URL の入力欄に次のように入力。

・Stream URL : http://{Raspberry PiのIPアドレス}:8080/?action=stream

・Snapshot URL : http://{Raspberry PiのIPアドレス}:8080/?action=snapshot



上手くいくとトップページの「Control」タブでプリントの様子が

ストリーミング表示されるようになります。

WiFi3Dprinter_1.jpg



FFmpeg を設定しておくとプリント中のタイムラプス動画を作ってくれるようです。

Raspberry Pi に FFmpeg を入れるのは少々面倒なのでまた後日。





自動起動



Raspberry Pi 起動時に OctoPrint も起動するようにします。

/etc/init.d/octoprint に次のスクリプトファイルを置きます。

#!/bin/sh
### BEGIN INIT INFO
# Provides:          octoprint
# Required-Start:    $local_fs $remote_fs $network $syslog $named mjpg
# Required-Stop:     $local_fs $remote_fs $network $syslog $named mjpg
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
### END INIT INFO

OCTOPRINT_HOME=/home/pi/git/OctoPrint

case "$1" in
start)
/usr/bin/sudo -u pi $OCTOPRINT_HOME/run --daemon start
;;
stop)
/usr/bin/sudo -u pi $OCTOPRINT_HOME/run --daemon stop
;;
restart)
/usr/bin/sudo -u pi $OCTOPRINT_HOME/run --daemon stop
/usr/bin/sudo -u pi $OCTOPRINT_HOME/run --daemon start
;;
esac

exit 0

4行目と5行目の末尾にある「mjpg」はカメラの mjpg-streamer を

自動起動しているスクリプトのProvides名です。

mjpg-streamer の起動スクリプトについては過去記事参照。



この起動スクリプトが起動時に実行されるようにします。

$ sudo -s
# apt-get install chkconfig
# chkconfig -add mjpg
# update-rc.d mjpg defaults
# chkconfig -add octoprint
# update-rc.d octoprint defaults
# ls /etc/rc5.d/*octoprint
/etc/rc5.d/S04octoprint
# ls /etc/rc5.d/*mjpg
/etc/rc5.d/S03mjpg
# reboot

mjpg の後に octoprint が起動するように設定できました。

たいしたスクリプトではないので、1つの起動スクリプトにまとめることもできますが、

それぞれを別々に起動/停止できるようにしておくのが Linux っぽいかと思います。





完成



長々と記事を書いている間にプリントが終わりました。

左のライトが顕微鏡、右下のRaspberry Piがコントローラです。

WiFi3Dprinter_10.jpg



完成品。カメラのレンズキャップホルダーです。

サイズぴったり。

WiFi3Dprinter_11.jpg

0 件のコメント:

コメントを投稿