ESP8266 - 수분 센서 | ESP8266 - Water Sensor

이 튜토리얼은 ESP8266과 수분 센서를 사용하는 방법을 안내합니다. 우리는 다음을 배울 것입니다:

준비물

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

수위 센서에 관하여

수위 센서 핀배열

물 수위 센서에는 3개의 핀이 있습니다:

  • S(Signal) 핀은 아날로그 출력으로, ESP8266의 아날로그 입력 중 하나에 연결해야 합니다.
  • + (VCC) 핀은 센서에 전력을 공급하며 3.3V – 5V 사이의 전압을 사용하는 것이 좋습니다.
  • - (GND) 핀은 접지 연결입니다.
water sensor pinout

수위 센서가 작동하는 방법

간단히 말해서, 센서가 더 많은 물에 노출될수록 시그널 핀의 출력 전압은 증가합니다.

자세히 살펴봅시다.

이 섹션에는 압도될 수 있는 고급 정보가 포함되어 있습니다. 내용에 대해 확신이 없다면 건너뛰어 다음 섹션으로 이동하십시오.

센서에는 5개는 전원 트레이스이고 나머지 5개는 감지 트레이스인 10개의 노출된 구리 트레이스 세트가 있습니다. 트레이스는 평행하게 배치되며, 매 두 개의 전원 트레이스 사이에 하나의 감지 트레이스가 있습니다. 물에 잠기지 않는 한, 이 트레이스들은 연결되지 않습니다.

해당 흔적은 물의 양에 따라 저항 값이 변하는 가변 저항기(포텐쇼미터와 마찬가지로)처럼 작동합니다:

  • 트레이스의 저항은 물의 높이에 반비례합니다.
  • 센서가 잠겨 있는 물의 양이 많을수록 전도성이 좋아져 저항이 낮아집니다.
  • 센서가 잠겨 있는 물의 양이 적을수록 전도성이 나빠져 저항이 높아집니다.
  • 센서의 출력 전압은 저항에 의해 결정됩니다.

전압을 측정하여 수위를 확인할 수 있습니다.

선연결

이론적으로, 센서의 VCCGND 핀은 각각 ESP8266의 5v와 GND 핀에 연결하여 센서에 전력을 공급할 수 있습니다.

하지만, 이 방법을 실제로 사용하는 것은 권장되지 않습니다. 환경이 습할 경우 센서에 지속적으로 전력을 공급하면 전기화학적으로 더 빠르게 부식되어 수명이 줄어들게 됩니다. 이를 방지하기 위해, 센서의 값을 읽을 필요가 있을 때만 센서에 전력을 공급하는 것이 좋습니다. 이는 ESP8266의 디지털 핀에 센서의 VCC 핀을 연결하고, 아두이노의 핀을 읽기 전에는 HIGH로, 읽은 후에는 LOW로 설정함으로써 수행할 수 있습니다.

ESP8266 NodeMCU Water Sensor wiring diagram

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

ESP8266의 핀 배치ESP8266 및 다른 구성 요소에 전원을 공급하는 방법에 대해 더 많이 보십시오.

ESP8266 코드 - 수위 센서에서 값 읽기

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-water-sensor */ #define POWER_PIN D7 #define SIGNAL_PIN A0 int value = 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); // 센서 끄기 Serial.print("Sensor value: "); Serial.println(value); delay(1000); }

사용 방법

Arduino IDE에서 ESP8266을 시작하는 방법은 다음과 같습니다:

  • ESP8266을 처음 사용하는 경우, Arduino IDE에서 ESP8266 환경 설정 방법 튜토리얼을 확인하세요.
  • 다이어그램에 표시된 대로 구성 요소들을 연결하세요.
  • USB 케이블을 사용하여 ESP8266 보드를 컴퓨터에 연결하세요.
  • 컴퓨터에서 Arduino IDE를 엽니다.
  • 올바른 ESP8266 보드(예: NodeMCU 1.0 (ESP-12E Module))와 해당 COM 포트를 선택하세요.
  • 코드를 복사하고 Arduino IDE로 엽니다.
  • Arduino IDE에서 Upload 버튼을 클릭하여 코드를 ESP8266으로 컴파일하고 업로드하세요.
  • 센서를 물이 담긴 유리잔에 조심스럽게 담그세요.
  • 시리얼 모니터에서 결과를 확인하세요; 센서가 아무것도 접촉하지 않을 때 값은 0이어야 합니다.
COM6
Send
Sensor value: 0 Sensor value: 0 Sensor value: 0 Sensor value: 25 Sensor value: 97 Sensor value: 284 Sensor value: 428 Sensor value: 435 Sensor value: 441 Sensor value: 455 Sensor value: 467 Sensor value: 521 Sensor value: 528 Sensor value: 553
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ NOTE THAT:

센서는 완전히 잠기지 않아야 합니다. PCB의 노출된 트레이스만 물과 접촉해야 합니다. 설치 시 주의해 주십시오.

물 누수 감지 방법

물 새는 곳, 강우량, 그리고 탱크 넘침을 확인하기 위해서, 이 튜토리얼의 보정 부분에서 결정된 임계값과 읽기 값만 비교하면 됩니다.

우리는 특정 사례를 고려해 보자. 만약 물이 감지되면, ESP8266은 LED를 활성화할 것이다.

배선도

ESP8266 NodeMCU Water Sensor LED wiring diagram

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

ESP8266 코드 - 물 새는 것 감지하기

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-water-sensor */ #define LED_PIN D2 #define POWER_PIN D7 #define SIGNAL_PIN A0 #define THRESHOLD 300 int value = 0; // 센서 값 저장을 위한 변수 void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); // D2 핀을 출력으로 설정 pinMode(POWER_PIN, OUTPUT); // D7 핀을 출력으로 설정 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를 끔 } }

물의 수위를 측정하는 방법

만약 최대 높이를 여러 단계로 나누어 현재의 수위를 측정하고자 한다면, 다음과 같은 코드를 사용할 수 있습니다. 이때, 물의 최대 높이는 센서의 높이와 동일하다는 점에 유의해주세요. 이 코드는 최대 높이를 네 단계로 나눕니다.

/* * 이 ESP8266 NodeMCU 코드는 newbiely.kr 에서 개발되었습니다 * 이 ESP8266 NodeMCU 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/esp8266/esp8266-water-sensor */ #define POWER_PIN 7 #define SIGNAL_PIN A5 #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는 교정 과정을 통해 결정됩니다.
  • 위에서 언급한 매핑 방법은 정확하지 않습니다. 그럼에도 불구하고, 많은 응용 프로그램에 적합합니다. 결과를 더 정확하게 만들고 싶다면, 각 레벨의 임계값을 측정할 수 있습니다. 추가 정보는 이 튜토리얼 끝에 있는 교정 섹션을 참조하십시오.

수위 센서 교정

센서의 출력값은 두 가지 요소에 의해 결정됩니다: 물의 수위와 물의 전도도입니다. 순수한 물은 전도성이 없지만, 미네랄과 불순물이 존재하면 전도성을 갖게 됩니다. 물의 전도도가 높을수록 센서의 감도가 높아집니다. 또한, 출력값은 센서의 VCC 핀에 공급되는 전압에 의해서도 영향을 받습니다.

물 센서에서 정확한 읽기 값을 얻으려면 모니터링하려는 특정 유형의 물에 대해 센서를 보정하는 것이 좋습니다.

행동을 시작하기 위한 임계값을 설정하기 전에 센서에서 얻은 실제 값을 테스트를 통해 측정하는 것이 필요합니다.

테스트 지친:

  • 위에 제공된 스케치를 사용하여 센서 값을 읽으세요.
  • 센서를 물속에 담그면서, 원하는 임계값 수준에 있도록 하세요.
  • 센서가 출력하는 값을 시리얼 모니터에 기록하세요.
  • 이 값을 임계값으로 사용하여 특정 동작을 트리거하세요.

이 테스트를 완료하려면 일부 실험이 필요할 수도 있습니다.

이 테스트는 또한 다음을 발견하는 데에도 사용될 수 있습니다:

  • 센서가 액체에 잠기지 않았을 때의 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!