3Dプリンタは出力に時間がかかるので出力中はPCをつけっぱなしにしないといけないのが難点でした。出力中にうっかりシャットダウンしてしまったりOSアップデートがきて再起動すると失敗してしまいます。そこで便利なのが3Dプリンタサーバです。普通の紙のプリンタにもプリンタサーバなるものがありますが、3Dプリンタの場合も似たような感じでサーバを介して3Dプリントを開始してしまえば後はPCがどうなろうと動き続けてくれます。また、複数人で3Dプリンタを使いたいときにも便利です。
そこで、今回はARM-CPUが載った"Orange Pi PC"ボードを使って3Dプリンタサーバを構築したいと思います。
環境
今回構築する3Dプリンタサーバのスペックです。
- OrangePI PC(Allwinner H3)
- CPU:Allwinner H3(Coretext-A7 4core)
- Memory:DDR3 1GByte(VRAMと共用)
- Storage:MicroSDカードスロット
- Network:100BASE-TX
- VIDEO:HDMI x1
- USB:UXB2.0 Host x2, USB1.1 Host x1, USB2.0 OTG x 1
- OS:ARMBIAN (Debian8 jessie) 3.4.112-sun8i
- 3Dプリンタサーバ:Repetier-Server 0.80.1
- PCクライアント:Repetier-Host 1.6.2
"Orange Pi PC"はAllwinner H3(安いタブレットによく使われているCPU)がのったボードです。約1600円で購入しました。
このボードを動かすにはほかにMicroSDカードと電源(5V/2A以上)が必要です。特に電源はそのままUSBのVBUSに使われているので、あまり貧弱なものを使うと正常に動作しなくなるかもしれません。なるたけ容量の大きいもの(2A以上流せる)がいいと思います。
詳細なスペックは以下を参照ください。
- Orange pi - What’s Orange Pi PC?
http://www.orangepi.org/orangepipc/
また、3Dプリンタは以前に購入したPrusa i3互換のものを使用します。
Orange Pi PC環境の立ち上げ
SDカードにOSディスクイメージを書き込む
まず最初にOrange Piを動かすためにOSをSDカードに書き込む必要があります。OSはいくつかありますが(いずれもLinux/Android)、ここではarmbianを選択しました。Debianなら少しは使い慣れているからというのと、apt-getを使って簡単にパッケージを追加/アップデート出来るだろうという目論見からです。
ここで使うSDカードの読み書きは早いほうがもちろん快適ですが、ここで重要になるのはランダムアクセス性能です。"class10"といった表記で保障されているのは連続アクセス性能で、ランダムアクセスするとずっと遅くなります(ランダムアクセス性能は保証されていないので、信じられないくらい遅くなるカードもあるようです)。これからSDカードを購入するのであれば、以下の記事が参考になると思います。
("Samsung EVO+ 32GB"とか"SanDisk Extreme Pro 16GB"が結構いい数字を出しているみたい)
- armbian - How to prepare a SD card?
https://docs.armbian.com/User-Guide_Getting-Started/#how-to-prepare-a-sd-card - Jeff Geerling - Raspberry Pi microSD card performance comparison - 2015
http://www.jeffgeerling.com/blogs/jeff-geerling/raspberry-pi-microsd-card
microSDカードの準備が出来たら以下のサイトからOrange Pi PC用のarmbianをダウンロードします。ダウンロードできるのは"Jessie server"と"Jessie desktop"のふたつです。ここでは"Jessie server"をダウンロードします。
- armbian - Orange Pi PC
https://www.armbian.com/orange-pi-pc/
ディスプレイとマウス/キーボードを繋いでPCとしても使う場合は"Jessie desktop"を書き込みます。私の場合はそういう用途には使わないだろうというのと軽いのでserverを選択しました。
ダウンロードしたイメージはLinux環境があるのならddコマンドで書き込みます。Windows環境なら以下のツールを使うのが便利かと思います。
- Rufus - 起動可能なUSBドライブを簡単に作ろう
http://rufus.akeo.ie/
Linuxを起動する
ディスクイメージを書き込んだMicroSDカードとLANケーブルをセットしたら、あとはアダプターを差し込むだけで起動します。ただ、このままだとLEDが点滅するだけで何が起こっているかわかりません。近くにディスプレイがあればHDMIで接続してLinuxのブートメッセージが流れていくのを見ることができます(無くても問題はありません)。何回か設定と再起動を自動的に繰り返すので落ち着くまで待ってください。
DHCPは最初から有効になっているので、自宅のLANに接続したのであればIPアドレスが割り当てられているはずです。ホームルーターで確認するなりしてIPアドレスを調べて、sshを使ってログインします。私はMSYS2のsshクライアントを使ってログインしました。
初期ログインパスワードは以下の通りです。
- user:root
- passowrd:1234
$ ssh 192.168.1.36 The authenticity of host '192.168.1.36 (192.168.1.36)' can't be established. ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.36' (ECDSA) to the list of known hosts. kiri@192.168.1.36's password: ___ ____ _ ____ ____ / _ \ _ __ __ _ _ __ __ _ ___ | _ \(_) | _ \ / ___| | | | | '__/ _` | '_ \ / _` |/ _ \ | |_) | | | |_) | | | |_| | | | (_| | | | | (_| | __/ | __/| | | __/| |___ \___/|_| \__,_|_| |_|\__, |\___| |_| |_| |_| \____| |___/ Welcome to ARMBIAN Debian GNU/Linux 8 (jessie) 3.4.112-sun8i System load: 0.39 Up time: 2 min Memory usage: 5 % of 1000Mb IP: 192.168.1.36 CPU temp: 29°C Usage of /: 5% of 29G
ログインするとユーザの作成などいくつか設定項目があります。それを終えた後、念のためパッケージをアップデートしておきます。
$ sudo apt-get update $ sudo apt-get upgrade
これでOrange Pi PCの準備が整いました。
3Dプリンタサーバの立ち上げ
Repetier-Serverのインストール
次に以下のサイトからフリーの3Dプリンタサーバ"Repetier-Server"(Orange Piにインストールする場合はRepetier-Server armhf)をダウンロードしてきます。
- Repetier-Server - Download
https://www.repetier-server.com/download-repetier-server/
dpkgコマンドを使ってインストールします(たぶん、パッケージのバージョンはちょっと上がっていると思います)。
$ wget http://download.repetier.com/files/server/debian-armhf/Repetier-Server-0.80.1-Linux.deb $ sudo dpkg -i Repetier-Server-0.80.1-Linux.deb
念のため、Repetier-Serverが起動しているかを確認します。
$ sudo service RepetierServer status ● RepetierServer.service - Repetier-Server 3D Printer Server Loaded: loaded (/lib/systemd/system/RepetierServer.service; enabled) Active: active (running) since Thu 2016-12-01 13:33:05 CET; 16h ago Process: 639 ExecStart=/usr/local/Repetier-Server/bin/RepetierServer -c /usr/local/Repetier-Server/etc/RepetierServer.xml --daemon (code=exited, status=0/SUCCESS) Process: 579 ExecStartPre=/bin/chown -R repetierserver /var/lib/Repetier-Server (code=exited, status=0/SUCCESS) Process: 450 ExecStartPre=/bin/mkdir -p /var/lib/Repetier-Server (code=exited, status=0/SUCCESS) Main PID: 663 (RepetierServer) CGroup: /system.slice/RepetierServer.service └─663 /usr/local/Repetier-Server/bin/RepetierServer -c /usr/local/Repetier-Server/etc/RepetierServer.xm... Dec 01 13:33:05 orangepipc systemd[1]: Started Repetier-Server 3D Printer Server.
この状態で、PCのブラウザからRepetier-Serverの画面にアクセスできると思います。ポート番号は3344です。
- アクセス先:http://<IPアドレス>:3344/
3DプリンタをOrange Pi PCに接続する
ここでプリンタサーバの設定をする前に、3DプリンタをOrange Pi PCに接続して認識しているかを確認しておきます。USBケーブルを接続して3Dプリンタの電源をいれてください。その後、接続されているUSBデバイス一覧を表示してみます。
$ lsusb Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 003: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter Bus 002 Device 002: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
私の場合、"QinHeng Electronics HL-340 USB-Serial adapter"が3Dプリンタです。その横にある"1a86"とあるのがデバイスIDで、プリンタサーバの設定で出てきます(おそらくRepetier-Serverが自動認識すると思いますが、確認のためどこかにメモしておきます)。
Repetier-Serverの設定
ここまでくればもう一息です。ブラウザからRepetier-Serverの画面にアクセスして3Dプリンタの設定を行います。3Dプリンタの電源をいれてUSBケーブルを接続しておいてください。
ブラウザでアクセスすると以下の画面が表示されます。ここから3Dプリンタの設定を追加していきます。
■設定手順
- Dashboard
"Add new Printer"をクリックしてください。 - Step 1: Naming
"Printer Name"にこれから追加するプリンタの名前を入力します。3Dプリンタを複数台つなげるときはそれぞれに分かりやすい名前を付けたほうがいいと思います。ここでは一台だけなのでシンプルに"Prusa i3"としました。
- Step 2: Connecting Printer
接続している3Dプリンタの種類、ポート等を選択します。- Firmware:ご自分の3Dプリンタがどれに当てはまるか調べて入力してください。ここでは"Repetier-Firmware"を選択しました。
- Device / Port:3Dプリンタが接続されているポートを指定します。恐らくは自動的に認識されていると思いますが、"usb-xxxx_USB2.0-Serial-if00-port0"のxxxxの部分に先ほど調べたUSBデバイスのIDが入っているか確認してください。IDが同じであれば正解です。
- Baud Rate: Autodetect(デフォルト値)
- Input Buffer Size: 127(デフォルト値)
- Step 3: Geometry
ベッドの形とサイズ(左/右端のX座標、手前/奥のY座標、上方向の上限となるZ座標)を入力します。分からないようであればそのままにしておいて後から実際に動かしてみて値を変更します。なお、ファームウェアに入力されている値と一致している箇所は緑の"◎"が表示されます。
- Step 4: Extruders and Bed
エクストルーダの数と使用しているフィラメントの直径を入力します(フィラメントのリールに記載あると思います。無ければノギスか何かで実測した値を書き込みます)
- Step 5: Features
3Dプリンタの機能有無を選択します。- Fan Installed: 押し出したフィラメントの冷却ファン有無
- SD Card Reader Installed: 3DプリンタのSDカードスロット有無
- Software Power: 主電源がソフト制御でON/OFF出来るか
3Dプリンタが制御出来るか確認する
これで設定はほぼ完了です。Dashboardを表示すると先ほど追加したプリンタが表示されていると思います。
設定が完了したら正常に動作しているか確認です。Control画面からX/Y/Z軸を動かしたりヒーターの電源を入れたりして正常に動作しているか確認してください。特に問題ないようであれば、サーバのセットアップはこれで完了です。
3Dプリンタでモデルを出力するには
(パターン1)Gコードをプリンタサーバにアップロード
先ほどのRepetier-Serverの画面からGコードをアップロードする方法です。利点は3Dプリンタが動き出してしまえばPCはシャットダウン出来ることです。
例えばRepetier-Hostを使っている場合は以下のような手順になります。
- モデル(*.stl)を読み込む
- スライサでGコードに変換する
- "Print Preview"タブの"Save to File"でGコードを保存する
- プリントサーバにGコードをアップロードする
(パターン2)PCから直接操作する
今まで通りPCから直接プリンタを操作したい場面もあるかもしれません。"Repetier-Host"を使っている場合はプリンタ接続先に"Repetier-Server"を指定できます。その場合、今までPCとUSB接続していたときと同様に操作が可能です。
サーバとして常設する前に
ケースを作成する
常時稼働するのに基板剥き出しというのは考え物です。ネット上にOrange Pi PCに使えるケースのモデルデータが公開されていたので早速出力して使わせてもらいました。使用したモデルデータは以下のものです。冷却FAN用のねじ穴が設けられていていい感じです。
- Thingiverse - Orange PI PC Case ORANGEPI by powermos, published May 15, 2016
http://www.thingiverse.com/thing:1565411
出力したものに基板を入れてみて、出っ張っている箇所をやすって仕上げました。
CPUにヒートシンクを装着する
タブレットに使われるような省電力を意識したCPUとはいえ、負荷がかかるような処理を連続してするとかなり温度が上昇します。最悪は壊れてしまうかもしれません。そうなる前にヒートシンクを装着することにしました。
以前に何かに使えるかと購入しておいたヒートシンクがぴったりのサイズです。熱伝導グリスを塗って上に貼り付けました。
ファンをつける
このケースにはファン用のねじ穴が設けられています。もしやと古いマザーボードを漁ってみるとチップセット用ファン(DC12V)がぴったりのサイズでした。ただ、まわしてみると夜中はちょっと煩いかもしれません。負荷をかかることをさせてCPU温度が上がりだしたら動かすことにします。
その後
(2017/06/10追記)
Orange Piを使ったサーバを設置して半年が経ちました。現在まで電源ONして完全放置ですが安定して動いてくれています。これから暑くなってくるのでCPU温度には気を付けたほうがいいかもしれません(2017/06/10現在ヒートシンクのみ、室温27.9度でCPU温度49度)。
ついでにRepetier-Serverも0.80.3にアップデートしました。dpkgコマンドで一発なのでとても簡単です。
$sudo dpkg -i Repetier-Server-0.80.3-Linux.deb (Reading database ... 57347 files and directories currently installed.) Preparing to unpack Repetier-Server-0.80.3-Linux.deb ... Uninstall Repetier-Server Removed symlink /etc/systemd/system/multi-user.target.wants/RepetierServer.service. Unpacking repetier-server (0.80.3) over (0.80.2) ... Setting up repetier-server (0.80.3) ... Install Repetier-Server You may see warnings about groups. These can be ignored. The user `repetierserver' is already a member of `tty'. adduser: The group `intserial' does not exist. adduser: The group `ugpio' does not exist. Created symlink from /etc/systemd/system/multi-user.target.wants/RepetierServer.service to /lib/systemd/system/RepetierServer.service. Processing triggers for systemd (215-17+deb8u5) ...
参考
この記事は以下のサイトを参考に記載させていただきました。
- ばっくらっしゅの備忘録 - Orange Pi で自宅サーバ 準備編(OSイメージ書き込み)
http://koyama4284.blogspot.jp/2016/10/orange-pi-os.html - orange pi - armbian で orange pi PC 日本語
http://orange-pi-2.blogspot.jp/2016/01/armbian-orange-pi-pc.html - なんでも作っちゃう、かも。 - Raspberry PiにRepetier-Serverをインストールして複数の3Dプリンターを制御する
http://arms22.blog91.fc2.com/blog-entry-596.html - Thingiverse - Orange PI PC Case ORANGEPI by powermos, published May 15, 2016
http://www.thingiverse.com/thing:1565411 - Repetier-Host Documentation
https://www.repetier.com/documentation/repetier-host/ - Repetier-Server Documentation
https://www.repetier-server.com/documentation/