安価なBLEモジュールにシリアル接続してみた

# まとめ
* HM-10, HM-11, AT-09にシリアル接続し、ATコマンドで設定を参照・変更できました
* HM10とAT-09の電源は3.3Vでも5VでもOK
* Teratermは使わない。Arduinoでスケッチを書くか、HMComAssistantを使うこと
* HM-11のATコマンドは大文字で！
* コマンドに改行が必要だったり不要だったり、？が必要だったり不要だったり、レスポンスのセパレータが：だったり＝だったりという小さな差がありました（できれば、ファームを統一できたほうが楽です）
* ~~HM-10とAT-09の端子説明の印字は同一だが、RX/TXが逆~~
* C#でそれぞれのモジュール用に設定ができるアプリを作ってみました
 * https://github.com/juosugi/BLEDeviceConfigurator

![IMG_6562.jpg](https://qiita-image-store.s3.amazonaws.com/0/63696/68545348-e04e-c099-63ee-6d7b4d1833c2.jpeg)
（タグはこんな感じです。HM-10は写ってません）

# HM-11
## ピンをハンダ付け
* GND/TX/RXにピンを立ててハンダ付けします

![IMG_6561.jpg](https://qiita-image-store.s3.amazonaws.com/0/63696/e4ec86c9-3ce4-b802-6b3c-193336d33ad8.jpeg)

* 3.3VのUSBシリアルにつなぎます

## Teratermから確認
* 9600-N-1で接続
* ATと打って、OKが返ってくれば、OK!
 * なのですが、A、T、まで打ったところでOKが返ってきてしまいます
 * ATコマンドのすべての文字＋CRLFを一続きに送信する必要があるらしく、そのためにHMComAssistantというツールを使って送信します

![hm-11.png](https://qiita-image-store.s3.amazonaws.com/0/63696/aac405da-f584-1b8c-9a42-a049fab19aec.png)
（画面はこんな感じ）

# AT-09
## うまくゆかない・・・
* ブレッドボードにタグを立てて、USBシリアルと接続します

![IMG_6565.jpg](https://qiita-image-store.s3.amazonaws.com/0/63696/c340cf81-2d21-bc24-1476-055b4c53ff7d.jpeg)
（右手前にあるのはデバッグ用のロジックアナライザです）

* HMComAssistanからATを送っても無応答です
* 念のためロジアナで信号を見ても、確かに何も返ってきません

![logic.png](https://qiita-image-store.s3.amazonaws.com/0/63696/d6f64ad1-3a2b-3edb-759e-341d1bcd3183.png)

## 対応方法
* 色々試して、次の事が分かりました
* Arduinoのスケッチからは正しくアクセスできる
 * ATを送信するとOKが返ってくる
 * おそらくArduinoのシリアルのライブラリがCRLFを正しく付けてくれている
* HMComAssistantを使う場合は、ATコマンド＋CRLFを送信すればOK
 * 色々とページを見てましたが、CRLFが重要だと書いてあるページもあったのに、なかなか気付きませんでした

![114.png](https://qiita-image-store.s3.amazonaws.com/0/63696/ceda94c0-099f-43bf-5adc-e5fdd0d6d68d.png)
（ATの下に改行がひとつあります）

* ロジアナでみたところ

![hm11.png](https://qiita-image-store.s3.amazonaws.com/0/63696/071c7e9e-c1ae-3ff7-eca0-8e34860d726b.png)
（こんな感じで応答がありました）

* AT\+HELPの結果

>\*****************************************************************
> Command             Description
>\----------------------------------------------------------------
> AT                  Check if the command terminal work normally 
> AT\+DEFAULT          Restore factory default
> AT\+BAUD             Get/Set baud rate
> AT\+RESET            Software reboot
> AT\+ROLE             Get/Set current role.
> AT\+DISC             Disconnect connection
> AT\+ADVEN            Broadcast switch
> AT\+ADVI             Broadcast interval
> AT\+NINTERVAL        Connection interval
> AT\+POWE             Get/Set RF transmit power
> AT\+NAME             Get/Set local device name
> AT\+LADDR            Get local bluetooth address
> AT\+VERSION          Get firmware, bluetooth, HCI and LMP version
> AT\+TYPE             Binding and pairing settings
> AT\+PIN              Get/Set pin code for pairing
> AT\+UUID             Get/Set system SERVER_UUID .
> AT\+CHAR             Get/Set system CHAR_UUID .
> AT\+INQ              Search from device
> AT\+RSLV             Read the scan list MAC address
> AT\+CONN             Connected scan list device
> AT\+CONA             Connection specified MAC
> AT\+BAND             Binding from device
> AT\+CLRBAND          Cancel binding
> AT\+GETDCN           Number of scanned list devices
> AT\+SLEEP            Sleep mode
> AT\+HELP             List all the commands

# HM-10
* AT-09が壊れているのかも？と思い、純正品（おそらく）を手配して試してみました
* AT-09と差し替えて使ってみます
* ~~RX/TXの配線を逆にしたらうまく行きました（どちらの表示が正しいのかは確認してませんが、とりあえず逆になっていることは確かです）~~ →勘違いでした・・・

![IMG_6567.jpg](https://qiita-image-store.s3.amazonaws.com/0/63696/f2b938c7-8904-2200-2a7d-9e075f233bfd.jpeg)
（手前の小さいブレッドボードに載っているのがHM-10です。AT-09よりほんの少し、小さい（短い）ようです。加工も比べるとなんとなくきれいです）

# これから
* それぞれのタグ毎に簡単に各種設定ができるツールか、Arduinoのスケッチを作る
* CR2032バッテリホルダーを付けてケースに入れる
* てなことを考えています・・・

![IMG_6571.jpg](https://qiita-image-store.s3.amazonaws.com/0/63696/d454c3e6-50ff-6845-ff8f-d66ef72f6b06.jpeg)
（ケースの候補など）

# そのほか
* デバイスはAmazonで手配しましたが、手配した時はそれぞれ次のような値段でした（今年の1月頃から手配）

| デバイス | 価格（税抜）|　バージョン |
|:-----|-----------:|:----------|
|HM-11|880円 | HMSoft V549|
| AT-09 | 685円| MLT-BT05-V4.2|
| HM-10 | 999円|DSD TECH V551|

# 追記（2018/04/21）
* C#でこれら3種類のデバイスに対して、デバイス名と出力レベルをかんたんに設定できるツールを作りました
* GitHubに上げてみました
 * https://github.com/juosugi/BLEDeviceConfigurator

![demo01.gif](https://qiita-image-store.s3.amazonaws.com/0/63696/db333114-4aaf-6b88-4c51-ccd6025d4415.gif)
（HM-10を接続して動かしているところ）

![IMG_6573.JPG](https://qiita-image-store.s3.amazonaws.com/0/63696/6d3a4b2b-1f28-7697-0161-05c53665b3fd.jpeg)
（AT-09に接続しているようす）