はじめに
暇つぶしに、部屋の片隅で埃かぶってるラズパイに用途を与えることにしました。
観葉植物に適量の水を供給させる。
定期実行もできるけど、Siriに働かせることにした。面白いから。
準備
- ラズパイ (https://amzn.to/37qCftj)
- リレーモジュール (https://amzn.to/2MTFqQX)
- 電動ポンプ (https://amzn.to/3fmbCZo)
- シリコンチューブ (https://amzn.to/2BWe0r8)
- ACアダプタ (https://amzn.to/3d0b1ei)
- ピグテール (https://amzn.to/30E9oAs)
- ジャンパーワイヤ (https://amzn.to/2YADtOu)
- ワンタッチコネクタ (https://amzn.to/3e0EUw6)
配線
概要は上の画像をみてください。
-
ポンプを動かすには12Vの電源が必要なため、ACアダプタから電源をとる
→ ラズパイは5Vまでしか供給できない -
ACアダプタからの電線をリレーモジュールにかます。リレーモジュールに繋がったラズパイによりON/OFFをスイッチする
-
ラズパイとリレーモジュールの配線
-
GND:GND(PIN6)
-
IN1:GPIO4(PIN7)
-
IN2:GPIO17(PIN11)
-
VCC:5V(PIN2)
-
電線の接続はワンタッチコネクタを使ったが、勿論ブレッドボードを使っても良い
Siriからポンプを動かす
-
ラズパイをhubotサーバにする
→ 参考:https://qiita.com/s_harada/items/c10b1322daec5521b261
Slackでbotに「ping」と呼ぶと、「PONG」と返してくれるよう設定する -
hubotに水やりスクリプトを仕込む
var gpio = require('rpi-gpio');
const PIN_NO = 7;
const DELAY_MS = "800"; // ポンプを動かすミリ秒。ポンプの性能、植物の種類、ホースの長さから計算する
module.exports = (robot) => {
robot.respond(/水やって/i, async (msg) => {
msg.reply(`水やりを開始します...`);
gpio.setup(PIN_NO, gpio.DIR_OUT, () => {
gpio.write(PIN_NO, false);
setTimeout(
function () {
gpio.write(PIN_NO, true);
msg.reply(`水やりを終了しました!`);
},
DELAY_MS
);
});
});
}
これはただただ0.8秒ポンプを動かすだけだが、インタラクティブに供給する水量を調整しても良いし、要調整
-
Slackに「水やって」とつぶやくwebAPIを作る
→ 参考:https://qiita.com/ykhirao/items/3b19ee6a1458cfb4ba21 -
SiriにwebAPIを叩かせる
→ iPhoneの「ショートカット」アプリからwebAPIを叩くショートカットを作るだけ。
参考:http://blog.thetheorier.com/entry/apple-shortcuts
以上です