아두이노 나노 ESP32 - 수위 센서 | Arduino Nano ESP32 - Water Sensor

이 튜토리얼은 Arduino Nano ESP32와 수위 센서를 사용하여 강우량 감지, 누수 감지, 탱크 넘침 및 수위 측정하는 방법에 대한 지침을 제공합니다.

준비물

1×Arduino Nano ESP32 Amazon
1×USB Cable Type-C 쿠팡 | Amazon
1×Water level sensor 쿠팡 | Amazon
1×Breadboard 쿠팡 | Amazon
1×Jumper Wires Amazon
1×(Optional) DC Power Jack 쿠팡 | Amazon
1×(Recommended) Screw Terminal Adapter for Arduino Nano 쿠팡 | Amazon
공개: 이 섹션에서 제공된 링크 중 일부는 제휴 링크입니다. 이 링크를 통해 구매한 경우 추가 비용없이 수수료를 받을 수 있습니다. 지원해 주셔서 감사합니다.

수위 센서에 대하여

수위 센서 핀배열

물 수위 센서에는 3개의 핀이 포함됩니다:

  • S (신호) 핀: 이 핀은 물의 수위에 비례하는 아날로그 전압을 출력합니다. 이 핀은 아두이노 나노 ESP32의 아날로그 입력 핀에 연결해야 합니다.
  • + (VCC) 핀: 이 핀을 3.3V나 5V에 연결합니다.
  • - (GND) 핀: 이 핀을 GND에 연결합니다.
water sensor pinout

수위 센서 작동 원리

단순하게, 센서가 물에 잠길수록 S 핀의 출력 전압이 더 높아집니다. 전압을 측정함으로써 우리는 수위를 알 수 있습니다.

선연결

이론적으로 센서의 VCCGND 핀을 각각 ESP32의 3.3V와 GND 핀에 연결함으로써 수분 센서에 전력을 공급할 수 있습니다.

그러나 그 방법은 실제로 권장되지 않습니다. 수분 센서에 지속적으로 전력을 공급하는 경우, 수분 센서는 습한 환경에서 더 빠르게 전기화학적 부식을 겪습니다 ⇒ 센서에서 값을 읽을 때만 수분 센서에 전력을 공급하는 것이 더 좋습니다. 이를 위해, 우리는 센서의 VCC 핀을 ESP32의 디지털 핀에 연결하고, 읽기 전에 ESP32의 핀을 HIGH로, 읽은 후에는 LOW로 프로그래밍 할 수 있습니다.

Arduino Nano ESP32 Water Sensor wiring diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

아두이노 나노 ESP32 코드 - 수위 센서에서 값 읽기

/* * 이 Arduino Nano ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino Nano ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano-esp32/arduino-nano-esp32-water-sensor */ #define POWER_PIN D4 // Arduino Nano ESP32 핀 D4가 센서의 VCC 핀에 연결됨 #define SIGNAL_PIN A0 // Arduino Nano ESP32 핀 A0가 센서의 신호 핀에 연결됨 int value = 0; // 센서 값 저장을 위한 변수 void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // 핀을 출력으로 설정 digitalWrite(POWER_PIN, LOW); // 센서를 끕니다 } void loop() { digitalWrite(POWER_PIN, HIGH); // 센서를 켭니다 delay(10); // 10 밀리초 동안 대기 value = analogRead(SIGNAL_PIN); // 센서에서 아날로그 값을 읽음 digitalWrite(POWER_PIN, LOW); // 센서를 끕니다 Serial.print("The water sensor value: "); Serial.println(value); delay(1000); }

사용 방법

아두이노 나노 ESP32를 처음 사용하는 경우, 아두이노 IDE에서 아두이노 나노 ESP32 환경 설정 방법을 참조하세요 아두이노 나노 ESP32에 대한 환경 설정 방법 보기.

  • 위의 코드를 복사하여 아두이노 IDE에 붙여넣으세요.
  • 아두이노 IDE에서 Upload 버튼을 클릭하여 아두이노 나노 ESP32 보드에 코드를 컴파일하고 업로드하세요.
  • 센서를 천천히 물에 담그세요(한 잔의 물).
  • 시리얼 모니터에서 결과를 확인하세요. 결과는 아래와 같습니다: 센서가 아무것도 만지지 않을 때 값은 0입니다.
COM6
Send
The water sensor value: 0 The water sensor value: 0 The water sensor value: 0 The water sensor value: 25 The water sensor value: 196 The water sensor value: 587 The water sensor value: 625 The water sensor value: 1434 The water sensor value: 1449 The water sensor value: 1454 The water sensor value: 1469 The water sensor value: 2525 The water sensor value: 2526 The water sensor value: 2558
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ NOTE THAT:

물 센서는 완전히 잠기도록 설계되지 않았으며, PCB의 노출된 트레이스만이 물속에 잠길 수 있습니다. 설치 시 주의하십시오.

물 샐피 감지하는 방법

물 새는 것, 강우량 및 탱크 넘침을 감지하려면 단지 센서의 값을 임계값과 비교하면 됩니다. 임계값은 이 튜토리얼의 보정 부분에서 결정됩니다.

아두이노 나노 ESP32가 물 샘을 감지하면 LED를 켜도록 해봅시다.

배선도

Arduino Nano ESP32 Water Sensor LED wiring diagram

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

아두이노 나노 ESP32 코드 - 물 샘 감지

/* * 이 Arduino Nano ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino Nano ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano-esp32/arduino-nano-esp32-water-sensor */ #define LED_PIN D9 // Arduino Nano ESP32 핀 D9가 LED 핀에 연결됨 #define POWER_PIN D4 // Arduino Nano ESP32 핀 D4가 센서의 VCC 핀에 연결됨 #define SIGNAL_PIN A0 // Arduino Nano ESP32 핀 A0가 센서의 신호 핀에 연결됨 #define THRESHOLD 1000 int value = 0; // 센서 값 저장을 위한 변수 void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); // 핀을 출력으로 설정 pinMode(POWER_PIN, OUTPUT); // 핀을 출력으로 설정 digitalWrite(POWER_PIN, LOW); // 센서를 꺼짐 상태로 만듦 digitalWrite(LED_PIN, LOW); // LED를 꺼짐 상태로 만듦 } void loop() { digitalWrite(POWER_PIN, HIGH); // 센서를 켜짐 상태로 만듦 delay(10); // 10밀리초 기다림 value = analogRead(SIGNAL_PIN); // 센서로부터 아날로그 값을 읽음 digitalWrite(POWER_PIN, LOW); // 센서를 꺼짐 상태로 만듦 if (value > THRESHOLD) { Serial.print("The water is detected"); digitalWrite(LED_PIN, HIGH); // LED를 켜짐 상태로 만듦 } else { digitalWrite(LED_PIN, LOW); // LED를 꺼짐 상태로 만듦 } }

물의 수위를 측정하는 방법

아래의 코드는 수위를 4단계로 나눕니다.

/* * 이 Arduino Nano ESP32 코드는 newbiely.kr 에서 개발되었습니다 * 이 Arduino Nano ESP32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano-esp32/arduino-nano-esp32-water-sensor */ #define POWER_PIN D4 // Arduino Nano ESP32 핀 D4가 센서의 VCC 핀에 연결됨 #define SIGNAL_PIN A0 // Arduino Nano ESP32 핀 A0가 센서의 신호 핀에 연결됨 #define SENSOR_MIN 0 #define SENSOR_MAX 521 int value = 0; // 센서 값 저장을 위한 변수 int level = 0; // 수위 저장을 위한 변수 void setup() { Serial.begin(9600); pinMode(POWER_PIN, OUTPUT); // D7 핀을 출력으로 구성 digitalWrite(POWER_PIN, LOW); // 센서 끄기 } void loop() { digitalWrite(POWER_PIN, HIGH); // 센서 켜기 delay(10); // 10 밀리초 기다림 value = analogRead(SIGNAL_PIN); // 센서에서 아날로그 값을 읽음 digitalWrite(POWER_PIN, LOW); // 센서 끄기 level = map(value, SENSOR_MIN, SENSOR_MAX, 0, 4); // 4 단계 Serial.print("Water level: "); Serial.println(level); delay(1000); }

※ NOTE THAT:

  • SENSOR_MIN 및 SENSOR_MAX는 보정 과정에 의해 결정됩니다.
  • 위의 매핑 방법은 정확하지 않습니다. 그러나 많은 응용 프로그램에서는 받아들일 수 있습니다.

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!