#概要
太陽誘電のBLEモジュールEYSGJNAWY-WXを搭載したAE-TYBLE16をArduinoモジュールとして使い、ボタン電池で動くビーコン化します。ビーコンの形式はEddystoneおよびiBeaconです。
ビーコンを受信して、入退室を検出するプログラムに関してはビーコンを用いて入退室をチェックする簡単なプログラムを参照してください。
#参考資料
秋月電子の BLE モジュール AE-TYBLE16 を Hack
[TYBLE16 Module / Akizuki - Mbed]
(https://os.mbed.com/users/kenjiArai/notebook/tyble16-module--akizuki/)
[小型 Bluetooth LE モジュール AE-TYBLE16 で LINE Things Starter してみる]
(https://qiita.com/hktechno/items/f594f87493fbe11de3fb)
[Arduino Core for Nordic Semiconductor nRF5 based board]
(https://github.com/sandeepmistry/arduino-nRF5)
[eddystone-uid]
(https://github.com/google/eddystone/tree/master/eddystone-uid)
[arduino-BLEPeripheral]
(https://github.com/sandeepmistry/arduino-BLEPeripheral)
#ハードウェア
ハードウェア | 説明 | リンク |
---|---|---|
AE-TYBLE16 | BLEモジュール | http://akizukidenshi.com/catalog/g/gK-12339/ |
ブレッドボード | AE-TYBLE16の設置に使用します | http://akizukidenshi.com/catalog/g/gP-05294/ |
ジャンパーワイヤ | ブレッドボードと後述のJ-Linkをつなぐのに使用します | http://akizukidenshi.com/catalog/g/gP-02932/ |
連結ソケット(両端オスピン)16P | AE-TYBLE16をブレッドボードに設置するのに使用します。ただ不安定です | http://akizukidenshi.com/catalog/g/gP-00265/ |
J-Link EDU mini | AE-TYBLE16への書き込みに使用します。 | https://www.marutsu.co.jp/pc/i/26595451/ |
3.3V電源 | J-link EDU miniは電力供給機能を持っていないため、電源として利用します。 | 私はST-Linkを電源として使いました。 https://www.banggood.com/ja/3_3V-5V-XTW-ST-LINK-V2-STM8-STM32-Simulator-Programmer-Downloader-Debugger-With-20cm-Dupont-Wire-p-1177014.html?utm_source=direct&utm_campaign=none_prdshare_twit 下記を用いて、USBの5Vから3.3V変換をする方式でもよいと思う。 http://akizukidenshi.com/catalog/g/gK-06656/ http://akizukidenshi.com/catalog/g/gK-09980/ |
ボタン電池基板取付用ホルダー(CR2477用) | ボタン電池フォルダ | http://akizukidenshi.com/catalog/g/gP-09412/ |
#ソフトウェア
ソフトウェア | 説明 | リンク |
---|---|---|
Ardiuno IDE | ファームウェアの作成と書き込みに使います。 | https://www.arduino.cc/en/main/software |
nRF5 Command Line Tool | ファームウェアの作成と書き込みに使います。 | https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF5-Command-Line-Tools |
Arduino Core for Nordic Semiconductor nRF5 based board | Arduino化に使用します。 | https://github.com/sandeepmistry/arduino-nRF5 |
#開発環境の作成
Windows/日本語でのやり方をこのページでは記述する。Arduino Core for Nordic Semiconductor nRF5 based boardsのInstallingに書かれている手順のままである。
- Arduino IDEをダウンロードして、インストールして起動する。
- ファイル-環境設定を開く
4.ツール-ボード-ボードマネージャを選択
5. Nordic Semiconductor nRF5 Boardsを入力して、インストールを押下
6. ツール-ボードからnRF5を選択
7. 下記のように設定
8.
#AE-TYBLE16のArduino 化
- C:\Users<Your User Name>\Documents\Arduinoの下にtools/nRF5FlashSoftDevice/tool/のフォルダを作る。
- 1で作ったフォルダにnRF5FlashSoftDevice.jarをダウンロードしておく。
- Arduinoを起動している場合は再起動。
- ツール-書き込み装置でj-linkを選択。
- 後述の配線図のように配線
- ツール-nRF5 Flash SoftDeviceを押下。License Agreementが出るので読む。Accceptを押下する。ソフトデバイスのバイナリがボードに書き込まれます。エラーになる場合は、接触不良が考えられるので、配線を見直してください。
s130_nrf51_2.0.1_softdevice.hexがないといわれてエラーになったらhttps://www.nordicsemi.com/Software-and-Tools/Software/S130/Download#infotabs
からダウンロードし、C:\Users<Your User Name>\Documents\Arduino\hardware\sandeepmistry\nRF5\cores\nRF5\SDK\components\softdevice\s130\hex
の下に置く
#配線
JLink Edu Miniのコネクタのピンアサインは下記。
結線図 ![setting.png](https://qiita-image-store.s3.amazonaws.com/0/354086/5368f863-9c2d-aa8d-921c-ec6bbe87fe45.png) 左上の紫のものが3.3Vの電源として使用したST-LinkV2で右側の基盤がJ-Link EDU Miniです。#BLE用ファームの作成
##BLEPeripheralのソース
下記を利用します。
https://github.com/sandeepmistry/arduino-BLEPeripheral
1.Arduino IDE上でスケッチ -> ライブラリをインクルード -> ライブラリを管理 のように移動
2. サーチボックスにBLEPeripheralと入力
3.表示された項目を選択し、Installを押す
##AE-TYBLE16の設定変更
注意 ビーコンにするのに必須の作業です。作業にはJ-linkが必要です。
小型 Bluetooth LE モジュール AE-TYBLE16 で LINE Things Starter してみるに書いてあるままです。
nrfjprog -i
で J-Link のシリアル番号を取得して、
nrfjprog --snr --memwr 0x10001008 --val 0xFFFFFF00
を実行。
##Beaconのファームの作成
-
ビーコンの種類によって下記を選択してください。
iBeaconの場合:ファイル-スケッチ例-BLEPeripheral
Eddystoneの場合:ファイル-スケッチ例-Eddystone-EddystoneUID -
スケッチ-書込装置を使って書き込む を実行してください。
書き込みに失敗した場合は、接触不良の可能性があります。配線をご確認ください。
#改造ファーム
https://github.com/MypaceEngine/ae-tyble16-beacon-arduino.gitにソースをアップしてあります。下記の処理が追加されています。
- 1sごとにビーコンのパケットが出るようになってます。iBeaconの場合は100msごとに出すのが規格になってます。
- 後述の基盤にて、ビーコンパケットが出た瞬間にLEDを光らせるため、6番ピンをビーコン発信中はHIGHにしています。
省電力を強化したい場合などは、BLE/iBeacon 消費電力ハックをご参照ください、
#Beaconの出力状態の確認方法
スマホのアプリをお使いください。たとえばAndroidの場合はBeacon Scannerをお使いください。
#iBeaconについて
AppleのGet Start with iBeaconのDevices with iBeacon Technologyを参照すると”you will need to obtain a license from Apple.”と書いてあります。よって自由にiBeaconを作って運用することは難しいです。
発行者を決定するために発行する必要があるUUIDはNSUUIDを参照するとRFC 4122 version 4 準拠と書いてあります。よって試作段階ではuuidgeneratorを利用して発行すればよいと考えられます。UUIDは発行者ごとに1つ取得し、ビーコンの個体ごとにMajorおよびMinorを採番して割り当てることになります。
#Eddystoneについて
Eddystoneはオープンソースであり、iBeaconよりも自由です。
iBeaconのUUIDにあたるnamespaceの仕様に関してはEddystone-UIDを参照してください。UID Constructionの章によると、所有しているFQDNをSHA-1でハッシュして、先頭の10バイトをNameSpaceとして使用することを推奨されています。Google Cloud Console上でGoogle App Engine用のアドレスを取得することができるので、そのアドレスをSHA-1でハッシュして使用したらよいと思います。iBeaconのMajor/MinorはEddystoneのInstance IDです。個体ごとに自由に割り振ってください。所有するビーコンの管理用にGoogle Beacon Consoleを使用できるのも便利です。
#ボタン電池とAE-TYBLE16の連結
ボタン電池の容量に関してはここを参照。
CR2477が公称容量1000mAhでボタン電池としては最大容量です。
真ん中がマイナス、外縁部がプラスです。AE-TYBLE16とつなげば、お手製のビーコンの出来上がりです。お疲れさまでした。
#専用基盤で実装したい人へ
##概要
以下にCR24XXのボタン電池用の専用基盤をKicadで作って、置いておいておきました。PCBGOGOなどにご発注ください。
https://github.com/MypaceEngine/ae-tyble16-beacon
下記の部品をお使いください。
部品 | 用途 | 利用した部品のURL |
---|---|---|
スルホール用テストワイヤ | この基盤にファームを書き込むのに使用しました | http://akizukidenshi.com/catalog/g/gC-09830/ |
R1 | LEDを点灯するのに負荷として使用します。3KΩ~3.3KΩで十分だと思われる。 | https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-0EUE |
D1 | LEDとして使用します。 | http://akizukidenshi.com/catalog/g/gI-09636/ |
ストラップ | 基板にストラップ穴に使用します。 | ダイソーで買いました。 |
ボタン電池ホルダ | ボタン電池を実装するのに使用します。 |
http://akizukidenshi.com/catalog/g/gP-09411/ http://akizukidenshi.com/catalog/g/gP-09412/ http://akizukidenshi.com/catalog/g/gP-09413/ |
##組み立て順序
- 基板にAE-TYBLE16をはんだ付け
- スルホール用テストワイヤでJ-Link(またはST-Link)と接続
- Arduinoのソース上でiBeaconの場合はUUID/Major/Minor、Eddystoneの場合はnamespace id/instance idを個体ごとに設定し、AE-TYBLE16へ焼きこみ
- LEDが1秒周期で光っているのを確認し、スマホでビーコンの出力を確認
- ボタン電池ホルダを半田付け