サーバ側の環境構築
ここでは Raspberry Pi 3 model B+ を 3Dプリンタサーバとすべく環境構築します
大きくは 次の 3段階です
- USBカメラのセットアップ
- Octoprintの導入
- スライサの導入
USBカメラは 3Dプリント中の状況を遠隔から監視するためのものです
特に 遠隔監視なんか必要ないのでは? と思っていたら
3Dプリントは結構時間がかかるようで 遠隔監視のニーズはあるようです
Octoprintにもカメラ連動の機能があります
まず Raspberry Pi にカメラを挿して 次のコマンドに反応するか確認します
$ lsusb
Bus 001 Device 005: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 001 Device 003: ID 046d:0825 Logitech, Inc. Webcam C270
Bus 001 Device 002: ID 0bda:5411 Realtek Semiconductor Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$
Webcam C270 というのがカメラです
大半の USBカメラは認識され /dev/video0 などのデバイスが作られます
次に Webでアクセスできる 動画ストリーミングサービスを入れます
mjpg-streamer がよく使われている Webストリーミングのツールです
手作業でビルドする必要があります
# apt-get install libjpeg9-dev cmake
# git clone "https://github.com/jacksonliam/mjpg-streamer.git" mjpg-streamer
# cd mjpg-streamer/mjpg-streamer-experimental ; make
# cd .. ; su ; cp -r mjpg-streamer-experimental/ /opt/mjpg-streamer
これで /opt/mjpg-streamer/ にインストール完了します
次のコマンドで 動画配信を開始できるはずです
$ LD_LIBRARY_PATH=/opt/mjpg-streamer/ /opt/mjpg-streamer/mjpg_streamer -i "input_uvc.so -f 10 -r 640x480 -d /dev/video0" -o "output_http.so -p 8010 -w /opt/mjpg-streamer/www"
MJPG Streamer Version: git rev: 501f6362c5afddcfb41055f97ae484252c85c912
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 640 x 480
i: Frames Per Second.: 10
i: Format............: JPEG
i: TV-Norm...........: DEFAULT
UVCIOC_CTRL_ADD - Error at Pan (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Tilt (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Pan Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Pan/tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_ADD - Error at Focus (absolute): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Tilt (relative): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Pan/tilt Reset: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Focus (absolute): Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at LED1 Mode: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at LED1 Frequency: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Disable video processing: Inappropriate ioctl for device (25)
UVCIOC_CTRL_MAP - Error at Raw bits per pixel: Inappropriate ioctl for device (25)
o: www-folder-path......: /opt/mjpg-streamer/www/
o: HTTP TCP port........: 8010
o: HTTP Listen Address..: (null)
o: username:password....: disabled
o: commands.............: enabled
$
これで フォアグラウンドでWebサービスが起動します
http://ラズパイのIP:8010/ へアクセスしてカメラのライブ配信が確認できます
OctPrint とは Raspberry Pi でも動作実績のある 3Dプリントサービスです
3D CADツールからのモデルデータを受けて 3Dプリントできる形に変換して
3Dプリンタに転送します 3Dプリンタの操作や管理も可能です
Pythonベースとなっているようで 導入自体はすごく楽です
初回インストールは piユーザの例では 次のコマンドで
$ cd ~/opt
$ git clone "https://github.com/foosel/OctoPrint.git"
Cloning into 'OctoPrint'...
remote: Enumerating objects: 28, done.
remote: Counting objects: 100% (28/28), done.
remote: Compressing objects: 100% (24/24), done.
remote: Total 63768 (delta 3), reused 13 (delta 0), pack-reused 63740
Receiving objects: 100% (63768/63768), 38.94 MiB | 1.64 MiB/s, done.
Resolving deltas: 100% (41372/41372), done.
$ cd OctPrint
$ virtualenv venv
created virtual environment CPython3.7.3.final.0-32 in 12925ms
creator CPython3Posix(dest=/home/pi/opt/OctoPrint/venv, clear=False, global=False)
seeder FromAppData(download=True, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=/home/pi/.local/share/virtualenv/seed-app-data/v1.0.1)
activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
$ ./venv/bin/python setup.py install
…
Installing easy_install script to /home/pi/opt/OctoPrint/venv/bin
Installing easy_install-3.8 script to /home/pi/opt/OctoPrint/venv/bin
Using /home/pi/opt/OctoPrint/venv/lib/python3.7/site-packages
Finished processing dependencies for OctoPrint==1.4.0
$
systemd 用のサービススクリプトです これを systemd のフォルダに入れておけば
sudo systemctl start oct などのコマンドで起動できるようになります
[Unit]
Description=OctoPrint service
[Service]
User=pi
ExecStart=/home/pi/opt/OctoPrint/venv/bin/octoprint
[Install]
WantedBy=multi-user.target
なお起動には時間がかかります 特に初回は 10分くらい
起動したら 5000番の Webサービスが立ち上がるので
ブラウザから http://ラズパイのIP:5000/ へアクセスすることができます

後から設定変更できますが とりあえず Ender-3 Proを登録しておきます

Print be & build volume の設定から print volume の設定を行います
プリンタの仕様にとりあえず合わせました

カメラの設定です 先ほど試した mjpg-streamerの URLを指定します

設定が完了すると OctoPrintの再起動が求められます
USBケーブルをつなぎ Serialポートに /dev/ttyUSB0 があれば選択します
Connectボタンを押せば 通信接続が行われます
うまくつながれば 3Dプリンタの状態を見たり プリンタヘッドの駆動を試せます
