misoのアイコン画像
miso 2024年02月01日作成
製作品 製作品 閲覧数 539
miso 2024年02月01日作成 製作品 製作品 閲覧数 539

AE-TYBLE16を使ってボタン電池で長期動作可能なiBeacon開発ボードを作ってみた

AE-TYBLE16を使ってボタン電池で長期動作可能なiBeacon開発ボードを作ってみた

AE-TYBLE16の中身はnRF51822

秋月で購入してから早数年・・・・・・積み基板として余生を過していたこのマイコン。放置しているのは勿体ない、Ultra Low Power Modeで5μAの消費電流を実現出来てBLEも使える。

キャプションを入力できます

現実逃避のため、実験用の開発ボードの製作を行なった。

参考にしたサイト

AE-TYBLE16をArduinoIDEで使う(JLinkなしでBluetooth接続まで) #ArduinoIDE - Qiita

Arduino IDEのセットアップ

基本的には参考サイトと殆ど同じなので、以下同様の流れなので割愛。

  1. arduino-nRF5を導入
  2. nRF5FlashSoftDeviceを導入
  3. s130_nrf51_2.0.1_softdevice.hexを導入
  4. system_nrf51.cを修正し

今回作成したiBeacon向けの開発ボード

ボタン電池で動くようにしてます。詳細は割愛。

キャプションを入力できます

とりあえずiBeaconとしての動作確認

nRF Connect for Desktop Bluetooth Low Energyで動作確認、ちゃんとUUID見えてるのでOKそうです。

キャプションを入力できます

転がっていたiBeaconのコードそのまま

ae-tyble16-beacon-arduino/beacon/ibeacon/iBeacon.ino をそのまま動かしたところ平均4.81mAと相当厳しい感じでした。これをそのままボタン電池で使うのは(ry

キャプションを入力できます

最適化して Ultra Low Power Mode & ビーコン間隔を延ばした

平均11.85μAとなり満足。これならボタン電池でも余裕だ。

キャプションを入力できます

最終的なコード

#include <BLEPeripheral.h> #include <iBeacon.h> #include "nrf_soc.h" #include "nrf_nvic.h" iBeacon beacon; void setup() { char* uuid = "a196c876-de8c-4c47-ab5a-d7afd5ae7129"; unsigned short major = 0; unsigned short minor = 0; unsigned short measuredPower = -55; beacon.setAdvertisingInterval(5000); beacon.begin(uuid, major, minor, measuredPower); sd_power_mode_set(NRF_POWER_MODE_LOWPWR); sd_power_dcdc_mode_set(NRF_POWER_DCDC_ENABLE); // This saves power } void loop() { beacon.loop(); // Enter Low power mode sd_app_evt_wait(); // Exit Low power mode // Clear IRQ flag to be able to go to sleep if nothing happens in between sd_nvic_ClearPendingIRQ(SWI2_IRQn); }
misoのアイコン画像
寝るのが趣味
  • miso さんが 2024/02/01 に 編集 をしました。 (メッセージ: 初版)
ログインしてコメントを投稿する