プロトタイプの開発に必要な手順



 必要な技術や環境


Arduino IDE  M5StickC Plusのプログラムを作成・アップロードするため。

 Web Bluetooth API  WebアプリでBLEデバイス(M5StickC Plus)と通信するため。

BLEライブラリ : M5StickC Plus上でBLE通信を行うため。

VScode  コードエディタとして使用。

Webサーバー さくらのレンタルサーバーでWebアプリを公開するため。


 マイコンの設定とプログラミング


 1. マイコンのRSSIとバッテリー残量の取得


M5StickC Plusに対してRSSIとバッテリー残量を取得するコード例です。


(cpp)


#include <M5StickC.h>

#include <BLEDevice.h>

#include <BLEServer.h>

#include <BLEUtils.h>

#include <BLE2902.h>


BLEServer *pServer;

BLECharacteristic *pRSSICharacteristic;

BLECharacteristic *pBatteryCharacteristic;


const char *RSSI_CHARACTERISTIC_UUID = "RSSI_UUID";

const char *BATTERY_CHARACTERISTIC_UUID = "BATTERY_UUID";


void setup() {

  M5.begin();

  BLEDevice::init("M5StickC");


  pServer = BLEDevice::createServer();

  BLEService *pService = pServer->createService("SERVICE_UUID");


  pRSSICharacteristic = pService->createCharacteristic(

    RSSI_CHARACTERISTIC_UUID,

    BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_NOTIFY

  );

  pRSSICharacteristic->addDescriptor(new BLE2902());


  pBatteryCharacteristic = pService->createCharacteristic(

    BATTERY_CHARACTERISTIC_UUID,

    BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_NOTIFY

  );

  pBatteryCharacteristic->addDescriptor(new BLE2902());


  pService->start();

  pServer->getAdvertising()->start();


  M5.Lcd.print("Waiting for client...");

}


void loop() {

  if (pServer->getConnectedCount() > 0) {

    // RSSIの取得

    int rssi = pServer->getRSSI();

    pRSSICharacteristic->setValue(rssi);

    pRSSICharacteristic->notify();


    // バッテリー残量の取得

    int batteryLevel = M5.Axp.GetBatVoltage(); // 適切なメソッドを使用

    pBatteryCharacteristic->setValue(batteryLevel);

    pBatteryCharacteristic->notify();

  }

  delay(5000); // 5秒間隔で取得

}



Webアプリの設定


 2. Webアプリの実装


Web Bluetooth APIを使ってRSSIとバッテリー残量を表示するWebアプリのサンプルコードです。


(html)


<!DOCTYPE html>

<html>

<head>

  <title>RSSI and Battery Monitor</title>

  <style>

    #status { font-size: 20px; }

    #battery { font-size: 20px; }

    #rssi { font-size: 20px; }

    #charging { font-size: 20px; color: green; }

ここから先は

2,511字

¥ 1,500

この記事が気に入ったらサポートをしてみませんか?