Le capteur d'humidité du sol et le convertisseur AD (MCP3002) de GROVE mesurent la quantité d'eau contenue dans le sol toutes les 5 minutes, et lorsque la quantité d'eau tombe en dessous du seuil, actionnez la pompe à kérosène pour pomper l'eau du réservoir d'eau et l'utiliser comme planteur. J'ai essayé de faire de l'eau.
Le capteur d'humidité délivre une tension (valeur analogique) en fonction de la quantité d'humidité. Étant donné que le Raspberry Pi ne peut entrer que numériquement, il doit être converti en données numériques et lu par un convertisseur AD. Cette fois, j'ai utilisé MCP3002 pour le convertisseur AD. Pour la connexion entre Raspberry Pi et MCP3002, reportez-vous à l'article suivant. Connexion du convertisseur A / N MCP3002 à Raspberry Pi
Les matériaux suivants ont été utilisés pour le capteur d'humidité du sol. https://www.switch-science.com/catalog/814/ Le capteur est inséré en faisant un trou dans la jardinière.
Pour la partie arrosage, la pompe à kérosène est actionnée en connectant la pompe électrique à kérosène et le GPIO et en allumant le GPIO. Cependant, le moteur fait fonctionner la pompe, mais si vous essayez de faire fonctionner le moteur avec GPIO de Raspberry Pi, vous serez à court d'énergie, alors assurez-vous de faire fonctionner la pompe à kérosène avec l'alimentation du boîtier de batterie de la pompe à kérosène qui est attaché depuis le début. Ensuite, le commutateur de relais est contrôlé à partir du Raspberry Pi. Pour permettre au GPIO de Raspberry Pi d'être contrôlé par Python, je me suis référé à l'article suivant. [LED clignotante avec GPIO (Python)](http://make.bcde.jp/raspberry-pi/gpio%E3%81%A7led%E3%81%AE%E7%82%B9%E6%BB%85python /)
Mesurez la teneur en eau du sol toutes les 5 minutes, et si elle tombe en dessous du seuil, faites fonctionner la pompe à kérosène pendant 30 secondes. Si le réservoir d'eau est vide, la quantité d'eau ne sera pas récupérée même si la pompe à kérosène est actionnée, et après 5 minutes, elle essaiera d'arroser, ce qui gaspillera la batterie de la pompe à kérosène. Une fois que je l'arrose, j'essaye de ne pas l'arroser pendant un moment.
water.py
import spidev
import time
import datetime
import subprocess
import RPi.GPIO as GPIO
wet_low = 450
water_check_enable = True
water_wait_count = 0
check_reset = 10
def write_log(log_text):
f = open("/var/log/water","a")
d = datetime.datetime.today()
f.write (d.strftime("%Y-%m-%d %H:%M:%S" + "," + log_text + "\n" ))
#print log_text
f.close()
def read_wet_level():
spi=spidev.SpiDev()
spi.open(0,0)
resp=spi.xfer2([0x68,0x00])
value=(resp[0] * 256 + resp[1]) & 0x3ff
write_log("wet_level:" + str(value))
spi.close()
return value
def water():
write_log("***** water start *****")
GPIO.setmode(GPIO.BOARD)
GPIO.setup(16,GPIO.OUT)
GPIO.output(16,True)
time.sleep(30)
GPIO.output(16,False)
GPIO.cleanup()
write_log("***** water end *****")
while True:
wet_level =read_wet_level()
if water_check_enable == False:
water_wait_count += 1
if water_wait_count > check_reset:
water_check_enable = True
water_wait_count = 0
if wet_level < wet_low and water_check_enable == True:
water_check_enable = False
water()
time.sleep(300)
Recommended Posts