はじめに
だいぶ前に土壌センサの電極が剥げた件をブログに書いた。記事中にあるセンサとは別のセンサを買って、計測をしている。
計測
ピン
このセンサはGroveピンではなく3ピンなので、付属のケーブルではM5Stackには挿せない。そのため、追加でアナログケーブルのセット(と、ついでにディジタルケーブルのセットも)を購入した。
- Switch Science | Gravity – 3ピンPH2.0 – DuPontオス アナログケーブルセット(30cm)
- Switch Science | Gravity – 3ピンPH2.0 – DuPontオス デジタルケーブルセット(30cm)
購入したアナログケーブルをセンサの付属ケーブルの代わりに使用し、オス側をM5Stackに(黒線をG(グラウンド)に、赤線を5V(5V出力)に、青線をG36(ADコンバータ))に挿す。
![](https://tenteroring.org/sierra/http://tenteroring.luna.ddns.vc/sierra/wp-content/uploads//2024/06/zu01-1024x771.jpg)
ソースコード
ソースコードは以下。一分周期で処理をし、計測した値はSDカードに書き込んでいる。
#include <M5Stack.h>
#include <SD.h>
#define PIN 36 // ピン番号
int SEC = 60*1000; // 割り込み秒
int ANA = 0; // アナログ値
int CNT = 0; // カウント値
// SDカードに書き込みをする
void writeFile(){
File fs;
SD.begin();
fs = SD.open("/test.txt", FILE_APPEND);
String str = (String)CNT + ", " + (String)ANA;
fs.println(str);
fs.close();
}
// ANAを表示する
void printCntAndFlg(){
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setCursor(0, 20);
M5.Lcd.printf("ANA: %d", ANA);
M5.Lcd.setCursor(0, 60);
M5.Lcd.printf("CNT: %d", CNT);
}
void setup() {
// put your setup code here, to run once:
M5.begin();
M5.Lcd.setTextSize(2);
pinMode(PIN, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
M5.update();
ANA = analogRead(PIN);
CNT = CNT + 1;
printCntAndFlg();
writeFile();
delay(SEC);
}
結果
一週間計測したときの値をグラフ化した。
横軸が5000付近で一気に下がっている。このタイミングで水を与えたためである。
![](https://tenteroring.org/sierra/http://tenteroring.luna.ddns.vc/sierra/wp-content/uploads//2024/06/Figure_1-1024x704.png)
まとめ
もともと、1週間に一回しか水を与えて(しかし、たっぷりと)いない。水を与えてから1週間経つとアナログ値が2800~2900くらいの値を示した。水を与えると最小で1400くらいまで下がることがわかった。
まだ1週間分くらいしかマトモなデータがないので、3週間分のデータを計測してあらためて見てみようと思う。ついでに、輝度センサも取り付けて計測をしている。
![](https://tenteroring.org/sierra/http://tenteroring.luna.ddns.vc/sierra/wp-content/uploads//2024/06/IMG_20240616_135043534_MFNR-771x1024.jpg)
なお、計測自体は数週間行っているが、前回みたいなこと(電極が剥げたり)はしていない。
コメントを残す