Bluetoothを使う
R2.6.8 スマホとつなぐ
今まで、BLEは私にとって高根の花だったけれど、いろんなことをあれこれやって多少なりとも知識が身に付いてきたのだろうか、BLEについてのスケッチと解説が分かるようになっていました。一から作ることはできないのだけれど、サンプルを改変して、うまくいかないところを調整することで、目的が達成できるようになってきました。嬉しい!
最初は、2台のM5Stackをつないで、片方から文字列を送り、もう片方でAquesTalkで喋ることに挑戦していたのだけれど、あと一歩のところで、挫折(否! 許してやろうか!)。片方をスマホにしました。スマホならプログラミング要らないので、片方のM5Stackのスケッチだけでいいということで....(^^;)
スマホをセントラル、M5Stackをペリフェラルにして、次の作業をしていきます。
//サービスIDとキャラクタリスティックIDを定義--------------
#define SERVICE_UUID "......"
#define CHARACTERISTIC_UUID "......"
BLEServer* pServer = NULL;
BLECharacteristic* pCharacteristic = NULL;
bool deviceConnected = false;
//サーバーのコールバック関数--------------
class MyServerCallbacks: public BLEServerCallbacks {
void onConnect(BLEServer* pServer) {
avatar.init();
TTS.playK("BLE connected", 100);
deviceConnected = true;
};
void onDisconnect(BLEServer* pServer) {
TTS.playK("BLE disconnected", 100);
deviceConnected = false;
}
};
//キャラクタリスティックのコールバック----------------------
class MyCallbacks: public BLECharacteristicCallbacks {
void onRead(BLECharacteristic *pCharacteristic) {
pCharacteristic->setValue("Hello");
}
void onWrite(BLECharacteristic *pCharacteristic) {
value = pCharacteristic->getValue();
flag = 1;
}
};
void setup() {
いろいろ -----------
//BLE 初期化---------------------
BLEDevice::init("m5-stack");
BLEServer *pServer = BLEDevice::createServer(); // サーバー作成
pServer->setCallbacks(new MyServerCallbacks()); // コールバック関数の設定
BLEService *pService = pServer->createService(SERVICE_UUID); // サービスの作成
// キャラクタリスティックの作成---------------
pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_WRITE
);
pCharacteristic->setCallbacks(new MyCallbacks());
// サービスとアドバタイジングの開始-----------------------------
pService->start();
BLEAdvertising *pAdvertising = pServer->getAdvertising();
pAdvertising->start();
}
void loop() {
M5.update();
if(M5.BtnA.wasPressed()){
TTS.playK("新しいライブラリは.....なりました。", 100);
}
if ( flag == 1){
TTS.playK(value.c_str(), 100);
flag = 0;
}
}
このスケッチは、大澤 文孝氏の「M5Stack」ではじめる電子工作 (I・O BOOKS) に掲載されていたスケッチを使わせていただき、それにAquesTalkとAvatarを付加させています。
ここで見ることができます。