クリエイター手抜きプロジェクト[552]IoT obniz編 音を鳴らす/古籏一浩

投稿:  著者:  読了時間:10分(本文:約4,700文字)



今回は、obnizで音を鳴らしてみましょう。

ここで使用するのはIchigoJam/IchigoLatteで使った圧電スピーカー(圧電ブザー/圧電サウンダー)です。もし、持っていない場合は1個30円ほどで購入することができます。

・圧電スピーカー(圧電サウンダ)(13mm)PKM13EPYH4000-A0
http://akizukidenshi.com/catalog/g/gP-04118/

さて、この圧電スピーカーをobnizにつなぐわけですが、ここからがobnizの凄いところです。何と圧電スピーカーは、12個あるIO端子のどこに繋げてもよいのです。





通常、デバイスを接続する場所はおおよそ決められています。例えば、この連載で取り上げたIchigoJamでは、圧電スピーカーを接続する場所は決まっています。

GPIOのように、汎用性がある端子が用意されている機器もあります(ラスベリーパイなど)。それでも、GNDやVCCなどは決められていて、そこに各種センサーやデバイスをつなぎます。

ところが、obnizは全部が汎用になっています。GNDもVCCもIOも区別せずつなぐことができます。とは言っても、どこに何をどのようにつなげているのかは、プログラムで設定する必要があります。

センサー類をたくさん接続すると、どうしてもGNDやVCCなど、特定の接続場所が不足してしまいます。でも、obnizなら汎用なので自由です。

こういう汎用端子は単体使用ではありがたみがわかりませんが、いろいろ接続していくと、何と便利なのかと実感できると思います。

さて、話を戻しましょう。今回は、この汎用端子に圧電スピーカーをつなぎます。ここでは0番と3番に接続しました。以後の文章では0番、3番という書き方ではなく、公式ページにあわせてio0、io3というように端子名を表記します。

圧電スピーカーでプラスマイナスがある場合は、プラスをio3に、マイナスをio0に差し込んでください。特にプラスとマイナスの区別がない場合は、io0とio3に差し込めば大丈夫です。

圧電スピーカーを接続したら、以下のプログラムを実行してみましょう。440Hzの音が鳴るはずです。圧電スピーカーの種類によっては、音が小さいかもしれません。


<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/obniz@1.4.4/obniz.js"></script>
</head>
<body>
<div id="obniz-debug"></div>
<script>
var obniz = new Obniz("機器番号");
obniz.onconnect = async function () {
obniz.display.clear();
obniz.display.print("サウンドテスト");
var speaker=obniz.wired("Speaker", {signal:3 , gnd:0 });
speaker.play(440);
}
</script>
</body>
</html>

どの端子をどのように使うかを、指定しているのがobniz.wired()です。

最初のパラメーターには、以下のページに掲載されているパーツライブラリ名を指定します。

https://obniz.io/sdk/parts

今回はスピーカーなので、Speakerと指定します。

ここの2番目のパラメーターで、端子をどのように使用しているかを指定します。ここを間違えてしまうと、接続しているセンサーやデバイスが壊れてしまうことがあるので注意してください。

今回はio0にGND、io3に信号線という設定です。圧電スピーカーは、どちらの足をGNDに差し込んでも問題ないので、設定を間違えても壊れることはありません。

無事に音が出たら、今度は周波数を少しずつ変えて鳴らしてみます。以下のプログラムは、音を261Hzから1045Hzまで徐々に変えて鳴らします。

<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/obniz@1.4.4/obniz.js"></script>
</head>
<body>
<div id="obniz-debug"></div>
<script>
var obniz = new Obniz("機器番号");
obniz.onconnect = async function () {
obniz.display.clear();
obniz.display.print("サウンドテスト2");
var speaker=obniz.wired("Speaker", {signal:3 , gnd:0 });
for(let i=261; i<1046; i++){
speaker.play(i);
await obniz.wait(5);
}
speaker.stop();
}
</script>
</body>
</html>

obnizにはスイッチがあるので、これを使って音を変化させてみます。左に回したら周波数を減らし(音は低くなる)、右に回したら周波数を増やします(音は高くなる)。

実際のプログラムは以下のようになります。

<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/obniz@1.4.4/obniz.js"></script>
</head>
<body>
<div id="obniz-debug"></div>
<script>
var obniz = new Obniz("機器番号");
obniz.onconnect = async function () {
var freq=440;
obniz.display.clear();
obniz.display.print("サウンドテスト3");
obniz.display.print(freq+" Hz");
var speaker=obniz.wired("Speaker", {signal:3 , gnd:0 });
speaker.play(freq);
obniz.switch.onchange=function(state){
if((state=="left")&&(freq>50)){ freq=freq-50; }
if(state=="right"){ freq=freq+50; }
speaker.play(freq);
obniz.display.clear();
obniz.display.print("サウンドテスト3");
obniz.display.print(freq+" Hz");
}
}
</script>
</body>
</html>

obnizを使えば、手軽にセンサーからの入力値に応じて音で危険かどうかを知らせる、といったこともできます。obnizは小型なので、検知器としても便利かもしれません。

パーツライブラリも、JavaScriptで自作することができるようです。以下のページに、LEDライブラリのサンプルコードが掲載されています。

https://github.com/obniz/obniz/blob/master/parts/Light/LED/index.js


【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/

「どこでもドア」のような物質転送装置を使ったら、肉体は転送されるが、魂が天国に溢れてしまって神様が困っている、というショートショートがあった…。

ログ・ホライズンにも肉体と意識がどうなっているか、というのがあって外から(プレイヤー)見た意識と、ゲーム世界の中の人から見た意識ではとらえかたが違うんだなあというのがあって興深かった。お金の謎とか、まあ面白かったけど、多分アニメはもう作られない可能性大だろうなあ。

・ログ・ホライズン(アニメ)
http://www9.nhk.or.jp/anime/loghorizon/
・ログ・ホライズン(原作)
https://ncode.syosetu.com/n8725k/

大相撲で御嶽海が優勝した。長野県出身で初めて。ということで地元は大喜び。御嶽海は小学生の頃からTVに出ていたので、インタビュー慣れというか、テレビ慣れしてるかと思ったけど、やはり優勝してインタビューされると違うのだなあ。


・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram

・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936
[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/

・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591
https://www.amazon.co.jp/dp/4844397605

・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP
http://digiconcart.com/dccartstore/cart/info/2561/218591

・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/

・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/

・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/

・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/

・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/