はじめに
micro:bitでの工作の際に「特定の言葉(ウエイクワード)でプログラムを起動させたい」と思ったことはありませんか?
例えば、ベッドで動けないケガをした人のために、「ライトをつけて」と声で命令したら部屋の照明が点灯したり、サーボモーターが作動して物理的なスイッチを押してくれたり。
実は、micro:bitにたった300円の部品を追加するだけで、このような「声」をトリガーにしたアクションを実現できるんです!この記事ではその具体的な方法を紹介します。
キーデバイス:ダイソー「ボイスコントロールライト」
このアイデアの核となるのが、ダイソーから300円(税抜)で販売されている「ボイスコントロールライト」です。
ボイスコントロールライトとは?
この製品は、USBに接続するとライトが点灯し、特定の音声コマンドでライトのオン・オフができるという、300円とは思えない画期的なガジェットです。
製品説明(パッケージより抜粋)
- あなたの言葉にライトが反応する。話しかけてね。音声操作ライト。
- 電圧:DC5V
- 電流:0.2A
- 【はじめに】 本品をUSB Type-Aコネクタに差し込むとライトが点きます。ライトに向かって「スマートライト」と呼びかけると、音声を認識した合図でライトが1回点滅します。
- 【ライトの消し方】 「ライトを消して」という言葉をかけると、ライトが消えます。
- 【ライトの点け方】 「ライトを点けて」という言葉をかけると、ライトが点きます。
つまり、「スマートライト」というウェイクワードの後に、「ライトを点けて」「ライトを消して」というコマンドで、内蔵LEDを制御できる仕組みになっています。
micro:bitと組み合わせる仕組み
今回のアイデアは、このボイスコントロールライトの「声に反応して光る(または消える)」という特性と、micro:bitの「明るさセンサー」機能を組み合わせることで実現します。
micro:bitのLEDディスプレイ部分は、実は光センサーとしても機能します。
処理フロー
- ユーザーが「スマートライト」⇒「ライトを点けて」と発声する。
- ダイソーのボイスコントロールライトが反応して光る。
- micro:bitの明るさセンサー(LED画面)が、ボイスコントロールライトの光を検知する。
- micro:bitが光の変化(明るくなったこと)をトリガーとして、あらかじめプログラムされた特定の処理を実行する(例:ブザーを鳴らす、サーボモーターを動かす、別のLEDを光らせるなど)。
コード
qiita.js
basic.showIcon(IconNames.Heart)
let isLED_ON = 0
music.setVolume(60)
basic.forever(function () {
if (input.lightLevel() >= 100) {
isLED_ON += 1
} else {
isLED_ON = 0
}
basic.pause(100)
if (isLED_ON >= 3) {
music.ringTone(330)
} else {
music.stopAllSounds()
}
})