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

makoragi が 2021年05月13日15時11分04秒 に編集

コメント無し

記事種類の変更

+

製作品

本文の変更

## これは何か 帰宅時にドアを開けて「ただいま」と言うためのシステムです。 子供が学校から帰宅したとき、家に誰も居なくても「ただいま」と言うのは、防犯上とても大事だそうです。 この癖をつけさせたいです。 ドアが開いたときに警告音が鳴り、「ただいま」を言うまで鳴り続けます。 ++注)出かけるときにも鳴ってしまうので要改善です++ ## デモ動画 @[youtube](https://www.youtube.com/watch?v=8Vyk8O1WVVY) ## 設置イメージ ![設置イメージ](https://camo.elchika.com/47e275331cfc5f3dedc73e57ba959d9e3e2a2342/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34623132636132312d636333352d346565632d626431372d3033356661373131366434612f30633061376234352d656233312d343361312d383263312d633663383535623763363237/) ## 使用部品 | 部品名 | 個数 | |:---:|:---| | obniz Board 1Y | 1 | | ドアセンサー(百均) | 1 | | サーボモータ(SG90) | 1 | | クラッピー(百均) | 1 | | iPhone | 1 | ## 製作プロセス ### 部品の改造 百均のドアセンサーは DAISO の「LEDセンサーライト」を使用し、コードを切断しただけです。 クラッピーはサーボモータ(SG90)を埋め込んで、0~40度くらいの動きで拍手できるようにしました。詳細は[コチラ](https://makoragi.hatenablog.com/entry/2018/02/03/110008)。 ### 設計図 図ではIO2になっていますが、obniz Board 1Y の電源ピン(5v)に接続しました。 ![全体構成](https://camo.elchika.com/14c9539e1ff9d745e9a0ded07b3abb721f55828b/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34623132636132312d636333352d346565632d626431372d3033356661373131366434612f61663562383531322d363736612d346636332d613235362d333861373266623563623531/) ### ソースコード

+

CodeSandBoxを使って実験しました。

```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); } }; ``` ## おわりに アイデア応募の時点では obniz を子どもに持たせて見守りのようなことが出来ないかと考えていましたが、通学路でネットワーク接続することが難しくなり断念しました。 代わりに防犯となるようなことを調べていたら、「ただいまと言うことが防犯になる」ということを知り、このアイデアへと変更しました。仕組みは obniz 公式の "音声認識を利用して「ただいま」と聞こえたら旗を振る" を参考にさせていただきました。 課題はまだ残っており、今後もソフトウェアの改善をしていこうと思います。