RaspberryPiへのOctoPrintの導入
何ができた
RaspberryPiへOctoPrintを導入することで、PCからWiFi経由でデータを送れるようになり、3Dプリンターの置き場所が自由になった。
OctoPrintとは
多くの機種に対応した、Webインターフェイスで3Dプリンターをコントロールできるオープンソースのシステム
RaspberryPi向けにはOctoPiという専用OSイメージが提供されており、SDカードに書き込んでいくつかのセットアップだけで使えるようになっている、らしい
しかし、専用イメージに抵抗があったのでRaspberry Pi OSにOctoPrintを追加する形で導入してみた記録
方針
ソースからビルドする手もあるが、pipで取得できるようなので、pipenvで環境を作ってそこにインストールする。
pipenvを使ったのは最近仕事の方で知ってちょっと使ってみようと思ったからで、今回の用途ならvenvだけでもよかった。
バージョン確認
$ python --version Python 3.9.2 $ pip --version pip 20.3.4 from /usr/lib/python3/dist-packages/pip (python 3.9) $ uname -a Linux raspberrypi3a 6.1.21-v7+ #1642 SMP Mon Apr 3 17:20:52 BST 2023 armv7l GNU/Linux $ cat /etc/os-release | grep PRETTY PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
ここはRaspberry Pi OSじゃなくRaspbianのままだった
ラズパイの機種はホスト名が示す通りRaspberry Pi 3A+
USBが1つしかなくLANポートもないがWiFi経由のアクセスのみでキーボードも繋がないならコストパフォーマンスもよくてちょうどいいので半年ほど前に購入。
日本ではあまり売れていないとのことだが、Pi4等が品薄な頃にも秋月やスイッチサイエンスで在庫があった。
手順
- OSを更新
- pipenvインストール
- OctoPrint用環境作成
- OctoPrintインストール
- 起動、アクセス
- 自動起動
OSを更新
sudo apt update sudo apt upgrade
pipenvインストール
pip install pipenv echo export PATH=/home/user/.local/bin:$PATH >> ~/.bashrc source ~/.bashrc
OctoPrint用環境作成
mkdir OctoPrint cd OctoPrint PIPENV_VENV_IN_PROJECT=1 pipenv install
環境に入る
pipenv shell または source .venv/bin/activate
OctoPrintインストール
最初インストール途中でエラーで停止したので、必要なものを先にインストールしてからpipenv環境にoctoprintをインストール
sudo apt install build-essential sudo apt install libffi-dev pipenv install octoprint
ユーザーがデバイスにアクセスできるように権限を設定
sudo usermod -a -G tty user sudo usermod -a -G dialout user
起動、アクセス
octoprint serve
http://raspberrypi3a.local:5000/ へアクセス
名前ではIPがうまく引けない時があるのでその際はifconfig
でIPを確認して以下のように
http://192.168.1.25:5000/
自動起動
自動起動用のUnitファイルをダウンロードして環境に合わせて書き換えて登録
wget https://github.com/OctoPrint/OctoPrint/raw/master/scripts/octoprint.service vim octoprint.service sudo mv octoprint.service /etc/systemd/system/octoprint.service sudo systemctl enable octoprint.service
エラーで起動が失敗していたので以下で状況を確認。実行ファイルのパスが間違っていたり等
sudo systemctl status octoprint.service journalctl -xe
まとめ
WiFi内蔵のRaspberryPiにOctoPrintを導入することで、 以前はUSBケーブルでPCに接続していたため置き場所が限られたが、WiFiの接続と電源さえ確保できればどこでも置けるようになった。
以上