はじめに
僕が子供のころは、夏休みの宿題で「アサガオの観察日記」というのがあり、夏休みに毎日水をやって、成長を観察して、その日の天気やらどんな感じで成長しているかやらを絵日記にしていた。
ただ、これがひたすらにめんどくさい。旅行とかで長期間家を空けられない。
その間、世話ができずに枯らすこともままあり、非常に苦労した思い出がある。
そこで、大人になった今、それらを自動化できないかと考え、作ってみることにした。
全体図

単体のそれぞれの機能
水をやるところ
アサガオに水をやるやつ出来ました pic.twitter.com/4SutPzXUNw
— R19 (@r19_tech) August 19, 2019
コード
var servo = obniz.wired("ServoMotor", {signal:0,vcc:1, gnd:2});
servo.angle(180.0); // 下げる
servo.angle(0.0); // 上げる
つかったもの(obniz以外で)
・サーボモーター (RB996a-N)(1480円)
・ブリキのジョウロ(300円くらい)
・ちょっと厚めの輪ゴム(108円)
・金属製のハンガー(108円)
・タコ糸(108円)
・クリップ(108円)
・空きペットボトル(0円)
土の湿度を測るところ
つかったもの(obniz以外で)

湿度センサー(734円)
コード
var sensor = obniz.wired("SEN0114", {vcc:0, gnd:1, output:2});
sensor.onchange = function(value){
// 1.47という数値は環境や条件によって調整する
if(1.47 > value){
// 土が乾いている
}else if(value > 1.47){
// 土が十分潤った
}
};
アサガオの写真を撮る(実装中)
使ったもの
Grove-シリアルカメラキット(3,564円)
obniz公式のこちらで再挑戦
[小型TTLシリアルJPEGカメラ(NTSCビデオ出力付)]
(http://akizukidenshi.com/catalog/g/gM-07746/)
挙動確認用のサンプルコード
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/obniz@latest/obniz.js"></script>
</head>
<body>
<div id="obniz-debug"></div>
<img id="image">
<script>
var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
obniz.io6.output(true);
obniz.io9.output(false);
var cam = obniz.wired("JpegSerialCam", {vcc:0, cam_tx:1, cam_rx:2, gnd:3});
await cam.startWait({baud: 38400});
await cam.setSizeWait("640x480");
const jpegData = await cam.takeWait();
document.getElementById("image").src = "data:image/jpeg;base64," + cam.arrayToBase64(jpegData);
}
</script>
</body>
</html>
過電流の問題は解決したけどちょっとうまく動かない。。。


参考
ESP-WROOM-02にカメラモジュールを繋いでネットワークカメラを作る
まとめて動かす
帰省中でアサガオが準備できなかったので自宅に帰ってから設置します(;;)
感想
いろんなサーボモーターやステップモーター、電磁マグネットなどでジョウロの上げる部分の試行錯誤してみたが、サーボモーター(RB996a-N)が強力で安定して使えた。
ちょっと厚い輪ゴムが工作でめちゃくちゃ使える頼もしい素材だと思った。
カメラは下調べが不十分で、obnizSDKで紹介されていたものとは違うものを買ってしまい、公式wikiのサンプルコードにはSDカードにカメラで撮った写真を保存する方法しか載ってなく、めちゃくちゃ焦った。なんだかんだ、obnizのJpegSerialCamのSDKで使えそうなので、もうちょっと試行錯誤してみる。
今回はバラバラに実装を確認したが、実際に組み立てると、防水の問題や日光の問題など、もっといろんな問題が出てきそうなので、それらにどう解決するかを今後まとめたい。