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

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



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


ラベル ワイヤレス の投稿を表示しています。 すべての投稿を表示
ラベル ワイヤレス の投稿を表示しています。 すべての投稿を表示

2017年2月2日木曜日

Xbox360ワイヤレスコントローラーでジョグ操作(Mac版)

ゲーム用ジョイスティックで、CNCマシンのジョグ操作をするというのをネットでたまに見かけます。確かにパソコン以外にもジョグ操作できる装置があると便利です。
現状ではbCNCのPendant機能でWifiを介してスマホから遠隔操作可能ですが、たまたま昔購入したXbox360ワイヤレスコントローラー(Xbox本体は持っていない)があるのを思い出して、試しにできるかどうかやってみました。
ワイヤレスなのでCNCマシンのペンダントとしては便利そう。右側のドングルをMacBookにUSB接続して使います。MacだとMicroSoftのXboxとは相性悪そうですが、ネットで調べるとMac用のドライバもいくつかありました。Windowsならかなりあるはず。


いまだにAmazonでも売っているんですね。XboxOneというのは新しいタイプでしょうか。意外に高い。

ちなみにAliExpressでCNC用リモートペンダントを探すと以下のような感じ。
AliExpress.com Product - Free shipping Hot sell cnc part Manual Pulse Generator Ncstudio CNC Wireless Handwheel CNC RF Electronic Remote Pendant8226円(送料込み)、これは比較的安い方。大体は1万円以上。Macで使えるかは不明(たぶん無理)。Mach3用が多い。

Mac版ジョイスティック用ドライバ+キーマッピングソフト:
Xbox360コントローラーを認識させるドライバはあるのですが、キーマッピングでXbox360コントローラーをマウスやキーボードとして使ったり、さらには複合的なキー入力の使い方ができるものとなると少ない。それと、結構古いコントローラーでもあるので、ドライバも古かったりして現在のOSバージョンに対応していないなど。

360Controller
ここは現在でも更新してありGitにソースが置いてあることからも良さそう。

しかし、目的としていた複雑なキーマッピングまではできないみたい。オープンソースなので、ファイルを開いてコードを改造すればいいのかもしれないけど、もう少し探してみることに。
普通にゲームするには問題ないと思う。

Joystick Mapper
これは有料(600円)、説明など見る限りいろいろできそう。
プレステのコントローラでもいいかもしれないけど持っていない。

bCNCのPendant機能でスマホから遠隔操作できるので、必ずしも今回Xbox360コントローラで操作する必要もないということで、有料ソフトは保留。
しかし、無料ソフトだとやはり単純なものしかない。

次に見つけたのはこのソフト「ControllerMate」。無料ソフトだとらちがあかないので試しに、この有料ソフト($24.95)をダウンロードしてみました。おそらくトライアルか無料利用だと何かしらの制限があるはず。
説明を見る限りは、かなり複雑な設定ができるみたい。しかもアップデートも最近までされています。
こんな感じで、単純なモジュールを線でつないで複雑化していくタイプ。期待できそう。
ということでインストールして試してみました。

ControllerMateの使い方:
まず、Xbox360コントローラーには2個のアナログスティックと十字キー、そしてたくさんのボタンがあります。今回はせいぜい、
・アナログスティックでXY軸の移動(G91X10、G91Y10など)
・ボタンでロック解除($X)
というくらいでしょうか(以下)。

当然ホーミング($H)や加工原点復帰(G92X0Y0Z0)なども設定していいのですが、まだ本気で使うつもりもないので、とりあえず動けばいいという程度で。というのも、今まで通りbCNCのPendant機能で十分間に合うので。

この手の入力の場合、ボタンを押すと「$X(リターン)」という設定ができないといけない。通常のゲームパッド用ソフトだと、「Start」ボタン=「s」キー(キーボード上の)という1対1対応になっていて、連続した任意の文字列を入力設定できないものが多い。しかし、このControllerMateは、文字列も入力できるらしい。こんなのを探していました。無料でも一応使えるようです。対応機種コントローラーはここに書いてあります。Xbox以外にもたくさんあります。

設定方法:
まずプロジェクトの開始は、右側にあるProgramming Itemsの歯車マークのプルダウンメニューで、Create Programming Pageを選択。

そうすると、以下のようにNew Page1が出来上がり、グリッドの作業エリアが出てきます。

次に、接続してあるコントローラーのジョイスティックを動かすと、右側にあるモジュールが光って、対応するジョイスティックやボタンがどれなのかわかります。一つのジョイスティックはX軸とY軸の二つのモジュールに分かれてあります。それぞれをドラッグして作業エリア上にのせます。

最終的には、X軸だけをみると以下のようになります。それほど複雑ではありません。というかやっていること自体が単純なので。左に倒すと「G91X-10(リターン)」、右に倒すと「G91X10(リターン)」という内容です。
これらのモジュールは作業エリア上で右クリックをするとタブが出てくるので、その中から選んで配置していきます。以下から、それぞれのモジュールの説明です。

「Controller X-Axis」:
まず、これがコントローラのボタンやジョイスティックのどの部分かというモジュール。これに機能のモジュールを色々ぶら下げて行く感じ。コントローラーを接続しないと右側のリストに出てこないかもしれません。

「Range(ジョイスティック範囲設定)」:
これは、ジョイスティックをどのくらい倒すと(条件)どうしたいか(結果:出力)という入力範囲の設定(条件設定)。右クリックで以下のタブから選ぶと作業エリアに出てきます。

作業エリア上の「Range」モジュールを選択して画面右にあるInspector画面で内容を設定します。
これは、ジョイスティックX軸:左側に倒した時の設定です(縦:Y軸方向に動かす設定はまた別のモジュールでする必要があります)。左に倒したら、CNCマシンのヘッドも左に動くという前提とします。倒した量によってスピードが変わるようにしてもいいのですが、このジョイスティックではあまり細かく操作できないので、倒したら「G91X-10」で左に10mm移動するコマンドを一回投げるという設定にしようと思います。20mm動かしたいときは2回倒すということです。
青い水平バーで反応する範囲を調整します。中央付近は無反応にして、左側-32768〜-10000の時だけ反応する設定にしておきます。このジョイスティックはぴったり中央で止まることがないので、かなりゆとりを持って中央の無反応範囲をとっておきました。
同じように、今度は右側に倒した時の設定も必要になります。そのため「Range」モジュールが二つあります。
もちろん倒した量によって1mm、もう少し倒すと5mm、めいっぱい倒すと10mmという感じで細かく範囲を設定してもいいとは思います。そうすると、「Range」モジュールだけでも3つ、両側も含めて合計6個を「Controller X-Axis」モジュールにつなげることになります。ただ、無料だとモジュール数の制限があって、そこまで複雑化するには有料にしないとダメかもしれません。

「T(テキスト出力)」設定:(追記:改良策「Keystrokes」を使う方法はページ最後の方にあります)
次に、「Range」モジュールの反応範囲の時に出すコマンドを「T(テキスト出力)」モジュールで設定します。つまり、ジョイスティックを左に倒したら「G91X-10」という文字列を書き出すプログラムになるということです。
「T(テキスト出力)」モジュールは右クリックでこの場所↑にあります。また「T」モジュールを選択して、Inspector画面で設定します。
こんな感じで、空白欄に「G91X-10」と入れておきます。ONタブは、これがONになったら「G91X-10」が出力されるということです。OFFの設定は特にないのでスキップ。

Speedタブの方では、as fast as possibleにして、出力速めにしておきます。
このテキスト出力設定では、最後のリターンキーの入力ができないので、それは次の設定で。ラインフィードやキャリッジリターン記号を入れればいいのかもしれませんが、そのまま書き出しそうなので、以下の設定でやることにします。

「Single Key」設定:
「G91X-10」のあと「リターン」を押してGコード入力終了となるで、このリターンキーも忘れずに設定しておきます。
「Single Key」はこの場所にあります。
そしてまたInspector画面で設定します。
BehaviorはOne Shotで一回だけの出力にしておきます。Press and Holdにしてしまうと、リターンキーを連続出力してしまいます。
Open Keystrokes Paletteを押すと、小さいキーボード画面が出てきて、この中からリターンキーを選んで作業エリアにドラッグします。
これでモジュールは全部揃ったので、あとはモジュールの端子のような部分をドラッグして相手のモジュールにくっつけるだけです。同様にY軸方向も設定もします。

それと、最終的には画面左上にあるMaster Enable: ON、Helper: Runningにしないと機能しないかもしれません。クリックすれば、赤→緑に変わります。

出来上がり:
最終的には、ボタンでロック解除($X)もつけて、以下のようになりました。

無料利用の場合の制限:
無料利用の場合は以下のような制限があります。出力系のモジュール(building block)は10個までらしい。そのほかは無制限。今回の場合は、テキスト出力とリターンキー出力だけで10個あるので、これが限界っぽい。

それと無料の場合は、このソフトがバックグラウンドで動いている場合(他のソフトを使っている場合)20分で切れてしまうようです。フォアグラウンドにしていれば無制限。

Grbl1.1なら$J=コマンドでジョグ操作:
今回はGコードを使って「G91X-10(リターン)」:相対座標でX軸を-10mm移動させましたが、Grbl1.1からは、ジョグ操作は$J=コマンドでやった方がいいかもしれません。$J=コマンドはGコードとは別に制御されるので、実際のペンダントを使ってのジョグ操作に適しています。
$J=X10F800
という感じです。
単に、
$JX10
を入力すると(最後にフィードをつけないと)、error:22が出ました。error:22はフィード未設定のエラーのようです。
また、$J=X10F800と入力しても、事前に設定してあるG90(絶対座標)かG91(相対座標)によって、
G90ならX座標10mmのところへ移動(WPosのX:10mmの位置)
G91なら現在地から10mmX軸方向へ移動(+10mm右へ動かす)
となるようです。

まとめ:
実際にbCNC上で試してみました。bCNCのコマンド入力欄を一度クリックしておいて(フォーカスを与えておいて)、あとはXbox360ワイヤレスコントローラーのジョイスティックでジョグ操作。特に問題なし。順調でした。
ただ、bCNCのPendant機能があるので、わざわざXbox360ワイヤレスコントローラーを使ってまでしてジョグ操作しなくてもいいという感じです。Laserweb3の場合もスマホからホストのIPアドレスにアクセスすれば遠隔操作可能なので、bCNCとLaserweb3以外で作業する時、ペンダントがないのであれば、余っているゲームパッドを利用することはありえるのかもしれません。
とりあえず、できるということが分かったので、もし今後使うようなことがあればという感じでしょうか。

追記:「Keystrokes」を使って改良
その後、コマンド入力(特にリターンキー入力)のところを改行コード(キャリッジリターンやラインフィード)を使ってやってみましたが、そのまま改行記号を出力してしまうのでダメでした。
そして、「T」や「Single Key」の代わりに「Keystrokes」という複数のキー入力を可能にするモジュールで試してみると、それなら大丈夫でした。
この画像にあるように、前回は左側の「Range」「T」「Single Key(改行)」でしたが、改良した右側は「Range」「Keystrokes」だけで済みます。Output系のモジュールは無料利用の場合10個までしか使えないので、一つ減らすことができたという感じです。
「Keystroke」の場合、Inspector画面で以下のように設定します。
Open Keystrokes Paletteボタンでミニキーボードを表示します。そしてWhen turned ON:の欄にキーを出力したい順番で入れていきます。今回出力したい内容は「G91X10(リターン)」ですが小文字「g91x10(リターン)」でも問題ありません。
キーボードからドラッグすると、黒と白の2個のキーが出てきます。黒がキーを押す、白がキーを離すという意味です。通常なら、g(押す)、g(離す)でgの文字一つを入力したことになります。その要領で、「g91x10(リターン)」をキー入力すると、
こんな感じで長くなりますが、この「Keystrokes」を使うことで一応最後のリターンまで押すことができます。Open Keystrokes Paletteボタンのミニキーボードを使う代わりに、Captureボタンを押せば、実際のパソコンのキーボードで入力した結果が画面に出てきます。
シフトキーを押しながらキー入力するような「$」は、「shift(押す)」「4(押す)」「4(離す)」、「shift(離す)」という順番になりますが(以下)、Captureボタンでやったほうが間違わないかもしれません。

ということで「Keystorkes」を使えば、連続した文字列(リターンキーなども含め)が出力できるのでOutput系のモジュールを節約できるという感じです。前回の方法だと10個使ってしまいましたが、今回は5個で済みました。残り5個あるので、他の機能を追加することができそうです。
しかしながら、bCNCのPendant機能の方が便利なので、おそらくXbox360コントローラを使ってのジョグ操作は使用しないと思います。ちょっと残念。まあ、きっと何かに応用できるでしょう。

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を通してリマインダー登録してます。牛乳を買った時も賞味期限を登録しておけば教えてくれるので、短期長期関わらずスケジュール上に登録しておけばいいという感じです。

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コード送信が一つのソフトで可能なので、レーザー加工するならこれが一番便利かもしれません。

人気の投稿