https://qiita.com/nanbuwks/items/37bffef16036937eecc3
「栽培ロボットをインストール 1st」
の植物栽培ロボットを、 TinyGo で動かしてみましょう。
機材説明
植物栽培ロボット。 右上が ESP32 です。今回は給水ポンプ、排水ポンプ、バルブ1、バルブ2を使います。
水タンク。これから水を供給します。また、排水時には植木鉢からここに水を戻します。
電磁バルブと手動バルブ。今回はバルブ1,2を使います。手動バルブ3,4を閉じているので電磁バルブ3,4を動かしても水は流れません。
GPIO
ESP32 の、 GPIO は以下のように割り当てられています。
機能 | GPIO | |
---|---|---|
ポンプ1給水 | 25 | |
ポンプ2排水 | 26 | |
バルブ1 | 27 | |
バルブ2 | 14 | |
バルブ3 | 13 | |
バルブ4 | 21 | |
水位センサー1 | 34 | |
水位センサー2 | 35 | |
水位センサー3 | 32 | |
ブザー | 2 | |
温度センサ | VP | |
タクトスイッチ | 36 | |
GROVE1 | 22 | |
GROVE2 | VN | |
リレー | 12 |
お試しその1
試しにバルブ4 を動かしてみましょう。
blinky1 が以下のようにあります。
package main
// This is the most minimal blinky example and should run almost everywhere.
import (
"machine"
"time"
)
func main() {
led := machine.LED
led.Configure(machine.PinConfig{Mode: machine.PinOutput})
for {
led.Low()
time.Sleep(time.Millisecond * 500)
led.High()
time.Sleep(time.Millisecond * 500)
}
}
この、 machine.LED を machine.IO21 に変更してみると、0.5 秒毎にバルブ4がOn/OFFするのがわかります。
給水
植木鉢1に給水するためにはポンプ1をONにして、バルブ1をONにします。
適当な秒数で給水してみましょう。
排水
植木鉢1を排水するにはポンプ2をONにして、バルブ1をONにします。
以下のサイクルを実現してみましょう。
- 植木鉢1排水
- 植木鉢1給水
- 植木鉢2排水
- 植木鉢2給水
スイッチ連動
基板上の押しボタンスイッチを押すと、「タクトスイッチ」が faluse になります。
スイッチをトリガーとして排給水をしてみましょう。
GPIOピンは以下のようにするとインプット設定ができます。
sw1 := machine.IO36
sw1.Configure(machine.PinConfig{Mode: machine.PinInput})
以下のようにするとインプット設定したGPIOピンから状態を取得できます。
sw := sw1.Get()