J. Jpn. Soc. Soil Phys.
土壌の物理性No. 150, p.125∼128 (2022)

Arduino の概要と私の応用例の紹介
坂口

1. はじめに

敦1

環境計測用シールドおよびモジュールの利用価値が高いです．シールドを何層にも重ねて使用する場合は同じデジタル端子もしくはアナログ端子を別のシールド同士でArduino は 2005 年にイタリアで開発が始まり，わかりやすい標準化された入出力ポートや Arduino IDE と呼ばれる手軽に始めることができるプログラムの開発環境が共有して誤動作する事があるので，シールドと端子番号の関係を把握しておくと良いです．

Arduino 用に販売されているものではない一般的な温用意されているため，電子工学やコンピュータの専門家度センサー，日射センサー，流量センサーなどや，土壌以外にも広く利用されるようになりました．本項では，水分センサーなども用いる事ができますが，世の中のセArduino を使用して自動採水装置等を作製した経験をもンサーの殆どは観測値を電圧またはパルスとして出力とに，これらの応用例も紹介したいと思います．

しています．出力値が電圧のセンサーの場合は Arduino

2．Arduino の使用に際しての工夫等についてのアナログ端子にセンサーの出力端子を，Arduino のGND 端子にセンサーの GND 端子を接続し，そしてセンサーの印加電圧端子は常時通電していて良いのであればArduino には多種類のタイプが存在し，また純正品以Arduino の 5.0 V 端子か 3.3 V 端子，50 ミリ秒などの短外も販売されているのでどれを買うか迷いますが，初時間しか通電させたくない場合はデジタル端子に接続しめは Arduino Uno（2,940 円，以降も含めて価格は全てます．その時に注意すべきはセンサーの出力電圧のレン

2021 年 4 月現在）の試用をお勧めします．私は Arduino
Mega（5,800 円）もよく用います．

ジで，Arduino は 0 ∼ 5.0 V と 0 ∼ 1.1 V の 2 種類のレンArduino を動かすにはスケッチを書いて Arduino に送電圧の最大値が数百 mV のセンサーでは 0 ∼ 1.1 V のレ信する必要がありますが，パソコン上でスケッチを書ンジで計測した方が 0 ∼ 5.0 V のレンジで計測するよりくソフトウエアを Arduino IDE と言います．よく更新も計測精度が向上します．一方で，出力電圧の最大値が版がリリースされますが，更新しないとコンパイルで1.1 V を超えるセンサーでは 0 ∼ 5.0 V のレンジで計測きないライブラリもあるのでご注意ください．そのラしなければなりません．アナログ端子で計測する電圧のイブラリとは特定の処理をさせるためのプログラムで，レンジはスケッチ内で指定します．出力値がパルス回数

Arduino にシールドやモジュールと呼ばれるハードウエのセンサーの場合は Arduino のデジタル端子にセンサージで電圧を計測できますが，日射センサーのように出力アを接続した場合に必要になる事が多い他，特殊な計の出力端子を，Arduino の GND 端子にセンサーの GND算をさせたい場合に使用する事もあります．殆どのラ端子を接続し，そしてセンサーの印加電圧端子は出力値

イブラリはインターネット上の Arduino Library List かが電圧のセンサーの場合と同様です．

らダウンロードできます．スケッチを書く際の辞書とし出力値がパルス回数のセンサーは風速計や流量計などてはインターネット上の Arduino 日本語リファレンスの回転体に多いですが，例えば 1 分間の単位時間内に何（http://www.musashinodenpa.com/arduino/ref/）が便利で回のパルスをカウントしたかで値に変換できます．出力

す．原本は英語ですが，日本語に翻訳してくれています．

値がパルスの到達時間のセンサーの場合は Arduino のデArduino 用の多様なシールドやモジュールを秋月電子

ジタル端子を 2 個用いる事で到達時間を計測できます．

通商やスイッチサイエンスから購入する事ができ，我々交流の印加電圧が必要なセンサーの場合もデジタル端子の分野では記憶媒体としての SD シールド，観測時刻をを 2 個用いれば作りたい周波数の交流電流を流せます．

得るための RTC モジュール，観測値を液晶画面に表示

今まで私たちの分野で使われていた測定機器は順次するための LCD シールド，100 V や 12 V で作動する機

Arduino への対応をしており，例えば米国 IRROMETER
社製の Watermark 吸引圧センサーは IRROMETER 社のウェブサイト内で Arduino への配線方法とスケッチが公器を制御するためのリレーモジュール，その他に様々な
1 山口大学大学院創成科学研究科.

2021 年 9 月 13 日受稿

2022 年 1 月 26 日受理開されています．

土壌の物理性

126#include <DS3232RTC.h>ﬂoat v1=0;

第 150 号

(2021)←ライブラリの使用の宣言←変数の宣言void setup(void){Serial.begin(9600);
analogReference(INTERNAL);
pinMode(5, OUTPUT);}（A）関数に属さない領域（B）SETUP関数

void loop(void){（C）LOOP関数t = now();←（C1）現在時刻を得る
if (second(t) == 0) {File dataFile = SD.open(“datalog.txt”, FILE_WRITE);（C2）1分間隔
if (dataFile) {SDカードの処理
dataFile.print(v1);
への書きdataFile.println(",");
込み
dataFile.close();}else {}}
digitalWrite(5, LOW);（C3）常に行い}たい処理
void abc(t){digitalWrite(5, HIGH);}
Fig. 1

サブルーチン（D）自作した関数

スケッチの例.

しかし，100 V や 12 V の電源を要する機器を制御する

LOOP 関数の冒頭で RTC モジュールから現在時刻を得ます（Fig. 1-C1）．そして IF 文を用い，時刻の秒の単位が 0 ならば以下の作業をせよと書けば 1 分間隔の処理が行えます（Fig. 1-C2）．同様に，時刻の分の単位が 0 な
らば以下の作業をせよと書けば 1 時間間隔の処理が行えには，まずデジタル端子とリレーをつなぎ，Arduino がます．常に計測し続けたい事，条件の成立時に即時実行

リレーを ON にする事で機器に 100 V などの電流を供給したい事，常に入力可能にしたい事は LOOP 関数内の上次に，センサーを用いて観測を行ったら，その観測値に応じて機器の制御を行う事が多いです．例えば LEDのように 5 V の微弱電流で作動する機器は Arduino のデジタル端子を正極，GND 端子を負極として配線します．

して制御します．

記の IF 文以外のところに記述します（Fig. 1-C3）．定間

次にスケッチの書き方ですが，Fig. 1 に示すようにス隔で行いたい処理としては，SD カードへの時刻と観測ケッチは関数に属さない領域（Fig. 1-A），SETUP 関数

値の書き込み，同内容のパソコンのシリアルモニターへ（Fig. 1-B），LOOP 関数（Fig. 1-C），それ以外の自作しの送信，定間隔で作動させたい機器への電源供給などがた関数（Fig. 1-D）に区分されます．関数に属さない領挙げられます．

域にはライブラリの使用や変数の宣言などのコンパイ
ラへの指示，SETUP 関数内には起動時に一度だけ行う

3．Arduino を使った自動採水機の作製作業，LOOP 関数内には起動中に延々と行い続ける作業を記入します．自作した関数内はサブルーチンと考えて次に自動採水機の解説を致します．まず，Arduino下さい．LOOP 関数内で私が多用する手法があるのですが，私たちの分野では 1 分間隔や 1 時間間隔などの定Mega が RTC モジュール（270 円）から現在時刻を得て，分の単位が 0 ならば三角堰に取り付けた水圧計（2,100間隔で行いたい処理が多いのではないでしょうか．そこ円）の電圧を読みます．電圧から水位を求めて，越流がでまず，Arduino に RTC モジュールを取り付けた上で，生じている場合は 16 ch リレーモジュール（2,200 円）の

資料：Arduino の概要と私の応用例の紹介

127

後に，次は蠕動ポンプ３番がボトル２本目に表流水を注水し，SD カードに採水時刻と注水したボトルの番号と三角堰の水位を記録します．以降，全ポンプが T 型チューブ継ぎ手でつながっているので，1 時間ごとに越流が生じている時刻にはボトルへの注水を繰り返します．降雨中でも越流が生じていなければ採水しないので，空のボトルは発生しません．重要な事として，ポンプは蠕動ポンプである必要があります．試作 1 号機では水中ポンプで揚水後に電磁弁でボトルに配水したところ，表流水中の土粒子が電磁弁の開閉部に詰まって作動しなくなりました．２号機には吸水力を重視してダイヤフラムポンプを使いましたが，やはり土粒子がダイヤフラムポンプの逆止弁に詰まりました．蠕動ポンプなら土粒子で詰まる事もなく，また水面下に揚水ポンプを付けなくても高低差 1 m 程度なら吸水できます．木片などのチューブ内への侵入を防ぐために，2 mm メッシュのフィルター（125円）を吸水口に付けています．尚，降雨日までの間に無駄な待機電力を消費させないために，水位から越流が生Fig. 2自動採水機の模式図.

じていないと判断された場合には Arduino Mega のデジ
タル端子からタイマーリレー（1,000 円）にトリガー電流が流れて 59 分 55 秒間のカウントダウンが開始され，その間はタイマーリレーが電池からの全電力供給を遮断し2.5120ます．降雨翌日に採水したボトルを回収しに行く際に，80SS
⁐Ꮡែ䝸䞁
ᠱ⃮ែ䝸䞁

60

1.5

1.0
400.5

2001:00

ポンプの作動に電力を消費するので電池も交換します．

2.0䝸䞁⃰ᗘ(mg L-1)

SS⃰ᗘ(mg L-1)

100

0.0
2:003:00

4:00

5:00
6:00
᫬้

7:00

8:00

9:00

そして SD カードのデータも回収します．その後，ボトルごとに水質を分析すると共に，時刻毎の水位を三角堰の公式で流量に換算します．
観測例の多い畑地ではなく，水田の高度利用化に伴い増えつつある畑作利用時の水田で本機を使用したところ，Fig. 3 に示す通り畑地の降雨流出水と同様に SS は表面流出の初期で高濃度でしたが，リンと窒素の濃度は畑地に比して溶存態の割合が多い事が分かりました（１

本自動採水機による水田の畑作利用時の降雨流出水の濃度観測値.

Fig. 3

圃場での結果に過ぎません）．

4．Arduino を使った自動灌漑機の作成
リレー 1 番とつながったデジタル端子 1 番を HIGH にして，リレー 1 番とつながった INTLLAB 12 V 蠕動ポン

次に，露地野菜の点滴灌漑用に自動灌漑機を作製してプ（1,300 円）を回転させます．Fig. 2 に示す通り 1 番の栽培実験に試用しております．まず，自動灌漑機は施設

蠕動ポンプは現在時刻の表流水を吸水して，チューブ内園芸で発達致しましたが，露地圃場は施設に比して土壌に溜まっている前時刻に吸水した表流水を排水します．

水分の面的不均一性が大きいという特徴があります．そ1 分が経過してチューブ内が現在時刻の表流水に入れ替わったら，デジタル端子 1 番を LOW にして蠕動ポンプ1 番を停止させ，引き続きリレー 2 番とつながったデジ
タル端子 2 番を HIGH にして，リレー 2 番とつながった
蠕動ポンプ 2 番を回転させます．蠕動ポンプ 2 番はボト
ル 1 本目に現在時刻の表流水を注水し，注水後にデジタ
ル端子 2 番を LOW にして蠕動ポンプ 2 番を停止させます．そして，SD カードに採水時刻と注水したボトルの番号と三角堰の水位を記録します．この 1 時間後にまだ越こで自動灌漑を行うには圃場の土壌水分の平均値を把握流が生じている場合には，また蠕動ポンプ１番がチュー浸透量，１単位時間前の灌水量）を計算し，水収支からブ内に溜まっている前時刻に吸水した表流水を排水した

求められた根域土壌の含水率を水分特性曲線により吸引する必要がありますが，圃場での気象観測値から圃場の土壌水分の平均値を推定する方式と，圃場内に複数の土壌水分観測地点を設けて観測値を平均する方式の２方式の自動灌漑機を作製し，その性能を点滴灌漑で栽培中の野菜に掛かった水ストレスをリーフポロメータで計測する事で評価しています．
まず，気象観測型自動灌漑機については根域土壌における水収支（蒸発量，蒸散量，降雨量，表面流出量，深部128

土壌の物理性第 150 号

(2021)TEROS-21（51,700 円），IRROMETER 社製 Watermark
るために必要な灌水量を 10 分間 ∼ 1 時間単位で算出し （13,200 円），オーストラリア政府 CSIRO 製 Chameleonて（深部浸透損失を防ぐために単位時間は土壌により異 （1,400 円），自作テンシオメータ（圧力センサーはセンシズ社製），ならびに含水率センサーである DFROBOTなる），単位時間毎に灌水用電磁弁を開閉する事で不足水量を根域土壌に供給しています．自動灌漑機は日射， 社製 SEN0193（960 円）を併用しました．Arduino に接圧に変換する事で，土壌の吸引圧を管理目標値で維持す温度，湿度，風速，雨量，流量センサーから構成されていますが，日射，温度，湿度センサーは出力値が電圧な続して使用するとテンシオメータ以外はどのセンサーも観測開始２週間後程度から異常値を出力し始めたため，

ので Arduino のアナログ端子に，風速，雨量，流量セン

1 日 1 回，24 時に 30 秒間 Arduino が自身の電源を落と

サーは出力値がパルスなので Arduino のデジタル端子にす仕組みとし，異常値を回避しました．SEN0193 は地表接続しています．また，灌水用電磁弁にはリレーを介しに挿して使用するセンサーであり埋設はできませんが，て給電しており，Arduino のデジタル端子がリレーをコ回路部分をエポキシ樹脂で被覆して埋設しました．そのントロールする事で電磁弁を開閉しています．尚，灌漑結果，EC-5 と SEN0193 は同程度の含水率を示し，また圃場は山口大学附属農場内にあり商用電源を使用してい動時に一時的に大電力が消費されて数ミリ秒間の停電がWatermark と Chameleon は同程度の吸引圧を示しまし
た．TEROS-21 とテンシオメータの吸引圧を正解と考えた場合，EC-5 と SEN0193 の含水率を水分特性曲線で吸生じるため，スマートフォン用のモバイルバッテリーを引圧に変換した値は正解よりも常に大きな値（乾燥側）経由して Arduino に給電する事で Arduino がリセットさを示し，Watermark と Chameleon の吸引圧は正解よりれてしまう事態を防止しています．

も常に小さな値（飽和側）を示しました．Watermark とますが，附属農場内の各種設備（大型換気扇など）の起引圧の経時変化を数値予測し，根域全体の吸引圧が灌水Chameleon は電気抵抗を吸引圧に換算しているために土壌水中の塩分が誤差の原因と思われ，EC-5 と SEN0193
は METER 社製 HYPROP で圃場内の１地点の土壌試料開始吸引圧に達した時の土壌水分観測位置における吸引を計測して得た水分特性曲線が誤差の原因と思われま圧，および根域全体の吸引圧が灌水停止吸引圧に達した

す．適当な水分特性曲線が得られた場合，複数地点土壌時の土壌水分観測位置における吸引圧を推定して，土壌水分観測型の自動灌漑機は多数のセンサーを使用する事水分観測値がそれぞれの値に達した時点で電磁弁を開閉から価格面で SEN0193 が有利と考えています．

続いて，複数地点土壌水分観測型自動灌漑機については，HYDRUS-2D を用いて円筒形領域内での土壌の吸しています．土壌水分観測には METER 社製 EC-5 を使用し，Arduino のデジタル端子からの出力を電圧レギュ5． おわりにレータ（50 円）で 3.3 V に降圧して EC-5 に給電しています．土壌水分観測位置は点滴灌漑のエミッターから側オーストラリア政府 CSIRO は途上国の農家に彼らが方 5 cm，深度 5 cm の位置としましたが，それはエミッ開発した Chameleon センサーと称する吸引圧センサー

ターに可能な限り近づける事で灌水が土壌水分観測位（IRROMETER 社製 Watermark センサーに近い原理）を置にまで浸潤するのに要する時間に起因する灌水制御の配布して現地農家の灌漑管理下での圃場土壌の吸引圧経タイムラグを減らして根域の吸引圧が管理目標値から外時変化データを収集し，無駄な灌漑水使用量の把握に努れる事を防ぎつつも，灌水中に飽和含水率に達して指標めているが，その吸引圧計測からデータ回収までの一連とならなくなる事も防げる位置であったためです．数値の装置を VIA システムと称している．VIA システムの解析においては点滴灌漑栽培下での根の 2 次元密度分開発は Arduino によって行われ，製品版の VIA システム

布，点滴灌水量，蒸発散量を設定し，根域全体の吸引圧も中身は Arduino による装置の開発時に書いたスケッチは根域全体の吸引圧の根密度分布に応じた加重平均値とを Arduino の基幹部の ATMEGA に書き込んで使っていしました．土壌水分観測の地点数は，山口大学附属農場るだけである．Arduino を用いると手軽に創意工夫を試内の露地圃場における土壌水分観測地点数とその全観測す事ができるが，良い装置が作製出来た後には Arduino

値の平均値の関係から，観測地点数の増加が平均値に殆を使う必要はなくなり，スケッチをそのまま ATMEGAど影響しなくなる観測地点数としました．そして，各地等に書き込めば VIA システムのような製品も作れる．

点で観測された含水率の平均値を水分特性曲線で吸引圧創意工夫が大好きな皆さんのアイデアを実際に試してみに変換し，電磁弁制御の指標としています．また，EC-5る段階で Arduino を活用する事により，皆さんのアイデ（17,300 円）と共に吸引圧センサーである METER 社製アを実現してみませんか．