RepRapのwikiページを見ていると、RAMPSのボードにBluetoothモジュールを接続する方法が載っていたので、私の使っている3DプリンターBS01+でもできるかなと試してみました。
RAMPS 1.4#BT Extension. – RepRap
Jy-mcu – RepRap
結果としては、無事にBT接続ができるようになりました。
しかし、実際にBT接続でプリントを試してみるとUSB接続とは違う部分もあって、メリット・デメリットが存在します。
私の場合、BS01は液晶コントローラを付けてスタンドアロン化していて、プリントはいつもPC無しで行っているので、BT接続化はプリント前のプレヒート実行とプリント中の温度チェックや進捗状況の確認が目的なので、とりあえず希望の用途に使えることは確認しました。
Bluetoothモジュール
今回、私が使ったBluetoothのモジュールは、Mircochip社のRN-42と言うものです。
秋月電子で販売されている、
RN-42使用 Bluetooth無線モジュール評価キット – 秋月電子
と言う、変換基板に乗っかった評価キットを使いました。
モジュール単体では1800円、評価キットで2400円です。
Reprapのwikiページで紹介されているBluetoothモジュールは JY-MCUと言うものらしいです。
DXで1000円を切る値段で販売されているようですが、技適の問題があって日本では使えませんね。残念。
JY-MCU Bluetooth Wireless Serial Port Module for Arduino – DX
と言うわけで、技適が通っているモジュールの中ではRN-42が最安なんじゃないかなと思うのですが、さてどうなんでしょう?
BS01+とRN-42の接続の問題点
BS01の制御のメインボードはArduino(Megaの互換品)が使われています。
RN-42とArduinoの接続方法は、ネットで検索すれば結構でてくるので、それ程難しくない・・・と思っていました。
ArduinoとRN-42を接続する上で気をつけなければいけないのは、電圧差です。
Arduinoは基本的に5V動作、RN-42は3.3V動作です。
単純に直結すると電圧の低いRN-42が壊れてしまいます。
ちなみにRepRapの接続例で使われているモジュールは6Vまで使えるようで、Arduinoと直結されています。裏山。
ネットで検索をして出てくる接続方法は、Arduinoの3.3V出力をRN-42の電源とし、信号線は抵抗で分圧して接続すると言うもの。
最初、この方法で行こうと思ったのですが、しかし実際に試してみようとしたところこれは難しいことがわかりました。
BS01のメインボードはArduinoなので、3.3Vが出ている(はず)なのですが、その上に載っているシールド(RAMPS)に、3.3Vが出ているコネクターが無いのです。
この写真の矢印の先のピンが、たぶん3.3V出てるはずなのですが、このように半田付けで終わっていて、簡単には使えません。
そこで、RN-42の評価キットに搭載されているレギュレータを使えばいいと思ったのですが、しかしこれにも問題が有りました・・・なんと、RN-42の評価キットには、5V入力の為の端子が出ていないのです。
つまり、
- BS01は3.3V出力があるにもかかわらず、3.3Vを取り出す為のコネクターが無い。
- RN-42評価キットは、3.3Vのレギュレータが搭載されているにもかかわらず、5Vを入力する為の端子が無い。
絶句・・・
とはいえ、どちらもコネクターが無いだけで、無理矢理半田付けすればなんとかなる。
と言う訳で、BTモジュールのレギュレータのVINに直接半田付けすることにしました。
どの道、BTモジュールは半田付け必須なので、ちょっと手間が増えるだけですし。
接続回路
BTモジュールはこのように配線しました。
RAMPS1.4ボードのAUX-1に出ている5V・GND・D1・D0のピンを使います。
このD1・D0は、ArduinoのRX・TXピンに接続されていて、つまりBT接続とUSB接続とは同時使用できない模様。
赤いラインは、先に述べた通り5Vを3.3Vに落とすレギュレータの足に直接半田付けしています。
Arduino→RN-42への信号線は1Kと2Kの抵抗で分圧しています。
RN-42→Arduinoへの信号線は直結しています。
ここにも5Vが流れるはずで、このままではまずいんじゃないかなとも思ったのですが、ネット検索で見つけた接続例ではほぼこのように接続されているので、右に習っています。実際はどうなんでしょうか?
あと、BTモジュールのオレンジ色で示した2つの端子のブリッジ線ですが、これはCTSとRTSの端子です。
このBTモジュールはフロー制御されているらしく、これが無いと通信できません。
フロー制御OFFにするオプションとか有りそうなものですが、調べるのが面倒臭いのでとりあえずの処置。
これもネット上の接続例への右へならえ。
このBTモジュールで使われているレギュレータは XC6202P332PR と言う表面実装3端子レギュレータで、足を下に見たとき一番右端の足がVINすなわち5V入力となっています。
分圧の為の抵抗が必要なのと、便宜上ケーブルを外せるようにしたかったので、小さい基板に抵抗とヘッダーピンを載せました。
接続する為のケーブルはこんな感じです。
コネクターのかしめ工具とか持ってないので、5Pのピンソケットとワイヤー線を半田付けして作りました。
ピンソケット (メス) 1×5 ( 5P) – 秋月電子
耐熱通信機器用ビニル電線 2m×10色 外径0.65mm – 秋月電子
動作テスト
実際に出来上がったものを、BS01に接続してみます。
BS01+の電源ケーブルを抜いて、下の奥の蓋を開けて、所定の場所にケーブルを差し込みます。
そしていよいよ、通電です。
いつものことですが、最初の通電はとても緊張します。
失敗するとBTモジュールはおろか、BS01側のArduinoまで壊れる可能性がありますから・・・
通電し、BTモジュールが正しく動作すると、緑色のLEDが点滅を始めます。
ま、簡単な回路なので問題なく動きました。
やれやれです。
さらにPCからBluetoothでBTモジュールに接続すると、緑色のLEDが点灯状態になります。
このBTモジュールはPCとペアリングすると、SPPプロファイルで仮想COMポートが作成される。
このCOMポートの番号を、Repetier-Host等で指定すると、USBケーブルでの接続と同様にBS01+をコントロールし、そして3Dのプリントができます。
ちなみに、BTモジュール内の設定はすべてデフォルトで使用できたので、特になにかBTモジュールのコマンドを打つ必要はありませんでした。
最終的に机の上に転がっていたミンティアのケースに入れてから、BS01の中へ入れて、完成としました。
最後に
こうして私のBS01+は、Bluetooth接続によってコントロールできるようになったのですが、しかし、USB接続とまったく同じと言うわけではありません。
私にとって、BS01をBT接続化する目的は、遠隔操作で温度を設定・監視をしたいのと、プリント中の進捗確認だったので、必要十分なのですが、BT接続のみでPCからプリントしたいと言った用途には向かないかもしれません。
その場合の一番の問題点は、プリンタの動作中にシリアルポートからのコントロールを一切受け付けなくなる場合があることで、今確認できているのは、GコードでM109とかM190のコマンド等の待機が含まれる命令です。
これらの待機中は次に送ったGコードを受け付けてくれないので、今回のBT接続では一切コントロールできなくなり、プリントを中止したりする場合は液晶コントローラ経由で行うか、最終手段として電源断とかが必要になります。
と言うわけで、現時点で私が言えるのはこんな所です。