皆さんこんにちは、khara_xedgeです。
今回、「obniz board 1Y」というデバイスを入手しました!
「obniz board 1Y」とは、wifiで簡単にインターネットへ接続することができるマイクロコンピュータです。各種センサ接続用の端子を持ち、センサから様々な情報を取得しながら動作するシステムの作成など、IoT工作が手軽に始められます。
そんな「obniz board 1Y」を使って、楽器もどきを作ってみたいと思います。
#環境
今回実装した時の環境は以下の通りです。
◆実行環境
・Node.js 16.10.0
◆パッケージ
・npm 7.24.0
◆コーディング
・Visual Studio Code 1.61.0
◆ハード部品
・obniz board 1Y
・IC温度センサ
・圧電スピーカー
・LED照明(赤)
#演奏スタート!!
いきなりですが、実行結果から!
#ソースコード
動画で実行したコードは以下の通りです。
const Obniz = require('obniz');
const obniz = new Obniz('obnizIDを入力');
obniz.onconnect = async function () {
//温度センサの接続端子
const tempsens = obniz.wired('LM60', { gnd: 0, output: 1, vcc: 2 });
//LEDの接続端子
const led = obniz.wired('LED', { anode: 4, cathode: 5 });
//スピーカーの接続端子
const speaker = obniz.wired('Speaker', { signal: 10, gnd: 11 });
led.on(); //接続時LEDオン
setInterval(async () => {
//温度取得
const temp = await tempsens.getWait();
// 温度をコンソールに表示
console.log(temp);
// displayに反映
obniz.display.clear();
obniz.display.print(temp + 'C');
//ランダム数値生成
var rmd = Math.floor(Math.random() * 15) + 1;
let temphz = temp * rmd * rmd;
//スピーカーに音出力
console.log(temphz);
console.log(rmd);
speaker.play(temphz);
}, 1000); //一定間隔で動作させる
}
こちらのコードでは、「obniz board 1Y」に接続した温度センサで室温を取得し、その値にランダムな値を計算させた結果で音階を決定させ、スピーカーから出力しています。
#実は・・
今回室温の値をもとに音階を決定してスピーカーから出力していますが、聞いていただいた通り楽器とは言えません。。
(室温自体あまり変化しないため、ランダム関数で無理やり変化させています)
楽器は自分で演奏してこそ楽器だと思うので、以下のセンサーを使用して構成してみようと思いました。
こちらは超音波の反射を利用して対象物までの距離を測る測距センサです。
このセンサで取得した距離を音階に設定し、手を近づけたり話したりすることで変化させようと試みました。
(弦楽器での弦の長さで音階が変わるイメージです)
いざ実行してみると..
###距離センサの取得した値が0のまま、うんともすんとも言わなくなってしまいました。。
console.logに値を吐き出そうとすると以下のエラーメッセージがでてました。
alert: 'warning',
message: 'io3: heavy output. output voltage is too low when driving high'
いろいろ調べましたが、おそらく過電流による不具合の可能性。。
自分の今の手持ちでは対応できそうにないため今回はあきらめました。。
#まとめ
今回「obniz board 1Y」を手に入れたのでセンサやスピーカーを接続してみました。
スピーカーの音階を制御できることから、簡単な楽器を作成してみたかったのですが断念。。
ただ仕組み上温度センサの値を距離センサの値に置き換えることで動きそうなので、興味がある方はチャレンジしてみてください。