これは何か
帰宅時にドアを開けて「ただいま」と言うためのシステムです。
子供が学校から帰宅したとき、家に誰も居なくても「ただいま」と言うのは、防犯上とても大事だそうです。
この癖をつけさせたいです。
ドアが開いたときに警告音が鳴り、「ただいま」を言うまで鳴り続けます。
注)出かけるときにも鳴ってしまうので要改善です
デモ動画
設置イメージ
使用部品
部品名 | 個数 |
---|---|
obniz Board 1Y | 1 |
ドアセンサー(百均) | 1 |
サーボモータ(SG90) | 1 |
クラッピー(百均) | 1 |
iPhone | 1 |
製作プロセス
部品の改造
百均のドアセンサーは DAISO の「LEDセンサーライト」を使用し、コードを切断しただけです。
クラッピーはサーボモータ(SG90)を埋め込んで、0~40度くらいの動きで拍手できるようにしました。詳細はコチラ。
設計図
図ではIO2になっていますが、obniz Board 1Y の電源ピン(5v)に接続しました。
ソースコード
CodeSandBoxを使って実験しました。
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 公式の "音声認識を利用して「ただいま」と聞こえたら旗を振る" を参考にさせていただきました。
課題はまだ残っており、今後もソフトウェアの改善をしていこうと思います。
-
makoragi
さんが
2021/05/13
に
編集
をしました。
(メッセージ: 初版)
-
makoragi
さんが
2021/05/13
に
編集
をしました。
-
makoragi
さんが
2021/05/13
に
編集
をしました。
ログインしてコメントを投稿する