趣味の開発ノート

ITの学習やプログラミング・ノーコードアプリ開発のことなど。

【M5Stack】温湿度センサと土壌水分センサを使って表示させるプログラム

電子工作。
これまでArduinoを教わって軽く触れてみたくらいで、まだまだ実用レベルのものを作れてはいない。

M5Stackを知り、練習のために試作中。

f:id:massa_potato:20220218130449p:plain

現場での活用目的や課題感、参考記事などはこちらのnoteにまとめている。

note.com

使用モジュール

以下のセンサを使用している。

  • 温度計センサ DHT11
  • 土壌水分センサ DFRobot SEN0114

環境構築

こちらの記事にしたがって環境構築を行った。
Mac OS

yotamatsumaru.jp

環境構築の流れ(Mac - Arduino IDEのダウンロード・インストール - USBドライバのインストール - ボードの設定:esp32のボードマネージャのインストール - シリアルポート、他設定の確認 - ライブラリのインポート - スケッチ例を使用してM5Stackに書き込む

ライブラリ

  • M5Stack:M5Stackを使う場合は必ずインストール
  • DHT sensor library: dhtセンサーを使うために必要
  • Adafruit_Sensor:dhtセンサーを使うために必要。  - GitHubから手動でダウンロードし、ArduinoIDEのライブラリフォルダに入れてやる必要がある

スケッチ

スケッチ(コード)はこんな感じ。コピペである。

こちらの記事を参考に

deviceplus.jp

▼M5Stackで温湿度・土壌水分を表示する

#include <M5Stack.h>
#include <DHT.h>

const int PIN_DHT = 5;
DHT dht(PIN_DHT, DHT11);

void setup() {
  M5.begin();
  dht.begin();  
}

uint16_t analogRead_value = 0;

void loop() {
  delay(3000);

  float humidity = dht.readHumidity();
  float temperature = dht.readTemperature();  
  analogRead_value = analogRead(36);

  M5.Lcd.clear(BLACK);
  if ( (temperature > 28) or (analogRead_value < 300) ) {
    M5.Lcd.fillScreen(TFT_RED);
  } 

  M5.Lcd.setTextColor(WHITE);
  M5.Lcd.drawString("M5STACK SENSORS:", 0, 0, 4);

  M5.Lcd.setTextColor(YELLOW);
  M5.Lcd.drawString("Humidity:", 0, 30, 4);
  M5.Lcd.drawFloat(humidity, 0, 0, 60, 4);
  M5.Lcd.drawString("%", 50, 60, 4);
  
  M5.Lcd.setTextColor(GREEN);
  M5.Lcd.drawString("Temperature:", 0, 90, 4);
  M5.Lcd.drawFloat(temperature, 0, 0, 120, 4);
  M5.Lcd.drawString("C", 50, 120, 4);
 
  M5.Lcd.setTextColor(BLUE);
  M5.Lcd.drawString("Moisture:", 0, 150, 4);
  M5.Lcd.drawFloat(analogRead_value, 0, 0, 180, 4);
}