5.9 水位監視システム

5.9.1 水位センサー

水位センサーは、一連の露出した平行線が統合されており、水の量と水滴を測定します。

cou91

注意:検出エリアを除き、センサーは防水ではありません。他のエリアに水をこぼすと、ショートする可能性があります。

Arduino IDEで5.9.1Water-Level-Sensorコードを開きます。

#define WaterLevelPin 33

void setup() {

  Serial.begin(9600);
  pinMode(WaterLevelPin,INPUT);
}

void loop() {
  int ReadValue = analogRead(WaterLevelPin);
  Serial.println(ReadValue);
  delay(500);
}

ESP32 Dev ModuleボードとCOMポートを選択し、コードをアップロードします。

5458448

テスト結果:

シリアルモニターを開きます。センサーの検出エリアを濡れた指で触れると、現在検出された値がモニターに表示されます(範囲:0〜4095)。

image-20250417150303854

5.9.2 水位監視システム

Arduino IDEで5.9.2Water-Level-Testing-Systemコードを開きます。

#include <LiquidCrystal_I2C.h>

#define BuzzerPin 16
#define WaterLevelPin 33

LiquidCrystal_I2C lcd(0x27,16,2);

void setup() {

  //Initialize the serial port
  Serial.begin(9600);
  //Set the water level pin to input mode
  pinMode(WaterLevelPin,INPUT);

  //Initialize LCD
  lcd.init();
  //turn on the LCD backlight
  lcd.backlight();
  //clear displays on LCD
  lcd.clear();

  ledcAttachChannel(BuzzerPin,1000,8,4);
}

void loop() {
  //Read the value of water level sensor
  int ReadValue = analogRead(WaterLevelPin);
  //Set the display position of cursor
  lcd.setCursor(0, 0);
  //Set the display position of characters
  lcd.print("WaterLevel:");
  lcd.setCursor(6, 1);
  lcd.print(ReadValue);
  
  //When the detected value exceeds the threshold, the buzzer starts to alarm
  if(ReadValue >= 2000)
  {
    ledcWriteTone(BuzzerPin,659);
    delay(100);
    ledcWriteTone(BuzzerPin,532);
    delay(100);
    ledcWriteTone(BuzzerPin,659);
    delay(100);
    ledcWriteTone(BuzzerPin,0);  //Stop alarming
  }
  delay(500);
  lcd.clear();
}

ESP32 Dev ModuleボードとCOMポートを選択し、コードをアップロードします。

5458448

テスト結果:

LCDには水位のリアルタイム値が表示されます。水位センサーが水位が200より低いことを検出すると、ブザーが鳴り始めます。

flo9