5.回路基板で他のセンサを使用する
この節では、作成した回路基板に他のセンサを使用する方法の解説を行います。
回路基板にセンサを接続
まず、扱いたいセンサを回路基板に接続します。
※接続可能なセンサ機器は第三章:センサ機器に記載してます。
回路基板にセンサを接続する方法は、直接回路基板にはんだ付けを行い接続する方法と、回路基板にXHコネクタ、センサにXHコネクタハウジングを取り付け、接続する方法があります。
接続する場所は、電源を必要とする温度センサ等の場合はJ2とJ3、電源を必要としない日射量計等の場合はJ6とJ7になります。

各場所に対応する回路は下記となります。
| 場所 | 回路 |
| J2 | 上側:マイナス(グランド) 中央:アナログ0番 下側:プラス |
| J3 | 上側:マイナス(グランド) 中央:アナログ1番 下側:プラス |
| J6 | 上側:マイナス(グランド) 下側:アナログ2番 |
| J7 | 上側:マイナス(グランド) 下側:アナログ3番 |
詳しくは下記回路図と、センサのデータシートを参考にします。


回路基板にセンサを接続する例
下記画像は、J2に温度センサLM61CIZを直接はんだ付けを行い、J3、J6、J7にはXHコネクタを取り付けてます。

センサの値を読み取るプログラム
センサの値を読み取るプログラムは、前節でダウンロードしたプログラムに追記を行い、回路基板にプログラムを書き込みます。
プログラムの追記
プログラムの追記は、loop関数内に追記します。
loop関数は、
void loop()
{・・・の箇所となります。
追記する場所は、
tmMeasurement('0'); //水位水温測定の下の行に追記します。
実際に温度を測定するプログラムを紹介します。
J2に温度センサLM61CIZを取り付けた場合の温度を測定するプログラムは、
int analogR = analogRead(0); // アナログ0番ピンセンサ値読込
val1 = (float)analogR * 500.0 / 1024.0 - 60.0; //電圧から温度を求めるとなり、こちらのコードを、「tmMeasurement(‘0’); //水位水温測定」の下の行に追記します。
void loop()
{
String tmpSendValue = "";
measureCount++;
tmMeasurement('0'); //水位水温測定
int analogR = analogRead(0); // アナログ0番ピンセンサ値読込
val1 = ((float)analogR * 5.0 * 1000.0 / 1024.0 - 600.0) / 10; //電圧から温度を求める
・・・プログラムコードの解説
int analogR = analogRead(0); こちらのプログラムは、0番ピンに接続している、センサ値を取得し、int型変数analogRに値を入れます。
val1 = ((float)analogR * 5.0 * 1000.0 / 1024.0 - 600.0) / 10こちらのプログラムは、取得した値から温度を求め、グローバル変数val1に温度を入れるプログラムになります。
作成した回路基板のアナログセンサ読み込みは、0~5Vの電圧を0~1023の値に変換されます。
温度を求める為に、変換された値をVに変換し、さらにmVに変換する必要があります。変換式は下記になります。
・(float)analogR * 5.0 * 1000.0 / 1024.0
変換した電圧を温度センサLM61CIZのデータシートを参考に温度を求めます。
・((float)analogR * 5.0 * 1000.0 / 1024.0 – 600.0) / 10
LM61CIZは、0度の時、600.0mVを出力する為、変換した電圧から600を引き、さらに10mVが1度の温度変化に相当するので、10で割ります。
プログラム追記後、前節4.回路基板にプログラムの書き込みを参考に回路基板にプログラムの書き込みを行います。
プログラム作成について
プログラムを作成するには、各センサのデータシートを読み込み、電圧から求めたい値に変換する式を作ることが重要となります。
式が完成すれば、グローバル変数を準備しているので、グローバル変数に値をいれるのみとなります。
※前節でダウンロードしたプログラムには、グローバル変数val1,val2,val3,val4が用意されておりますので、複数のセンサを使用の場合は、下記表の通りご活用下さい。
| アナログ番号 | グローバル変数 |
| 0 | val1 |
| 1 | val2 |
| 2 | val3 |
| 3 | val4 |