愛知県稲沢市在住の【中小企業診断士✖️IoTプロフェッショナルコーディネーター】が、ものづくりの楽しさをお伝えする《がちゃラボ》です。
小学生の子供が課題でトマトを栽培する事になったのですが、「水やり」が毎日のことなのできっと忘れちゃうんだろうなーって思ってます。。。
親の仕事になるんだろうなー
そこで、『せっかく家にRaspberry pi(ラズベリーパイ、ラズパイ)があるし、自動で水やりするシステムを作っちゃおう』と挑戦してみる事にしました。
ポンプから水をくみ上げたり、その日の天気を調べたり、とか色々とやることはありますが、まずは決まった時間に処理をするという方法を調べました。
朝8:00 に水をやる、とか、6時間ごとに水をやる、みたいなことが必要ですもんね。
Raspberry piだと、cronというものを使って定期実行ができるようなのでまとめておきます。
準備するもの
- Raspberry pi一式
- LED
- 抵抗
- ブレッドボード
- ジャンプワイヤ
Raspberry pi は2年位前に買った Raspberry pi 3 model B+ を使いました。
今回はお試しとしてLEDを定期的に点灯させるます。ラズパイとLEDの接続方法は以下の記事を参考にしてください。
cronを使うための準備をしよう
それでは、cronを使ってみましょう。cronとは
cronとは、多くのUNIX系OSで標準的に利用される常駐プログラム(デーモン)の一種で、利用者の設定したスケジュールに従って指定されたプログラムを定期的に起動してくれるもの。
IT用語辞典より
というものみたいです。定期的に何かを実行させたいときに使うプログラムですね。
この cron を使って、pythonのプログラムを動かしていきます。
まずは、cronが動いているか調べてみましょう。chkconfig というコマンドを使いますが、初めて使う場合にはインストールが必要ですので、以下のコマンドでインストールしましょう。
$ sudo apt-get install chkconfig cron
インストール出来たら、次のコマンドでcronが動いているか調べます。
$ chkconfig cron
応答として cron on であれば、動いているので問題ありません。もし cron off となっているのであれば、次のコマンドを実行しましょう。
$ systemctl enable cron
cronの設定方法(定期実行の方法)
cronで定期的にプログラムを実行する場合には、crontab でエディタを起動し設定します。
$ crontab -e
初めて使う場合には、編集で使うエディタを何にするか聞かれますので、自分の好きなエディタを選んでください。私は nano にしました。
cron の書式ですが、以下の通りになっています。
分 時 日 月 曜日 実行したいコマンド
何月何日の何時何分、そして何曜日にコマンドを実行したいか、を設定します。指定しない項目については * とします。また「何分ごと」のように一定間隔の時間を指定する場合には「*/1」のように記述します。これを「分」のところに書けば、『1分ごとに』という命令になります。
今回は1分ごとにpythonのプログラム(LEDを点灯するプログラム)を実行したいので、以下のように設定します。
*/1 * * * * python /home/pi/cron_test/test.py
「実行したいコマンド」は上記のように ”python 実行したいファイルパス” と記述します。
cron で定期的にLEDが点灯するか確認
それでは正しく設定できているか確認しましょう。といっても、待つだけです。
1分ごとにLEDが点灯すれば成功です。定期的な処理を実現することができました。
なお、LEDを点灯するために作ったプログラムは以下の通りです。
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setup(2, GPIO.OUT)
GPIO.output(2, GPIO.HIGH)
time.sleep(0.5)
GPIO.output(2, GPIO.LOW)
time.sleep(0.5)
さいごに
今回はRaspberry piを使って、定期実行するためのプログラム cron について書きました。トマトの水やりまではまだほど遠いですが、1つずつ実現させていきたいです。
スマート農業やあぐりテック(アグリテック)などと呼ばれたりもしますが、農業とIoTは何かと親和性が高いので、色々試したいですね。下記にも少し書きましたので、良かったら参考にしてください。
コメント
[…] […]