Orange Piで3Dプリンタサーバを構築する

3Dプリンタは出力に時間がかかるので出力中はPCをつけっぱなしにしないといけないのが難点でした。出力中にうっかりシャットダウンしてしまったりOSアップデートがきて再起動すると失敗してしまいます。そこで便利なのが3Dプリンタサーバです。普通の紙のプリンタにもプリンタサーバなるものがありますが、3Dプリンタの場合も似たような感じでサーバを介して3Dプリントを開始してしまえば後はPCがどうなろうと動き続けてくれます。また、複数人で3Dプリンタを使いたいときにも便利です。

そこで、今回はARM-CPUが載った”Orange Pi PC”ボードを使って3Dプリンタサーバを構築したいと思います。

 

環境

今回構築する3Dプリンタサーバのスペックです。

Orange Pi PC
Orange Pi PC
  • 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以上流せる)がいいと思います。

詳細なスペックは以下を参照ください。

また、3Dプリンタは以前に購入したPrusa i3互換のものを使用します。

Prusa i3
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”が結構いい数字を出しているみたい)

microSDカードの準備が出来たら以下のサイトからOrange Pi PC用のarmbianをダウンロードします。ダウンロードできるのは”Jessie server”と”Jessie desktop”のふたつです。ここでは”Jessie server”をダウンロードします。

ディスプレイとマウス/キーボードを繋いでPCとしても使う場合は”Jessie desktop”を書き込みます。私の場合はそういう用途には使わないだろうというのと軽いのでserverを選択しました。

ダウンロードしたイメージはLinux環境があるのならddコマンドで書き込みます。Windows環境なら以下のツールを使うのが便利かと思います。

 

Linuxを起動する

ディスクイメージを書き込んだMicroSDカードとLANケーブルをセットしたら、あとはアダプターを差し込むだけで起動します。ただ、このままだとLEDが点滅するだけで何が起こっているかわかりません。近くにディスプレイがあればHDMIで接続してLinuxのブートメッセージが流れていくのを見ることができます(無くても問題はありません)。何回か設定と再起動を自動的に繰り返すので落ち着くまで待ってください。

Orange Pi PCにsshでログイン
Orange Pi PCにsshでログイン

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の画面(インストール直後)

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プリンタの設定を追加していきます。

Repetier-Serverの画面(インストール直後)

■設定手順

  1. Dashboard
    “Add new Printer”をクリックしてください。
  2. Step 1: Naming
    “Printer Name”にこれから追加するプリンタの名前を入力します。3Dプリンタを複数台つなげるときはそれぞれに分かりやすい名前を付けたほうがいいと思います。ここでは一台だけなのでシンプルに”Prusa i3″としました。
    Step 1: Naming
    Step 1: Naming
  3. Step 2: Connecting Printer
    接続している3Dプリンタの種類、ポート等を選択します。

    1. Firmware:ご自分の3Dプリンタがどれに当てはまるか調べて入力してください。ここでは”Repetier-Firmware”を選択しました。
    2. Device / Port:3Dプリンタが接続されているポートを指定します。恐らくは自動的に認識されていると思いますが、”usb-xxxx_USB2.0-Serial-if00-port0″のxxxxの部分に先ほど調べたUSBデバイスのIDが入っているか確認してください。IDが同じであれば正解です。
    3. Baud Rate: Autodetect(デフォルト値)
    4. Input Buffer Size: 127(デフォルト値)
      Step 2: Connecting Printer
      Step 2: Connecting Printer
  4. Step 3: Geometry
    ベッドの形とサイズ(左/右端のX座標、手前/奥のY座標、上方向の上限となるZ座標)を入力します。分からないようであればそのままにしておいて後から実際に動かしてみて値を変更します。なお、ファームウェアに入力されている値と一致している箇所は緑の”“が表示されます。
    Step 3: Geometry
    Step 3: Geometry
  5. Step 4: Extruders and Bed
    エクストルーダの数と使用しているフィラメントの直径を入力します(フィラメントのリールに記載あると思います。無ければノギスか何かで実測した値を書き込みます)
    Step 4: Extruders and Bed
    Step 4: Extruders and Bed
  6. Step 5: Features
    3Dプリンタの機能有無を選択します。

    1. Fan Installed: 押し出したフィラメントの冷却ファン有無
    2. SD Card Reader Installed: 3DプリンタのSDカードスロット有無
    3. Software Power: 主電源がソフト制御でON/OFF出来るか
      Step 5: Features
      Step 5: Features

 

3Dプリンタが制御出来るか確認する

これで設定はほぼ完了です。Dashboardを表示すると先ほど追加したプリンタが表示されていると思います。

Dashboard(プリンタ追加後)
Dashboard(プリンタ追加後)

設定が完了したら正常に動作しているか確認です。Control画面からX/Y/Z軸を動かしたりヒーターの電源を入れたりして正常に動作しているか確認してください。特に問題ないようであれば、サーバのセットアップはこれで完了です。

プリンタのControlタブから操作出来ます
プリンタのControlタブから操作出来ます

 

3Dプリンタでモデルを出力するには

(パターン1)Gコードをプリンタサーバにアップロード

先ほどのRepetier-Serverの画面からGコードをアップロードする方法です。利点は3Dプリンタが動き出してしまえばPCはシャットダウン出来ることです。

例えばRepetier-Hostを使っている場合は以下のような手順になります。

  1. モデル(*.stl)を読み込む
  2. スライサでGコードに変換する
  3. “Print Preview”タブの”Save to File”でGコードを保存する
  4. プリントサーバにGコードをアップロードする
Repetier-Serverにアップロードして出力中
Repetier-Serverにアップロードして出力中

(パターン2)PCから直接操作する

今まで通りPCから直接プリンタを操作したい場面もあるかもしれません。”Repetier-Host”を使っている場合はプリンタ接続先に”Repetier-Server”を指定できます。その場合、今までPCとUSB接続していたときと同様に操作が可能です。

Repetier-Host設定画面
Repetier-Host設定画面

 

サーバとして常設する前に

ケースを作成する

常時稼働するのに基板剥き出しというのは考え物です。ネット上にOrange Pi PCに使えるケースのモデルデータが公開されていたので早速出力して使わせてもらいました。使用したモデルデータは以下のものです。冷却FAN用のねじ穴が設けられていていい感じです。

出力したものに基板を入れてみて、出っ張っている箇所をやすって仕上げました。

Orange Pi PCケースの出力中
Orange Pi PCケースの出力中
出来上がったOrange Pi PCケース
出来上がったOrange Pi PCケース

 

Orange Pi PCをケースに収めたところ
Orange Pi PCをケースに収めたところ(微妙にずれてネジが1本入りませんでした。このあとドリルで修正)

CPUにヒートシンクを装着する

タブレットに使われるような省電力を意識したCPUとはいえ、負荷がかかるような処理を連続してするとかなり温度が上昇します。最悪は壊れてしまうかもしれません。そうなる前にヒートシンクを装着することにしました。

以前に何かに使えるかと購入しておいたヒートシンクがぴったりのサイズです。熱伝導グリスを塗って上に貼り付けました。

Orange Pi PC上のAllwinner H3
Allwinner H3(こいつが熱々になります)

 

ヒートシンクとグリス
ヒートシンクとグリス

 

SoCにグリスを塗ってヒートシンクをのせました
SoCにグリスを塗ってヒートシンクをのせました

ファンをつける

このケースにはファン用のねじ穴が設けられています。もしやと古いマザーボードを漁ってみるとチップセット用ファン(DC12V)がぴったりのサイズでした。ただ、まわしてみると夜中はちょっと煩いかもしれません。負荷をかかることをさせてCPU温度が上がりだしたら動かすことにします。

 

古いマザーボードのチップセットについていたファンがサイズぴったりです
古いマザーボードのチップセットについていたファンがサイズぴったりです

 

その後

(2017/06/10追記)

Orange Piを使ったサーバを設置して半年が経ちました。現在まで電源ONして完全放置ですが安定して動いてくれています。これから暑くなってくるのでCPU温度には気を付けたほうがいいかもしれません(2017/06/10現在ヒートシンクのみ、室温27.9度でCPU温度49度)。

Orange Piコンソール画面
祝・連続稼働187日。放置していたので大量にアップデートが溜まっていました

 ついでに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) ...

 

参考

この記事は以下のサイトを参考に記載させていただきました。

 

コメントを残す

メールアドレスが公開されることはありません。

This blog is kept spam free by WP-SpamFree.