WiFi経由で操作可能にする

KINGROON KP3SはMicro SDカード経由でデータをやりとりするか、パソコンとUSBケーブルでつないでパソコンから操作をするのが基本。

今日び、どこの家庭にもWiFiが完備されているだろうから、WiFi経由でKINGROON KP3Sを操作したいと思うだろう。

そこで、Raspberry Piをシステムに追加し、それを実現する。

具体的には、Raspberry PiにOctoPrintをインストール。

OctoPrintをインストールしたRaspberry PiをKINGROON KP3SとUSB接続するというものだ。

image alt

そしてシステムにスマートプラグも交え、KINGROON KP3Sの電源管理自動化でさらなる利便性を追求する。

image alt
パソコン側の操作▶︎KINGROON KP3S側の動作
OctoPrintのWeb画面表示▶︎KINGROON KP3Sの電源オン
OctoPrintのWeb画面閉じる▶︎KINGROON KP3Sの電源オフ
OctoPrintのWeb画面を表示し
プリント開始して閉じる
▶︎プリント完了後
指定の猶予時間経過後に
KINGROON KP3Sの電源オフ

Raspberry Piを登場させるとややこしい話になってきたと敬遠する人が出そうだが、Raspberry PiでOctoPrintを使うためのOctoPiというディスクイメージがあるので、セットアップは比較的簡単に完了させられる。

なぜ簡単かといえば、設定済みの環境をMicro SDカード上にそっくり復元するからだ。

ソフトウェアの名称Raspberry Pi向け
ディストリビューションの名称
OctoPrintOctoPi

セットアップは大体3ステップで終わる。


  1. Micro SDカードに専用ソフトでOctoPiのディスクイメージを書き込む
  2. 一度パソコンにそのMicro SDカードを認識させ、中にあるテキストファイルを編集し、家庭のWiFiルータのSSIDやパスフレーズを書き込む
  3. Raspberry PiにHDMIケーブルでモニターを接続しつつ、そのMicro SDカードを挿入して起動
  4. モニターにRaspberry Piに設定されたIPアドレスが表示されるので、WiFiルータの設定でRaspberry PiのIPアドレスを固定に
  5. そのIPアドレスにWebブラウザでアクセス

その実、全然3ステップではなかったが、難しくないことは分かると思う。

Web画面のサンプルが以下のような感じだが、ここまで来たら楽勝だろう。

image alt

カスタム版OctoPi 0.18.0ディスクイメージ・ダウンロード

基本的にOctoPi 0.18.0だが、筆者がスマートプラグTP-Link HS105との連携を予め設定したもの。

パソコン側の操作▶︎KINGROON KP3S側の動作
OctoPrintのWeb画面表示▶︎KINGROON KP3Sの電源オン
OctoPrintのWeb画面閉じる▶︎KINGROON KP3Sの電源オフ
OctoPrintのWeb画面を表示し
プリント開始して閉じる
▶︎プリント完了後
指定の猶予時間経過後に
KINGROON KP3Sの電源オフ

本来OctoPrintのPlug-inとして公開すべきものだが、そのためにはOctoPrintのPlug-inの開発の知識が必要で、やろうと思ってやらずに1年以上過ぎたので、分かる範囲で読者による再現性を高める(ターミナルによる操作をなくし、精神的障壁を排除する)ことを考えこうなった。

いずれPlug-in版を作りたいが、筆者自身が困っていないので作りそうにない。

カスタム版OctoPi独自の機能ではないが(同様のPlug-in)、プリント完了時にPushoverによる通知を送る機能も付けておいた。

image alt

メッセージが日本語で、3Dプリンターの画像を添付できるようになっているという相違点がある。(画像は固定で、カメラからのプリント終了時点の画像ではない)

必要なもの

balenaEtcher

ディスクイメージをMicro SDに書き込むソフトウェア。macOS版、Windows版がある。

Raspberry Pi

言わずと知れた小さなコンピューターRaspberry Pi。

筆者はRaspberry Pi 3 Model A+とRaspberry Pi Zero WHを使っている。

Raspberry Pi Zero WHはスペックが低く、OctoPrintのサポート外だ。筆者が使う限りではプリントの失敗は今までに経験がないが、初回の起動と毎回のWeb操作画面が出るまでが結構遅い。

動画のストリーミングをやらなければ大丈夫そうだ

筆者は常時起動しておく都合から、Raspberry Pi Zero WHやRaspberry Pi 3 Model A+といった消費電力が少ないモデルを選んだ。

Micro SDカード

Raspberry Piで使うMicro SDカード。ここにOctoPiをインストールする。

KINGROON KP3Sの扱うデータはそれほど大きくないので、8GBもあれば十分。

s

Micro USB OTGケーブル

Raspberry Pi Zero WHを使う場合、Micro USB端子しか付いていないので、KINGROON KP3Sをつなぐ際に必要になる。

Raspberry Pi 3 Model A+の場合は不要。

HDMI-HDMI mini変換アダプタ

Raspberry Pi Zero WHをセットアップする際には無反応な時間が多いので画面が見えていた方が不安がなくていい。

Raspberry Pi 3 Model A+の場合は標準サイズのHDMI端子が付いているので不要。

KINGROON KP3Sの電源管理をOctoPrintで自動化するために使う。

なぜこの機種指定かというと、筆者が用意した専用のOctoPiのディスクイメージは、この機種の使用を想定して設定したからだ。

この機種はユーザーによる解析が進んでいて、メーカーのクラウドを経由せず、LAN内で直接コントロールするためのノウハウが蓄積されているという特殊性がある。クラウドのサービス終了や障害に影響されない永遠の命を持っているのだ。

2個セットの方が1個当たりが安くなる。

電源延長コード

TP-Link HS105のコンセントはN極が太く、普通のマルチタップや壁のコンセントに刺さらない。

どこにでも刺せるようにするために必要。

予算感

価格
Raspberry Pi Zero WH3,250円
Micro SD548円
Micro USB OTGケーブル380円
HDMI-HDMI mini
変換アダプタ
734円
TP-Link HS1051300円
電源延長コード276円

合計: 6,488円

Raspberry Pi Zero WHだとMicro USB OTGケーブル、HDMI-HDMI mini変換アダプタという余分なものが必要で、1,100円程度二者の価格差は埋まる。

このほか、Raspberry Piの電源のためのMicro USBケーブル、HDMIケーブルが必要だが、大概は既に家にあるだろう。

設定手順

Micro SDカードの準備

ダウンロードしたカスタム版OctoPi 0.18.0のディスクイメージをbalenaEtcherでMicro SDカードに書き込む。

balenaEtcherの操作は至ってシンプルで、以下の3ステップで終了だ。


  1. ダウンロードしたzipファイルを解凍して得たimgファイルを左のボタンで指定
  2. OctoPiを書き込むMicro SDカードを真ん中のボタンで指定
  3. imgファイルとMicro SDカードを指定したら「Flash!」ボタンを押して書き込み開始

image alt

Micro SDカード内のファイルに設定を書き込む

imgファイルを書き込んだMicro SDを一度抜いて挿し直すと、中身が見えるようになる。

image alt

この中にあるテキストファイル、conf.pyとoctopi-wpa-supplicant.txtをそれぞれ編集する。

  • conf.py
  • octopi-wpa-supplicant.txt

octopi-wpa-supplicant.txtの編集

これは要するに家のWiFiルータに接続するための設定だ。

まずはoctopi-wpa-supplicant.txtをテキストエディタで編集する。

「ssid=“XXXXXXXXXXXX”」のところに「XXXXXXXXXXXX」を置き換える形で自宅の2.4GHz帯のWiFiルータのSSIDを。

「psk=“XXXXXXXXXXX”」のところに「XXXXXXXXXXXX」を置き換える形で自宅のWiFiルータのパスフレーズ(パスワード)を。

多くのRaspberry Pi内蔵WiFiモジュールは5GHz帯には対応していないので注意だ。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
## WPA/WPA2 secured
#network={
#  ssid="put SSID here"
#  psk="put password here"
#}

network={
  ssid="XXXXXXXXXXXX"
  psk="XXXXXXXXXXX"
}

編集を終えたら保存する。

conf.pyの編集

続いて、conf.pyをテキストエディタで編集する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# seconds
IDLE_TIME = 180

TP_LINK_SMARTPLUG_IP = "192.168.1.99"

# ------- Pushover --------
PUSHOVER_MODEL_NAME = "KINGROON KP3S"

PUSHOVER_USER_KEY = ""

PUSHOVER_API_TOKEN = ""

PUSHOVER_IMAGE_PATH = "/boot/octopi.jpg"

アイドルタイムの設定

「IDLE_TIME = 180」は、プリントが完了した後、KINGROON KP3Sの電源を切るまでの猶予時間だ。単位は秒なので、デフォルトではプリント完了後、3分経過すると電源が切れる。

ちなみに、電源を切る直前にプリント中かどうかを判定するので、3分以内に次のプリントを開始していれば、プリントの途中で電源が切れることはない。

TP-Link HS105連携設定

まずは、「TP_LINK_SMARTPLUG_IP = “192.168.1.99”」の部分だが、ここにはTP-Link HS105に設定されたIPアドレスを指定する。

HS105の設定方法は取扱説明書を見てもらうとして、設定後に専用アプリから見られる端末情報の中のMACアドレスを頼りに、HS105に設定されているIPアドレスを調べる。

専用アプリからMACアドレスを調べた後……。

image alt

WiFiルータのDHCPリース情報から、MACアドレスに割り振られたIPアドレスを調べ、ついでにIPアドレスを手動割当に変更、つまりHS105のIPアドレスを固定にする。

image alt

HS105に割り当てられ、そして固定したIPアドレスは筆者の場合192.168.1.44だったが、これをconf.pyの「TP_LINK_SMARTPLUG_IP = “192.168.1.44”」といった感じに設定するわけだ。

これでHS105の設定は終わり。

プッシュ通知が必要なければこれで設定は終わりだ。


Pushoverの設定

Pushoverによるプリント完了時のプッシュ通知が必要ならまだ設定すべきことがある。

Pushoverは、iOS、Androidに対応したプッシュ通知アプリ。

「PUSHOVER_MODEL_NAME = “KINGROON KP3S”」は、届く通知のタイトルの中に含める3Dプリンターの機種名。

image alt

「PUSHOVER_USER_KEY = “"」、「PUSHOVER_API_TOKEN = “"」は、PushoverのWebページにログインして取得する。

「PUSHOVER_USER_KEY = “"」の二つのダブルコーテーション間にペーストすべきは、ログインするとページの上の方にある「Your User Key」という見出し下にあるものだ。

image alt

「PUSHOVER_API_TOKEN = “"」の方は、まず「Your Applications」のところにある「Create an Application/API Token)」というリンクをクリックしてアプリをCreate。

「Name:」を「OctoPrint」などにし、「By checking this box, 〜」のチェックボックスをオンにして、「Create Application」ボタンを押す。すると、「API Token/Key」のところに現れるのがそれだ。

image alt

これを「PUSHOVER_API_TOKEN = “"」の二つのダブルコーテーション間にペーストする。

初めての起動

設定を終えたら、Raspberry PiをHDMIケーブルでモニターに接続し、Micro SDカードを挿入して起動する。

image alt

起動の最後にRaspberry Piに割り当てられたIPアドレスが表示されるので、モニターをつないでおくに越したことはない。

WiFiルータのDHCPリース情報から、Raspberry Piに割り振られたIPアドレスを探し、手動割当に変更、つまりRaspberry PiののIPアドレスを固定にする。

WebブラウザでRaspberry Piに割り当てられたIPアドレスを見てみると、OctoPrintのページが表示されるはずだ。

起動後、最初の表示時にはサーバの起動処理を行うので普段より遅い。

ハングアップしたように感じるかもしれないが、最初の一度表示させるだけで十分だ。何度もリロードしたりしない方がいい。

Raspberry Pi Zero WHの場合は最初の表示までが特に遅いので、モニターによる死活監視ができると心の安寧が得られるだろう。

ディスク領域の拡張と再起動

筆者のカスタム版のディスクイメージでは、OctoPrintのページを最初にWebブラウザで表示させたときにMicro SDカードの領域を拡張する処理を実施している。

この処理が有効になるのは次の起動時からだ。

OctoPrintの初期設定のウィザードが終わったら、ページの上の方にある電源アイコンから「Reboot system」を選択して、再起動する。

image alt

この後は起動時からかなり時間がかかるので、モニターはつなぎっぱなしにしておいた方がいいだろう。

画面の左上にアンダースコア「_」のようなものが点滅しているうちは処理が進行していると考えていい。

このSDカードの領域を拡張後の起動を確認できたら、モニターは外してしまっても大丈夫だろう。

なお、Raspberry Piの電源を切るのは、画面上部の電源関係のメニューから「Shutdown system」を選んでからだ。

image alt

Ultimaker Curaとの連携