ラズパイにOctoPrintを入れて3Dプリンタをコントロールしてみた。
まずはラズパイ用のOctoPiをダウンロード。安定バージョンは、0.17.0だが、Rasbery Pi 2Bは特に記載は無く、非推奨という訳でもないようだ。だが2B+Wifiドングルでは転送速度が遅いのがネックで動画(カメラ)がもっさりするらしい。
SDカードへの書き込みはEtcherを使用した。
WindowsでSDカードのoctopi-wpa-supplicant.txtを開き、Linuxと同じようにWifiの設定を書き込み、ラズパイに刺して起動。
辛抱強く数分待つとWindowsのネットワークに
が出てきたら、右クリックのプロパティでIPアドレスを確認する。
TeraTermでpiユーザでリモートログイン。当然パスワードは上書きする。
そして先のプロパティの「デバイスのWebページ」のURLをクリック。
辛抱強く数分待つとやっと画面が現れる。
基本的な画面操作は有効になっているボタンを押してから【Next】を押す。
持続性チェック画面ではテストボタンを押す 等
とにかくラズパイの反応が遅いので「辛抱」。
「アップデート見つけました」というのでウッカリOKを押してしまい、長い長いアップデートの罠にひっかかってしまう。
確かに3Dプリンタの印刷時間って十数時間もかかることが多いから、印刷中にチャレンジをするのが吉。
うっかり画面で何か押すと
のループになってしまう。
それでもいつかは無事ログイン画面に変わる。
あと、Chromeの翻訳機能が便利。
翻訳ボタンが出ない場合はページ内で右クリックすると、「日本語に翻訳」というのがあるので押すと楽になれるかもしれない。
なお、この翻訳機能は「設定」の「詳細設定」の「言語」で「母国語以外のページで翻訳ツールを表示する」をONにしないと出ないらしい。
とりあえず、画面のコントロールタブでラズパイカメラの映像が出るので、これで3Dプリンタを保温カバーで包んでも中の状況は確認できるかもしれない。
さてX5SAと接続すると、
ターミナルタブでログを見ると
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! お使いのプリンタのファームウェアの実装が壊れていることがわかっています 通信プロトコル。これにより、印刷の失敗やその他の煩わしさが発生する可能性があります。 OctoPrintを完全に使用するには、追加の手順を実行する必要があります。 詳細については、https://faq.octoprint.org/warning-firmware-broken-cbdをご覧ください。 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
と書いてあるので、見てみる。すると、
お使いのプリンタは、通信プロトコルの実装に重大なエラーがあるファームウェアを実行しています。これは、最も広く普及しているバリアントの識別文字列により、今後「CBDファームウェア」と呼ばれます。
この壊れたCBDファームウェア(またはそのバリアント)が付属していることが現在わかっているプリンターは次のとおりです。
- Anycubic i3 Mega
- Xinkebot Orca 2 Cygnus
- Qidi Tech X-One2、Qidi X-Pro、およびおそらくQidiのその他のモデル
- Tronxy D01、Tronxy X5SA Pro、およびおそらくTronxyのその他のモデル
はい。その通りです。
ではどうすればいいのか?
ホームページのリンクは先の記事でお勧めプラグインのURLだったので多分大丈夫。
インストが終わり、最初の画面に戻ると・・・
プリンタを再接続!
ついでなので、GCODEファイルをアップロードし、ファイルのとこにある印刷ボタンをおしてみよう。
但し、印刷中断してもヘッドが戻らないが、それはコントロールタグでホームボタンを押せばいい、但しZ軸のボタンの表記がヘッドの上下で、X5SAのタッチパネルはZ軸はテーブルの上下なので、混同してうっかりテーブルをヘッドに押し付けガタガタ!ガク!カクーン!と音を立ててテーブルを傾けてしまった。どっちか判らない時は0.1mm単位で上下しモーターの回転方向を確認した方がいいだろう。
※プリンタ・プロファイルのZ座標軸・反転のチェックボックスONで解消。
2021/01/19
ポチったWebカメラは設定不要で使用できた。但し、Piカメラが優先され切替方法も不明だったので併用不可、Piカメラは外す。
画面解像度はコマンドで使用可能な設定を調べ
v4l2-ctl -d /dev/video0 --list-formats-ext
optopi.txtの
#camera_usb_options="-r 640x480 -f 10"
を
camera_usb_options="-r 1920x1080 -f 30"
に編集した。
解像度は気分で変更、同じ500万画素なのにPiカメラは画質がピンボケぽいのは付属レンズの焦点がズレてたのかもしれない。
OptoPrintを日本語にローカランズのプラグインがあった。
設定のApperanceのLanguagePackのボタンでウップロードし、再起動すると使えた。
2021/01/19
Ultimaker CuraにOptoPrintのプラグインを入れると、Ultimaker CuraのプレビューがOptoPrintにつながる。カメラもHDサイズ。プリントボタンを押すと印刷を開始できる。
しか~し!印刷の中止が効かない!!これはリモート接続したらきついなぁ~!!!
※それは ラズパイ(Model 2B)が低性能なせいだったようだ。
2021/01/23
ラズパイは遅いのでJ19000搭載のITX-PCのCentOS8でOctoPrintを動かしてみると、やっぱり素早い!!!しかしKVM上のゲストOSだったのでUSBにアクセスできない。PCIパススルーを設定しようにもJ1900はVT-xでVT-dは非搭載。
試しやってみたけどダメだった。
2021/02/06
OctoPrintをRaspberryPi OSインストしプリンタでCentOS7にインストしたら繋がった。
# ~/OctoPrint/venv/bin/octoprint serve
が、サービス化しようとするも失敗したが、
Click discovered that you exported a UTF-8 locale but the locale system could not pick up from it because it does not exist. The exported locale is ‘C.UTF8′ but it is not supported
そっか!ということで、
[Unit]
Description=The snappy web interface for your 3D printer
After=network-online.target
Wants=network-online.target
[Service]
# Environment="LC_ALL=C.UTF-8"
# Environment="LANG=C.UTF-8"
Environment="LC_ALL=ja_JP.UTF8"
Environment="LANG=ja_JP.UTF8"
Type=simple
User=pi
ExecStart=/home/pi/OctoPrint/venv/bin/octoprint serve
[Install]
WantedBy=multi-user.target
Environment=”LC_ALL=ja_JP.UTF8″
Environment=”LANG=ja_JP.UTF8″
に差し替えて
$ sudo systemctl daemon-reload
$ sudo systemctl stat octoprint
$ sudo systemctl status octoprint
● octoprint.service - The snappy web interface for your 3D printer
Loaded: loaded (/etc/systemd/system/octoprint.service; enabled; vendor preset: disabled)
Active: active (running) since 土 2021-02-06 16:17:23 JST; 5min ago
Main PID: 1717 (octoprint)
Tasks: 18
CGroup: /system.slice/octoprint.service
mq1717 /home/pi/OctoPrint/venv/bin/python3 /home/pi/OctoPrint/venv/bin/octoprint serve
で、サービスで動いた。
WEBカメラも「CentOS7にmjpg-streamerを導入」の通りに導入したら繋がった。
#cd ~/mjpg-streamer
#sudo ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so"
が、OptoPrintのControlに冷たくアシラワレタ。
もしかしてApacheで
ポート80をポート5000に転送。
しかも、:80/webcamだったら、:8080/に転送しないとダメなのかな?
# 新規作成
<IfModule mod_proxy.c>
ProxyRequests Off
<Proxy *>
Require all granted
</Proxy>
# 転送先サーバとディレクトリ
ProxyPass /webcam/ http://localhost:8080/
ProxyPassReverse /webcam/ http://localhost:8080/
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/
</IfModule>
で、systemctl restart httpd でどうだ???
でもoctoprintが~/scripts/webcam startすると権限でエラる。
MJPG Streamer Version: svn rev: 3:172
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 640 x 480
i: Frames Per Second.: 10
i: Format............: MJPEG
ERROR opening V4L interface: Permission denied
Init v4L2 failed !! exit fatal
i: init_VideoIn failed
~/scripts
手入力でsudoでwebcam startすれば問題ないけど、今のところ、根本的な対処方法は判らないので、手入力で
$ sudo ~/scripts/webcam start
起動しっぱなしだし、外からは見えないサーバーだから、ま、いいか(笑
それにしても
camera_usb_options=”-r 1920×1080 -f 30″
の設定が、ちゃんとストリームできているのもうれしい。
遅延もほとんど判らない程度、画質も良いから印刷の失敗も直ぐ判るぅぅ(TT
あ?またウチのラズパイ2Bが職を失った様です。
2021/02/10
sudo問題は解消できていないけど、起動・終了スクリプトを作る。
#!/bin/sh
case $1 in
"start" | "stop" )
sudo /home/pi/scripts/webcam $1
sleep 5
sudo systemctl $1 octoprint
sudo systemctl status octoprint
echo "OctoPrint $1ed."
break ;;
"")
echo "Usage: $0 {start|stop}."
break ;;
*)
echo "Unknown operation '$1'."
echo "Usage: $0 {start|stop}."
break;;
esac
[sudo] pi のパスワード: *******
どうにかならんかな?
# %wheel ALL=(ALL) NOPASSWD: ALL
↓を追加
pi ALL=(ALL) ALL
pi ALL=(ALL) NOPASSWD: /user/bin/systemctl
pi ALL=(ALL) NOPASSWD: /home/pi/scripts/webcam
なるほど。コレでいいのか。