これはブログです

3DCGとかプログラミングとか

土壌センサを変えてみた

はじめに

だいぶ前に土壌センサの電極が剥げた件をブログに書いた。記事中にあるセンサとは別のセンサを買って、計測をしている。

買ったセンサ

買ったのは以下のセンサ。

計測

ピン

このセンサはGroveピンではなく3ピンなので、付属のケーブルではM5Stackには挿せない。そのため、追加でアナログケーブルのセット(と、ついでにディジタルケーブルのセットも)を購入した。

購入したアナログケーブルをセンサの付属ケーブルの代わりに使用し、オス側をM5Stackに(黒線をG(グラウンド)に、赤線を5V(5V出力)に、青線をG36(ADコンバータ))に挿す。

ソースコード

ソースコードは以下。一分周期で処理をし、計測した値は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付近で一気に下がっている。このタイミングで水を与えたためである。

まとめ

もともと、1週間に一回しか水を与えて(しかし、たっぷりと)いない。水を与えてから1週間経つとアナログ値が2800~2900くらいの値を示した。水を与えると最小で1400くらいまで下がることがわかった。

まだ1週間分くらいしかマトモなデータがないので、3週間分のデータを計測してあらためて見てみようと思う。ついでに、輝度センサも取り付けて計測をしている。

なお、計測自体は数週間行っているが、前回みたいなこと(電極が剥げたり)はしていない。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください