2016年6月15日水曜日

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 をインストールするとミジンコが映った時だけ録画することも可能。
ミジンコたん、、、可愛いよ、、、ハァハァ。。。

0 件のコメント:

コメントを投稿