実体顕微鏡 テスタージグ データリンク検討

WORKS
テスターデータリンク

テスター(INFURIDER YF-90EPD)とESP32の接続試験、出力データ解析について紹介します。

■ テスター接続情報の収集

最初に超駆け足でBluetooth通信の概略説明をします。詳しい方は、読み飛ばしてください。

Bluetoothの通信機器には、ペリフェラル(通常は機器側)とセントラル(PCとかスマホ)のと2種類があります。ペリフェラルは定期的にアドバタイズ(ブロードキャスト)して、存在をアピールします。
セントラルは、接続したいペリフェラルが見つかると、GATT通信(接続、通信)を開始します。
GATT通信は、ServiceとCharacteristicという概念でデータ通信を行っています。(ここではこういうものと思っていてください)
ESP32と接続するためには、このServiceとCharacteristic ID(uuid)と、データフォーマットが必要となります。

まずは、テスターのアドバタイズ(機器情報の発信データ)をスキャンしてみるところから。
テスターは、スマホと接続できるのでペリフェラルなはずです。
電源ONでアドバタイズが発信されていると思うので、linux環境 hcitoolで調査してみました。
結果は、以下のように「FS9721-LP3」という見慣れないペリフェラルがちゃんとありました。

% sudo hcitool lescan
LE Scan …
:

01:B3:EC:C0:53:79 (unknown)
01:B3:EC:C0:53:79 FS9721-LP3

:

次は、GATT通信を行い、接続に必要な情報を調査してみます。
linux環境上のgatttoolを使用して調査しました。
接続を行うとテスターより定期的にデータが出力されていることが確認できました。
ここまでくれば、もう、敵の手の内は分かったも同然。
あとは、接続に必要なService uuidとCharacteristic uuidがわかれば、ESP32と接続可能なはずです。

% sudo gatttool -I -b 01:B3:EC:C0:53:79
[01:B3:EC:C0:53:79][LE]> connect
Attempting to connect to 01:B3:EC:C0:53:79
Connection successful
Notification handle = 0x0018 value: 17 27 3d 47 5d 61 75 89
Notification handle = 0x0018 value: 9f a0 b8 c0 d4 e1

Notification handle = 0x0018 value: 17 27 3d 47 5d 61 75 8a
Notification handle = 0x0018 value: 97 a0 b8 c0 d4 e1
:
:

Characteristic uuidを調べます。
Notification handle = 0x0018でデータを送ってきていることがわかったので、characteristicコマンドを実行すれば、Characteristic uuidは取得できます。(char value handle:0x0018に注目する)

[01:B3:EC:C0:53:79][LE]> characteristics
:
handle: 0x0013, char properties: 0x14, char value handle: 0x0014, uuid: d618d002-6000-1000-8000-000000000000
handle: 0x0017, char properties: 0x10, char value handle: 0x0018, uuid: 0000ffb2-0000-1000-8000-00805f9b34fb
:

Service uuidを調べます。
Characteristic uuidは判明したので、primaryコマンドで検索すればわかります。
primaryコマンドを実行し、uuidの最初8桁に注目すると「0000ffb0」の文字が見えます。
これが、知りたかったService uuidとなります。
UUIDは、先頭7文字:「0000ffb」が同じであれば、同一サービスにあるからです。

[01:B3:EC:C0:53:79][LE]> primary
attr handle: 0x0001, end grp handle: 0x0009 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x000c, end grp handle: 0x000f uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle: 0x0010, end grp handle: 0x0015 uuid: d618d000-6000-1000-8000-000000000000
attr handle: 0x0016, end grp handle: 0x0022 uuid: 0000ffb0-0000-1000-8000-00805f9b34fb

■ 出力データフォーマット

接続に必要な情報は、「テスター接続情報収集」で使用したgatttoolで取得できたのですが、データフォーマットの内容については、全くの(?_?)。テスターのチャンネルをいじったり、抵抗を計測すると数値は変わるのですが、まったく意味が分かりませんでした。で、困った挙句…当てずっぽ。
こういう類の製品は中華性SoCがプラットフォームとして組み込まれていることが多いので、もしかすると、「hcitool lescan」実行時に出てきた「FS9721-LP3」が、SoCなのでは?と考え、データシートを検索しました。
すると案の定FS9721-LP3 Data sheet(Fortune)がヒットしました。データシートに「13. RS232 Transmission Protocol」として、データフォーマットが説明されていました。(page 13参照)
おそらく、「FS9721-LP3」をプラットフォームとし、Bluetooth出力用のデバイスをくっつけたテスターではないかと思います。抜粋はできないので、データシートを参照していただければと思います。
参照していただくとわかると思いますが、LCDパネルの7セグ表示を各桁毎に転送しているデータフォーマットでした。

■ PCソフトとのデータリンク検証

テスターの出力データフォーマットを調べた際に、その場ではすぐには気が付かなかったのですが、後日、同じようにLCDの7セグデータをデータとして送信しているテスターがあったことに気づきました。調べると、SANWAさんのPC-20が、同じフォーマットであることが判明しました。
また、幸運なことに、Ts SoftwareさんのTs DIMM Viewerは、SANWAさんのPC-20に対応されていました。
検証のため、ESP32よりBluetooth受信データをUSBより出力してやると、無事にTs DIMM Viewerで受信できることが確認できました。
下図は、当時の写真を捨ててしまったので、テスタージグで当時を再現したものです(^^;)

Ts DMM Viewer接続

■ まだまだ続きます

まだまだ続きます。週1ペースで更新していきますので、よかったら、また見てください。

タイトルとURLをコピーしました