1. micro:bitでbluetoothサービスを使用するプログラム作成
以下のような感じで一通りのbluetoothサービスを最初に追加します
また、ペアリングをしなくても利用できるようにします
2. microbitの温度を取得するプログラム
Arduino IDEから以下のプログラムをM5Stackに書き込みます。microbitのADDRESSは適宜書き換えてください。
#include <M5Stack.h>
#include "BLEDevice.h"
// Address of microbit
#define MYSERVER_ADDRESS "XX:XX:XX:XX:XX:XX"
// Temperature Service
static BLEUUID svcUUID("e95d6100-251d-470a-a062-fa1922dfa9a8");
// Temperature Service - Characteristics
static BLEUUID chUUID("e95d9250-251d-470a-a062-fa1922dfa9a8");
static BLEAddress *pServerAddress;
static BLERemoteCharacteristic* pRemoteCharacteristic;
static BLEClient* pClient;
void setup()
{
M5.begin(true, false, true);
M5.Power.begin();
M5.Lcd.clear(BLACK);
M5.Lcd.setTextColor(GREEN);
M5.Lcd.setTextSize(2);
M5.Lcd.println(F("Starting..."));
// init the device.
BLEDevice::init("");
pServerAddress = new BLEAddress(MYSERVER_ADDRESS);
// connect to microbit
BLEClient* pClient = BLEDevice::createClient();
pClient->connect(*pServerAddress, BLE_ADDR_TYPE_RANDOM);
if( pClient->isConnected() == false ){
M5.Lcd.println("failed to connect the server...");
delay(2000);
return;
}
// get Service
BLERemoteService* pRemoteService = pClient->getService(svcUUID);
if( pRemoteService == nullptr ){
M5.Lcd.println(F("failed to get service UUID..."));
delay(2000);
pClient->disconnect();
return;
}
// get Characteristic
pRemoteCharacteristic = pRemoteService->getCharacteristic(chUUID);
if( pRemoteCharacteristic == nullptr ){
M5.Lcd.println(F("failed to get characteristic UUID..."));
pClient->disconnect();
delay(2000);
return;
}
}
void loop()
{
M5.Lcd.clear(BLACK);
M5.Lcd.setTextSize(4);
M5.Lcd.setTextColor(YELLOW);
M5.Lcd.setCursor(80, 100);
M5.update();
if( pRemoteCharacteristic->canRead()) {
// read temperature
uint8_t value = pRemoteCharacteristic->readUInt8();
M5.Lcd.print("temp:");
M5.Lcd.println(value);
}
delay(2000);
}
3. microbitの温度を取得するプログラムの実行結果
〇参考情報
・Bluetooth Developer Studio Level 3 Profile Report