はじめに
だいぶ前に SynScan USB を作ってみた。という記事を書きましたが、今度はその無線版です。
作ってみたものの、なんか通信エラー出るなと思ってたんですが、ファームを変更し、Windows のシリアルの設定を変更したらまぁまぁ安定するようになってきた気がします。でもまだまだ感は否めず。
AZ-GTi はもともと WiFi (無線)で接続できるのに何それ?と思うかもしれませんが、AZ-GTi に WiFi 接続する方法は二つあって、AZ-GTi を WiFi のサーバーとして携帯もしくは PC を接続する方法と、AZ-GTi を既存の WiFi ネットワークにぶら下げて、携帯もしくは PC からそのネットワーク経由で AZ-GTi に接続する方法の二通りがあります。
前者だと AZ-GTi がサーバーになってしまうので接続した携帯または PC は外部ネットワークに接続することができなくなってしまいます。後者だと WiFi ネットワークの電波が AZ-GTi を動かしたい場所まで飛んでいないと使えないという不便さがあります。
したがってその不便さを解消するために今までは AZ-GTi を接続するのに SynScan USB (もどき) でシリアル+USB ケーブルにて接続していました。ケーブル接続の方が無線より確実!かもしれないのですが、アライメントをとってる最中とか、導入先を変えるときに PC を持って移動するとケーブルひっかけて接続が切れる。。ことがたまにありました。なので大量のデータを流すカメラはともかくコントローラ程度に対して有線にこだわりは全くなくて。
ちなみに架台さえ対応していれば SynScan Pro で BLE でも接続できるようですが、AZ-GTi は対応してなさげですね。
Bluetooth SPP
では別な無線化の方法を提案してみます。まず AZ-GTi とは HAND CONTROLLER のポートを使ってシリアルで通信ができるのでこれを利用します。Bluetooth には SPP という Bluetooth を介してシリアル制御を行えるという通信規約があります。これをサポートするモジュールを HAND CONTROLLER ポートに接続することによって Bluetooth 経由でシリアル接続することができます。PC でこれらモジュールを Bluetooth デバイスとして追加してあげるとその後はあたかもシリアルポートが追加されたように見えます。Windows だと COMxx、macOS だと /dev/cu.xx のような感じで。
制作
それほどは難しくないです。Bluetooth SPP をサポートするモジュールを用意して、HAND CONTROLLER のポートにつなぐだけです。今回は手持ちの ATOM lite (M5Stack) を使いました。スイッチサイエンスさんなどで入手できます。便利につかうには電源を HAND CONTROLLER ポートからいただくので、三端子レギュレータ(またはDC-DCレギュレータ)も付けます。
部品
ATOM lite (スイッチサイエンス) ... 1,496yen
低損失三端子レギュレーター 5V 500mA (秋月電子) ... 100yen
もしくは BP5293-50 5V 2A (秋月電子)... 240yen こちらの方がおすすめ。
6極6芯モジュラージャック DIP 化キット(秋月電子) ... 100yen
基板(適当)(秋月電子) ... 40yen
ピンヘッダ 1x40 (秋月電子) ... 35yen
半田少々
線材少々
モジュラーコード 6極4芯 (絶対4芯あるのにしてください)
ファームウェア
ATOM lite のプログラムです。すっごく簡単です。RX を 19, TX を 22 ピンにアサインしました。AZ-GTi とのシリアル通信は 9600bps, 8bit, パリティなしです。また ATOM-SPP という名前のデバイスにしました。loop() の delayMicroseconds(105) は ATOM->AZ-GTi のデータ転送速度が間に合うよう 1/9600sec の wait を入れてます。もう少し短くしてもいいかもしれないけど。delay(1) だと 1ms で長すぎで、AZ-GTi からのデータが多いと取りこぼす可能性あるのかなと。
/*
*******************************************************************************
* Copyright (c) 2023 by Tatsuro Sato
*
* describe:ATOM SPP module
* date:2023/9/6
*******************************************************************************
*/
#include "M5Atom.h"
#include "BluetoothSerial.h"
#define RX_PORT 19
#define TX_PORT 22
#define AZ_GTI_SERIAL_SPEED 9600
BluetoothSerial SerialBT;
void setup() {
M5.begin(true, false, true);
Serial2.begin(AZ_GTI_SERIAL_SPEED, SERIAL_8N1, RX_PORT, TX_PORT);
SerialBT.begin("ATOM-SPP");
M5.dis.drawpix(0, 0x000099);
}
void loop() {
if (SerialBT.available()) {
Serial2.write(SerialBT.read());
}
if (Serial2.available()) {
SerialBT.write(Serial2.read());
}
delayMicroseconds(105);
}
回路図
- モジュラージャック 2 pin (TX) - ATOM lite G19 (RX)
- モジュラージャック 3 pin (Vpp+ 7.5~14V) - TA48M05F(BP5293-50) 1 pin (input)
- モジュラージャック 4 pin (RX) - ATOM lite G22 (TX)
- モジュラージャック 5 pin (GND) - TA48M05F(BP5293-50) 3 pin (GND) - ATOM lite GND
- TA48M05F(BP5203-50) 2 pin (5V out) - ATOM lite 5V
すいません、最初にアップした回路図の TA48M05F のピン番号 2 と 3 が逆でした。真ん中が 3 です。ちなみに TA48M05F は 12V->5V と結構電圧降下があるのでとても熱くなります。Rohm の BP5293-50 に変えてみたのですが、外付けのコンデンサは無くてよく、熱くもならないのでこちらの方がお勧めです。端子は同じなので置き換えるだけ。若干大きいのがいまいちですが。
使い方
- AZ-GTi に上記モジュールを接続し、電源を入れる
- PC で Bluetooth のデバイスの追加を行う
ATOM-SPP というデバイスが見つかるのでそれを追加する
macOS の場合、一旦接続になり数秒で切断されるが気にしない。
通信を再開させると自動的に接続される。 - PC のデバイス設定を確認する
- Win
デバイスマネージャーのポート(COM と LPT)に Bluetooth リンク経由の標準シリアルが二つ追加されている。どっちが有効かわからないので両方ためしてみる。 - macOS
ターミナルソフトなどで ls /dev とやると、cu.ATOM-SPP というのがみつかるはずです。 - SynScan Pro を立ち上げ設定をする
設定→接続の設定→ Serial Port に設定します。 - Win
上記で調べた COMxx を選択します - macOS
/dev/cu.ATOM-SPP
を書き込みます - 接続
接続する
で接続できる。。と思います。
あれ?接続できない?不安定かも?と思ったら
デバイスマネージャーで、シリアルの通信速度確認してみてください。115200 にしてください。ほかの設定も合わせること。8ビット、パリティなし、ストップビット 1、フロー制御なし。
Windows の SynScan で、COM ポート名に文字化けした文字列がくっつくケースがあります。この部分を削除した値を設定してください。