以下の内容はhttps://shuzo-kino.hateblo.jp/entry/2024/08/08/192208より取得しました。


M5stamp S3で BLEビーコンで遊んでみる その2:ディープスリープをして消費電力を落とす

shuzo-kino.hateblo.jp
ではバリバリおくっており電気をバカ食いします。
これではBLEの利点である低消費電力が全く意味をなさないのでディープスリープをして消費電力を落としてみます。

実際のところ

30秒に一回起動し、一秒だけ窓をあける……みたいな感じの動きをしてみます。

#include <M5StampS3.h>
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
#include <BLEAdvertising.h>

// Eddystone-URLの設定
#define EDDYSTONE_URL_FRAME_TYPE 0x10
#define TX_POWER 0xEE  // -18dBm
const char* url = "https://example.com";

// スリープ時間の設定(マイクロ秒)
#define SLEEP_TIME 30000000  // 30秒

RTC_DATA_ATTR int bootCount = 0;

void setup() {
  M5.begin();
  
  // ブート回数をインクリメント
  bootCount++;
  Serial.println("Boot number: " + String(bootCount));

  // BLEデバイスの初期化
  BLEDevice::init("M5StampS3-Eddystone");
  
  // BLEサーバーの作成
  BLEServer *pServer = BLEDevice::createServer();
  
  // アドバタイジングの設定
  BLEAdvertising *pAdvertising = pServer->getAdvertising();
  
  // Eddystone-URLフレームの作成
  uint8_t eddystoneData[20];
  int dataLength = 0;
  
  eddystoneData[dataLength++] = EDDYSTONE_URL_FRAME_TYPE;
  eddystoneData[dataLength++] = TX_POWER;
  
  // URLエンコーディング
  eddystoneData[dataLength++] = 0x03;  // https://
  for (int i = 0; i < strlen(url); i++) {
    eddystoneData[dataLength++] = url[i];
  }
  
  // アドバタイジングデータの設定
  pAdvertising->setAdvertisementData(BLEAdvertisementData()
    .setFlags(0x06)  // BR/EDR Not Supported & LE General Discoverable Mode
    .setManufacturerData(std::string((char*)eddystoneData, dataLength)));
  
  // アドバタイジング開始
  pAdvertising->start();
  
  Serial.println("Eddystone-URL Beacon transmitted");

  // 短時間アドバタイジングを続ける(BLEスキャナーが検出しやすくするため)
  delay(1000);

  // アドバタイジングの停止
  pAdvertising->stop();
  BLEDevice::deinit(true);
  
  Serial.println("Going to sleep for 30 seconds");
  Serial.flush();
  
  // ディープスリープの開始
  esp_sleep_enable_timer_wakeup(SLEEP_TIME);
  esp_deep_sleep_start();
}

void loop() {
  // ディープスリープを使用しているため、このループは実行されません
}



以上の内容はhttps://shuzo-kino.hateblo.jp/entry/2024/08/08/192208より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14