リモート餌やりマシーン
旅行中でも、家の猫に餌をあげたい!
どうせならお家IoT化の一環としてobnizを使ってスマホから使える餌やり機を作ってみました。
必要なもの
obniz(オブナイズ)
obnizはjavascriptから操作できるので、ボタンを押したらモーターを回すというWebページを1つ作るだけで済んじゃいます。
しかもモーターもそのまま繋がるのでobnizを使って作ってみました。
詳細は以下
https://obniz.io/
無限回転サーボ
餌をあげるのにスクリューとモーターを用意します。
DCモーターだと作りにくいので無限に回転するサーボモーターを買ってきました。
http://akizukidenshi.com/catalog/g/gM-08305/
木工材料
パイプとか、箱が必要でした。あげたい餌の量でサイズは変えたほうがいいかも。
組み立てる
まずは適当なパイプを買ってきて、スクリューは3Dプリンタで作りました。STLはこちらです。
次にobnizにモーターをつなぎます。 今回はこのようにしました。
io0: GND,
io1: VCC,
io2: signal
繋いで電源入れてみたところ。
試しに回してみると、これがなかなかうまく動かず、なんどかスクリューを削ったりしました。(もっと粒の大きな餌なら問題なかったかも)
コード
あとはHTMLのコーディングです。
まずはobniz.jsをunpkgから持ってきます。
<script src="https://unpkg.com/obniz@1.2.2/obniz.js"></script>
そして、ボタンを押したら何秒かサーボを回すようにしました。
下にあるのが全体のHTMLです。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>
<script src="https://unpkg.com/obniz@1.2.2/obniz.js"></script>
</head>
<body>
<div id="obniz-debug"></div>
<br>
<div class="text-center">
<h1> Pet Feeder </h1>
</div>
<button id="meal">Feeding</button>
<div id="dispMeal"></div>
<script>
function getTime(){
var dateTime=new Date();
var hour = dateTime.getHours();
var minute = dateTime.getMinutes();
return hour + ":" + minute;
}
var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
var numberOfMeal = 0;
var lastTimeMeal;
$("#dispMeal").text("Number of feeding : "+numberOfMeal)
var servo = obniz.wired("ServoMotor", {gnd:0, vcc:1, signal:2});
$("#meal").click(async function(){
numberOfMeal++
lastTimeMeal = getTime();
$("#dispMeal").text("Number of feeding : "+numberOfMeal+", The last time : "+lastTimeMeal)
servo.angle(0.0);
await obniz.wait(10000);
servo.angle(6.9);
})
}
</script>
</body>
</html>
このHTMLを開いてボタンを押したら回る回る!
餌をあげる長さを調整して、ちょうどいい量が出るようにしました。