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等が品薄な頃にも秋月やスイッチサイエンスで在庫があった。

akizukidenshi.com

手順

  1. OSを更新
  2. pipenvインストール
  3. OctoPrint用環境作成
  4. OctoPrintインストール
  5. 起動、アクセス
  6. 自動起動

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の接続と電源さえ確保できればどこでも置けるようになった。

以上