ON THE HAND

引っ越しました http://tech.andhandworks.com

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

このエントリーをはてなブックマークに追加

  1. --/--/--(--) --:--:--|
  2. スポンサー広告

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
3行目と4行目の末尾にある「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

このエントリーをはてなブックマークに追加

スポンサーサイト
  1. 2016/08/25(木) 01:09:37|
  2. Raspberry Pi
  3. | コメント:0

USB顕微鏡をRaspberry Pi3 でストリーム配信

梅雨が明けたら待ちに待ったプランクトンの季節です。
という訳で、USBの顕微鏡を買ってみました。

中国製のかなり怪しい顕微鏡で付属のソフトを
Windows10 にインストールしてもまともに動作しません。
ところが、どういう訳か Raspberry Pi だと素晴らしく快調に映ります。

ちなみに、Amazon の商品説明は笑ってしまうほど嘘八百です。
  • 多数の倍率があることになっているが実際にピントが合うのは2種類だけ。
    Winソフトでデジタル的に引き延ばすのを倍率変更と呼んでいるようです。
  • 解像度最大 1600x1200 となっているが 640x480固定。
    Winソフトでデジタル的に1600まで引き延ばすようで鮮明になる訳ではありません。
  • 連続ズームの記載があるが実際にはズームするとピントが合わない。
  • SNAPとZOOMのボタンが存在するが動作しない。


とは言え、Raspberry Pi で動作する USB 顕微鏡がこの価格で手に入るのは悪くないと思います。

今回はこの顕微鏡を Raspberry Pi で2種類の使い方をしてみます。
1つ目はモバイルデジタル顕微鏡。
もう1つは顕微鏡映像のストリーム配信です。

モバイル顕微鏡化


まず Raspberry Pi の LCD モニタに映像を映します。
モバイルバッテリーを繋げば外に持ち歩くことも可能。

まぁ、OTG対応の android スマホを持っていれば顕微鏡を
直接スマホに挿して使えるんですけども。

Raspberry Pi で LCD を使う方法は過去記事をご参照ください。
Raspberry Pi3 を一体型 PC にする

この LCD モニタに顕微鏡の映像を映すには luvcview コマンドをインストールします。

pi@raspberrypi:~ $ sudo apt-get install luvcview


で、実行。それだけ。

pi@raspberrypi:~ $ luvcview


通常の Web カメラでも同様かと思います。
録画したい場合は guvcview をインストールすればOKです。

そんなこんなでミジンコを撮ってみました。


オンライン顕微鏡ストリーミング


Raspberry Pi で撮影しながら動画表示すると結構カクカクします。
そこで、Raspberry Pi をストリーミングサーバにして iPad で表示してみます。
これも mjpg-streamer を使うと結構簡単にできます。

まずは必要なパッケージをインストールしてソースからビルドします。

pi@raspberrypi:~ $ sudo apt-get install subversion libjpeg-dev imagemagick
pi@raspberrypi:~ $ svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer mjpg-streamer
pi@raspberrypi:~ $ cd mjpg-streamer
pi@raspberrypi:~ $ make
pi@raspberrypi:~ $ make install


LD_LIBRARY_PATH を通して起動すれば配信開始。

pi@raspberrypi:~ $ sudo -s
root@raspberrypi:~# export LD_LIBRARY_PATH=/usr/local/lib
root@raspberrypi:~# mjpg_streamer -i "input_uvc.so -f 10 -r 640x480 -d /dev/video0 -y -n" -o "output_http.so -w /var/www/mjpg -p 8080"


iPad で Safari を開いて http://{IP_ADDRESS}:8080/?action=stream に
アクセスするとこんな感じになります。
ミジンコを観察できる壁掛けフレーム。オシャレ。


なお、ズームダイアルで数倍の大きさに拡大できますが、
大きすぎて滅多にミジンコがフレームインしなくなるので
このくらいの倍率がおすすめです。

Raspberry Pi の起動時に自動的に配信が始まるようにします。
スクリプトはこんな感じ。

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


export LD_LIBRARY_PATH=/usr/local/lib/:${LD_LIBRARY_PATH}

case "$1" in
start)
/usr/local/bin/mjpg_streamer -i "input_uvc.so -f 10 -r 640x480 -d /dev/video0 -y -n" -o "output_http.so -w /var/www/mjpg -p 8080" &
;;
stop)
/bin/kill -9 `/bin/pidof mjpg_streamer`
;;
esac

exit 0



root@raspberrypi:~# vi /etc/init.d/mjpg
root@raspberrypi:~# chmod 755 /etc/init.d/mjpg
root@raspberrypi:~# update-rc.d mjpg defaults


さらに、motion をインストールするとミジンコが映った時だけ録画することも可能。
ミジンコたん、、、可愛いよ、、、ハァハァ。。。

このエントリーをはてなブックマークに追加

  1. 2016/06/15(水) 22:58:05|
  2. Raspberry Pi
  3. | コメント:0

Raspberry Pi3 を一体型 PC にする (2) :リベンジ

前回、Raspberry Pi3 を無線 Linux 端末にするところまでたどり着きました。
最後の手順で LCD-show.tar.gz をダウンロードしましたが、
現時点で最新の Raspbian である jessie ではこれは上手く動きません。
waveshare のマニュアルをよく読むと書いてあるんですが気づきませんでした。

また、amazon の商品説明にあるURLからRaspbianを入手してインストールした場合、
一時的には動作しますがOSをアップデートするとLCDが表示されなくなります。

という訳で、jessie に対応したドライバをインストールしてLCDを動作させます。

ブート時にX-windowを起動



pi@raspberrypi:~ $ sudo raspi-config

Boot Option で Desktop Autologin を選択します。
後の手順の都合で Autologin にしておく必要があるので注意。
RaspiLCD_2.jpg
RaspiLCD_3_201605012357385d7.jpg

LCDドライバを入れる


waveshare のマニュアルのImageセクションからjessie用のLCDドライバを
ダウンロードして4inchのドライバをロードします。
http://www.waveshare.com/wiki/4inch_RPi_LCD_(A)#Image

pi@raspberrypi:~ $ wget http://www.waveshare.com/w/upload/9/9d/LCD-show-151020.tar.gz
pi@raspberrypi:~ $ tar xzfv LCD-show-151020.tar.gz
pi@raspberrypi:~ $ cd LCD-show
pi@raspberrypi:~/LCD-show $ sudo ./LCD4-show

しばらくすると自動的にrebootしてLCDモニタが映るようになります。
こんな感じ。
電源以外のケーブルが無くなって素敵。
RaspiLCD_4.jpg

タッチパネルをキャリブレーション


ドライバを入れただけだと、タッチパネルをタッチした座標が
何故か上下反転するので、キャリブレーションして修正します。

キャリブレーションの準備として、ドライバに同梱されている
xinput-calibrator をインストールします。

pi@raspberrypi:~/LCD-show $ sudo dpkg -i -B xinput-calibrator_0.7.5-1_armhf.deb


その後、xinput-calibrator を実行するのですが、
モニタ上で pi ユーザでログインしていないとエラーになってしまうので、
キーボードを接続していない状態の場合は Autologin で起動しておく必要があります。

pi@raspberrypi:~ $ DISPLAY=:0.0 xinput_calibrator
Calibrating EVDEV driver for "ADS7846 Touchscreen" id=6
current calibration values (from XInput): min_x=3950, max_x=172 and min_y=3871, max_y=194


こんな感じの画面が表示されるので、マーカーをタッチすれば
キャリブレーション完了。
RaspiLCD_5.jpg

おまけ:Bluetooth キーボードを接続


せっかくケーブルレスなので Bluetooth キーボードを設定してみます。
Raspberry Pi3 はBluetooth内蔵なのでペアリング設定だけでつながります。

pi@raspberrypi:~ $ bluetoothctl
[bluetooth]# scan on
Discovery started
[CHG] Controller xx:xx:xx:xx:xx:xx Discovering: yes
[bluetooth]# scan off
Discovery stopped
[bluetooth]# pair xx:xx:xx:xx:xx:xx
Attempting to pair with xx:xx:xx:xx:xx:xx
Pairing successful
[CHG] Device xx:xx:xx:xx:xx:xx Connected: no
[bluetooth]# connect xx:xx:xx:xx:xx:xx
Attempting to connect to xx:xx:xx:xx:xx:xx
Connection successful
[bluetooth]# trust
[bluetooth]# exit


完成


そんなこんなで小型Youtube端末ができました。
RaspiLCD_6.jpg

このエントリーをはてなブックマークに追加 続きを読む

テーマ:電子工作 - ジャンル:コンピュータ

  1. 2016/05/02(月) 00:40:01|
  2. Raspberry Pi
  3. | コメント:0
次のページ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。