LoginSignup
24
8

More than 5 years have passed since last update.

obnizで家の猫にリモートで餌をあげてみた

Posted at

リモート餌やりマシーン

旅行中でも、家の猫に餌をあげたい!
どうせならお家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を開いてボタンを押したら回る回る!
餌をあげる長さを調整して、ちょうどいい量が出るようにしました。

24
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
8