Skip to content

Instantly share code, notes, and snippets.

@kirurobo
Created November 22, 2020 09:28
Show Gist options
  • Save kirurobo/fa982cbe26ab7065e7d1e5ebca709414 to your computer and use it in GitHub Desktop.
Save kirurobo/fa982cbe26ab7065e7d1e5ebca709414 to your computer and use it in GitHub Desktop.
ATOM LiteのBluetoothで、AndroidのGoogleアシスタント起動ボタン
#include <BleKeyboard.h>
#include "M5Atom.h"
// ATOM Lite で、Google アシスタント 起動ボタン
//
// Usage:
// 1. 起動すると「ESP32 BLE Keyboard」として現れるので、端末でペアリングしておく
// 2. キーボードとしてペアリングでされていればLEDは青になる
// 3. ボタンを押すと、Googleアシスタントが反応する、はず。
//
// Author: @Kirurobo
//
// Requirement:
// ESP32-BLE-Keyboard
// https://github.com/T-vK/ESP32-BLE-Keyboard
//
// Reference:
// @saitotetsuya , ATOM LiteをBLEキーボードにする
// https://gist.github.com/3110/161e803683fd14f2b6a533ca010ae5c5
//
// BLEキーボードのインスタンス
BleKeyboard bleKeyboard;
// 試したところ、[Windows]に当たるキーでGoogleアシスタントが起動できるみたい
const uint8_t TARGET_KEY = KEY_LEFT_GUI;
// LED色。まぶしかったので明るさ控えめ。
const uint32_t COLOR_CONNECTED = 0x000010; // 青
const uint32_t COLOR_DISCONNECTED = 0x001000; // 赤
const uint32_t COLOR_SENDING = 0x100000; // 緑
void setup()
{
M5.begin(true, false, true);
bleKeyboard.begin();
delay(50);
// 未接続状態のLED色にする
M5.dis.drawpix(0, COLOR_DISCONNECTED);
}
void loop()
{
if (bleKeyboard.isConnected()) {
if (M5.Btn.wasPressed())
{
// 送信中はLEDの色を変える
M5.dis.drawpix(0, COLOR_SENDING);
// キー送信
bleKeyboard.write(TARGET_KEY);
// 画面消灯していた場合、1回目では点灯するだけだったので少し後でもう一度送出する
// 既にGoogleアシスタントが起動していても、聞き直してくれるだけのはず
delay(500);
bleKeyboard.write(TARGET_KEY);
}
// 接続済状態のLED色にする
M5.dis.drawpix(0, COLOR_CONNECTED);
} else {
// 未接続のLED色にする
M5.dis.drawpix(0, COLOR_DISCONNECTED);
}
delay(100);
M5.update();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment