名刺サイズの超小型PC「ラズパイ」で遊ぶ(第42回)
庭の水やりで身近なIoTを体験、自動水やりシステムの構築 ~給水ポンプの取付~(2/2 ページ)
ではまず、ラズパイからポンプをコントロールできるか、テストプログラムで試します。以下のようにnanoなどで記述してください。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from gpiozero import Motor
from time import sleep
motor = Motor(forward=4, backward=14)
while True:
print("forward")
motor.forward()
sleep(2)
print("stop")
motor.stop()
sleep(2)
pumptest.py
これを「pumptest.py」などの名前で保存したら実行してみましょう。
$ python pumptest.py
ポンプが回る音が聞こえたでしょうか。2秒間隔で回ったり止まったりします。テストが成功したら、最後のプログラムを組み上げることにしましょう。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time
import subprocess
import smbus
from gpiozero import MCP3002
from gpiozero import LED
from gpiozero import Motor
Vref = 3.3 # 基準となるラズパイの電圧
led = LED(25) # LEDをGPIO 25(22番ピン)に接続
motor = Motor(forward=18, backward=23) # モーターをつないだGPIO
i2c = smbus.SMBus(1)
addr = 0x3e # AQM0802のアドレス
# AQM0802の初期化
def_command = 0x00
def_data = 0x40
def_clear = 0x01
display_On = 0x0f
LCD_2ndline = 0x40 + 0x80
# 値の最大値と最小値
dry = 270
water = 119
interval = (dry - water) / 3
wet = water + interval
lbdry = dry - interval
# AQM0802の関数
def command( code ):
i2c.write_byte_data(addr, def_command, code)
def writeLCD( message ):
mojilist=[]
for moji in message:
mojilist.append(ord(moji))
i2c.write_i2c_block_data(addr, def_data, mojilist)
def init_lcd ():
command(0x38)
command(0x39)
command(0x14)
command(0x73)
command(0x56)
command(0x6c)
command(0x38)
command(def_clear)
command(display_On)
init_lcd()
writeLCD("Joutai:")
try:
while True:
pot = MCP3002(channel=0)
hum = round(pot.value * Vref * 100,1)
if (hum < dry and hum > lbdry):
command(LCD_2ndline)
print("Dry")
writeLCD("Dry ")
led.on()
motor.forward()
time.sleep(5)
motor.stop()
time.sleep(5)
elif (hum > wet and hum < lbdry):
command(LCD_2ndline)
print("Wet")
writeLCD("Wet ")
led.on()
time.sleep(0.5)
led.off()
time.sleep(0.5)
elif (hum > water and hum < wet):
command(LCD_2ndline)
print("very Wet")
writeLCD("very Wet")
led.off()
time.sleep(10)
except: KeyboardInterrupt
command(def_clear)
subprocess.call('clear')
clematispump.py
プログラムは「clematispump.py」のような名前を付けて保存します。これで乾いていると水を差し、十分に湿ったら給水を止めるシステムが出来上がりました。水については30行目の「time.sleep(5)」で調整します。今は5秒間水を流すような設定です。これはそれぞれの環境で変えてください。ちなみにこの1サイクルは10秒間隔で動かしています。これもそれぞれの環境に応じて変えてください。
なお余談ですが、ポンプのテスト時には動作音がしたものの、実際に給水しようとホースを取り付けてもくみ取ってくれません。粗悪品を手に入れたのかと思いましたが調べてみると、水通しが必要な模様。ポンプごとバケツに入れて動作させたらしっかりと吸水しました。新しいポンプをポチる前に、こういったことがないか気をつけましょう。
最初はなんとか給水を自動化できないかと考えてスタートしたシステムですが、意外と時間がかかりました。このほかにもラズパイを使って作ることができるIoTシステムはあるかと思います。何かまた見つけたら、ここで紹介しようと思います。
Copyright © ITmedia, Inc. All Rights Reserved.
名刺サイズの超小型PC「ラズパイ」で遊ぶ
今やスマートフォンアプリで何でも完結できてしまう時代。しかし、一から自分の手でデバイスを作り上げ、試行錯誤しながらアイデアを具現化する楽しさは格別です。この連載では、テーマや用途にあわせてマイクロコンピュータ(マイコン)と呼ばれる名刺サイズの超小型PC「Raspberry Pi」(通称ラズパイ)の活用方法から具体的な工作手順までを紹介します。
この記事の著者
関連記事
こんなメディアも見られています
ITmedia NEWSに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
SpecialPR
本日の新着記事
アクセスランキング
-
1
メルカリ、梨の転売疑惑に「盗品の出品は確認されず」 誹謗中傷には利用制限も
-
2
Anthropic、「Claude Opus 5」公開 Fable 5に迫る性能を半額で――サイバー安全策は緩和、拒否時は自動フォールバックも
-
3
検索結果に「詐欺ではありません」と表示させる詐欺手口、警視庁が注意喚起 AI要約も餌食に
-
4
「iPhone高騰」はこれからも続く? 中国CXMTに近づくApple、メモリ競合へのけん制が不発に終わりそうなワケ【後編】
-
5
「ニューロマンサー」実写ドラマ、Apple TV+で2027年1月配信開始へ
-
6
「こんなのに追われたら……」急斜面もやすやす爆走、中国製の車輪付き四足ロボのデモ動画が話題 最高時速20km超
-
7
海外の新作バカゲー「電車アタック」にマンガ家が感心した理由 ブッ飛んだ内容と完成度の高さ、そして“日本”
-
8
「めっちゃカメレオン」公式Discord乗っ取り 担当者PCがマルウェア感染、管理者が全員BANに 現在は復旧
-
9
暑さ対策が熱い! 「猛暑対策展」で感じた、転んでもただでは起き上がらない日本人のエネルギー
-
10
スーパーに並んだ「ごちゃごちゃ生成AIポップ」が物議 “看板王”こと、きぬた歯科院長「これはアリ」
ITmedia NEWS SNS
インフォメーション
注目情報をチェック
ITmediaNEWSをフォロー
あなたにおすすめの記事PR