【Raspberry PI x 卓上CNC】切削用CAMソフト「bCNC」をラズパイにインストールして卓上CNCを動作テストする
※ 当ページには【広告/PR】を含む場合があります。
2020/05/28
2025/09/09
卓上CNCルータを使うと、ちょっとした電気回路基板を試しをすぐに手元で試せるのでDIYレベルのプロトタイピングに非常に重宝します。
今回はネットショップでも購入できる卓上CNCルータを利用して、ラズパイのリモートから
bCNCのインストール
『bCNC』について
bCNCはCNCマシーンと接続して、入力されたNCファイルから切削コマンドを送り操作するためのソフトウェアで、主にパソコンなどにインストールして利用するタイプのNC加工ソフトウェアです。
bCNCはpythonランタイムで動作するため、動作させるには適切なバージョンのPythonライブラリを予め構築する必要があります。
この記事では、Linux(Debian)を対象にbCNCの導入方法と簡単な利用法を解説しますが、他のOS(Windows/MacOSX)などで利用する場合には以下のWikiの方で確認してください。
Rasoberry Pi OS(Bullseye以前)にbCNCをインストール
直近のRaspberry Pi OSの大幅な仕様変更によって、ラズパイのPython周りの取り扱いも大きく変化しました。 既にレガシーOSになっている
Bullseye
ここではまずレガシーOSにPython3.11以降をインストールする方法を説明します。 既にラズパイにBookworm以降のOSをインストールしているのであれば、このパートをスキップして次の節の内容からお読みください。
まずはラズパイにログインして、インストールしているpythonのバーションを確認をします。
なお今回の動作確認は
Raspberry Pi 3B+
$ python --version
Python 2.7.16
デフォルトで入っているバーションが
2.7
では、公式にあるように必須のライブラリごと
pip
$ sudo apt-get install python-pip python-setuptools python-dev python-tk libjpeg-dev zlib1g zlib1g-dev
手元の環境では、既にいくつかのライブラリが過去に入れていたようです。 インストール完了したら
pip
$ pip --version
pip 18.1 from /usr/lib/python2.7/dist-packages/pip (python 2.7)
それでは、
pip
bCNC
$ pip install bCNC
これでレガシーOSのラズパイに
bCNC
sshのターミナルからはここまでで、次はリモートデスクトップ側からGUI操作になりますので、一旦sshを抜けます。
Rasoberry Pi OS(Bookworm以降)にbCNCをインストール
Bookwormでは既にPython3がデフォルトで利用できます。
$ python --version
Python 3.11.2
ただし、bCNCを動作させるためにはフルスペックのpython3(
python3-full
$ sudo apt update && sudo apt upgrade -y
$ sudo apt install git python3-full python3-tk python3-pip
ここからサッとbCNCがインストールできるかというとそうではなくて、
bCNC
そこで一旦venvからpythonのローカルクローンを構築して、そのフォルダ内のpython/pipからbCNCをインストールする流れになります。。
$ cd ~ && mkdir ~/bcnc
#bcncというフォルダにvenvを構築
$ python -m venv bcnc
$ cd bcnc
#bcncというフォルダ内のpipからbCNCをインストール
$ bin/pip install --upgrade bCNC
#もしくはgitからインストールする場合
#bin/pip install --upgrade git+https://github.com/vlachoudis/bCNC
以下のコマンドでエラーが出ていない場合にはインストール成功です。
$ ~/bcnc/bin/python -m bCNC
リモートデスクトップからbCNCを操作する
では、bCNCをインストールしたラズパイに別のデスクトップPCからリモートデスクトップを使ってアクセスする使い方を想定して作業を進めていきます。
実は、Raspberry Pi OSのリモートデスクトップについても
Bookworm
レガシーOS(Bullseye以前) --> XRDPを使ってRDP接続 --> クライアントはRemminaを推奨 現状のリリースOS(Bookworm以前) --> vnc-serverを使ってVNC接続 --> クライアントはVNC Playerを推奨
以降ではこれら2つパターンを個別に解説していきます。
RemminaからRDPで接続してbCNCを起動する
まずはレガシーOSをRDP接続させる方法から解説します。
以前、
ラズパイのRDPの導入方法はそちらの記事を参照していただくとして、先程のラズパイにインストールした
bCNC
それではRemminaクライアントからラズパイに接続し、
python -m bCNC

すると
bCNC

VNC PlayerでVNC接続させる
Raspberry Pi OS (Bookworm)から、ウィンドウシステムが従来のX11からWaylandへ移行したことで、リモートデスクトップの方法が大きく変わりました。
そのへんの話を含めて、Raspberry Pi OSのVNC接続の構築方法を以下の記事で解説しています。
リモートデスクトップ接続が成功したら、接続先のラズパイ上で先程のコマンドを叩いてみます。
$ ~/bcnc/bin/python -m bCNC

bCNCが問題なく動いていればインストール完了です。
CNCと接続してみる
それでは、きちんと通信できるか、ラズパイとCNCをUSB接続してみます。
CNCをUSB接続させたときに与えられるラズパイ側のデバイス名はそれぞれの環境で違うと思いますが、手元のラズパイ3B+では
/dev/ttyUSB0

シリアルのボーレートは
115200bps
GRBL0/GRBL1
開く

うまく接続できたら、
閉じる
Idle

それではマニュアルで動くかどうかだけxy軸を移動させてみます。
Control
Control

スムーズにCNCが並行移動していたら、リモートでの通信開始テストは完璧です。 これでネットワーク上のどこのパソコンからでもラズパイにアクセスして、基板加工ができる環境が整いました。
プローブのテスト
いきなり基板の削り出しを行う前に、
Auto leveling
ピン配置の確認
オートレベリング機能とは、プローブと金属表面が導通したときを検知して加工の高さを補正していくことを指します。 ということで、CNC本体が自動でやってくれる訳ではなく、自分でプローブとPBC基板表面を、CNCの基板側に配線を接続する必要があります。
現在利用している格安の中華製CNCは
Woodpecker CNC GRBL
A5

オートレベリングでエンドミルを折ってしまうのは残念ですので、心配な人は、前もって取説に書かれている内容か、ソースコードからビルドしてインストールする際にはコードを見て確認しておいた方が良いでしょう。
A5

可動部分に接続させるため、プローブが動いている途中で引っかからないように余裕をもった配線の長さにしましょう。

オートレベリング前の手動調整
今回はオートレベリングの解説だけに絞っているので、本番用のエンドミルは使わず、太めの鉛筆の芯を加工したもので代用してみます。 材料的に柔らかくしかも伝導性をもち、なおかつ安いのでコスパ最高です。 最悪でも芯が弾け飛ぶだけでCNC本体にはノーダメージなこともあり、予備動作を試験するには最適なんではないかと思います。

これをCNCのスピンドルに固定し、ワニ口などでプローブの固定具を掴んでおきます。 他方、PBC基板表面を導線などで接触させて固定したものをGND側の配線に持ってきます。

この時点で、テスターなどに接続して導通具合は見れるようにしておきます。
しっかりと配線が固定できているのを確認してから、プローブを加工原点にしたい場所の上空までxy座標を手動で移動させます。
移動は
[Control]タブ --> [Control]

そこからゆっくりと確実にプローブをz軸方向に降下させていきます。

目視でそろそろ基板表面に接するようなところまで降ろしたら、テスターで導通具合を確認しながら更にプローブを下げます。

慎重にプローブを降ろしていくと、導通した瞬間に止めます。

接触したこの座標を作業用のゼロ座標として登録しておきましょう。
Wpos(ワーク座標)のXYZをすべてゼロリセットします。

これで原点出しできました。
オートレベリング
ここから実際のオートレベリングを行います。
まず
先程の加工原点のゼロ出しのままでテスターに配線しっぱなしの状態でオートレベリングを行うと、エンドミルならびにCNC本体にダメージが行くので、うっかりどころで無くなるかも知れません。 必ず接続確認をしましょう。

配線の接続確認をしたら、
[Probe]タブ --> [Auto Level]
Common設定
プローブに関する諸設定です。
Autolevel設定
その時のワークの大きさや固定したレイアウトによって異なります。 ここでは参考程度ですが、プローブのXYZ範囲を設定を以下のようにしました。
例えばMinの値より凹んでいるとこがあると Min値までZ軸が下がった所で接触がないのでエラーで止まります。
作業領域は原点(0,0,0)を左下に見た時の右に進む方向を
+x
+y
+z
XY軸のステップ数刻みで測定点を決めているので、ステップ数の刻みを多くするごとに高解像度な表面の補正マップが作成されますが、あまり刻みすぎると今度はオートレベリングがかなり長時間掛かってしまうもの考えものです。 ステップ数の設定はほどほどの値にしましょう。
今回はプローブの準備にテスターを見ながら表面を接触した高さで
z=0
以上、安全確認後
Scan

オートレベリング中は、リアルタイムで進捗状況が確認できます。 画面下に現れるプログレスバーには、大体の予想作業完了時間もでますのでなかなか便利です。

今回の設定ではだいたい80点の測定で、10分程度かかるようです。
測定結果の保存
オートレベリング完了後の測定データを利用するには、データを保存する必要があります。

測定した生データは現在のプローブからのz軸方向の絶対座標です。
なので、プローブ原点出しの際にプローブの接触したときの高さを前もって
z = 0
z = 0.5
ということで、測定したどこかの点を基準をゼロとしてそこから相対的な高さデータに補正してくれるのが、
[Zero]ボタン
x = 0, y = 0

原点位置からの相対高さでデータが再計算されます。
測定データは
probe

加工時にこの
***.probe
余談〜(新しい)grblフォーマットでのドリル加工であればbCNC一択だった話
先日、何を思ったのか、bCNC以外のNCコントローラーソフトも使ってみたいという衝動に駆られ、
このソフトウェアの良いところはランタイムにJavaライブラリを採用しているため、bCNCのように一々pythonの動作環境を確認する作業なしにそのまま起動させることができることにあります。
たしかにこのUGS自体は、起動も動作も問題なかったのですが、加工を始めると、一部のGコードでエラーが起こり動作停止になってしまいました。

ちなみにここでエラーを吐き出しているエラーは
G98
G81
一方で、同じ加工ファイルを使っても、
これはUGSが悪いといったことではなく、bCNCが内部で新旧grblフォーマットの違いを自動で好ましい指令に変換してくれている、ということを今さら知ることができました。
既に一部のCAMソフトだとgrblHAL(GRBL2)以降のフォーマットでしかncファイルを出力してくれないけれど、CNC機械のファームウェアがGRBL0.9/1.1のまま使いたい、という状況ならば、bCNC一択ではないかと思います。
まとめ
今回は加工作業というよりは、ラズパイへの
bCNC
次回の機会があれば何かガーバーデータを使って、実践的の削り出しをやってみようと思います。