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

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



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


ラベル bluetooth の投稿を表示しています。 すべての投稿を表示
ラベル bluetooth の投稿を表示しています。 すべての投稿を表示

2017年2月9日木曜日

IPカメラによる加工状況の監視(bCNCのIPカメラ化)

現在Bluetoothで、MacBook上のbCNCからCNCマシンを操作しています。同時にbCNCのPendant機能でスマホからも操作ができるので便利です。
あとは、加工中の状況(特にレーザー加工/目に危険なので)をカメラで監視できればいいと思って、Webカメラを設置できないかと考えていました。
USBケーブルでCNCマシンとMacBookをつなげていれば、Webカメラ(USB接続)で監視が可能です。例えば、以下のようなもの、

USBエンドスコープ:
AliExpress.com Product - Waterproof 5m Mini USB Endoscope Inspection Camera 6 White LEDs 1/9 CMOS 7mm Lens Borescope Snake Tube Camera with P2PUSBエンドスコープ(内視鏡):750円(送料込み)、直径7mm、ケーブル5m長いケーブル先端に直径7mmのカメラがついており、CNCマシンに取り付けやすいと思います。加工スポットをズームアップして監視したいので、こんな感じがいいのですが、ワイヤレスではないのが少し残念。そうなると、以下のようなもの。

AliExpress.com Product - Free shipping! 6LED HD 720P 1M / 2M / 5M WiFi Endoscope Waterproof Inspection Camera for ios and Android PCWifiエンドスコープ:2571円(1m)、2713円(2m)、2929円(5m)、送料無料。Wifiモジュールがついているので便利そうです。Wifiモジュールから外せばUSBカメラとしても使えると思います。
全体がコンパクトなWifiカメラなら、 AliExpress.com Product - 20pcs Mini DV Wifi Camera Q7 Cam 720P HD DVR Wireless IP Camera Video With IR LED Pocket-Size Remote By Phone Wholesale 1840円(送料込み)幅23mm、高さ43mmくらいなのでCNCマシンのどこにでも設置できそうです。
bCNCのカメラ機能:ひとつ気になるのは、bCNCにはOpenCVを使ったカメラ機能があり、パソコンとUSBカメラで接続していないと使えません。つまりWifiエンドスコープからbCNCには取り込めないということです。単なる監視として使うならWifiエンドスコープがとても便利そうですが、少し残念。

BluetoothカメラやワイヤレスUSB:そうなると、BluetoothカメラがあればワイヤレスかつbCNCにも取り込めるのではないかと探しましたが案外ない。Bluetoothも進化しているようですが、カメラなどのストリーミング映像には向いていないらしい。どちらかというとストリーミング映像はWifiが得意らしいです。通信速度の違いだと思います。Bluetooth3.0から通信速度が上がったので不可能ではないようですが、あまり機器類を見かけないし、当然安価にもならないはず。同様に、ワイヤレスUSBも数年前にはありましたが、下火になったようで、これも機器類を探すこと自体難しい。
やっぱりWifiカメラ:ワイヤレスのカメラといえば、現在はWifiが主流となってしまいます。例えば、スマホのカメラから、パソコンにwifiを通して映像を流すということも、アプリがあればすぐにできます。以前、スマホからパソコンに映像を送るだけなら、AirMoreというので簡単にできました。
パソコンのブラウザ上ではこんな画面。いわゆるスマホ画面のミラーリングという機能です。このほかにもスマホからいろんなデータ転送もできるので便利です。
スマホにアプリをインストールして、あとはパソコンのブラウザでWifi通信という感じです。

いくつかアプリを試しましたが、以下のIP Webcam(Android版)というアプリが便利そうでした。
これはタブレット(スマホも可)から流している映像をパソコンのブラウザ上で見ているところです。
操作画面は先ほどのAirMoreに比べるとシンプルです。このアプリはどちらかというとカメラに重点が置かれているようで、画質などいろんな設定が可能です。



解像度、前面背面カメラ切り替え、露出、ズーム、フォーカス、上下左右反転など様々なことがパソコンからも操作できます。また、ローカルネットワークだけでなく、外出先からも見る設定もできるようです。さらに便利なのは、

このように直接アクセス可能なアドレスが載っており、ストリーミング映像ならIPアドレス:ポート/videoというところへアクセスすればMJPEG、連続したJPEG画像取得するなら、IPアドレス:ポート/shot.jpgへアクセスということです。ブラウザで192.168.3.2:8080/shot.jpgにアクセスして見ると、
こんな感じで、シンプルに画像だけ取り出すことができます。これはJPEG画像ですが、画面を更新し続ければ動画にもなるようでした。おそらくスマホでの動画をブラウザからリクエストしてその都度最新画像を読み込んでいるということだと思います。
状況的にはこんな感じ。タブレットをバイスに立てかけています(はさみこんではいません)。ワイヤレスなので好きなところに置くことができますが、できれば本体に取り付けたい。映像については連続するJPEG画像なので、Pythonで読み込むプログラムも難しくなさそう。もしかしたらbCNCへも取り込めるかもしれないという可能性がアップしてきました。

Python-OpenCVで実験:bCNCはPythonで書かれているため、そしてbCNCのカメラ機能はOpenCVを使っているため、Python-OpenCVで先ほどのストーリミング画像を取り込めないか試して見ました。多少PythonもOpenCVも触ったことはあるのですが、基本的にどちらも初心者です。とりあえず、Python-OpenCVのGetting Startedから見てみることにしました。いくつかのチュートリアルがあり、まずは静止画像の読み込みと表示方法、そして動画の読み込みと表示方法という感じです。
import numpy as np
import cv2

img = cv2.imread('messi5.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27:         # wait for ESC key to exit
    cv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exit
    cv2.imwrite('messigray.png',img)
    cv2.destroyAllWindows()
どうやらcv2.imread()とcv2.imshow()でできるようです。画像ソースをcv2.imread()に入れればいいだけのようで、そのまま先ほどのhttp://192.168.3.2:8080/shot.jpgを入れてcv2.imshow()で表示しようとしたのですがダメです。
import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    # Our operations on the frame come here
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Display the resulting frame
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
VideoCaptureクラスの方でも試して見ると、やはりcv2.VideoCapture()にIPアドレスを入れてもエラーが出ます。Python2.7なのでOpenCV2.4を使用中。というのは、bCNCがPython3に対応していないため。どうやらOpenCV3にすれば、URLを入れても大丈夫らしい。惜しい。色々調べて見ると、OpenCV2.4ではネットワーク上の画像などを読み込むには、この方法ではダメらしい。

# coding: UTF-8
import cv2
import numpy as np
import urllib
import sys

ipAddress='http://192.168.3.2:8080/shot.jpg'

def readImg(ip):
   req=urllib.urlopen(ip)
   data=req.read()
   byteData=bytearray(data)
   arr=np.asarray(byteData, dtype=np.uint8)
   return cv2.imdecode(arr,1)

while True: 
   img = readImg(ipAddress)
   if len(img) > 0:
      h, w = img.shape[:2]
      halfImg = cv2.resize(img, (w/2,h/2))
      cv2.imshow('IMAGE',halfImg)
   else:
      print 'no image'
      sys.exit()
      break
   if cv2.waitKey(1) & 0xFF == ord('q'):
      break

cv2.destroyAllWindows()

その後、いろいろエラー続出でかなり悩みましたが、なんとかIPカメラから画像を取り込んでPythonで表示することができました(上記コード)。たったこれだけのコードですが、外部から取り込んだデータをデコードする必要があるみたいで、その方法に気づくのに時間がかかり、なおかつ普通の読み込みではしないような手順があったり、一行ずつ確かめては書き直したりしていました。
追記: その後もPythonをいじってましたが、Pythonではdefの外側の変数(グローバル変数)は、def内にはそのままでは通らないようで、def内でglobalを書かないといけないということがわかりました。Pythonはちょっと癖があっていちいち調べないといけないので難しいです。
これはPython-OpenCVによる映像の読込み/表示画面。シンプルに映像だけ取り出せることができました。

手順としては、VideoCapture()の代わりに、urllib.urlopen()でインターネットなどネットワーク上にあるデータをリクエストして受け取り、その配列データをバイトデータ配列へ、そして符号なし8ビット配列、さらにはデコードもして映像画素に合わせた行列に変換して、ようやく読み込める状態になるようです。普通ならimread()など読み込むための関数一発でいけそうですが、そうではないという面倒な手順になっています。しかしデコードする関数などはPythonにあるため、手順を踏めばそれほど難しくはありません。しかし、それぞれが何をしているのか、パラメータは何なのかなど、Documentationも見ながら理解していかないとエラーばかり出てしまいます。
*尚、このようなことを可能にするには、PythonのほかOpenCV、NumPyなどのインストールが必要です。


bCNCへ取り込み:
次は、これを元にbCNCのコードを改造していかなければなりません。bCNCのCamera.pyを開いて見ると、基本的にUSBカメラから映像を取り込んでいるためか、OpenCVのVideoCaptureを使っていました。これは先ほどの動画に関するチュートリアルでも見た方法ですが、今回はVideoCaptureを使わないで、映像(連続するJPEG画像)を取り込む方法(上のコード)でやりたいと思います。というか、その方法しかまだ知らないので。VideoCaptureを使ってMJPEGを取り込めれば簡単そうだけど、OpenCV2.4だと多分できない。 だいたいこの辺のQ&AサイトGitのここなどを参考に試行錯誤していました。
追記: MPEGの場合、IPアドレス:ポート/video?.mpegにアクセスすればいいようで、このサイトに書いてありました。mpegやjpegは1フレームごとに開始マーカー、終了マーカーがあり、それを手掛かりにデータを読み取るようです。

これが、bCNCのCamera.pyの中身です。いろいろいじっている最中。当然バックアップは取ってあります。IPアドレスからの画像取り込みのため、手順が違ってちょっと面倒です。すぐエラーが出ます。
数時間後、とりあえず画像を取り込む所まではできました(やや強引に)。
もともと、bCNCのPendant機能でカメラ映像を他の端末でモニタリングできるのですが、それも可能でした。つまり、IPカメラ(スマホ)の映像をbCNCを通してMacBookに橋渡しさせ、また別の端末(タブレット)からMacBookのIPアドレスにアクセスして、その映像を見るということです。当然、映像配信元のIPカメラ(スマホ)のIPアドレスに直接アクセスして見ることもできます。
まだ、bCNC内の画像調整(画像サイズや角度)のパラメータとはつなげられていないので、きちんとは機能していません。 bCNCのProbe Camera Alignment(OpenCVを使った位置決め機能)を試したことはないのですが、できればこの機能にUSBカメラのみならずIPカメラも接続可能にして使えればと思っています。もう少しプログラムの改造には時間かかりそうです。というか、Pythonに慣れていないので、かなり疲れてきたという感じです。
予定としては:

・bCNCにおいてIPカメラからの映像を読み込めるようにする(現在ここ)
・読み込んだ映像のサイズや角度の調整ができるようにbCNCのパラメータにつなげる
・USBカメラとIPカメラの両方を使えるようにする 
・USBカメラとIPカメラ切り替えボタンやIPアドレス入力欄をつくる

ここまでできれば便利だけど、かなりめんどくさそう。


IPカメラについて:
プログラムの方は少しずつ改造していきますが、IPカメラの方も考えています。とりあえず手っ取り早いのが、スマホやタブレットをCNCマシンのヘッド近くに置いておくことですが、できれば小型なカメラを設置したいと思っています。WifiといえばESP8266が安価なので、それにカメラモジュールをつけて、スピンドル先端付近に取り付けられるのが理想です。
AliExpress.com Product - V3 4 M bytes (32 Mbits) FLASH Lua NodeMcu placa de desarrollo de Redes WIFI Basado ESP8266 con firmwareESP8266:341円(送料込み)これに以下のようなカメラモジュールをつければ、Wifiカメラとして使えます。

AliExpress.com Product - New OV7670 VGA Camera Module Lens CMOS 640X480 SCCB w I2C Interface Auto Exposure Control Display Active384円(送料込み)これは前回調べましたが、AudCamのGitにArduino用ライブラリなどあります。あるいはInstructables追記:どうやらこの安価なOV7670はFIFOなし(バッファメモリなし)らしく、接続してもかなり遅いフレームレートになるようです。FIFOありの以下のようなモジュールが扱いやすいと思います。
AliExpress.com Product - High Quality with FIFO CMOS Camera Module OV7670 Sensor Module Microcontroller Collection Module 1374円(送料無料)、FIFOつきOV7670カメラモジュール。


  AliExpress.com Product - Free shipping ESP32-T Shield ESP32-Bit Development Board Compatible For ESP-32S Bluetooth WiFi Module ESP32S Wireless Board810円(送料込み)、追記:これはシールドだけでした。さらにこのESP32はWifiだけでなくBluetoothもついているようなので、もしかするとBluetoothカメラも可能かもしれません。ESP8266の上位機種といったところ。少し高価ですが、スペックに対してはかなり安い。秋月にもチップだけ700円で売っています
IPカメラ化についてはまた作業が進んだら報告します。

memo:Reading and Writing images and Video(OpenCV)python-opencv-ipcam.pyTo get mjpeg from "http://192.168.3.2:8080/video?.mjpeg"  To get images from "http://192.168.3.2:8080/video?action=stream"   pip install requests

2017年2月5日日曜日

Android GRBL Controller(スマホアプリ)

Android用スマホアプリのGRBL Controllerを見つけたので試してみました。
Instructablesに使い方が載っています(これを見るとこのアプリはGrbl0.9用?)。

まだBETA版のようです。スマホなので当然ワイヤレスですが、WifiではなくBluetooth通信のようです。以前CNCマシンにはBluetoothモジュールをつけておいたので、それを使って通信できそうです。
今はどちらかというとWifiモジュール(EPS8266など)が人気だと思います。数年前にワイヤレスUSBというのも一瞬でて、いつの間にか消えてしまいましたが、Bluetoothはまだいろんな機器に使われているので大丈夫そうです。
AliExpress.com Product - Free shipping! JY-MCU anti-reverse Bluetooth serial pass-through module, wireless serial, HC-05, master-slave 6pin for arduinoAliExpressだとBluetoothモジュールは341円(送料無料)で売ってますね。昔買った時の1/10以下の値段です。IoTによく使われているWifiのESP8266も300〜500円くらいです。いろんなテクノロジーがかなり安くなってきました。

接続開始:
まず、CNCマシンのBluetoothモジュールとスマホをペアリング。特にパスワードは設定してないのですが、パスワード(パスキー)要求画面が出てきて、設定していない場合は0000か1234を入れろと。0000はダメだったので1234を入れたらペアリング成功。

この画面をタップすると、スマホとペアリングしてあるBluetooth機器のリストが出てきて、その中から選択。この画面はもうすでに接続された状態です。

操作開始:

早速ジョグボタンを押してみると、UnlockもしくはMachine startを押せと出てきます。

Machine startを押すとロック解除、さらにこのように赤いEmergency Stopボタンになります。
そこでジョグボタンを押すと、あっさり動きました。おお、これはすごい。パソコンなしで、CNCマシンを動かしているということです。
下の方には、ホーミングなどのボタンもあります。
さらに上部にある他のタブを見ていくと、

ここは、Gコードファイルを読み込ませるところのようです。CloudにGコードファイルを上げて
おけば、すぐにここから作業ができそうです。ファイルの読み込ませ方はここに書いてありました。スマホのSD Cardにファイルを入れておかなければならないようです。しかもサブフォルダなどに入れず、ルートディレクトリ(トップの階層)に置かないといけないようです。
Single Blockボタンは、Gコードを1行ずつ実行するようです。Cycle Startは一気に最後までGコードを実行するようです。簡単なサンプルで試して見ると、Single Blockで1行ずつ実行させれば最後までいけましたが、Cycle Startだと途中で止まってしまいました。読み込みバッファあたりに問題があるのでしょうか?メモリー不足?

ここでは、Gコードを手入力できます。ためにし$$を入力するとGrblの設定が出てきました。しかし下の方にスクロールできない。

ここはGコードの中身を確認できるところのようですが、まだ使えないようです。

そして最後はマシン設定用画面です。先ほどのGコード入力画面でもできますが、ここで各項目に対応したパラメータを入力できるようになっています。

ということで、いまどきは何でもスマホという感じです。
bCNCのPendant機能やLaserweb3でもスマホから操作はできますが、パソコンがホストになる必要があるので、スマホはあくまでサブという位置付けです。しかし、このスマホアプリは、本当にスマホだけで操作できるというところがすごい。
画面が小さいので操作性は良くないかもしれないけれど、CNCも今やスマホゲームのような感覚で操作するということでしょうか。

6軸用アプリも:
さらには、6軸用のアプリもあります。新しいバージョンでしょうか?


しかしGRBLは3軸までしか対応していないけれど、本当に6軸も操作できるのでしょうか?

一応、操作画面には下の方にA Axis、B Axis、C Axisまであります。とりあえずソフト的には、6軸まで作っておいたということでしょうか。
まだこちらもBETA版なので、今後の進化に期待したいところです。

追記:
どうやらこの6軸アプリは、ArduinoMega2560用(6軸GRBLファームウェア搭載)に対応しているようです。
6軸ファームウェアをXloader(Win)、HexUploader(Mac)、Easy Flash Script(Linux)を使ってArduinoMega2560にアップロードすれば6軸CNCとして使えるようです(こちらに書いてあります)。
そもそもGrblControllerを開発していたZapmaker.orgがArduinoMega2560用に4軸用Grbl0.8〜も開発していたようです。Zapmakerの4軸用ファームウェア(Mega2560用)は、2014年を最後にGrbl-0.845までアップデートされています。おそらく、3軸では物足りない人たちのために、この6軸用ファームウェアが引き継いだ感じになったのかもしれません。

AliExpress.com Product - Free Shipping hc-06 HC 06 RF Wireless Bluetooth Transceiver Slave Module RS232 / TTL to UART converter and adapterもう少し安いBluetoothモジュールありました。327円(送料こみ)。
Bluetoothの親機と子機について:よくみるとこれはSlave(子機専用)かもしれません。多分、スマホが親機になればいいので大丈夫だとは思いますが、このページ上の方にあるBluetoothモジュール(341円)はMaster-Slaveと書いてあるので、親機・子機兼用なのかもしれません。調べて見ると、HC-05というのが親機にもなるタイプ、HC-06は子機専用らしいです。親子なら通信可能だけれども、おそらく子機同士は通信できないのかもしれません。スマホはBluetoothイヤホンなど接続できることから親機だと思うので、子機(HC-06)と通信はできるはずです。ただし、どちらも技適は通ってないので、原則的に国内での使用は認められていないということです(個人的に狭い範囲で使うなら大丈夫でしょう、まあよくある自己責任でということです)。 Amazonでも似たようなBluetoothモジュールが売ってます。これも中国からの配送だとは思いますが。
BluetoothモジュールとCNCシールドとの接続方法:
これは以前CNCシールドにBluetoothを接続実験した時の画像です。基本的に4本線で、CNCシールドTX端子---BluetoothRX端子(送信/受信)CNCシールドRX端子---BluetoothTX端子(受信/送信)CNCシールド5V端子---BluetoothVcc端子(電源:5V)CNCシールドGND端子---BluetoothGND端子(電源:GND)という感じでつなぎます。注意するところは、送信と受信という組み合わせになるようにTXとRXをクロス接続するところです。あとは、BluetoothモジュールがCNCシールドからの5V電源で大丈夫かどうか(3.3Vだったりしないか)。Grbl1.1のBaudrateが115200なので、それも合わせておいた方がいいのかもしれません。このアプリは実際のところGrbl0.9用で、InstructablesにはBaudrateを9600に変えろと書いてありますが、デフォルトのBluetoothモジュールを使う場合ということでした(BluetoothのBaudrateを115200に変えるにはATコマンドを使って設定し直します)。
接続するには、Gコード送信ソフトでBluetoothモジュールのシリアルポートを選ぶだけです。通信自体はUSBケーブル接続の時と同様にシリアル通信なので同じように通信するだけです。ただし、BluetoothのTXとRX端子は、Arduino UnoのD0とD1端子と接続することになるので、Arduino UnoとパソコンをUSB接続してシリアル通信するときに干渉してしまいます(同じピンを使っているため)。Arduino UnoとパソコンがUSBケーブルを通して通信しあうときは、BluetoothのTXとRX端子を抜くか電源を抜いた方がいいと思います。また、通常Arduino UnoはUSBケーブルでパソコンから電源供給されているので、パソコンと切り離すと別途外部電源(DC7〜12V/1A程度のACアダプターなど)が必要となります。

2016年5月17日火曜日

CNCマシン:Bluetoothでワイヤレス化(その2:完成)

前回からの配線のつづき:
こんな感じでコントロールボックス内部にBluetoothモジュールをつけたあとからの作業。

ワイヤーストリッパーのおかげ:
面倒な配線作業なのですが、先日届いたワイヤーストリッパーのおかげで少しははかどりました。いつものAliExpressで1000円(送料込み)。ガシャンと勢い良く皮膜が剥けます。

非常停止ボタンの見直し:
とはいっても、いろいろ考えることがあって、この際、機能が中途半端だった非常停止ボタンの配線も変えることにしました。40mmもある巨大なボタンなのに、Arduinoのリセットをするだけだったので、コンセントから来ているAC100Vも遮断できるようにすべき。幸いこの非常停止ボタン(これもAliExpressで139円送料無料)、内部に二回路入っていて、ひとつは普段オープン、もうひとつはクローズドになっています。いままでは、普段オープンのほうだけをCNCシールドのE-STOP端子につないでいましたが、普段クローズドのほうもAC100V電源の非常時遮断に使うことにしました。
まずはこの非常停止ボタンを配線することに。ただ、これとは別に主電源スイッチもあるのですが、それもAC100VをON/OFFできます。機能がダブっていそうですが、実はMacBookとArduinoをUSB接続しているときに、主電源を落としてもArduinoはMacBookのUSBケーブルから電源供給されているため電源が落ちるというがありません。非常停止ボタンの場合は、Arduinoもリセットするのでより確実という感じです。ということで非常停止ボタンのほうは何とか片付きました。


新たにスイッチ追加:
今回はBluetoothのON/OFFのスイッチもつけなければいけません。Bluetoothの送受信ピンは、Arduinoのシリアル通信用のピン(D0とD1)とつながっているために、そのままだとUSB接続の際にMacBookから送受信すると干渉してしまいます。
ということで、一個余っていたスイッチを正面のパンチングメタル上につけることにして、これを主電源スイッチに変更。LED付きスイッチなので電源が入っているかどうかも確認しやすいです。面倒ですが、いままでの主電源スイッチの配線を移動。非常停止ボタンとも絡んでいる部分なのでちょうどよかったのかもしれません。それでいままでの主電源スイッチをBluetooth用に。
しかし、配線がかなり複雑になってきてやや混乱気味です。間違うと大変なので、一応紙に配線図を描きながらダブルチェックしつつ作業しました。


Arduinoへの別電源供給:
もうひとつ面倒なのが、Arduinoへの電源供給。これまではMacBookとUSB接続で電源供給されていたけれども、ワイヤレスなので別に電源を確保しなければいけません。レーザー用のDC12V電源があるので、そこからつなげることにしました。Arduinoにも外部電源用ソケットがついているのですが、それは使わないで裏側から直にケーブルをハンダづけしました。上画像でも分かるように、Arduinoボードがケーブルに埋もれているので、取り出すにはケーブル全部とCNCシールドを外さないといけません。これが面倒に感じてしまって後回しにしていましたが、やる気を出して作業続行。


なんとか配線終了:
下の画像のように、この部分はスイッチ類や配線ですごいことに。特に面倒なのがLED付きスイッチ。大抵のLEDつきスイッチは、ただ単にスイッチボタンにLEDが入っているだけでスイッチ部分と連動もしないので、必要な抵抗や配線は自分で考えてつけなければいけません。
LED付きだとON/OFFの確認がしやすくなるし、光ってた方が見た目もいいし、という理由で選んだので作業量が増えても仕方ないですが。



動作確認:
とりあえず、両側の板をつけるまえに動作確認。主電源スイッチは手前パンチングメタル上の赤く光っている丸い押しボタンスイッチです。上画像は、USB接続でも大丈夫か確認しているときのものです。特に問題なさそうです。


正面からみるとこんな感じ。手前パンチングメタル上の赤い主電源スイッチの下にやや緑色に光っているのがBluetooth通信中ということです(通信が切れると赤)。パンチングメタル裏にBluetoothモジュールは入っています。上面の3個並んでいる一番手前がBluetooth用スイッチです(以前は主電源スイッチだったもの)。真ん中がLED照明用スイッチ(まだLED照明はつけてない)。一番奥がレーザー用スイッチ。
一応、BluetoothでもUSB接続でも動くことを確認できたので、両側面の板もつけて作業終了。

ワイヤレス化と言っても、主電源スイッチとBluetoothスイッチをON、そしてbCNCでBluetoothのSerial Portを選んでOpenを押すだけです(上画像左下のConnect on startupにチェックを入れておけば、bCNCを立ち上げたときに記憶しておいたポートに自動で接続されます)。仕組み的にも、シリアル通信のパイプ役になっているだけなので単純です。このBluetoothモジュールはClass1(通信最大距離100m)で強力なので多少のノイズにも強いかもしれません。

これで、パソコン作業しているテーブルの上からもワイヤレス操作可能です。それとbCNCのPendant機能で、他のパソコン、スマホ、タブレットのブラウザ上からもワイヤレス操作可能です。
MacBookをわざわざCNCマシンのそばに持って行かなくてもよくなったので、かなり便利です。ポートマッピングすれば外出先からも操作できますが、そこまではいまのところ必要ないです。

あと残っているのは、トリマーにつける集塵カバー(LED照明付き)くらいでしょうか。以前AliExpressに注文したリング型LEDがまだ届いていないので、それが届いてからつくることになると思います。
AliExpress.com Product - Free Shipping hc-06 HC 06 RF Wireless Bluetooth Transceiver Slave Module RS232 / TTL to UART converter and adapter327円(送料込み)安いので追加で2個買っておきました。

CNCマシン:Bluetoothでワイヤレス化

先日、bCNCのPendant機能でタブレットでワイヤレス操作ができることがわかりました(以下がタブレット上の操作画面)。これでも充分便利ですが、昔買ったBluetoothモジュールがあったことを思い出し、それもつけてしまおうかと思い始めました。
そうすればわざわざMacBookをCNCマシンの脇に持って行かなくてもいいので、普段パソコンをしているテーブルの上からも操作可能となります。CNCマシンの近くにパソコンを置いておくと埃などもかぶってしまうし、パソコン作業を中断するのも面倒なので。しかし、こういう工作機械は、ワイヤレスにしないほうが誤作動も起こらなくで本当はいいはずです。それなら、スイッチなどつけて切り替えできるようにしておけばいいかなと。イメージとしては、別のテーブルでパソコン作業をして、タブレットをリモコンとして持ってCNCマシン付近でジョグ操作などするという感じ(そのうちRaspberry Pi 3をホストにしてWifi上で操作するというのも考えてはいるのですが、、、)。

ということで、昔のBluetoothモジュールを取り出してきました。ひとつ3000〜4000円くらいしたと思います(探したら全部で5個くらいありました)。その後ワイヤレスと言えばネットワークが組めるXbeeが登場して来てXbeeを使うようになったのですが、最近はWifiモジュールのESP-WROOM-02とかでしょうか。
これは、かなり前にSparkfunで買ったBlueSMiRFというBluetoothモジュールです。使う端子はVCC(5V)、GND、TX、RXの4つだけです。Class1で100mくらい電波が届きます。いまでも売っているはず。

MacbookのBluetooth設定:
まずシステム環境設定のBluetoothで設定する必要があったので行ってみます。やり方は忘れてしまったのですが、それほど難しかったわけではないので適当に。しかし、ここではペアリングできないようです。
追記:パスキーが0000ではつながらなかったのですが、1234であればペアリングできました。
仕方ないので、システム/ライブラリ/CoreServices内にあるBluetooth設定アシスタントへいくことに。
ここでも接続はできないけれどもポートはつくることができたので、あとはbCNCでそのポートを選択して接続すればいいはずです。


CoolTermで設定(ATコマンド入力):
ただ、Baudrateが9600になっていたかもしれないので、念のためgrbl0.9でつかっている115200に合わせておこうと思います。ATコマンドというのを入力して変更します(ATコマンドについてはこちらに書いてあります/HC-05やHC-06のATコマンドについてはこちら)。そのためにターミナルソフトがあるといいのですが、検索するとCoolTermというのが見つかったので、それでやってみます。
こんな感じのソフトです。たしかこのBluetoothモジュールは電源が入ってから60秒以内にATコマンドを入力して設定モードに入らないといけなかったはずです。つないだり他の設定しているあいだに1分すぎてしまうこともあるので、その制限時間も無制限に設定し直すことにします。ちなみに、このときBluetoothは5VとGNDにつないで電源だけ確保しておけば大丈夫です。通信自体はワイヤレスなので。
これがCoolTermの操作画面ですが、ただ文字(ATコマンド)を打っていくだけです。
いちおうCoolTermの設定画面(以下)で、Local Echoにチェックいれておきます。そうしないと自分で入力した内容が表示されないので。


ATコマンド入力:
最初に設定モードに入るには(電源を入れて60秒以内に)、
$$$(リターンキーなし)
そうすると、
CMD
と返してきます。これで設定モードに入ったということです。
現在の設定内容を確認するには、
D(リターンキー)
そうすると、上の画面のように、設定内容が出てきます。
もう設定し終わったあとの画面なので、Baudrt=115kになってます。
Baudrateを変えるには、
SU,115(リターンキー)
で115200になります。9600ならSU,96です。
それから設定モード突入までの制限時間60秒を変えるには、
ST,255(リターンキー)
と入力すると無制限になります。
設定終了するときは、
---(リターンキー)
ハイフン3個です。ENDという返事が出ます。


BluetoothモジュールとCNCシールドの接続:
これでBluetoothの設定はできたので前にAitendoで買ったCNCシールドV3.0につなげてみます。まだ実験段階です。
このようにCNCシールドの右上にはRX、TX、5V、GNDがまとまって付いているので、ここにつなげればいいだけです。ただし、つなげるときは、TX(Bluetooth)→RX(CNCシールド)、RX(Bluetooth)→TX(CNCシールド)という感じでクロスさせてつなぎます。ちなみにSCL端子はProbeに使っています。
メス-メスのジャンパワイヤがないので、こんな感じでつないで実験してみます。


bCNCでの接続確認:
Serial Port:でBluetoothのポートを選んでOpenを押します。
ConnectedになればOKです。あとはいくつかGコードを入力して確認します。

$Xを入力して解除、そして$$を入力すればArduino内に保存されているCNCマシンの設定が出てきます。これで大体確認はとれたと思います。


コントロールボックスへの取り付け:
ということで、あとは実際のCNCマシン(コントロールボックス)への取り付けとなります。
久々に開けたら、配線がたくさんあって何かめんどくさそう。とりあえずBluetoothモジュールをどこにつけるか?配線は基本的に4本。

コントロールボックスの前面にあるパンチングメタルにつけてみました。表側から見ると、BluetoothのLEDが光っているのが見えるので通信中ということが確認できます。

これでMacBookをUSB接続しなくてすみます。しかし、USB接続しないかわりに、Arduinoボードに電源を供給しなければいけません。DC12VのACアダプターは入っているので、そこから線を分岐させればいいのですが、かなり配線がこみ入っていてこれまた面倒。USB接続もすることがあるので、スイッチもつけておいたほうがよさそう。また配線が複雑になってきました。スイッチは一個余っているので、それを使えばいいのですが、一旦ハンダづけして熱収縮チューブもつけたところを外して、またハンダ付けすると考えると面倒に感じてきます。そもそもArduinoボード自体外すのが面倒だし、これからつけるスイッチだけ形が違うので、それを主電源スイッチにしたほうがよさそう。それと非常停止ボタンをCNCシールドのE-STOPにつなげてあるのですが、それだとArduinoボードをリセットするだけなので、この際主電源カットにしたほうがいいのかも。配線計画をやり直しになるかも。そう考えているうちに時間切れ。この作業の続きは次回へ
AliExpress.com Product - Free Shipping hc-06 HC 06 RF Wireless Bluetooth Transceiver Slave Module RS232 / TTL to UART converter and adapter327円(送料込み)、今はBluetoothモジュールもこんなに安い。*HC-05やHC-06のATコマンドについてはこちら

人気の投稿