RPi3로 식물 급수 자동화
8940 단어 RaspberryPi
배경
며칠 전 생각해 보니 베란다에 화분을 놓고 가지와 피망을 키우기 시작했다.
문제는 물을 주는 것이다.
나는 매일 아침 너에게 주어야 한다.
사실 예전에도 베란다에서 콩을 키운 적이 있지만 물을 주는 것을 잊어버리고 시들었던 과거가 있다.
나는 전철을 다시 밟고 싶지 않다.
원래 사람이 시간을 결정하는 동작을 하는 것은 불가능하다.
그런 건 기계로 해야지.
그래서 나는 자동으로 작물에 물을 주는 시스템을 만들기로 했다.
하드웨어
개요
비록 졸렬하지만 아래의 그림을 보십시오.
펌프로 베란다에 설치된 물탱크의 물을 길어 호스를 통해 화분에 물을 뿌린다.
펌프를 릴레이 모듈에 연결하면 라즈베리 파이에서 ON/OFF를 진행할 수 있습니다.
방수가 힘들어 실내에 계전기 모듈을 설치하는 등 펌프만 베란다에 두기로 했다.
전선은 에어컨 파이프의 구멍을 통해 실내로 들어간다.
물탱크에 물을 공급하는 것은 수동이다.일주일치 저축해서 주말에 같이 넣어요.
또 물을 주는 것과는 별 상관이 없지만 USB 카메라로 정기적으로 사진을 찍어 식물의 성장 기록을 남긴다.
재료
처음이기 때문에 우선 돈을 잘 쓰지 않는다는 점을 중시한다.
라즈파와 USB 카메라가 워낙 있어서 새로 사지 않았어요.
개요
비록 졸렬하지만 아래의 그림을 보십시오.
펌프로 베란다에 설치된 물탱크의 물을 길어 호스를 통해 화분에 물을 뿌린다.
펌프를 릴레이 모듈에 연결하면 라즈베리 파이에서 ON/OFF를 진행할 수 있습니다.
방수가 힘들어 실내에 계전기 모듈을 설치하는 등 펌프만 베란다에 두기로 했다.
전선은 에어컨 파이프의 구멍을 통해 실내로 들어간다.
물탱크에 물을 공급하는 것은 수동이다.일주일치 저축해서 주말에 같이 넣어요.
또 물을 주는 것과는 별 상관이 없지만 USB 카메라로 정기적으로 사진을 찍어 식물의 성장 기록을 남긴다.
재료
처음이기 때문에 우선 돈을 잘 쓰지 않는다는 점을 중시한다.
라즈파와 USB 카메라가 워낙 있어서 새로 사지 않았어요.
360엔
https://www.amazon.co.jp/gp/product/B008OPKSC8/
φ8mm 100엔/m 정도?
근처 패밀리 센터에서 구매
899엔
https://www.amazon.co.jp/gp/product/B077P769L7
375엔
https://www.amazon.co.jp/gp/product/B00L11KL10
https://www.switch-science.com/catalog/3050/
https://www.amazon.co.jp/gp/product/B002EBBBCE
거품 플라스틱 용기와 슈퍼마켓 봉투로 만든 거예요.투명한 것은 호스이고, 검은색은 펌프의 전원선이다.안 좋아 보이지만 돈 안 쓰고 준비했어요.
프로비저닝
USB 카메라로 찍은 사진은 다음과 같다.
나는 창문을 사이에 두고 베란다를 촬영하고 있다.
화분에 물을 뿌리기 위해 가스 연소기로 뾰족한 핀셋을 가열해 찌르고 호스에 구멍을 뚫었다.
주의사항
사이펀 원리.
만약 호스의 물을 뿌리는 부분의 위치가 물탱크 안의 수면보다 낮으면 펌프를 닫아도 물이 계속 흐를 것이다.
탱크를 낮은 곳에 두지 못했기 때문에 호스 위에 사이펀이 발생하지 않도록 공기가 통하는 구멍만 뚫었다.
소프트웨어
개요
펌프 ON → OFF
L천 카드만큼 간단해요.
첫 번째 파라미터에서 지정한 값의 시간 (초) 펌프를 시작합니다.
구입한 계전기 모듈은 입력 단락을 GND로 연결하면 계전기가 연결되기 때문에 11번 핀을false(GND)로 설정합니다.
water.pyimport RPi.GPIO as GPIO
import time
import sys
if (len(sys.argv) < 2):
print("notime")
quit()
try:
pump_time = int(sys.argv[1])
except Exception:
print("bad time")
quit()
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
GPIO.output(11,False)
time.sleep(pump_time)
GPIO.output(11,GPIO.OUT)
GPIO.cleanup()
cron 호출 스크립트
cron에서 직접 호출되는 처리를 설명합니다.
import RPi.GPIO as GPIO
import time
import sys
if (len(sys.argv) < 2):
print("notime")
quit()
try:
pump_time = int(sys.argv[1])
except Exception:
print("bad time")
quit()
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
GPIO.output(11,False)
time.sleep(pump_time)
GPIO.output(11,GPIO.OUT)
GPIO.cleanup()
여기 의 보도 코드를 빌려 썼습니다.
참조: http://docoma.club/?p=763
#!/bin/bash
RAINS=$(curl -s https://weather.yahoo.co.jp/weather/jp/14/4610/14110/******.html | tr '\n' ' ' | sed -e 's/<[^>]*>//g' | grep -oE ' - [0-9].*明日' | tr ' ' '\n' | grep -v '^$' | head -47 | tail -n 8 | awk '{SUM += $1}END{print SUM}')
echo "RAIN="$RAINS
PUMP_TIME=20
if [ $RAINS -gt 10 ]; then
PUMP_TIME=10
fi
echo "PUMP_TIME="$PUMP_TIME
CAMERA_TIME=$((PUMP_TIME + 10))
ffmpeg -f v4l2 -s 1280x1024 -i /dev/video0 -t 00:00:$CAMERA_TIME -loglevel quiet /home/kaz/camera/$(date +%Y%m%d-%H%M%S).mp4 &
sleep 5
python /home/kaz/water.py $PUMP_TIME
sleep $((PUMP_TIME+5))
정기적인 촬영
cron을 통해 10분 간격으로 그림을 저장합니다.
#!/bin/bash
/usr/bin/fswebcam /home/kaz/camera/$(date +%Y%m%d-%H%M%S).jpg -r 1280x1024 -S 10
되돌아보다
작물이 늘어나도 대처할 수 있다.
호스에 구멍을 뚫거나 테이프로 막는 것을 반복하여 적당한 수량을 주기 위해 조정한다.
Reference
이 문제에 관하여(RPi3로 식물 급수 자동화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yamato225/items/1dd71a6662aa2e684311텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)