8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Slackからペット用自動給餌器を操作する

Last updated at Posted at 2018-07-28

#我が家のペット
「くるみちゃん」というシルバーのトイプードルを飼っています。
今年で3歳になりました!
毎日長時間のお留守番を頑張っています。
夕飯は私がいつも帰ってきてからあげているのですが、今日はどうしても帰りが遅くなる・・・というときは、事前に”ペット用自動給餌器”をセットしておき、指定の時間になったら餌を食べられるようにしています。
image.png

#自動給餌器の課題
あらかじめ指定した時間に(例 19:00)
あらかじめ指定した量の(例 F-04)
餌が自動的に出てくる仕組みです。
あらかじめ予定がわかっているときだといいのですが、
帰りに電車が人身事故で遅れたりとか、急な仕事が入って帰りが遅くなったりとかするわけです。

ということで、Slackから”ペット用自動給餌器”を操作できるようにしてみました。

#システム要件
以前の記事でも紹介しましたが、我が家は夫婦Slackを導入し、ペットの見守りを行なっています。そこで今回はSlackから餌をあげられるようにしたいと思います。
以前の記事:Slackでペットのお留守番を見守る

  • Slackから任意のタイミングで自動給餌器を操作し餌をあげる

#準備したもの
電子工作的なもの

DCモーターや餌の量を測るスイッチは自動給餌器に入っているものを使います。

システム

  • Slack

開発環境

  • MacOSX
  • Python, Shell
  • Slack Bot: Hubot + CoffeeScript

#回路図
image.png

#自動給餌器ハック

【注意事項】
言うまでもありませんが、既存製品の分解は自己責任でお願いします!!我が家は、自動給餌器を1年以上使ったところで若干動きがおかしくなったこともあり、買い直すかハックするか悩み、思い切ってハックしましたw


自動給餌器の底部分を開けると、DCモーターが動いて、水車が周り餌の量が一定量出るような仕組みになっていました。一定量の判定は、スイッチで行います。

image.png

DCモーターはをRaspberry Piと繋いだTA7291Pで制御します。
餌の量を判定するためのスイッチのON/OFFを検知するために、RaspberryPiのGPIOピンに繋ぎます。
詳しくは回路図を参照してください。

#DCモーターを操作する
DCモーターを操作し、餌を一定量(スイッチ4回分<-ペットによって餌の量は調整できるようになってます)出すプログラムはこちらの記事のプログラム(motor.py)を使わせていただきました。ありがとうございます!

Raspberry Pi 3でpythonを使いモータードライバーを使いモータを制御する!

スイッチをGPIOポート8に繋ぎ、スイッチのON/OFFを検出します。水車が8分の1回転するごとに、スイッチが1回ONになります。うちの子の餌の量を計算し、スイッチ4回分の餌を出すことにします。
プログラムは次のような形で書きました。

foods.sh
#!/bin/sh

#スイッチを繋いだGPIOポート番号
PORT=8

## GPIOをINモードにする
gpio -g mode $PORT in
gpio -g mode $PORT down

## 餌の量(スイッチの回数)
count=4
i=0 #初期値
sudo python /home/pi/.../.../motor.py go 0
while :
do
    if [ `gpio -g read $PORT` -eq "1" ] ; then
        if [ $i -lt $count ] ; then
            i=`expr $i + 1`
        else
            sudo python /home/pi/.../.../motor.py brake 0
	    break
        fi
    fi
	sleep 1
done

#Slackから操作する
SlackのくるみちゃんBotに「ごはん」と話しかけると、餌が一定量出るようにしたいと思います。
SlackのBotはHubotで構築します。
※本記事では、RaspberryPiにHubotを導入する手順は省略します。

Hubotのbot/scriptsの下に配置するスクリプトを下記のような形で書きました。

food.coffee
child_process = require 'child_process'

module.exports = (robot) ->
    #ごはん
    robot.respond /.*ごはん.*/i, (msg) ->
        child_process.exec "/home/pi/.../.../foods.sh", (error, stdout, stderr) ->
            if !error
                try
                    msg.reply "ごはん、いただきます!"
                catch e
                    msg.reply "#{e}"
            else
                msg.reply "#{error}"
        return

話しかけた結果、こんな感じでくるみちゃんが返事をしてくれます。
image.png

餌のイメージ。
image.png

最後に宣伝

MakerFaireTokyo2018に出展します!!
このペット用自動給餌器ハックもデモを行いますので、ご興味ある方は是非見に来てくださいm(_ _)m

わんこ×IoT (H/02-07)
http://makezine.jp/event/makers2018/m0265/

8
9
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
8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?