LoginSignup
14
16

More than 5 years have passed since last update.

小型 Bluetooth LE モジュール AE-TYBLE16とボタン電池でビーコンを作る

Last updated at Posted at 2019-03-09

概要

太陽誘電のBLEモジュールEYSGJNAWY-WXを搭載したAE-TYBLE16をArduinoモジュールとして使い、ボタン電池で動くビーコン化します。ビーコンの形式はEddystoneおよびiBeaconです。
IMG_20190304_005832.png

ビーコンを受信して、入退室を検出するプログラムに関してはビーコンを用いて入退室をチェックする簡単なプログラムを参照してください。

参考資料

秋月電子の BLE モジュール AE-TYBLE16 を Hack
TYBLE16 Module / Akizuki - Mbed
小型 Bluetooth LE モジュール AE-TYBLE16 で LINE Things Starter してみる
Arduino Core for Nordic Semiconductor nRF5 based board
eddystone-uid
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に書かれている手順のままである。
1. Arduino IDEをダウンロードして、インストールして起動する。
2. ファイル-環境設定を開く
Preference.png
3. 追加のボードマネージャのURLに下記を追記する。
https://sandeepmistry.github.io/arduino-nRF5/package_nRF5_boards_index.json 
PreferencePanel.png

4.ツール-ボード-ボードマネージャを選択
BoardManager.png
5. Nordic Semiconductor nRF5 Boardsを入力して、インストールを押下
BoardManager2.png
6. ツール-ボードからnRF5を選択
BoardSelect.png
7. 下記のように設定
8. nRF51setting.png

AE-TYBLE16のArduino 化

  1. C:\Users<Your User Name>\Documents\Arduinoの下にtools/nRF5FlashSoftDevice/tool/のフォルダを作る。
  2. 1で作ったフォルダにnRF5FlashSoftDevice.jarをダウンロードしておく。
  3. Arduinoを起動している場合は再起動。
  4. ツール-書き込み装置でj-linkを選択。
  5. 後述の配線図のように配線
  6. ツール-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
左上の紫のものが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のファームの作成

  1. ビーコンの種類によって下記を選択してください。
    iBeaconの場合:ファイル-スケッチ例-BLEPeripheral
    Eddystoneの場合:ファイル-スケッチ例-Eddystone-EddystoneUID

  2. スケッチ-書込装置を使って書き込む を実行してください。
    書き込みに失敗した場合は、接触不良の可能性があります。配線をご確認ください。

改造ファーム

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
103786.jpg

下記の部品をお使いください。

部品 用途 利用した部品の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/

組み立て順序

  1. 基板にAE-TYBLE16をはんだ付け
  2. スルホール用テストワイヤでJ-Link(またはST-Link)と接続
  3. Arduinoのソース上でiBeaconの場合はUUID/Major/Minor、Eddystoneの場合はnamespace id/instance idを個体ごとに設定し、AE-TYBLE16へ焼きこみ
  4. LEDが1秒周期で光っているのを確認し、スマホでビーコンの出力を確認
  5. ボタン電池ホルダを半田付け

完成イメージ

IMG_20190309_1810301.png

14
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
16