最近スイッチサイエンスでRDM-01という基板の販売が開始されました。
このRDM-01は音リモコンというAlexaスキルと連携して使える基板になっており、この基板を使うことでEchoから出力される音を解析し、Arduino等で認識ができる形に変換、出力することができます。
つまりこのRDM-01を使うことで、サーバーサイドの開発をすることなく、直接ハードウェアに命令を送ることができるようになります。
そんなRDM-01ですが、"obniz"で動かしたらどうなるのか、やってみました!
準備するもの
RDM-01は同梱されているピンヘッダを半田付けする必要がありますが、半田付けをしたらobnizに挿すだけなので、とてもシンプルになります。
取り付けるとこんな感じです。
obnizのソースコード
画像のようにRDM-01を0~6ピンに挿入して使用した時のコードを示します。
コードはscriptの中だけになります。
let Decode = ["D","1", "2", "3", "4","5", "6", "7", "8","9", "0", "*", "#","A", "B", "C"]
var flg = false;
var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
//電源の設定
var usb = obniz.wired("USB" , {gnd:5, vcc:6} );
usb.on();
//ディスプレイ
obniz.display.clear();
obniz.display.print("RDM-01起動!");
//メインループ
obniz.repeat(async function(){
if(await obniz.io0.inputWait() == true && flg == false){//StDの反応を確認し、反応しているかどうか確認する。
flg = true
q1 = await obniz.io4.inputWait();
q2 = await obniz.io3.inputWait();
q3 = await obniz.io2.inputWait();
q4 = await obniz.io1.inputWait();
var result = (q4 << 3) + (q3 << 2) + (q2 << 1) + q1
obniz.display.clear();
obniz.display.print(Decode[result]);
console.log(Decode[result])//PCの画面上にもログとして表示する
await obniz.wait(10);
}else if(await obniz.io0.inputWait() == false && flg == true){
flg = false
}
})
}
obnizは割り込み機能がないので、メインループを作り、そこでずっとチェックをしています。
またStD(音を拾えたことを知らせるピン)が立ち上がったら、最初の一回だけ反応するようにしました。こうすることで、なんども同じ値が取れることがないようにしています。
最後に
RDM-01をobnizで使ってみましたが、とても簡単にRDM-01が使える環境だなと感じました。
ただ、電源のとりかたを誤ると、ほとんど信号が取得できないのもわかりました。
今回のコードはそれを調べた上で一番ベストなやり方になっています。
これを参考にRDM-01を使っていただければと思います。