grbl1.1+Arduino CNCシールドV3.5+bCNCを使用中。
BluetoothモジュールおよびbCNCのPendant機能でスマホからもワイヤレス操作可能。
その他、電子工作・プログラミング、機械学習などもやっています。
MacとUbuntuを使用。

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



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


2017年1月30日月曜日

IoTデバイスについて

以前CNCマシンで以下のようなことをしましたが、
Bluetoothで無線化
bCNCのPendant機能でスマホから遠隔操作
Laserweb3でWifi経由でスマホから遠隔操作(ページ最後)
と似た内容として、いわゆるIoT(Internet of Things)が最近気になっています。

少し前から、IoTのデバイスを見かけるようになったけれども、せいぜい従来の赤外線リモコンがスマホ1台で操作可能になって、別の部屋のエアコンや照明のつけ忘れをON/OFFするくらいかなと、オフィスビルなどなら、いろんなものを自動化したり、遠隔操作や遠隔管理可能にした方が便利だけれども、実際の生活ではあまり必要ないだろうと考えていました。

仕組みとしては、それぞれの電化製品がWifiに接続して、固有のIPアドレスにスマホからアクセスすれば、スイッチのON/OFF、温度や湿度などの状況、カメラで監視、また状況の変化や設定した入力に連動してSNSにメッセージを送信など。カメラ監視やSNSへメッセージ送信などはプライバシーが筒抜けになりすぎてあまり好ましくないかもしれないけれど、普通に照明器具や電化製品のON/OFFくらいならあってもいいかもしれない。

ということで、いつものAliExpressでIoTデバイスになりそうなものを探してみました。一応国内のAmazonとも比較しながら。

AliExpress.com Product - Broadlink Home Automation System A1 e-Air Smart Air Quality Detector+ RM2 Pro,smart home Remote Control本体だけで4358円(送料込み)
黒いUFOのような本体(昔のAirMacみたいな)が学習型赤外線リモコンを内蔵しており、Wifiを通してスマホから複数の電化製品のON/OFFや出力調整(TVの音量やエアコンの温度など)できるらしい。温度センサーも内蔵しているみたい。いわゆるこれ1台を部屋に置いておけば、日常的な電化製品を操作管理できる感じ。

 
Amazonだと、やはり2倍くらいの値段。レビューがあるので、使い勝手の参考にはなります。

しかし、見た目がカッコ悪いのと値段もやや高い(安いのかもしれないけど)。
もう少し探してみると(というかどこまで安くなるのかという感じで探してみると)、

AliExpress.com Product - 2016 Broadlink RM Mini3 Black Bean Smart Home Universal Intelligent WiFi/IR/4G Wireless Remote Controller By Smart Phone先ほどの一つランク下の製品:1495円(送料込み)これも学習型赤外線リモコン内蔵で同じようなことができるけれども、温度センサーなどはないみたい。しかし、急にここまで安くなって値段的にはお手頃かもしれない。

Amazonでは、4000円以上もする。高い。7000円くらいで売っているところもあり、もしかして人気なのかも。画像を見るとかなり小さい。
複数の部屋に置くなら(赤外線リモコンがそれぞれの電化製品に届くように)、先ほどの大きいタイプ1個買うより、こっちを2個買った方がいいのかもしれない。
しかし、Amazonでは高すぎる。


AliExpress.com Product - Xiaomi Mi Universal Smart Remote Controller Home Appliances WIFI+IR+RF Switch 360 Degree Smart for Air Conditioner TV DVD Player2127円(送料込み)
これはXiaomi製で、値段もそんなに高くないということから機能的にはBroadlink Mini3と似たような感じ。これ自体には温度センサーはついていないみたい(次に挙げる機種と連携で可能らしい)。
Xiaomiといえば、おしゃれで今っぽいスマホや電化製品を次々と出している中国のメーカーなので、なんとなくイメージとしてはいいのかも。
ちなみにこれはAmazonでは売っていない。

AliExpress.com Product - Xiaomi MI Smart Home Suite Multifunction Security Gateway Human Body Temperature and Humidity Sensor Smart home wireless switch 7217円(送料込み)大きな丸いのが本体で間接照明のように周囲が光るみたい(この本体だけ別売りで3333円程度)。そして温度センサー、人体感知センサー、ワイヤレス電源スイッチが含まれており、連携して使うことができるらしい。先ほどの黒い製品もこれと連携できるような。普通に買うなら、このXiaomiの製品が便利そう。個別にセンサーも購入可能なので。
ただ、ここまで高機能でなくてもいいという感じで探して見ると、 AliExpress.com Product - 2016 New Sonoff Wifi Switch Remote Control Smart Home Automation/ Intelligent WiFi Center for APP Smart Home Controls 10A/2200W734円(送料込み)。これは単純なWifi電源スイッチ。つまり電化製品とコンセントの間に挟んでスマホなどからON/OFFするというもの。赤外線リモコンはついていないので、エアコンなどをリモコン操作することはできない。照明器具のON/OFFに使うならこれでいいかと。値段はその分お手頃。これなら試しに買ってみてもいいかもしれない。本体左側にコンセント、右側に電化製品という感じで、ソケットとプラグをつないでおけば、他の電化製品に付け替えもできる。10Aまで大丈夫らしい。

Amazonでも売っているけど、やはり2倍以上の値段。



こんなのも売っている。これはすぐに使えて便利かもしれない。しかしプラグのピンは3本でアースつき。普通の家庭用コンセントに差すなら3Pプラグを2Pプラグに変換するアダプターも必要。


Raspberry Piで作ればいいのでは?:ここまで見てくると、ArduinoやRaspberry Piで自作できないかと考えてしまう。当然Wifiモジュールがあれば作ることはできるのだけれども、部品を集めると意外にお金がかかる。Raspberry Pi3なら、WifiもBluetoothも内蔵されているので、あとは赤外線LEDやリレーなどつければすぐに同じようなものが出来上がる。ネットにもたくさん参考例が出ている。しかし、Raspberry Pi3だけでも4000〜5000円くらいするので、それなら製品を買った方が早いかもしれない。もちろん、作ることを趣味として楽しむというのであれば、また話は別となるけれども。
AliExpress.com Product - 2016 New Original Raspberry Pi 3 Model B Board 1GB LPDDR2 BCM2837 Quad-Core Ras PI3 B,Ras PI 3B,Ras PI 3 B with WiFi&Bluetooth4243円(送料込み)

Arduino+ESP-WROOM-02で作る?:Arduinoなら、中国製クローンが数百円なのでそれほどコストはかからないはず。Arduinoの場合ならWifiモジュールも必要。そうなると、ESP-WROOM-02あたりが安くて便利そう。ESP-WROOM-02を使ったサンプルもネットではたくさん見かける。
AliExpress.com Product - ESP8266 serial WIFI module ESP-WROOM-02 AI Home 32Mbit FCC CE TELEC + Adapter plate420円(送料込み)Wifiモジュールがこんなに安く手に入るようになったのはすごいけど、これでもArduinoクローンとその他部品を合わせて予算的には1000円程度で作れるという感じでしょうか?

ESP-WROOM-02開発ボード(Arduinoボード不要):しかしよく調べて見たら、WifiチップであるESP8266にArduinoのプログラムが書き込めるらしく、ESP-WROOM-02開発ボード(MiniUSB端子ならびにUSBシリアル変換チップ付き)を買えば、これだけですぐにできるみたい。しかも安い。確かにこんなに安いのならあらゆる電化製品につけてもいいのかもしれない(AirMacExpress1台なら50台までつなげられるはず)。 AliExpress.com Product - V3 Wireless module NodeMcu 4M bytes Lua WIFI Internet of Things development board based ESP8266 for arduino Compatible343円(送料込み)、Arduinoコンパーチブル。つまり、以下のAmazon(スイッチサイエンス)で売っているものと同じらしい。値段を比較するとかなり安い。

日本だと、このくらいの値段になってしまうようです。ちゃんと技適マークもついています。
さらに探すと、同じもの(クローン?)がAliExpressでも売っています(以下:技適マークはついているけどこれが現物とは限らない)。

先ほどの343円のものよりは少し高いですが、それでもオリジナルよりはるかに安い。
これも、この基板上のESP8266にArduinoのプログラムを書き込んで、あとはスイッチやセンサーなどとつなげればいいだけ。それにしてもESP8266にプログラムを書き込めるのは知らなかった。単なるWifiモジュールだけなのかと思っていました。

ESP-WROOM-02開発ボードで何ができるか?:
個人的には、Bluetooth、Xbee、Arduino Wifiシールドなどは使ったことがあるのですが、ESP8266(ESP-WROOM-02)に関してはまだ使ったことがありません。
とりあえずできそうなこと(実際に使う前提で)、
・赤外線LEDでWifi学習型赤外線リモコン
・カメラモジュールをつけてWifi監視カメラ
・リレーやフォトカプラでWifi電源スイッチ
・温度や明るさセンサをつける
・何かと連動してメッセージなど送信
という感じでしょうか。

具体的には、
・エアコンのリモコン代行
・室温測定
・照明のON/OFF
・ペットの監視
くらいでしょうか。
これらが、1000円程度で可能であるなら、試してみてもいいかもしれません。

COSカメラOV7670:
特に、監視カメラについては、
AliExpress.com Product - New OV7670 VGA Camera Module Lens CMOS 640X480 SCCB w I2C Interface Auto Exposure Control Display Active 386円(送料込み)、このOV7670というCMOSカメラ(640x480px)が安く手に入ります。国内でパーツとしてのカメラを買うと3000円前後と結構高い。中古Webカメラを分解すればいいのだけれど(確か5〜6個持っている)、信号など色々解析するのが面倒。
このOV7670カメラを使ったサンプルを探して見ると、ArduCamというのがあって、ESP-8266用にGitにソースが出ています(これをArduino IDEのボードマネージャーからインストールすると、プログラムを書き込む際にESP-8266がボード選択可能になるみたい)。ということから、ESP-WROOM-02開発ボード+OV7670でWifiカメラがすぐに作ることができそうです。どちらも小型なのでかなりコンパクトなものが出来上がりそう。このカメラの問題は、FIFOという取り込んだ画像データを一旦貯めておくメモリがついているものとついていないものがあるようで、AuduCamのGitには、OV7670FIFOのソースもあることから多分なんとかなりそう。あとは、カメラ機能だけでなく、その他のセンサー、赤外線リモコン、フォトカプラなどもつけることができるかどうか?端子が足りるかどうか、メモリがいっぱいにならないかどうか?というあたりでしょうか。しかし、スペックを調べて見ると、
この↑最新型WEMOS D1mini Pro778円:送料込み)は16MBもフラッシュメモリがあるみたい。ProではないWEMOS D1miniでも4MB(314円:送料込み)、Arduino Unoは32KBしかない。ということは、Wifi、小型、パワフルそして安価ならこれを使った方がいい。
Proは少々高いけれども、4MBの方であればかなり安いので、一つにまとめて多機能にするよりも、モジュール化して、それぞれ別々に動いていてもいいかも。
それぞれ複数のIPアドレスに分かれてしまうけど、ブラウザ上ではiframeを使って一つのページに複数のURL画面をまとめて表示することは可能なので大丈夫なはず。ただ、個数が増えると電源の数も増えてしまうのが面倒かもしれない。
レーザー加工中の監視カメラ:なぜ監視カメラが気になるかというと、レーザー加工の際にカメラ越しに位置決めや加工中の様子を見ることができると便利(というか安全)と思ったからです。普段利用しているbCNCでもOpencvを使ったProbe Camera Alignmentという機能があって、OpencvをPythonにインストールするところまではしてあるのですが、まだ手付かず。今なら、スマホのカメラをPCへミラーリングすることは、AirPlayAirMoreなどでも可能なので、そんな感じで使ってもいいのですが、スマホとは別に小型のWifiカメラがあると色々便利そうです。ということから、CNCマシンには関係が薄いことですが(基板制作などできるかもしれませんが)、ESP-WROOM-02開発ボードあたりを中心にちょっとやってみようかなと思っているところです。
その他ESP8266利用のサイト:Arduinoとスマホが連携してからはあまり電子工作はしていなかったのだけれども、調べて見るとスマホ系Arduinoも進化していて、Blynkというサイトはかなり充実していました。


スマホ用アプリで操作画面を作ることが簡単にできるようです。さらには、ESP8266(あるいはArduino Unoなど)に書き込むソフトもスマホと連携してブラウザベースで行えるようです(以下)。

これがあれば、すぐにESP8266を使ったIoTデバイスを開発できそうです。スマホ+Wifiという環境、しかも以前よりも安価で簡単にどこででも作業できるというのがすごい。
もう少し調べて見ると、WEMOSというところから出ている以下のようなシリーズ。 AliExpress.com Product - free shipping d1 mini reley module + d1 w2812 rgb module +d1 ds18b20 module + d1 dht11 + di mini wifi module1495円(送料込み)ESP8266(Mini NodeMcu/Wemos)モジュール他、気圧(気温)、RGB-LED、MicroSDカード、温度、湿度(温度)、リレースイッチのモジュールセット。温度系が多いけど、遊ぶにはちょうどよさそう。モジュール単体でも200円前後で売っているので、必要なものだけ買ったほうがいいかも。簡単なIoTデバイスなら、500円くらいですぐに作れるという感じですね。
AliExpress.com Product - OLED Display SSD1306 64x48 0.66" Shield Wemos D1 Mini ESP8266 NodeMcuちなみこれは64x48pxのOLEDディスプレイ、568円(送料込み)ディスプレイだけあって他のモジュールよりは高いけど、それでもこんな値段。
画面は小さいけどそれなりに文字も見えますね。つい買ってしまいそう(遊び用)。

さらに、以下のような超小型リニアアクチュエータ(ステッピングモーター)を組み合わせれば、カメラの首振り機能など作れそうです。 AliExpress.com Product - Micro slide up motor vane screw 2 phase 4 wire stepper motor121円(送料込み)
いろいろできそうですが、IoTの使い方を検索すると、冷蔵庫で賞味期限切れの食品を教えてくれるとか、Amazon Dashのように足りなくなった洗剤を注文してくれるとかあるけど、家ではそこまでは必要ない感じ。オフィスなどで定期的に消耗品を購入しなければいけない時は便利かもしれません。

リマインダー機能で言えば、SiriやAmazon Echoのような音声認識でのやり取りの方が面白そう。カップラーメンの3分間であっても、従来は時計やキッチンタイマーを使っていたけど、最近はSiriを通してリマインダー登録してます。牛乳を買った時も賞味期限を登録しておけば教えてくれるので、短期長期関わらずスケジュール上に登録しておけばいいという感じです。

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やモジュールのインストール方法:(事前準備)
Pythonのインストール方法
Pythonの有無/バージョンを確認するには
Pythonのディレクトリを調べるには
Pythonのバージョンを選んで起動する
pipやpyserialのモジュールの有無を調べる
pipをインストールする(Anacondaを使わない場合)
モジュールのインストールが上手くいかない場合
pyserialのインストール
pyserialがインストールされているか確認
bCNCのインストールや起動方法:
bCNCのインストール&起動
bCNCとArduino Unoとの通信開始
「Terminal」タブでGコード入力内容やエラーを確認
「Command:」欄にコマンドを手入力する
画面の調整
bCNCの利用方法:
bCNCの使い方(利用例)
bCNCの日本語化
ホーミング($H)について
リファレンス点復帰(G28、G30)
いつものやり方(ホーミングなし)
現在のGrbl設定
オーバーライド機能
.bCNC(不可視ファイル)で設定する場合
Pendant機能(スマホで遠隔操作)
Webカメラを使う場合
タブ自動配置機能
パスが選べないとき
オフセット(工具径補正)加工
アップデート確認
その他:
起動アイコン・ランチャー
PyenvとAnacondaを導入した場合
「conda activate py27」へ変更
アイコン画像のつくりかた(Mac)


Pythonのインストール方法:
Macの場合すでにApple-Python(root権限)がインストールされていますが、できればローカル環境に新たにインストールしたほうが無難です。
bCNCのインストールの仕方に書いてあるようにWindows/Macともにインストールできますが、まずはAnacondaというPythonパッケージ管理システムをインストールするのがおすすめです。Anacondaを使うとPythonやその他のモジュールなどを設定した環境内にインストール/アップグレードすることができます。AnacondaにはNavigatorというGUI操作でインストールやアップグレードができる機能もあるのでターミナルでコマンドを打ち込む必要もありません。またVSCODEやJupyter Notebookもボタンひとつでインストールできます。
AnacondaのGUI画面

Pythonには2.7系と3.X系がありますが互換性はないので、bCNCを使うならばPython2.7をインストールする必要があります。最近は3.X系が多くなってきたので面倒なのですが、これもAnacondaがあれば両方インストールしておいて必要に応じて簡単に切り替えることができます。
2020年4月以降、Python2がサポート切れとなったのでPython3を使う必要があります。
bCNCのwikiではpipを使用したインストール方法が紹介されていますが、以下はAnacondaをでインストールする場合についてです。個人的にはAnacondaを利用したほうが便利だと思うので。

インストールの流れとしては:
Anacondaのインストール(2021年現在Python3.8がインストールされる)。
・デフォルトだとbaseというAnaconda環境ができあがり、その中のPythonを使用することになる。
・Anacondaをインストールした場合は、pipを使ったインストールの代わりに必要なモジュールは「conda install 必要なモジュール」でインストールする。
・コマンドプロンプト、ターミナルを使って、pyserialをAnacondaでインストールする(conda install pyserial)

Macに入っているルート権限のPythonだとトラブルが起きた場合修復が面倒になるので、Anacondaなどの設定したローカル環境にPythonをインストールしたほうが何かと便利です。
Windowsの場合はいずれにせよ新たにPythonをインストールすることになるため、Anacondaをインストールしたほうがいいと思います。


Pythonの有無/バージョンを確認するには:
ターミナル(Mac)あるいはコマンドプロンプト(Win)を開き、
python -V
を入力。
Python 3.8.5
と表示されれば、Python3.8.5がインストールされていることになります。
*Anaconda利用の場合は、その環境内のPythonのバージョンが出てきます。


Pythonのディレクトリを調べるには:
which python(あるいはwhere python)
を入力。
C:\Users\username\anaconda3\python.exe(Windowsの場合)
/Users/username/opt/anaconda3/bin/python(Macの場合)
が表示されれば、このディレクトリのPythonが使われます。


Pythonから起動する:
Macの場合はダウンロードした「bCNC-master」フォルダ内にある「bCNC」ファイルをダブルクリックして起動することもできます。Windowsの場合は「bCNC.bat」をダブルクリックして起動。

bCNC-masterフォルダをDownloadフォルダ内へダウンロードした場合は以下のディレクトにあるはずです(Macの場合)。

/User/username/Downloads/bCNC-master

「bCNC-master」フォルダ内には「bCNC.py」ファイルがあるはずなので、それをターミナル(コマンドプロンプト)を使ってPythonで起動します。

python /User/username/Downloads/bCNC-master/bCNC.py


尚、起動アイコンのつくりかたは下のほうに書いてあります。


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

Anacondaの場合は
conda list

pipをインストールする(Anacondaを使わない場合):
まず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
という感じになります。

インストールする場合に管理者権限パスワードが要求される場合は、ルートにインストールしているということなので、できればルートではなくユーザー以下のディレクトリかAnacondaなどで設定したローカル環境にインストールしたほうがトラブル回避につながります。

Anacondaであればこういったトラブルには遭遇しないかと思いますが、たまにバージョンの異なるモジュールをインストールしてコンフリクトを起こす場合もあります。Anacondaであれば、つくった環境ごと消去し再度環境をつくり直せばいいので簡単です。


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

Ancondaの場合は、
conda install pyserial


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

Anacondaの場合は、
conda list


bCNCのインストール&起動:
bCNCのこのページの緑色のボタン「Clone or download」から、「Download ZIP」をクリック。

適当なところにダウンロードし、解凍すると「bCNC-master」フォルダが出来上がります。「bCNC-master」フォルダを開き、Macなら「bCNC」、Winなら「bCNC.bat」をダブルクリックで起動。

ダブルクリックしても起動しない場合は、ターミナル(コマンドプロンプト)を起動して、以下のようにPythonを使って直接プログラムを立ち上げることもできます。

python C:\Users\username\Downloads\bCNC-master\bCNC.py(Winの場合)
python /User/username/Downloads/bCNC-master/bCNC.py(Macの場合)
*上記usernameは各自のユーザー名。

毎回この方法で起動するのが面倒という場合は、下の方に書いてある「起動アイコン・ランチャー」の作り方を参考に独自の起動コマンドを作成するといいと思います。

Gitを使ってのインストール方法などについてはこちらへ(本家)


bCNCとArduino Unoとの通信開始:
Arduino UnoとUSB接続しbCNCを起動したら上部「File」タブを押す。
Serial内のPort:でArduinoのポート選択、Baud:115200、Controller:Grbl、「Open」ボタンで接続開始。
Status:Alarmになったら、上部「Control」タブに切り替えて(以下画面)、
「Unlock」で解除(あるいは$Xをコマンド入力)。そうすると、Status:Idleに変わります。「Unlock」しないと以後の操作ができないので要注意。
「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などと直接打ち込んだほうが早いかもしれません。


画面の調整:
ラズパイ用の小さな画面に表示している際は画面がはみ出てしまうことがありますが、以下のように画面内の表示エリアを調整すれば大丈夫な場合もあります。
「State:」はクリックすれば折りたたむことができ、下の「Control」や「Command:」の表示エリアが少し上にあがります。また、中央の画面境目を左右に動かすことで、左右画面幅を調整することができます。


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マシンは自分の位置(MPos:マシン座標)を把握できるようになりますが、ホーミングサイクルをしなくてもWPosを基準にして加工作業はできます。


リファレンス点復帰(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
を入力し不可視ファイルを見えない設定にします。

Windowsにおける不可視ファイルの表示/非表示に関しては、こちらが参考になるかと

追記(Mac用):
もっと簡単なのは、ファインダーを開き、左側のリスト内にあるホームディレクトリを選択し、「command+shift+.(コマンド+シフト+ピリオド)」で可視/不可視に切り替わります。


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


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

関連:bCNCのIPカメラ化(実験段階)


タブ自動配置機能:
ルーターやフライス加工の際に、加工後半で部品が材料から完全に切り離されて、部品そのものの固定が不安定になってしまう時があります。そうならないように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でアップデートできるのかもしれませんが、そのままサイトからダウンロードした方が早いかもしれません。
常に開発中(改良中)のオープンソースなので、微妙にエラーなどでたりする時があります。調子が悪かったり、きちんと機能しない部分があるときは、アップデートした方がいいかもしれません。


起動アイコン・ランチャー:
テキストエディタで、「bCNC-launcher.sh」などと名前をつけたファイルをつくり(「.sh」の拡張子は省略可)、中にはシェルコマンドを書いておきます。

#!/bin/bash
cd `dirname $0`
python bCNC.py

シェルコマンドとしては、このコマンドファイルが置かれているディレクトリへ移動して、そこでPythonでbCNC.pyを起動という感じです。ちなみに、「`dirname $0`」に使われている「``」はバッククオート(Shift + @)で、「''」のシングルクオート(Shift + 7)とは違うので要注意。
記入したらファイルを閉じて、このファイルに実行権限を与えるため、

chmod +x bCNC-launcher.sh

と打ち込みます。
そして、このコマンドファイルを「bCNC-master」フォルダ内に入れておきます。あとはエイリアスをつくってデスクトップやDockに配置しクリックすれば起動するようになります(Macにおけるアイコンのつくりかたについては次の項目に書いてあります)。


PyenvとAnacondaを導入した場合:
PythonでプログラミングもするためAnacondaを導入したことから、

source activate py27
python bCNC.py

などとPython2.7の環境に切り替えてから起動するときもあります(「py27」はAnaconda内につくった任意の環境名)。しかしながら、pyenvとAnacondaの両方を導入すると「activate」が競合してしまうので以下のようなシェルスクリプトとなります。

#!/bin/bash
source ~/.pyenv/versions/anaconda3-5.1.0/bin/activate py27
cd `dirname $0`
python bCNC.py

Anacondaの仮想環境「py27」に入り、このスクリプトのあるディレクトリへ移動し、そこでpythonにてbCNC.pyを起動させるという感じです。pyenvのコマンドである「activate」と競合してしまうため、Anacondaの「activate」のフルパスを書き込んでいます。解決方法は以下。


「conda activate py27」へ変更:
このためなのか、conda4.4以上からは仕様が変わったようで、「source activate py27」と入力するよりも「conda activate py27」の使用が推奨されているようです。その場合は、「.bashrc」もしくは「.bash_profile」に書いてあるパスを書き換える必要があるようです(こちらに説明がかいてあります)。
試してみたところ、「.bash_profile」に(「.bashrc」には書かない)、

export PYENV_ROOT=$HOME/.pyenv
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
. $PYENV_ROOT/versions/anaconda3-5.1.0/etc/profile.d/conda.sh
conda activate base

を書き込んでみました。5行目の「conda activate base」を書き込むと、Anacondaの「base(ルート)」環境に入った状態でターミナルが起動するので、それが嫌ならなくてもいいかもしれません。
そして環境を変えるには「source activate py27」のかわりに、

conda activate py27

を入力します。
これでpyenvとの競合がなくなったと思います。
またアイコン用のシェルスクリプトなら、

#!/bin/bash
. ~/.pyenv/versions/anaconda3-5.1.0/etc/profile.d/conda.sh
conda activate py27
cd `dirname $0`
python bCNC.py

とすればいいと思います。


アイコン画像のつくりかた(Mac):
任意の画像をアイコンにするには、画像ファイルをPreviewなどで開き、画像をセレクトオールでコピーしておきます。
そして、先ほどつくったコマンドファイルを右クリック「情報を見る(command+I)」で表示させ、左上にあるアイコン画像をクリック選択してペーストすればアイコンとして表示されます。


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

2017年1月12日木曜日

Grbl1.1について(2017年版)


このブログでは、3軸CNCマシンにArduino+Grbl+CNCシールドを使っています。理由は、Macでも可能であること、そしておそらく最も安価で手っ取り早く自作できるということ。Arduino+Grbl以外にも、Smoothieboard、TinyG、LinuxCNC、Mach3などあります。これらは、もっと本格的な制御も可能(4軸制御など)ですがやや高価であり、板状の材料を2D加工する程度ならArduino+Grbl(3軸制御)で充分という感じです。

Grblについては、2016年12月にGrbl1.1に本格的にバージョンアップし、まだ3軸制御ではあるのですが、より本格的な仕様に近づいたという感じです。さらには、レーザー機能も充実してきたので、それに伴いGrbl0.9jからGrbl1.1に切り替えました。これまでは、Grbl0.9jでの内容を書いてきましたが、2017年になってやや情報も古くなってきたこともあり(情報もブログ上に散在していることもあり)、再度まとめ直していきたいと思います。

以下は、Grbl1.1に合わせて情報を編集し直したリストです(一部編集中)。

Arduino+Grbl1.1:まとめ(2017年版)
最新版Grbl1.1のバージョンアップ内容について
Grbl1.1のインストール方法
電気/制御系統の設定/動作確認について
Grbl1.1の$コマンドやGコードについて

Grbl1.1レーザーモードについて
Grbl1.1レーザーモードの実験(設定など)
レーザー用ゴム板でスタンプ制作(Grbl1.1+Laserweb3使用)

*Grbl0.9とGrbl1.1のピン配置は同じなので、CNCシールド等の接続に関してはGrbl0.9と同じです(2016年の記事を参考にしても大丈夫だと思います)。
*Grbl0.8はGrbl0.9や1.1とは大きく内容が異なるので、いまさら使わないほうがいいと思います。いくつかのG Code Senderは、もうすでにGrbl1.1に対応しているので、2017年以降であれば、無理にGrbl0.8や0.9を使わずに、素直にGrbl1.1に移行したほうがよさそうです。

また、他の情報や仕様変更、バージョンアップなどについての情報があれば、コメント欄に書いて頂けると助かります。よろしくお願い致します。

現状としては:
Arduino+Grbl1.1+CNCシールド+DRV8825
Inkscape(2D図面描画)
Jscut(ルーター用オフカット設定:Gコード生成)
Laser Tool Plug-in(レーザー用Gコード生成)
Laserweb3(レーザー用Gコード生成、Gコード送信)
bCNC(Gコード送信)
という感じです。
*部品や材料調達は、ほぼAliExpress(もはやAmazonはあまり使わない)。
*CNCシールドに関しては、最新版V3.51(以下)がオススメです。Amazonなどで中国製の格安CNCシールドが購入可能ですが、V3.0(旧型)なので一部配線を入れ替える必要があります。簡単な作業なので安価なV3.0でも問題ないのですが、トラブルを避けるならば最新版V3.51のほうがいいかもしれません。
AliExpress.com Product - New Development Board CNC Shield V3.51 for Arduino 3D Printer Micro Controllers GRBL v0.9 Compatible Uses Pololu Drivers最新版CNCシールドV3.51(2,084円:送料込み)


多軸制御:Grbl 1.1(Arduino Uno)では3軸までしか制御できませんが、以下のようなArduinoMega用多軸ファームウェアを使用すれば、4軸目以降に回転制御機構を追加できそうです。ArduinoMega:4軸ファームウェアArduinoMega:5軸ファームウェアArduinoMega:6軸ファームウェアArduinoMega:6軸ファームウェア(Android)
AliExpress.com Product - CNC Rotary A Axis chuck 50mm activity tailstock for CNC Router Engraver Milling Machine
14,862円(送料込み)、回転軸用パーツ

2016年12月21日水曜日

レーザー用ゴム板でスタンプ制作:Laserweb3使用

以前から英字スタンプをつくりたいなと思っていて、市販されている英字スタンプ(安価)も買ってみたのですが、もっとオリジナルなスタンプをつくるには、レーザ用ゴム板をレーザー加工すればいいということが分かったので、さっそく材料を注文してみました。
検索してみると、A4サイズのレーザー用ゴム板(3mm厚)で、国内なら1500〜2000円程度。
国内だと印材館(上画像)で1540円(送料250円)。
品質の違いなのか。もう少し高いゴム板もあるようです。
Amazonでは売ってないようなので、ためしにAliExpressで探すと、
AliExpress.com Product - Free Shipping Laser Rubber Sheet 297*210*2.3mm A4 Size Orange colour for laser Engraving Engraver Stamp MakerこれはA4サイズ2枚で2317円(送料無料)。極端に安いわけでもない。

たかがA4サイズのゴムシートで1000〜2000円というのは、高いような気がしたのですが、レーザー用なので普通のゴムシートとは違うのかもしれないということで、AliExpressから1枚(1179円送料無料)だけ購入してみました。

届いたレーザー用ゴム板はこんな↑感じ。A4サイズ210x297mm。ノギスで厚さを計測すると2.3mm。一見赤い普通のゴムシート。表裏の違いはなさそうです。

動画で検索してみると、こんな感じで加工しています。おそらくこれはCO2レーザーだと思うのですが、レーザーで溶けるというよりも削っているような感じです。粉のようなものが出ています。ダイオードレーザでもこんな感じになるのか、今回試してみます。
当然ダイオードレーザー(5.5W)だと弱そうなので出力はMAX値で。ただフィードがどのくらい必要なのか?やってみないことには分からないという感じ。

スタンプにする文字画像を用意(Inkscape):ラスタ加工用
文字のスタンプなので今回はInkscapeで描画します。
まず普通に黒い背景を矩形で描画。そしてその上に文字を白色で書いて重ねます。
スタンプなので、当然左右反転(Object>Flip Horizontal)した画像にします。
そしてこの画像を、File>Export PNG Image...でPNG画像として出力保存します。解像度設定は1600dpiで高めにしておきます。
文字をパス化せずにPNG画像にしたのは、レーザーカット加工ではなくラスタ加工(レーザー彫刻加工)するためです。動画にもあったように、ラスタ加工では、細い水平線を何本も照射させます。
そうするとこんな感じのPNG画像ができあがります。上半分(左右反転してない方)は必要ないので下半分だけ使います。スタンプ上での寸法は約40x7mmです。

黒い背景にレーザーが照射されて削れるというわけです。つまり文字のところが残って、スタンプするときは文字にインクがつきます。
これで画像の準備はOK。

Laserweb3の準備:
今回はLaserWeb3を使ってみます(Laserweb4もありますが、たしかまだα版なので)。
Grbl1.1に対応になったので、まずは以前インストールしたLaserweb3をアップデートする必要があるかもしれません。というか、ここにGrbl1.1は必須でアップデートしろと書いてあります。

たしか以前インストールしたとき、Terminalで手入力だったので、慣れてない人は少し抵抗感があるかもしれません。Termnal(Mac)やコマンドプロンプト(Win)の操作が分からないという人は、使い方を検索してみて下さい。
各OSごとのインストール方法はこのサイト右側に書いてあるので、その通りやれば大丈夫かと。Macならここ、Winならここ

Laserweb3をインストールする前の準備(Macの場合):
・古いnode.js(version 0.12など)はアンインストールしておくこと
・かわりにNode.js 6 LTSをダウンロード(https://nodejs.org/en/download/
・Google Chromeをインストールしておくこと
・Git for OSXをダウンロード&インストール(https://git-scm.com/download/mac
   Git for WinやLinuxの場合はこちらから

Laserweb3のインストール(Macの場合)
・ターミナルを開く。
・ユーザーrootにインストールするといい(/Users/username/Laserweb3という場所になるように)、通常はターミナルを開いた段階で、このディレクトリにいると思うのでそのままでOK。
・ターミナル上でgit clone https://github.com/LaserWeb/LaserWeb3.gitを入力
・続いて、cd LaserWeb3
・さらに、npm install(ここでシリアルポートのエラーが出るけど無視)
これでインストールは終了。

アップデート方法:
もし、アップデートが必要ならLaserwebを立ち上げる前に、
cd laserweb3
で、laserweb3のディレクトリに移動し、
git pull
を入力(ここに書いてあります)。
もし、すでにアップデートが済んでいるなら、
Already up-to-date.
と、表示されます。

Laserweb3の起動:
・ターミナルを開く。
cd laserweb3を入力(Laserweb3フォルダ内のディレクトリへ移動)。
node server.jsを入力(サーバを立ち上げる)
そうすると、ターミナル上には以下の画面が出てきます。
この画面↑にも書いてあるように、
1.Google Chromeブラウザを立ち上げる。
2.Chromeのアドレスにlocalhost:8000を入力するか、上画面に書いてあるアドレスhttp://192.168.3.2:8000/(このアドレスはルータ等の設定によって各自異なる)を入力。

特に問題なければChrome上ではLaserweb3の画面が出てきます。
これで、ようやくLaserweb3の用意ができました。

画像をLaserweb3に取り込む:
まず青いOpenボタンを押して先ほどInkscapeでつくった画像を取り込みます。
画像解像度は高めだったので、Laserweb3の作業グリッドからはみ出ています。
なので、サイズを調整しますが、同時に色々な設定もしていきます。

CNCマシンの設定:
まず、画面左側にあるSettingsタブをクリック。そして青いSIZEタブの設定項目から入力していきます。
X-Length、Y-Lengthにはマシンの作業エリアの値を入れておきます。
Laser Beam Diameterは、今回の場合ラスタ加工するので0.1mm(かなり細め)にしておきます。
Cutting Mat Thicknessは3mmで(これは何なのか不明?)。
Air Assist NozzleはないのでDisable。
その下の、Default Import DPIは、
それぞれ96、96、92、600という感じで、グレーで数値が表示されている値(多分デフォルト値)を入れておきます(入力するとグレーが黒文字へ変わります)。そして下の緑色Saveボタン。
上の方に(NB: Page needs a refresh for these settings to take effect!)と書かれているので、一度ブラウザで再読み込みしないと変更された数値は反映されないようです。反映(設定)されれば、赤文字の! Incomplete Configが消えます。ただし、読み込んだ画像は消えてしまうので、再読み込みが必要。
(Required)は入力必須なので、何かしらの値を設定入力しておきます。

次に、また上に戻って青いGCODEタブ内の設定。

Concatenate Raster X Movesは、ピクセルが同じグレースケール値の場合長い線につなげるという機能のようですが、SmoothiewareではDisableにしろと書いてあるので、おそらくgrblでも無理だろうからDisable。
Start G-Codeには、加工前の動作を設定できるようです。例としてマシン原点に戻るなどグレーで書いてありますが、今回はここは必要ないかと。(Optional)なので入力しなくてもOK。
つぎにLaser ON Command、ここはGrblのLaser ModeのM4を入れておきます(Grbl0.9までならLaser ModeがないのでM3)。加工前にGrbl設定でLaser Modeをオン($32=1)にしておく必要があります。
そして、Laser OFF CommandはM5。これはGrbl1.1も0.9も共通。
もう少し設定項目は続くようなので以下へ。


PWM Max S valueは、レーザーの最大出力値。Grblでは1000は最大値なので1000を入力。
Homing Sequenceは$Hで、Grblのホーミングサイクル(機械原点移動)。
End G-Codeは、M30。加工のGコード最後につける加工終了のコマンド。
Travel Movesは、単位がmm/minではなくmm/sなので要注意。G0(加工していないときの移動速度)なので画像では5を入力しましたが、5mm/s=300mm/minなので遅すぎかも。Grbl内では1000mm/minに設定したので、それにあわせるなら16mm/s。試運転なのでちょっと遅めで10mm/sあたりに変更しておきます。
その下二つはレーザーテスト用の設定。(Optional)なので空白のまま。
緑のSaveボタンを押して、ここの設定は終了。

次の青いダブTOOLはあまり設定内容もないので、以下のまま。

さらにつぎの青いBACKUPも特になし。
重要なのは最初のほうに設定したSIZEGCODEタブの二つでしょうか。
大体設定できたので、つぎは先ほど取り込んだ画像を再取り込みします。

画像調整とGコード生成:
取り込んだ画像が大きすぎるので、解像度など変更しながらサイズ調整します。
左側のCAMタブをクリックして、画像名(この場合stamp001.png)をクリックすると以下のように設定可能な画面になります。

ここで、Bitmap Resolutionを変えていくと、画像の大きさも変化します。画像の寸法が出てきてくれるので、だいたいこんな感じというところまでDPIを調整します。今回は幅35mm、高さ6mmくらいまで小さくします。
Raster: Proportional Feedrateも単位はmm/s。今回試してみないと分からないので、一応かなり遅めで4mm/s=240mm/min(上画像では20mm/sになっていますが)に設定してみます。明暗でスピードが変えられるようですが、どちらも同じ設定にしておきます。おそらくレーザー照射されるDarkのほうが遅く設定するといいとは思いますが、これも今回は様子見で。
Laser Power Constraintsは0〜100%の設定。スタンプなので白黒となるため。
Position Offsetは適宜入力して、材料ぎりぎりだと加工が難しくなるので2mmほど余白をつけておきました。入力すれば、右画面の画像もその分移動してくれます。
こんな感じで、上にある緑色のGenerate G-Codeボタンを押して、Gコード生成。

Gコードによるパスを確認:
Gコードが生成されれば、右画面上のG-Code Viewタブで、Gコードのパスだけを見ることができます。

ラスタ加工なので水平のパスだけで文字が浮かびあがっています。Settings>SIZEのところでレーザーの直径を0.1mmに設定したので高さ6mmだと60本ほど線があることになります。つまり60回線を引いてこの画像を加工するということになります。幅35mm×60本=2100mm、加工スピードを4mm/sに設定したので2100/4=525秒、つまり9〜10分かかるということになります。大丈夫なのか少し心配です。加工面積は小さいので、失敗しても材料がそれほど無駄になるというわけでもないです。
ここで設定を考慮しなければいけない点は、
レーザーの直径:0.1mm(小さすぎるか?0.2mmだと荒すぎか?)
加工速度:4mm/s=240mm/min(ダイオードレーザーだと加工に充分な速度?)

作業開始:
Bluetooth経由でCNCマシンと通信しようとしましたが、なぜかエラーがでてしまいます。どうやら上手くつながらないみたい(Bluetooth対応のnode.jsもあるようなので、それを使えばいいのかもしれませんが、もう少し調べてからチャレンジしてみます 追記:その後アップデートしてみたらBluetoothでもつながりました)。
なので、今回はCNCマシンと直接USB接続で、このままLaserWeb3でGコードを送りつつ加工作業もしてみました。5.5Wのダイオードレーザーです。
今回はGrbl1.1のLaser ModeのコマンドM4でレーザー出力するので(Laserweb3内でもM4で設定済み)、GrblのレーザーモードをON($32=1)にしておく必要があります。
これはちょうど作業が終わったところ。やはり計算通り約10分かかりました。0.1mmずつの走査線なのでけっこうかかります。ランバーコア合板を台にして、その上にレーザー用ゴム板をただのせているだけです。両面テープ等使って固定した方がいいとは思いますが、今回はテストなのでそこまではしていません。
加工中も気になっていたのですが、レーザーが当たった部分は黒くなっています。ただ表面が焦げているような感じ。加工中は多少焦げ臭い匂いもしましたが、煙がでるほどでもなく、気にしなければあまり大した匂いでもない感じでした。

これが、加工直後の状態。幅35mm、高さ6.35mm。
左のほうは指で少し触ってしまったのですが、動画で見たような白い粉がでてきました。ただ黒く表面が焦げただけかと思っていましたが、もしかすると動画で見たような感じに上手く削れているかも。
ということで、ここでエアーダスター(エアースプレー)で一気に黒い焦げも含めて吹き飛ばしてみました。

そうすると、やはり白い粉のようなものがでてきて、ティッシュでも最後拭きましたが、こんな感じになりました。見た目からすると、上手くいっている感じ。やや彫りが少ないかなとも思いましたが(目測では0.3mmくらいの彫り)、文字はきれいに浮き出ているし、焦げているという感じでもないので、これでOKということにしました。
さすが機械でつくったという感じです。手彫りならこんなに正確には彫れません。

シートから切り取って、木片に両面テープで貼ってみました。文字を囲んだ枠の部分は必要ないのですが、今回はつけてみました。
さっそくスタンプしてみます。100均で買った水性黒インクのスタンプ台です。
設定なども勘で、初めてつくったわりには上手くいきました。やはりこのレーザー用ゴム板は、特殊な合成ゴムのようで、レーザーに対してただ焦げたり溶けたりするわけではなさそうです。なぜ白い粉が出てくるのか気になります。

幅35mm、高さ6.35mmの小さなスタンプですが、やはり0.1mmずつ線を引いていったほうが、このような文字などはくっきりすると思います。当然解像度が低ければ、文字のアウトラインももう少し曖昧になってしまうでしょう。
ただ、加工フィードに関しては5.5Wダイオードレーザーを使っているため(あまり強力ではないので)、これ以上速くすると彫りが浅すぎになってしまうかもしれません。今回は4mm/s=240mm/minでしたが、3mm/s=180mm/minなどもうすこし遅くてもいいかもしれません。そうすれば0.5mmくらいは削れるかもしれません。しかし、スタンプなのでそんなに凹凸がなくても何とかなるとは思います。
これからのシーズン、年賀状などにスタンプを使うのはいいかもしれません。

それからLaserweb3に関しては、ブラウザ上のアプリ一つでGコード生成とGコード送信もできるのでけっこう便利です。現在α版であるLaserweb4にも期待できそうです。

追記(スマホからホストへアクセス):
その後、Laserweb3をアップデートしてBluetooth接続可能となりました。MacBook Proの内蔵BluetoothでCNCマシンに取り付けたBluetoothモジュールと通信しているのですが、同時にスマホからも通信できないかと、スマホ上のChromeで192.168.3.6:8000にアクセスしてみると、普通に操作できました。スマホ上でもシリアルポートを選択して接続するのですが、MacBook Pro上で選択しているポートでOKでした。
こんな感じで画面の構成が多少崩れてしまうのですが(PCモードで表示/拡大表示も可)、ジョグボタン操作は可能なので、離れた位置にあるMacBook Proから設定やメインの操作などをして、CNCマシン付近ではスマホを使って加工原点出しができます。
つまり、bCNCのPendant機能のような使い方が可能というわけです。Laserweb3の場合は、Gコード生成とGコード送信が一つのソフトで可能なので、レーザー加工するならこれが一番便利かもしれません。

人気の投稿