これまでのあらすじ:
2016年3月、フェルト生地を手で裁断している際にレーザーカッターがあれば複雑なカットが容易にできるなあと思って、安価になってきたレーザーカッターを購入しようと思ったのがきっかけ。調べていくうちに、合板も切れたほうがいいと思うようになって、CNCルーター(CNCミリング)についても考えるようになった。
Arduinoは以前から使っており、CNCシールドがあると気付いて自作も可能と思うようになった。当初はShapeOkoやX-CARVEを参考にMakerSlide、OpenRail、V-Wheel、2GTタイミングベルトなどで5万円くらいで自作しようと思っていた。AliExpressでも部品が安く買えることが分かって、しばらくは部品探し。探せば探すほど安くて本格的な部品も見つかってくるので、そんなにケチらなくてもいいのではないかと徐々にスペックアップ。最終的には剛性や精度のことも考えてボールスクリューやリニアスライドを使うことになり、予想以上に重厚な3軸CNCマシンをつくることに(約7万円)。
構想から約5週間(制作約3週間)でルーターとレーザーともに使えるようになり、現在はgrbl1.1+Arduino CNCシールドV3.5+bCNCを使用中(Macで)。余っていたBluetoothモジュールをつけてワイヤレス化。bCNCのPendant機能でスマホやタブレット上のブラウザからもワイヤレス操作可能。


CNCマシン全般について:
国内レーザー加工機と中国製レーザー加工機の比較
中国製レーザーダイオードについて
CNCミリングマシンとCNCルーターマシンいろいろ
その他:
利用例や付加機能など:
CNCルーター関係:

*CNCマシンの制作記録は2016/04/10〜の投稿に書いてあります。

2017年1月26日木曜日

bCNCのインストールや使い方

普段は、G Code Sender(PC上のGコード送信ソフト)としてbCNCを使用しています。GrblのサイトUsing Grblに掲載されているGrbl1.1対応ソフトの一つでもあります。


bCNCの特長:
・Grbl1.1に対応(頻繁にアップデートされている)
・シンプルかつ機能も豊富
・Gコード以外にもdxfファイルも読み込み可
・Raspberry Piでも使用可能
・機能割当も含めボタンなどをカスタマイズできる
・リアルタイムでフィードやスピンドル出力調整可能
・Probe機能、オートレベリング機能(基板制作用)
・Gコードを視覚的に編集可能
・Pendant機能によりWifi環境下で他の端末(スマホなど)からも操作可能
・オフセットカット、穴あけ、タブ配置などの補助加工機能
・OpencvによるWebカメラを使った位置決め機能/映像モニタリング

まだ一部の機能しか使っていませんが、けっこう便利そうです。bCNCはPythonベースのソフトであるためPythonがPCにインストールされている必要があります。
bCNCのWikiページに一応OSごとのインストールの仕方がのっています(こちら)。

Pythonのインストール方法:
Macの場合はApple-Pythonが既にインストールしてあるため、pip(Pythonのモジュールをインストールしたりアップデートする管理モジュール)とpyserialをインストール。
Windowsの場合は初期状態ではPythonがインストールされていないので、まずはPython2.7(3.0以上は対応外)をインストールする必要があります(こちらから)。また、Pythonインストール後、環境変数PATHの設定が必要となる場合があります(こちらを参考に)。

Pythonの有無/バージョンを確認するには:
ターミナル(Mac)あるいはコマンドプロンプト(Win)を開き、
python -V
を入力。
Python 2.7.5
と表示されれば、Python2.7.5がインストールされていることになります。

Pythonのディレクトリを調べるには(Mac):
which python
を入力。
/usr/bin/python
が表示されれば、このディレクトリにPythonがインストールされていることになります。
Macの場合Apple-pythonが既にインストールされていますが、それとは別にbCNC Wikiに書いてあるようなHomebrewでPythonをインストールしたときはディレクトリが、
/usr/local/bin/python
になり、既存のApple-pythonと新たにインストールしたPythonを使い分けることになります。二つのPythonを使い分けすることもできますが、普段からpythonを使ってプログラミングなどしないかぎりは、既存のApple-pythonを使ったほうが手っ取り早いと思います。

Pythonのバージョンを選んで起動する:
複数のPythonをインストールしてある場合、ターミナルでpython(tabキー)を入力するとバージョンリストがでてきます。どれを使うかは、python2を入力でPython2.X、python3を入力でPython3.Xを選択して起動できるようです。

pipやpyserialのモジュールの有無を調べる:
python -c "help('modules')"
を入力。そうするとアルファベット順にたくさんのモジュールが出てきます。その中にpipとpyserialが入っていればインストールする必要はありませんが、初期状態では入っていません。

pipをインストールする:
まずpyserialをインストールする前にpipをインストールします。
easy_install pip
を入力。もし管理者権限がないためにエラーがでるようなら、
sudo easy_install pip
と入力すると、
Password:
が表示され、管理者権限パスワード要求されるのでそのままパスワードを入力。パスワードを入力しても画面には表示されないので、そのまま入力。
問題なければpipがインストールされます。
上記の方法でインストールできない場合は、こちらの方法で。

モジュールのインストールが上手くいかない場合:詳細はこちら
python -m pip install -U pyserial --user
と入力すると、PC本体のシステムではなくユーザーごとのディレクトリにインストールされます。たまにシステムからインストール権限がないためエラーが出ることがあるので、この方法であれば大体大丈夫かと。
また、python2.7やpython3など、バージョンを使い分けてインストールするならば、
python2.7 -m pip install -U pyserial --user
python3 -m pip install -U pyserial --user
という感じになります。

pyserialのインストール:
pipを使ってpyserialをインストールします。
pip install pyserial
を入力。
管理者権限パスワードが必要なら、前回同様sudoを頭につけて入力。
sudo pip install pyserial
もしアップグレードする必要があるならば、
pip install pyserial --upgrade
を入力。
上記の方法でインストールできない場合は、こちらの方法で。

pyserialがインストールされているか確認:
python -c "import serial"
を入力してエラーがでなければ、pyserialがインストールされたことになります。
あるいは、先ほどの
python -c "help('modules')"
を入力し、モジュールリストの中から確認。


bCNCのインストール&起動:
bCNCのこのページの緑色のボタン「Clone or download」から、「Download ZIP」をクリック。適当なところにダウンロードし、解凍すると「bCNC-master」フォルダが出来上がります。
「bCNC-master」フォルダを開き、Macなら「bCNC」、Winなら「bCNC.bat」をクリックで起動。

bCNCとArduino Unoとの通信開始:
Arduino UnoとUSB接続しbCNCを起動したら上部「File」タブを押す。
Serial内のPort:でArduinoのポート選択、Baud:115200、Controller:Grbl、「Open」ボタンで接続開始。
Status:Alarmになったら、上部「Control」タブに切り替えて(以下画面)、
「Unlock」で解除(あるいは$Xをコマンド入力)。そうすると、Status:Idleに変わります。
「Open」ボタンを押しても、Status:Not connectedのままなら「Reset」ボタンでやり直し。

Unlock後(Idle状態)、下のほうにあるジョグボタン(十字ボタン)の操作が可能となります。
ジョグボタン右側にある数値10.0は10.0mm、ボタン一回で進む量です。一度に進む量は数値の周りにあるボタンで調整できます。
ジョグボタン中央の○ボタンは、WPos加工原点(0,0,0)に戻るボタンです。
「Home」はホーミングサイクル($H)、まだ設定していない場合は使えません(ホーミングについてはこちらへ)。
エラーなど生じたら「Reset」でソフトをリセット。


「Terminal」タブでGコード入力内容やエラーを確認:
上部右端「Terminal」タブを選択すれば、ボタン操作した内容がGコードとしてコンソール画面上に確認できます。ボタン操作したのに反応がないときは、ここでエラーがでているか確認できます。
先ほどのジョグボタン中央の○ボタンは、
G90G0X0Y0Z0
というコマンドを送信したことになっています。ボタン送信によるコマンドの内容を変更したい場合は、そのボタンを右クリック(あるいは中クリック)で設定し直すことができます。

「Command:」欄にコマンドを手入力する:
ボタン操作以外に、画面左下の「Command:」欄に直接Gコードを手入力できます。
「Unlock」ボタンのかわりに、$Xなどと直接打ち込んだほうが早いかもしれません。

bCNCの使い方:
以下は、これまでのbCNC使用のリストです。
G Code Sender(bCNCなど)
bCNCでGrbl1.1レーザーモードの実験
Jscutでオフセットカット設定、bCNC上で加工原点を移動する
Gコード38.2のプローブ設定とbCNCプローブ機能
Raspberry Pi3にbCNCをインストール&Pendant機能で遠隔操作
bCNCのIPカメラ化(実験段階)

また、CNCマシン使用前の設定についてはこちらへ。リンク先では、bCNCではなくUniversal-G-Code Sender(UGS)を使用していますが、手入力設定なのでbCNCの画面左下のCommand:に同様のコマンドを入力することで設定可能です。

bCNCの日本語化:
最近(2017/01/22)、bCNCも日本語化されたようです。画面右上のほうに言語タブがあり、Japaneseが選べるようになっています。最新のbCNCをダウンロードしてみたら設定変更できました。
bCNCを他言語化するには、このページにやりかたが書いてあります。このあたりは、オープンソースなので利用者(参加者)によって徐々に改良されていくという感じですね。おかげで見やすくなりました。まだ部分的に日本語になっていないところもあるので、このページのやり方で追加更新していけそうです。

ホーミング($H)について:
bCNCの「Home」ボタンを押すと、Grblにおける$Hコマンドが送信され、ホーミングサイクルが開始します(詳しくはこちらへ)。ホーミングを可能にするためには、XYZ軸にリミットスイッチをつけ、Grblの設定$22=1にしておく必要があります。ホーミングサイクルが終了すれば、CNCマシンは自分の位置を把握できるようになります。

リファレンス点復帰(G28、G30):
ホーミング後、G28(リファレンス点復帰)やG30(第2リファレンス点復帰)を入力することで、作業エリア中央やツール交換場所などの任意の位置へ自動で移動することができます。その設定をするには、ジョグボタンなどで任意の位置まで行き、その位置でG28.1あるいはG30.1を入力します。そうすると、その場所の座標がG28やG30用に登録されるようです(個人的には使ったことありませんが)。

いつものやり方(ホーミングなし):
だいたいは作業エリア中央で加工しているので、個人的にはホーミングは普段使っていません。MPos(機械座標)は無視して、WPos(加工座標)だけで以下のような流れでやっています。
・CNCマシン電源投入、bCNCと接続
・bCNCの「Open」ボタン(接続開始)、「Unlock」ボタン(初期ロック解除)
・材料を任意の場所(作業エリア中央付近)に固定する
・材料の左手前角(加工原点)までジョグボタンでXY軸を移動
・エンドミル先端を材料上面と接するまで(紙1枚はさんで)ジョグボタンでZ軸を下げる
・bCNCで「X=0」、「Y=0」、「Z=0」を押す(加工原点設定)、G92 X0 Y0 Z0でも可
・エンドミル先端を10mmほど上に戻しておく(安全のため)
・Gコードファイルを読み込んで加工開始
*Gコードファイル内の加工パスも、材料左手前角を加工原点にしておき、加工開始点は材料左手前角、加工終了後も材料左手前角に戻ります。
*Grbl設定は、$20=0(ソフトリミット:OFF)、$21=1(ハードリミット:ON)、$22=1(ホーミング:ON)にしてあります。

以下が現在のGrbl設定:
$0=10 (step pulse, usec)
$1=25 (step idle delay, msec)
$2=0 (step port invert mask:00000000)
$3=2 (dir port invert mask:00000010)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=3 (status report mask:00000011)
$11=0.010 (junction deviation, mm)
$12=0.002 (arc tolerance, mm)
$13=0 (report inches, bool)
$20=0 (soft limits, bool)
$21=1 (hard limits, bool)
$22=1 (homing cycle, bool)
$23=0 (homing dir invert mask:00000000)
$24=30.000 (homing feed, mm/min)
$25=600.000 (homing seek, mm/min)
$26=25 (homing debounce, msec)
$27=5.000 (homing pull-off, mm)
$100=320.000 (x, step/mm)
$101=320.000 (y, step/mm)
$102=320.000 (z, step/mm)
$110=1000.000 (x max rate, mm/min)
$111=1000.000 (y max rate, mm/min)
$112=400.000 (z max rate, mm/min)
$120=10.000 (x accel, mm/sec^2)
$121=10.000 (y accel, mm/sec^2)
$122=10.000 (z accel, mm/sec^2)
$130=740.000 (x max travel, mm)
$131=940.000 (y max travel, mm)
$132=190.000 (z max travel, mm)


オーバーライド機能:
Grbl1.1からはリアルタイムで加工中にもフィードやスピンドル出力数を可変制御できるようになりました。bCNCのControlタブを選択すれば以下のようなスライダーが表示されます。
この状態であれば、フィード100%(上段の100という数値)であり、スライダーを使って25%〜200%まで調節できます。Resetを押せば瞬時に100%の位置に戻ります。
その下のSpindleボタンでスピンドルON/OFF切り替え、スライダーで回転数(レーザーであれば出力数)を調整できます。ただし、スピンドルに関してはTTL端子付きの可変出力制御可能なスピンドル用ドライバを接続しておかないとこの機能は使えません。
スライダーにおける回転数や出力数は、Tools>Configで設定します。

スピンドルの回転数表示にしたい場合は、Spindle max(RPM)の欄へ使用しているスピンドルの最大回転数に合わせた数値を入力しておきます。こうすることで、回転数(RPM)から判断したいときは見やすくなると思います。
レーザーの場合は回転数ではないので、M3やM4で設定するS値(S0〜S1000)やワット数など入れておくといいと思います。
尚、設定したら一度bCNCを再起動する必要があります。


.bCNC(不可視ファイル)で設定する場合:
上記のTools>Configでマシンに合わせた設定がある程度できますが、ここで設定できないようなことは.bCNCファイル(不可視ファイル)に書き込むことで可能になるようです(本家説明はこちら)。
.bCNCファイル(不可視ファイル)の場所は、ダウンロードした「bCNC-master」フォルダ内ではなく、パソコンのユーザーディレクトリ内にあります(Macなら/User/username/.bCNC)。
不可視ファイルを見えるようにするには(Macの場合)、ターミナルから、
defaults write com.apple.finder AppleShowAllFiles -boolean true
そして、
killall Finder
を入力します。これで不可視ファイルが見えるようになります。
元に戻すなら、
defaults delete com.apple.finder AppleShowAllFiles
そして、
killall Finder
を入力し不可視ファイルを見えない設定にします。
また、ターミナルで入力するのが面倒であれば、Funter(Mac用)というソフトがあります。
このソフトを使えば、不可視ファイルの表示/非表示の切り替え、あるいは検索が簡単にできます。
Windowsにおける不可視ファイルの表示/非表示に関しては、こちらが参考になるかと


Pendant機能(スマホで遠隔操作):
CNCマシンとUSB接続してあるパソコン上のbCNC画面から操作する以外に、Wifi環境があればPendant機能を使うことで、他の端末(スマホなど)からも遠隔操作可能となります。エンドミル先端と材料との距離を見ながら、手元のスマホで加工原点合わせすることも楽になります。
File画面↑で、Playボタン(Start pendant)を押せばすぐに使えます。他の端末のブラウザで「localhost:8080(あるいは192.168.X.X:8080などのローカルIPアドレス+ポート番号)」にアクセスすれば、以下のような操作画面が出てきます。
Androidタブレット上の画面です。
ここで、|Home|Unlock|Reset|の下に「Idle」が表示されていれば使うことができます。「Disconnected」と表示されている場合は、再接続した方がいいと思います。

また、パソコン(ホスト側)に接続したカメラ(Opencv、PIL、ImageTk:要インストール)をオンにすれば(以下の赤丸のボタン)、
http://localhost:8080/camera.html(あるいは192.168.x.x:8080/camera.htmlなど)にスマホなどからアクセスしてカメラ映像を見ることができます。例えば、スピンドル近くに設置したカメラで加工状況などをカメラを通して確認できます。


タブ自動配置機能:
ルーターやフライス加工の際に、加工後半で部品が材料から完全に切り離されて、部品そのものの固定が不安定になってしまう時があります。そうならないようにTool>Tabsボタンで部品の周囲にタブ(部分的に部品と材料とつなげておく処理)を配置することができます。bCNCのwikiに説明が載っています(こちら)。
Gコードの一番下のパスだけ選んだ後、Tabsボタンを押すと画面左に設定項目が出てきます。

ここで、タブの数、配置間隔、大きさ(Dx、Dy)、高さ(マイナスの値で入力)を設定。
この画面上部のTabsを押すと黄色いタブが生成されます。その後、Cutボタンを押し、厚みや深さなど設定し(場合によってはStockボタンの方でも材料の厚みなど設定し)、Cut設定項目上部のCutボタンを押すと、一番下のパスにタブ(一段上がったパス)が出来上がります。

パスが選べないとき:
もし、一番下のパスだけを選択できない場合は、すべてのパスが一つのHeaderやblockに入っているのかもしれません(Editorタブの画面に切り替える)。そのような時は、一番下のパスが含まれているパス用のフォルダを展開し、以下のように真横に視点を変えて、選択ツールで一番下のパスだけを囲んで選びます。
その際、左側に見える選択したパスの内容を確認して、抜けているような部分も含めてGコードをカットします。

左側のパス用フォルダのリスト上でペーストすると、先ほどカットした一番下のパスだけのデータがblockという名前で出てきます。ペーストされたフォルダの上下の順番を変えるにはUp/Downを押します。その後、一番下のパスを選ぶ時は、このパス用フォルダをクリックすることで選べるようになります。
不必要なフォルダはDeleteボタン、新たにフォルダを追加する時はAddなど、ここでGコードの編集が可能です。


オフセット(工具径補正)加工:
例えば、直径6mmのエンドミルを使用している場合、加工パス(加工する軌道)は、図面外形線に対して3mm分(エンドミル半径)外側や内側を通らなければいけません。bCNCではこの補正(オフセットしたパスを描く)も可能です(InkscapeやJscutでも可能)。
まず、Toolタブで画面を切り替えProfileボタンを押します。
そうすると画面左に設定画面がでてきます。
例えば、3mm外側をオフセット加工するなら、以下のように入力します。
Direction: outside(図形外側にオフセット)
Additional offset distance: 3.0(この場合3mm)

そして、オフセットしたい図形を画面内で選びます(青線になる)。
設定項目の上にある横長のProfileボタンを押せば、選択した図形の線(パス)が、3mm外側にずれてくれます。
この機能を使わずに、InkscapeやJscutなどであらかじめオフセット加工用のパスに変換しておくこともできます。もしオフセットされていないデータを使用するなら、このようにしてbCNC上でも可能となります。


アップデート確認:
Fileタブ画面内のUpdatesボタンで使っているbCNCが最新かどうか確認できます。


こんな感じで表示されますが、自動的にアップデートしてくれるというわけではないようです。Git pullでアップデートできるのかもしれませんが、そのままサイトからダウンロードした方が早いかもしれません。
常に開発中(改良中)のオープンソースなので、微妙にエラーなどでたりする時があります。調子が悪かったり、きちんと機能しない部分があるときは、アップデートした方がいいかもしれません。

この他の機能については今後追記していきます。

8 件のコメント:

  1. はじめまして、googleのアカウントを忘れてしまい、匿名での投稿で申し訳ありません。
    NCNフライスを作りたく、参考にさせていただいております。
    現在、arduino unoとbCNCの通信ができなく、困っております。
    windows10 64bitに、pip,pyserial,Python 2.7.13 64bitをインストールをし
    bNCNの設定を、Serial内のPort com3,Baud:115200、Controller:Grblにし
    「Open」ボタンで接続しましたが、arduino unoのTX RXが、永遠に点滅したままです
    試しに、3台のarduino unoで、Grbl0.8 0.9 1.1と試しましたが、同じ結果でした
    パソコンをwindows10ですが、2台で繋ぎましたがダメでした、まったく原因がわからず
    困っております・・・
    何かヒントがありましたら、教えていただけないでしょうか?
    よろしくお願い致します。

    返信削除
    返信
    1. はじめまして。
      まず、pyserialがインストールされているかの確認として、コマンドプロンプトでpython起動後、import serialを入力。エラーがでなければOKです。
      pythonでエラーが出る場合は、特にWindowsの場合は環境変数PATHが設定されていないからかもしれません。「python 環境変数PATH 設定」などで検索してみてください。

      次はCOMポートの確認。現在のCOM3を使ってArduino IDEのシリアルモニタで$$を入力したときに、grblの設定が表示されるでしょうか?尚、その後bCNCと接続するときはArduino IDEは切ってください。

      bCNCでOpenボタンを押したあと、コマンド手入力で$X(もしくはUnlockボタン)を入力して初期ロック状態解除したでしょうか?ロック解除後、十字キーなどで動かせるはずです。以下も参考にして見てください。
      https://cnc-selfbuild.blogspot.jp/p/cnc.html

      Openボタンを押して、ロック解除し、正常に接続されていれば、bCNCのStatusの部分がNot connectedからIdleになります。

      削除
  2. 早速、返事をいただき、ありがとうございます。
    pyserialは、インストールできております
    python 環境変数PATH 設定もできております
    COMポートの確認は、Arduino IDEのシリアルモニタで確認しました
    3つののarduino unoで、Grbl0.8 0.9 1.1を入れ
    それぞれcom3~5で、試してみましたが、ダメでした・・・
    Arduino IDEも切っておりますが、ダメです

    bCNCでOpenボタンを押したあと、コマンド手入力で$Xを入力して初期ロック状態解除は
    まだ試していませんが、Unlockボタンは、見当たりませんので、Serial内のcioseボタンを
    押して、中断していますが、それが原因でしょうか?

    cioseボタンを押すと、Not connectedとなります

    お手数おかけしますが、よろしくお願い致します。

    返信削除
  3. 先ほど、Arduino IDEのシリアルモニタで$$を入力しましたが、grblの設定が表示されませんでした
    これが、原因でしょうか?
    また、どのようにすれば、いいのでしょうか?

    本当に、申し訳ございません。

    返信削除
    返信
    1. $$を入力しても反応がないということは、シリアル通信の問題かもしれません。
      シリアルモニタの右下のBaudrateが115200になっているでしょうか?

      そもそもそのArduinoボード自体正常に機能しているでしょうか?
      例えば、サンプルのBlinkをアップロードしてLEDが点滅するかどうかの確認などしてみるといいと思います。
      シリアル通信が上手くいかなさそうであれば、USBシリアルドライバも再度インストールしたほうがいいかもしれません。もし中国製クローンUnoを使っている場合は、純正品とは異なるドライバをインストールする必要があります。こちらを参考に。
      https://cnc-selfbuild.blogspot.jp/p/blog-page.html

      さらに、再度Grbl1.1もアップロードしたほうがいいかもしれません。

      削除
    2. ありがとうございます。
      なるべく早々に、試したいと思います

      今月以内に、ここで結果を報告致しますので
      よろしくお願い致します。

      削除
  4. おはようございます
    現状のままで、もう一度接続し、bCNCの「Open」ボタンを押し
    statusがConnectedのまま、controlタブのUnlockボタンを押せばldleになり
    十字キーの操作ができるようになりました。
    Openを押してldleになるまで待つものと、思い込んでおりました、すいません。
    これで先に進めます、ありがとうございました。

    返信削除
    返信
    1. そうでしたかw
      特に問題なかったということですね。
      また何かあれば、コメントください。
      それでは。

      削除

人気の投稿