編集履歴一覧に戻る
pmanのアイコン画像

pman が 2021年05月16日23時56分27秒 に編集

コメント無し

記事種類の変更

+

製作品

本文の変更

# 概要 他に家人がいないと宅配便を時間指定にしたとき、インターフォンが聞こえないのでおちおちトイレにも座ってられない経験がある人は少なくないと思います。トイレに行く前にセットすることで落ち着いて用を足すことができる? # デモ @[youtube](https://youtu.be/XgUcVHn_vB0) # 動作説明 トイレに行く前に、スマホからアプリを動作させます。音声センサーがドアホンの音を検出すると光センサーを確認、モニターが点灯していると判断するとアプリを実行しているブラウザのボタンを有効にします。 ボタンが有効になったらボタンを押すことで、obniz に取り付けられたスピーカーからブザーが鳴らすことができますので、在宅であることを知らせます。 無事トイレから出たらアプリを終了させましょう。 # 部品 |部品 | 今回使用したもの | |-|-| |obniz | obniz Boad 1Y | |音検出| [keyestudio Analog Sound module](https://wiki.keyestudio.com/KS0487_Keyestudio_37_in_1_Sensor_Kit_upgrade_v3.0)| |モニタON検出|[keyestudio Photocell module](https://wiki.keyestudio.com/KS0487_Keyestudio_37_in_1_Sensor_Kit_upgrade_v3.0)| |保留音|[keyestudio Passive Buzzer module](https://wiki.keyestudio.com/KS0487_Keyestudio_37_in_1_Sensor_Kit_upgrade_v3.0)| |電源| ELECOM モバイルバッテリー DE-M01L-5230 (販売終了品)| 壁に取り付けるため、100均ショップで購入したパンチングボードを使用しました。 モバイルバッテリーは、消費電力が低すぎるのか手持ちでは古いタイプのものでないと途中で電源供給が終了されてしまうものが多いです。 # 結線 | obniz | | |-|-| |IO0| Analog Sound module - Signal | |IO3| Photocell module - Signal| |IO4| Photocell module - Vcc| |IO10| Keyestudio_Buzzer - Signal| その他、モジュールの Vcc/GND は obniz Board 1Y から供給される USB Vcc/GND と接続しています。 もともとスリープ運用を検討し、スリープ中でも電源が必要なものはそちらから、動作中のみで良いものは IO から取るつもりでした。 音声センサー(Analog Sound module)に取り付けられている半抵抗を調整し、インターホンにのみ反応するように感度を調整します。 また、光センサー(Photocell)については、音声センサーが周囲の音に誤反応しても、モニター点灯を検出することで誤反応を避けるようにしています。 # ソースコード ```html: HTML/javascript <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" /> <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <script src="https://unpkg.com/obniz@3.x/obniz.js" crossorigin="anonymous" ></script> </head> <body> <div id="obniz-debug"></div> <div class="container"> <div class="text-center"> <h3>ちょっと待って下さい</h3> <button class="btn btn-primary" id="on" disabled="disabled">待っててください</button> </div> </div> <script> //type in your obniz ID var obniz = new Obniz("OBNIZ_ID_HERE"); $("#on").hide(); //during obniz connection obniz.onconnect = async function() { // io3: Photocell Sig // io4: Photocell Vcc obniz.io4.output(true); // Keyestudio_Buzzer sig: 10 var speaker = obniz.wired("Keyestudio_Buzzer", {signal: 10}); console.log("obniz Connected."); obniz.onloop = async function() { var mic = await obniz.io0.inputWait(); var val = await obniz.ad3.getWait(); console.log(mic + ': ' + val); if (mic && val >= 1.0) { $("#on").prop("disabled", false); $("#on").show(); } await obniz.wait(100); } $("#on").click(function() { playsound(880, 600); playsound(880, 50); playsound(880, 50); playsound(0, 200); }); async function playsound(freq, length) { speaker.play(freq); await obniz.wait(length * 0.9); speaker.stop(); await obniz.wait(length * 0.1); } }; </script> </body> </html> ``` # 振り返り

-

当初音声センサーに反応してスリープ解除で作りLINE通知で作ったのですが、音声センサーからスリープ解除、Wifi接続してLINE通知まで10秒程度、Wifi接続にトラブルともう十数秒、といったところでした。

+

当初音声センサーに反応してスリープ解除LINE通知で作ったのですが、音声センサーからスリープ解除、Wifi接続してLINE通知まで10秒程度、Wifi接続にトラブルともう十数秒、といったところでした。

いろんなサンプル見ながら、node.js で動くものを作ってギリギリ実用かなあ、と思ったのですが LINE 通知がブラウザアプリから呼び出す手段がどうにも見つからず断念して今の形になってしまいました^^; 最後に実験していて気が付きましたがインターホンの通話ボタンを押さないと外部へ音が聞こえないんですね…音声モジュールもプラグイン書けばPCM音声も鳴らせそうです。もう少し研究が必要ですね^^;