LoginSignup
10
7

More than 5 years have passed since last update.

小型 Bluetooth LE モジュール AE-TYBLE16 で LINE Things Starter してみる

Last updated at Posted at 2018-12-28

AE-TYBLE16 について

秋月電子通商で販売されている、超小型 (DIP16 300mil とほぼ同じ) の Bluetooth LE (BLE) モジュールです。
http://akizukidenshi.com/catalog/g/gK-12339/

中身は、Nordic の nRF51822 (BBC micro:bit とかと同じ) が使われていて、電源電圧も 1.6V からと、電池駆動には最適なモジュールとなっています。
何より、すごく小さい。色んな所に押し込めて、CR2032 とかで動かしてみたくなっちゃう大きさ。

ただ、AE-TYBLE16 で使われている 太陽誘電の EYSGJNAWY-WX というモジュールは、本来 UART を経由して使うものであって、単体でファームウェアを書き換えたりできるものではなさそうですね。

nRF51822 + Arduino

このモジュールを使って、LINE Things 対応デバイスを作れたら面白いなと思って少し調べてみました。
できたら、お手軽に Arduino とか mBed で開発できるような環境が良いなと...

nRF51 が乗ってるということは、すでに Arduino のボードライブラリ (arduino-nRF5) もあるし、ご丁寧にボード上に JTAG の端子まででているので、きっとできるんだろうなーと思ってたら、ありました。

秋月電子の BLE モジュール AE-TYBLE16 を Hack - Qiita

この通り動かしたら、あっさりLチカ出来てしましいました。

ちなみに、mBed 方面でも hack されているようで、こちらに結構詳しい情報が乗っています。

TYBLE16 Module / Akizuki | Mbed

arduino-nRF5 + BLEPeripheral

しかしですよ、BLEPeripheral というライブラリ を使って、BLE の電波を飛ばそうとしたら、一向に電波が飛んでくれないんですよ。
いろいろいじっているうちに、以下のことがわかりました

  • HF クロックが 32MHz で、Nordic の評価ボードの 16MHz と異なる
  • LF クロックは外付けクロックは乗っていないので、内部 RC オシレーターを使う
  • Nordic のチップは SoftDevice と言われる BLE スタック+いろいろを使うことができるが、バージョンが S130 じゃないと BLEPeripheral の bonding がうまく動かない

まあ、躓いたのはこのあたりで、これらをちゃんと設定してあげたら、無事に Arduino で BLE の電波を飛ばしてスマホからつなぐことができるファームウェアを書くことが出来ました。

以下に、動いた感じの動画があります。
https://twitter.com/hktechno/status/1078175674311925760

ちなみに、nRF51822 なので、RAM は 32kB で Cortex-M0 なので結構非力です。
BLE で強力なことやりたい人は、nRF52 系のモジュールとか ESP32 を使うことをおすすめします。

Arduino-nRF5 + BLEPeripheral を動かすまでの手順

⚠注意 以下の手順を行うと、初期状態で書き込まれていたオリジナルのファームウェアに戻すことは出来ません。

必要なもの

Board Settings

  • Board: Generic nRF51
  • Chip: 32 kB RAM, 256 kB flash (xxac)
  • Low Frequency Clock: RC Ocillator
  • SoftDevice: S130
  • Programmer: J-Link

SoftDevice の書き込み

ボードマネージャーから、arduino-nRF5 をインストールして、GitHub の README に乗ってる手順通りに nRF5FlashSoftDevice.jar を導入します。

しかし、エラーになって書き込めないはずなので、Nordic のサイト から S130 の SoftDevice をダウンロードしてきて、中身の s130_nrf51_2.0.1_softdevice.hex~/Library/Arduino15/packages/sandeepmistry/hardware/nRF5/0.6.0/cores/nRF5/SDK/components/softdevice/s130/hex に入れてください。

そうすると、Arduino のツールから SoftDevice が書き込めるようになります。Bonding が必要な場合 (LINE Things の場合必須) は、必ず S130 を使ってください。

UICR の設定

AE-TYBLE16 は、前述の通りクロックが開発ボードと違うので、UICR を書き換えておく必要があります。

  • nrfjprog -i で J-Link のシリアル番号を取得して
  • 以下のコマンドを実行 nrfjprog --snr <serial_number> --memwr 0x10001008 --val 0xFFFFFF00
    • Set HFCLK: XTALFREQ to 32MHz

これをしないと、Arduino で普通のスケッチは動くけど、BLE Peripheral を有効にしても正しく動かない状態になります。

LINE Things Starter for AE-TYBLE16

以下の GitHub に置いておきます。README の手順に従って書き込むと、LINE Things Starter が動きます。
LED とスイッチが必要です。

LIFF は、オリジナルの LINE Things Starter を使ってください。

さいごに

⚠注意 以上の手順を一度実行すると、最初に書き込まれていた UART で遊べるファームウェアに戻せなくなるので気をつけてください。

また、明らかに非正規の方法でファームウェアを書き換えているので、誰も何も保証してくれないので、自己責任で行ってください。

それでもよければ、楽しく Arduino IDE で BLE の開発ができます。
LINE Things Developer Trial を使うと簡単にスマホ側のアプリも開発できるので、是非試してみてください。

追記 (2018/01/30)

面実装用のユニバーサル基板を使って、ボタン電池 CR2032 で動作する LINE Things Starter 向けのボードを作ってみました。

スイッチ、LED、あと SOP-8 の温度計 IC を載せてみました。
デバッグ用のピンフレームも出したので、このままプログラムの書き換えができます。

この小ささで、BLE 通信ができるのはいろいろ用途が広がりそうです。

10
7
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
10
7