[PYTHON] J'ai essayé d'automatiser l'arrosage du pot avec Raspberry Pi

Aperçu

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.

schéma

water_system_回路図.png

IMG_3902.jpg

Lire la valeur du capteur d'humidité du sol

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. IMG_4033.jpg

Faire fonctionner la pompe à kérosène pour arroser

IMG_4032.jpg

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 /)

Code Python

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

J'ai essayé d'automatiser l'arrosage du pot avec Raspberry Pi
J'ai essayé de créer un environnement Ubuntu 20.04 LTS + ROS2 avec Raspberry Pi 4
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
J'ai essayé d'exécuter Movidius NCS avec python de Raspberry Pi3
J'ai essayé d'automatiser [une certaine tâche] à l'aide d'une tarte à la râpe
J'ai envoyé les données de Raspberry Pi à GCP (gratuit)
Quand j'ai essayé de faire une communication socket avec Raspberry Pi, le protocole était différent
J'ai essayé d'automatiser la mise à jour de l'article du blog Livedoor avec Python et sélénium.
J'ai essayé d'estimer le rapport de circonférence π de manière probabiliste
J'ai essayé d'agrandir la taille du volume logique avec LVM
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
Je voulais faire fonctionner le moteur avec une tarte à la râpe, alors j'ai essayé d'utiliser la carte de commande du moteur de Waveshare
J'ai essayé de sauvegarder les données avec discorde
J'ai essayé de trouver le rapport de circonférence par 100 millions de chiffres
J'ai essayé L-Chika avec Razpai 4 (édition Python)
J'ai essayé de corriger la forme trapézoïdale de l'image
J'ai essayé d'automatiser la fabrication des sushis avec python
J'ai essayé de vectoriser les paroles de Hinatazaka 46!
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
J'ai essayé d'extraire automatiquement les mouvements des joueurs Wiire avec un logiciel
J'ai essayé d'analyser la négativité de Nono Morikubo. [Comparer avec Posipa]
J'ai essayé de rationaliser le rôle standard des nouveaux employés avec Python
J'ai essayé de visualiser le texte du roman "Weather Child" avec Word Cloud
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
J'ai essayé de prédire le comportement du nouveau virus corona avec le modèle SEIR.
J'ai essayé d'entraîner la fonction péché avec chainer
J'ai essayé d'extraire des fonctionnalités avec SIFT d'OpenCV
J'ai essayé de résumer la forme de base de GPLVM
Visualisons la pièce avec tarte aux râpes, partie 1
J'ai essayé de toucher un fichier CSV avec Python
J'ai tweeté l'éclairement de la pièce avec Raspberry Pi, Arduino et un capteur optique
J'ai essayé de résoudre Soma Cube avec python
J'ai parlé à Raspberry Pi
Prenez la valeur du thermo-hygromètre SwitchBot avec Raspberry Pi
Changer les valeurs du thermo-hygromètre Bot avec Raspberry Pi
J'ai essayé de visualiser facilement les tweets de JAWS DAYS 2017 avec Python + ELK
J'ai essayé d'automatiser le dépôt de 100 yens des courses de chevaux Rakuten (python / sélénium)
J'ai essayé de visualiser les informations spacha de VTuber
J'ai essayé d'effacer la partie négative de Meros
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai essayé de créer un bouton pour Slack avec Raspeye + Tact Switch
J'ai essayé d'automatiser le travail de masquage du visage de l'image de coordination pour l'usure
L'histoire de la fabrication de soracom_exporter (j'ai essayé de surveiller SORACOM Air avec Prometheus)
J'ai fait un package npm pour obtenir l'ID de la carte IC avec Raspberry Pi et PaSoRi
J'ai essayé de classer les voix des acteurs de la voix
J'ai essayé de créer un modèle avec l'exemple d'Amazon SageMaker Autopilot
J'ai essayé d'envoyer automatiquement la littérature du nouveau virus corona à LINE avec Python
J'ai essayé de résumer les opérations de chaîne de Python
J'ai essayé de faire quelque chose comme un chatbot avec le modèle Seq2Seq de TensorFlow
J'ai essayé de visualiser les caractéristiques des nouvelles informations sur les personnes infectées par le virus corona avec wordcloud
J'ai essayé de visualiser les données de course du jeu de course (Assetto Corsa) avec Plotly
J'ai essayé de comparer la vitesse de traitement avec dplyr de R et pandas de Python
Le 15e temps réel hors ligne, j'ai essayé de résoudre le problème de l'écriture avec python
Je souhaite être informé de l'environnement de connexion lorsque RaspberryPi se connecte au réseau