見出し画像

Bluetoothで3Dプリンター操作(Klipper搭載機)

Klipper搭載の3Dプリンターを持って出かけた際に、いちいちラズパイのWiFi設定をあれこれしてMainsailに接続するのがめんどくさい貴方に贈るBluetoothのPAN(Personal Area Network)の設定方法
PANを使用して
・家ではWiFi
・出先ではスマホでBluetooth
といった感じになり、ラズパイの設定を変えることなく、ふらっと気軽に3Dプリンターをもってお出かけ可能になります。

概要
・ラズパイにBluetoohのネットワーク(PAN)を設定
・スマホとラズパイをペアリング(インターネット共用)
・スマホからMainsailにアクセスして3Dプリンター操作

以下はラズパイのコンソールから、またはラズパイにSSH接続して操作してください。
記事はRaspberry Pi Zero 2 wで、下記環境での設定例です。

proko@grape:~ $ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"


Bluetoohのネットワーク(PAN)を設定


Bluetooth用パッケージのインストール

sudo apt install bluez-tools

PAN用インターフェイス定義ファイル作成
/etc/systemd/network/pan0.netdev

[Ne/etc/systemd/network/pan0.netdevtDev]
Name=pan0
Kind=bridge

pan0の設定ファイル作成
/etc/systemd/network/pan0.network
※Address= 部に有線LAN、無線LANと被らない任意のアドレスを設定(よく分らなければ設定例のままで大丈夫と思います。

[Match]
Name=pan0

[Network]
Address=192.168.70.1/24 
DHCPServer=yes

Bluetoothのサービス定義ファイル作成
/etc/systemd/system/bt-agent.service

[Unit]
Description=Bluetooth Auth Agent

[Service]
ExecStart=/usr/bin/bt-agent -c NoInputNoOutput
Type=simple

[Install]
WantedBy=multi-user.target

/etc/systemd/system/bt-network.service

[Unit]
Description=Bluetooth NEP PAN
After=pan0.network

[Service]
ExecStart=/usr/bin/bt-network -s nap pan0
Type=simple

[Install]
WantedBy=multi-user.target

サービスの登録

sudo systemctl enable systemd-networkd    
sudo systemctl enable bt-agent
sudo systemctl enable bt-network

各サービスの起動
動作確認を兼ねてOS再起動してもok

sudo systemctl start systemd-networkd
sudo systemctl start bt-agent
sudo systemctl start bt-network

ip a コマンドでpan0のインターフェイスが出来ていることを確認。

proko@grape:~ $ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: pan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 5a:ba:42:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.70.1/24 brd 192.168.70.255 scope global pan0
       valid_lft forever preferred_lft forever
    inet6 fe80::58ba:42ff:xxxx:xxxx/64 scope link 
       valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether d8:3a:dd:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.68.130/24 brd 192.168.68.255 scope global noprefixroute wlan0
       valid_lft forever preferred_lft forever
    inet6 fe80::88a1:4bd5:xxxx:xxxx/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever


スマホとラズパイをペアリング(インターネット共用)


Bluetoothペアリング
下記コマンドを実行後するとペアリングモードになるので、スマホ等でBluetooth機器を追加(設定したラズパイのホスト名が表示されます)
スマホではぺリング完了するとインターネット共用として追加されると思います。

sudo bt-adapter --set Discoverable 1


スマホからMainsail(Fluidd)アクセス


スマホのブラウザでMainsailのアドレス(raspberrypi.local等)にアクセスすると操作画面が表示される。はずです。
が、手持ちのスマホ(android13)ではWiFIとモバイルネットワークをoffしないとアクセスできませんでした。おそらくそっちが優先されてしまうのでしょう。
あとは印刷するモデルのgcodeをラズパイ内にアップロードしておけば、いつでもどこでも3Dプリントが可能に。


この記事が気に入ったらサポートをしてみませんか?