makoragi が 2021年05月13日14時52分31秒 に編集
初版
タイトルの変更
黙って帰らせないず
タグの変更
obniz
クラッピーチャレンジ
メイン画像の変更
本文の変更
## これは何か 帰宅時にドアを開けて「ただいま」と言うためのシステムです。 子供が学校から帰宅したとき、家に誰も居なくても「ただいま」と言うのは、防犯上とても大事だそうです。 この癖をつけさせたいです。 ドアが開いたときに警告音が鳴り、「ただいま」を言うまで鳴り続けます。 注)出かけるときにも鳴ってしまうので要改善です ## デモ動画 https://www.youtube.com/embed/8Vyk8O1WVVY ## 設置イメージ ![設置イメージ](https://camo.elchika.com/47e275331cfc5f3dedc73e57ba959d9e3e2a2342/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34623132636132312d636333352d346565632d626431372d3033356661373131366434612f30633061376234352d656233312d343361312d383263312d633663383535623763363237/) ## 使用部品 | 部品名 | 個数 | |:---:|:---| | obniz Board 1Y | 1 | | ドアセンサー | 1 | | サーボモータ(SG90) | 1 | | クラッピー | 1 | | iPhone | 1 | ## 製作プロセス ### 設計図 ![全体構成](https://camo.elchika.com/14c9539e1ff9d745e9a0ded07b3abb721f55828b/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34623132636132312d636333352d346565632d626431372d3033356661373131366434612f61663562383531322d363736612d346636332d613235362d333861373266623563623531/) ### ソースコード ```javascript: const obniz = new Obniz("OBNIZ_ID_HERE"); const vth = 4; let angle_list = [45, 0]; let isOpened = false; let isStopped = true; obniz.onconnect = async function () { const servo = obniz.wired("ServoMotor", { signal: 3, vcc: 4, gnd: 5 }); SpeechRecognition = window.webkitSpeechRecognition || window.SpeechRecognition; const recognition = new SpeechRecognition(); recognition.interimResults = true; recognition.onresult = async (event) => { document.getElementById("voice").innerHTML = event.results[0][0].transcript; if (event.results[0][0].transcript == "ただいま") { servo.angle(0); isStopped = true; } }; while (true) { if (!isStopped) { for (let i = 0; i < angle_list.length; i++) { servo.angle(angle_list[i]); await obniz.wait(150); } } if ((await obniz.ad0.getWait()) < vth) { if (!isOpened) { document.getElementById("voice").innerHTML = "Open!"; recognition.start(); isOpened = true; isStopped = false; } } else { document.getElementById("voice").innerHTML = "Closing..."; // recognition.stop(); isOpened = false; } await obniz.wait(200); } }; ```