概要
ペットのキンカチョウが放鳥時にいつも鏡に向かって鳴いているので、鏡の中のお友達(?)が鳴き返してくれるようにしました!!
よくうさぎにもちょっかいを出すので、警戒音としても使えるのかなぁと思っています。
仕組みとしては、超音波センサーを使用していて、ある一定の距離まで近づいたら音が鳴るようにしています。
デモ動画
デモ動画では、すずめの置物で代用しています。
部品
部品名 | 品番 |
---|---|
obniz本体 | obniz Board 1Y |
超音波モジュール | HC-SR04 |
圧電スピーカー | ANYM-SPT08 |
ワニ口クリップ | Access ワニグチクリップコード |
電源 | 自宅にあったモバイルバッテリー |
配線
HC-SR04 は、gnd:0, echo:1, trigger:2, vcc:3に接続し、
圧電スピーカーは、signal: 10, gnd: 11 に接続しました。
ソースコード
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script src="https://unpkg.com/obniz@3.8.0/obniz.js"></script>
</head>
<body>
<h1>超音波距離センサーと圧電スピーカーをつかったIoT</h1>
<div id="dispArea"></div>
<script>
var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
const hcsr04 = obniz.wired("HC-SR04", { gnd: 0, echo: 1, trigger: 2, vcc: 3 });
const speaker = obniz.wired("Speaker", { signal: 10, gnd: 11 });
while (true) {
let avg = 0;
let count = 0;
for (let i = 0; i < 3; i++) {
const val = await hcsr04.measureWait();
if (val) {
count++;
avg += val;
}
}
if (count > 1) {
avg /= count;
}
console.log(avg);
document.getElementById("dispArea").innerHTML = "<h1>" + avg + " mm</h1>"
if (avg < 200) {
speaker.play(2500);
}
else {
speaker.stop();
}
await obniz.wait(100);
}
}
</script>
</body>
</html>
感想
現在の改善点としては、
- 近づくと音が鳴るだけなのでできるだけ鳥っぽくしたい。
- 部品が大きく鳥が怖がってしまっている。
ということを考えて、今後改良していきたいと思っています。
最後まで読んでいただきありがとうございました!!