(2021-03-28 初稿 - 2021-05-17 転記・修正)
はじめに
土壌水分センサーのYL-69を入手したので、Arduino Unoで計測のテストを実施した。
ちなみに、YL-69 は以下のとおり WINGONEER製でAmazonで購入した。
当初、M5Stackで利用することを想定していたが、情報が少なくうまく使えなかった。
どなたか、情報を持っている方は、教えてください。
接続方法
計測は、YL-69とArduinoを接続し、ArduinoとRaspberry Pi または PC等を接続して計測することを想定している。これは、YL-69のデータがアナログ値で、Raspberry Pi等とはA/Dコンバータ(今回は、Arduinoがコンバータ)がないと直接は接続できない。
Raspberry Pi (or PC) ⇔ Ardiuno Uno ⇔ YL-69
ちなみに、接続や測定方法については、以下のサイトを参考にさせていただいた。多謝【Arduino Uno】
【Arduino nano】
YL-69と中間ボードの接続
YL-69と中間ボードの接続は、どちらでも可。
中間ボードとArduinoの接続
中間ボードとArduinoの接続は、以下のとおり。
AO ⇔ A0
VCC ⇔ 5V
GND ⇔ GND
接続テスト
Arduino IDEを設定したPCまたはRaspberry Piで接続テストする。
int val; void setup(){ Serial.begin(9600); } void loop(){ val = analogRead(0); Serial.println(val); delay(1000); }
次に、USB ケーブルでセンサーを付けたArduinoを接続して、IDEでコンパイルしたスケッチをArduinoに送る
IDEのシリアルモニタで、数値を確認。
水分がない場合は、最大値の1023を示す。
水を入れたコップ等に浸し、値が小さくなることを確認する。
Pythonでデータを取得
取得データの加工等、今後の利便性を考えPythonでデータを取得する。
なお、シリアル通信を利用するので、インストールしていない場合は、以下のとおりserialパッケージをインストールする。
sudo apt install python3-serial
作成した簡単なコード
#!/usr/bin/env python3 #coding: UTF-8 # [2021-03-28] ver0.01 started by H. Yamada import serial data = '' ser = serial.Serial('/dev/ttyACM0', 9600) data = ser.readline() ser.close() result = data.decode() print(result)
作成したコードの実行
./yl-69-serial.py 1023
値が返ってくれば成功。