【Raspberry PI x 卓上CNC】切削用CAMソフト「bCNC」をラズパイにインストールして卓上CNCを動作テストする


※ 当ページには【広告/PR】を含む場合があります。
2020/05/28
2025/09/09
[プロトタイプ電子基板 x CNC切削加工] 電子基板のプロトタイピング① ~ アイソレーション加工




卓上CNCルータを使うと、ちょっとした電気回路基板を試しをすぐに手元で試せるのでDIYレベルのプロトタイピングに非常に重宝します。
今回はネットショップでも購入できる卓上CNCルータを利用して、ラズパイのリモートから
「bCNC」 を使って操作する基板作成の話を取り上げます。


bCNCのインストール

『bCNC』について



bCNCはCNCマシーンと接続して、入力されたNCファイルから切削コマンドを送り操作するためのソフトウェアで、主にパソコンなどにインストールして利用するタイプのNC加工ソフトウェアです。

bCNC | Github

bCNCはpythonランタイムで動作するため、動作させるには適切なバージョンのPythonライブラリを予め構築する必要があります。
この記事では、Linux(Debian)を対象にbCNCの導入方法と簡単な利用法を解説しますが、他のOS(Windows/MacOSX)などで利用する場合には以下のWikiの方で確認してください。

Welcome to the bCNC wiki! | GitHub

Rasoberry Pi OS(Bullseye以前)にbCNCをインストール



直近のRaspberry Pi OSの大幅な仕様変更によって、ラズパイのPython周りの取り扱いも大きく変化しました。 既にレガシーOSになっている
Bullseye 以前のOSではpython2系がデフォルトになっているため、そのままだと(現在の)bCNCが利用できません。
ここではまずレガシーOSにPython3.11以降をインストールする方法を説明します。 既にラズパイにBookworm以降のOSをインストールしているのであれば、このパートをスキップして次の節の内容からお読みください。
まずはラズパイにログインして、インストールしているpythonのバーションを確認をします。
なお今回の動作確認は
Raspberry Pi 3B+ で行ったものですが、pythonさえ正常にインストールできていればラズパイのどの機種でも正常に動作すると思います。

            $ 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 )に切り替え、必要なコマンド(git/pip)やライブラリ(tk)も更新・導入します。

            $ sudo apt update && sudo apt upgrade -y
$ sudo apt install git python3-full python3-tk python3-pip

        

ここからサッとbCNCがインストールできるかというとそうではなくて、
bCNC に限らず認証されていない配布者不明のpythonアプリでは、グローバルインストールされたpythonがそのまま利用できないことに注意が必要です。
そこで一旦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接続させる方法から解説します。
以前、
ラズパイ & Remmina on LinuxでRDP接続してリモートデスクトップさせてみる方法 の記事で、RemminaというRDPクライアントでラズパイをリモートで利用する記事を書きました。

合同会社タコスキングダム|蛸壺の技術ブログ
【Raspberry Piセットアップ方法(旧式)】ラズパイ & Remmina on LinuxでRDP接続してリモートデスクトップさせてみる

ラズパイにリモートデスクトップを導入するまでの手順をまとめます。



ラズパイのRDPの導入方法はそちらの記事を参照していただくとして、先程のラズパイにインストールした
bCNC をDebianのパソコンからリモート操作します。
それではRemminaクライアントからラズパイに接続し、
python -m bCNC でコマンドを入力します。

合同会社タコスキングダム|蛸壺の技術ブログ


すると
bCNC が正常に起動したらインストール完了です。

合同会社タコスキングダム|蛸壺の技術ブログ

VNC PlayerでVNC接続させる



Raspberry Pi OS (Bookworm)から、ウィンドウシステムが従来のX11からWaylandへ移行したことで、リモートデスクトップの方法が大きく変わりました。
そのへんの話を含めて、Raspberry Pi OSのVNC接続の構築方法を以下の記事で解説しています。

合同会社タコスキングダム|蛸壺の技術ブログ
【最新版】Raspberry Pi OS (Bookworm) VNCリモートデスクトップ設定ガイド

Raspberry Pi OS BookwormでVNCリモートデスクトップ



リモートデスクトップ接続が成功したら、接続先のラズパイ上で先程のコマンドを叩いてみます。

            $ ~/bcnc/bin/python -m bCNC

        
合同会社タコスキングダム|蛸壺の技術ブログ


bCNCが問題なく動いていればインストール完了です。


CNCと接続してみる



それでは、きちんと通信できるか、ラズパイとCNCをUSB接続してみます。
CNCをUSB接続させたときに与えられるラズパイ側のデバイス名はそれぞれの環境で違うと思いますが、手元のラズパイ3B+では
/dev/ttyUSB0 で認識していたので、これを選択します。

合同会社タコスキングダム|蛸壺の技術ブログ


シリアルのボーレートは
115200bps でそのままにしておいて、コントローラーはgrblのファームウェアのバーションに応じて GRBL0/GRBL1 がどちらか適宜選択できます。 準備が完了したら、 開く ボタンで接続しましょう。

合同会社タコスキングダム|蛸壺の技術ブログ


うまく接続できたら、
閉じる という緑のボタンアイコンに変わり、 Idle の状態になっているのが分かります。

合同会社タコスキングダム|蛸壺の技術ブログ


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

Control タブを開き、左下側にある Control エリアの矢印をクリックします。

合同会社タコスキングダム|蛸壺の技術ブログ


スムーズにCNCが並行移動していたら、リモートでの通信開始テストは完璧です。 これでネットワーク上のどこのパソコンからでもラズパイにアクセスして、基板加工ができる環境が整いました。


プローブのテスト



いきなり基板の削り出しを行う前に、
Auto leveling をやってみようと思います。

ピン配置の確認



オートレベリング機能とは、プローブと金属表面が導通したときを検知して加工の高さを補正していくことを指します。 ということで、CNC本体が自動でやってくれる訳ではなく、自分でプローブとPBC基板表面を、CNCの基板側に配線を接続する必要があります。
現在利用している格安の中華製CNCは
Woodpecker CNC GRBL の基板です。 だいたい格安で出回っているCNCはAtmelMega328Pベースの Arduino GRBL が入っているので、オートレベリング用の電圧検知は A5 ピンに割り振られています。

合同会社タコスキングダム|蛸壺の技術ブログ


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

A5 端子の接続先はプローブ、GND端子の接続先はPCB基板表面とします。

合同会社タコスキングダム|蛸壺の技術ブログ


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

合同会社タコスキングダム|蛸壺の技術ブログ

オートレベリング前の手動調整



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

合同会社タコスキングダム|蛸壺の技術ブログ


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

合同会社タコスキングダム|蛸壺の技術ブログ


この時点で、テスターなどに接続して導通具合は見れるようにしておきます。
しっかりと配線が固定できているのを確認してから、プローブを加工原点にしたい場所の上空までxy座標を手動で移動させます。
移動は
[Control]タブ --> [Control] で手動操作パネルがあります。 右のコンボボックスからクリック1回あたりの移動量を選択できるのですが、移動させる前には必ず大きすぎる値になってないか気を配っておきましょう。

合同会社タコスキングダム|蛸壺の技術ブログ


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

合同会社タコスキングダム|蛸壺の技術ブログ


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

合同会社タコスキングダム|蛸壺の技術ブログ


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

合同会社タコスキングダム|蛸壺の技術ブログ


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

合同会社タコスキングダム|蛸壺の技術ブログ


これで原点出しできました。

オートレベリング



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

合同会社タコスキングダム|蛸壺の技術ブログ


配線の接続確認をしたら、
[Probe]タブ --> [Auto Level] の画面に進み、プローブ領域やフィード速度などの設定をします。

Common設定



プローブに関する諸設定です。

設定値 備考
Fast Probe Feed 30.0 早送り時のプローブフィード速度
Probe Feed 30.0 測定時のプローブフィード速度. 遅い速度ほど高精度に測定できる
TLO 0.000 予めチップの長さが判明している場合に設定する表面からのオフセット量. 通常はゼロで良い
Probe Command G38.2 Stop on contact else error (Default) エラー発生時の挙動

Autolevel設定



その時のワークの大きさや固定したレイアウトによって異なります。 ここでは参考程度ですが、プローブのXYZ範囲を設定を以下のようにしました。

下限(Min) 上限(Max) ステップ数(N)
X 0.0 40.0 10
Y 0.0 30.0 8
Y -1.0 1.0 --

例えばMinの値より凹んでいるとこがあると Min値までZ軸が下がった所で接触がないのでエラーで止まります。
作業領域は原点(0,0,0)を左下に見た時の右に進む方向を
+x 、上に進む方向を +y 、鉛直方向上に進む方向を +z としてイメージすると良いと思います。
XY軸のステップ数刻みで測定点を決めているので、ステップ数の刻みを多くするごとに高解像度な表面の補正マップが作成されますが、あまり刻みすぎると今度はオートレベリングがかなり長時間掛かってしまうもの考えものです。 ステップ数の設定はほどほどの値にしましょう。
今回はプローブの準備にテスターを見ながら表面を接触した高さで
z=0 を取っているので、よほどの凹凸に富んだ表面でもない限りは±1.0程度の歪み範囲設定で良いと思います。 この範囲を外れるとエラーが発生します。
以上、安全確認後
Scan を押すとオートレベリングが始まります。

合同会社タコスキングダム|蛸壺の技術ブログ


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

合同会社タコスキングダム|蛸壺の技術ブログ


今回の設定ではだいたい80点の測定で、10分程度かかるようです。


測定結果の保存



オートレベリング完了後の測定データを利用するには、データを保存する必要があります。

合同会社タコスキングダム|蛸壺の技術ブログ


測定した生データは現在のプローブからのz軸方向の絶対座標です。
なので、プローブ原点出しの際にプローブの接触したときの高さを前もって
z = 0 にしていない場合、例えば z = 0.5 のあたりを原点として登録して測定した生データのままでは、本当の表面歪みデータにはなっていません。
ということで、測定したどこかの点を基準をゼロとしてそこから相対的な高さデータに補正してくれるのが、
[Zero]ボタン の機能です。 これを原点位置( x = 0, y = 0 )上で実行すると、

合同会社タコスキングダム|蛸壺の技術ブログ


原点位置からの相対高さでデータが再計算されます。
測定データは
probe という拡張子で保存する必要があります。

合同会社タコスキングダム|蛸壺の技術ブログ


加工時にこの
***.probe ファイルを読み込んで、表面歪みを加味したプロセスが走るようになるようです。


余談〜(新しい)grblフォーマットでのドリル加工であればbCNC一択だった話



先日、何を思ったのか、bCNC以外のNCコントローラーソフトも使ってみたいという衝動に駆られ、
『UGS』 を使ってみたことがありました。

Universal-G-Code-Sender

このソフトウェアの良いところはランタイムにJavaライブラリを採用しているため、bCNCのように一々pythonの動作環境を確認する作業なしにそのまま起動させることができることにあります。
たしかにこのUGS自体は、起動も動作も問題なかったのですが、加工を始めると、一部のGコードでエラーが起こり動作停止になってしまいました。

合同会社タコスキングダム|蛸壺の技術ブログ


ちなみにここでエラーを吐き出しているエラーは
G98G81 は加工過程のいわゆる固定サイクルと呼ばれるもので、古いGRBLには対応していないコマンドです。
一方で、同じ加工ファイルを使っても、
bCNCでは問題なく加工することができます
これはUGSが悪いといったことではなく、bCNCが内部で新旧grblフォーマットの違いを自動で好ましい指令に変換してくれている、ということを今さら知ることができました。
既に一部のCAMソフトだとgrblHAL(GRBL2)以降のフォーマットでしかncファイルを出力してくれないけれど、CNC機械のファームウェアがGRBL0.9/1.1のまま使いたい、という状況ならば、bCNC一択ではないかと思います。


まとめ



今回は加工作業というよりは、ラズパイへの
bCNC 導入方法をメインに解説しました。
次回の機会があれば何かガーバーデータを使って、実践的の削り出しをやってみようと思います。