이 프로젝트는 아두이노와 YL-69 토양수분 센서를 활용하여 초보자도 쉽게 따라 할 수 있도록 구성되었습니다. 단계별 설명을 통해 하드웨어 연결부터 소프트웨어 코딩, 동작 확인까지 모든 과정을 다룹니다. 이제 스마트 농업 세계로 한 걸음 나아가 보세요!"
목차
[아두이노][센서] 스마트 농업의 시작! YL-69 토양수분 센서로 수분 상태 측정하기
YL-69 토양수분 센서는 토양의 수분 상태를 간단히 측정할 수 있는 저렴하고 실용적인 센서입니다. 이 프로젝트에서는 YL-69 센서를 아두이노에 연결하고, 데이터를 LCD 화면에 출력하는 과정을 배웠습니다. 센서 데이터를 읽고 변환하여 LCD에 시각적으로 표시하며, 수분 상태에 따른 메시지를 출력하는 방식으로 사용자와 상호작용을 구현했습니다. 이를 통해 스마트 농업, 자동 급수 시스템 등 다양한 응용 프로젝트를 구상할 수 있는 기초를 다질 수 있었습니다. 특히, 센서 데이터의 처리 및 시각화 과정을 익히면서 실생활에서 적용 가능한 전자 프로젝트를 개발할 수 있었습니다.
1. YL-69 토양수분 센서란?
YL-69 토양수분 센서는 LM393 비교기 칩을 기반으로 작동하는 간단하고 효과적인 수분 측정 모듈입니다. 이 모듈은 토양에 직접 삽입하는 프로브와 신호 처리 보드로 구성되어 있으며, 스마트 농업, 자동 급수 시스템 등 다양한 프로젝트에 사용됩니다.
주요 구성 요소:
- YL-69 프로브: 토양에 삽입하여 수분의 전도성을 감지.
- LM393 비교기 기반 신호 처리 보드:
- LM393: 낮은 전력 소모와 광범위한 전압 공급 범위(2V~36V)를 지원하는 듀얼 비교기 칩. 이 칩은 토양 수분 값에 따라 아날로그 신호를 비교하고 디지털 신호를 출력합니다.
- 전압 비교 기능: 입력 신호를 기준 전압과 비교하여 결과를 출력. 예를 들어, 기준 전압 이상이면 디지털 출력이 HIGH로, 그 미만이면 LOW로 변환.
특징:
- 간단한 연결: 3개의 핀(VCC, GND, Signal)을 통해 아두이노와 손쉽게 연결 가능.
- 아날로그 출력: 프로브의 저항 변화에 따라 아날로그 신호로 수분 상태를 전달.
- 디지털 출력(선택적): 설정된 임계값에 따라 토양 상태를 디지털 신호로 출력.
활용 예:
- 토양 수분 수준을 실시간 모니터링하여 물 공급 자동화를 구현.
- 저렴하고 효율적인 센서를 사용하여 다양한 스마트 농업 시스템 구축.
2 . YL-69 토양수분 센서의 동작 원리
YL-69 센서는 전도성 측정 원리를 기반으로 작동합니다. 토양에 물이 많을수록 전기 전도성이 증가하고, 이에 따라 프로브의 저항 값이 감소합니다. 이러한 저항 값의 변화는 신호 처리 보드에서 아날로그 값으로 변환되어 출력됩니다.
LM393 개요
LM393은 저전력, 저오프셋 전압의 듀얼 비교기로, 아날로그 신호를 디지털 신호로 변환하는 데 사용됩니다. 이 칩은 단일 또는 이중 전원 공급에서 작동 가능하며, 최대 36V의 전압을 처리할 수 있습니다. 저전력 소비(0.4mA)와 넓은 입력 전압 범위를 제공하여 배터리 구동 애플리케이션에 적합합니다.
LM393 비교기의 역할:
LM393은 YL-69 센서의 핵심 IC로, 입력 전압과 기준 전압을 비교합니다:
- 입력 신호 처리:
- 센서 프로브에서 생성된 전압 신호가 LM393의 입력 핀으로 전달.
- 전압 비교:
- 비반전 입력(+IN)과 반전 입력(-IN)의 전압을 비교하여 결과를 출력.
- 출력 신호:
- 출력 핀이 LOW일 경우 토양 수분이 낮음을, HIGH일 경우 충분함을 나타냅니다
동작 원리
LM393은 두 개의 독립적인 비교기를 포함하며, 다음과 같은 방식으로 작동합니다:
- 비교 입력:
- 비반전 입력(+IN)과 반전 입력(-IN) 간의 전압을 비교합니다.
- 비반전 입력이 반전 입력보다 높으면 출력은 HIGH 상태를 유지합니다.
- 반대로, 비반전 입력이 낮으면 출력은 LOW 상태로 변환됩니다.
- 출력 신호:
- 출력은 오픈 컬렉터 방식의 NPN 트랜지스터로 구성되어 있으며, 외부 풀업 저항에 의해 HIGH 상태로 전환됩니다.
- 출력 트랜지스터는 최대 16mA까지 싱크 전류를 지원하며, TTL, CMOS와 같은 다양한 로직 시스템과 호환됩니다.
- 전력 효율:
- 2V~36V의 넓은 전원 공급 범위를 지원하며, 낮은 전력 소모를 유지합니다.
- 내부 바이어스 네트워크는 전원 전압의 변화와 무관하게 안정적인 전류를 제공합니다.
전압과 수분의 관계:
- 높은 수분: 전도성 증가 → 저항 감소 → 출력 전압 낮음.
- 낮은 수분: 전도성 감소 → 저항 증가 → 출력 전압 높음.
아날로그 및 디지털 출력:
- 아날로그 출력: 아두이노의 ADC 핀으로 전달되어 세밀한 수분 데이터를 제공합니다.
- 디지털 출력: LM393의 비교 결과에 따라 임계값을 기준으로 토양 상태를 간단히 확인할 수 있습니다.
3. YL-69 토양수분 센서 구입하기
YL-69 토양수분 센서는 국내외 다양한 온라인 플랫폼에서 쉽게 구매할 수 있습니다. 국내에서는 네이버 쇼핑과 같은 온라인 마켓에서 약 400원에 판매되고 있습니다. 해외 구매를 고려하신다면, 알리익스프레스에서 약 1,000원~3,000원 사이의 가격대로 제공되며, 배송비는 판매자에 따라 다를 수 있습니다. 구매 시 센서 프로브와 신호 처리 모듈이 함께 포함되어 있는지 확인하는 것이 중요합니다. 또한, 판매자의 평점과 리뷰를 확인하여 제품의 품질과 신뢰성을 검토하는 것이 좋습니다. 배송 기간과 추가 비용(예: 관세)을 고려하여 국내외 판매처를 비교해보는 것도 추천됩니다.
4. YL-69 토양수분 센서 하드웨어 연결하기
YL-69 토양수분 센서를 아두이노와 연결하려면, 먼저 센서의 Signal 핀을 아두이노의 A0 핀에 연결합니다. 이를 통해 센서에서 측정된 아날로그 데이터를 아두이노로 전달할 수 있습니다. 센서의 VCC 핀은 아두이노의 5V 핀에 연결하여 안정적인 전원을 공급하고, GND 핀은 아두이노의 GND 핀에 연결하여 회로의 기준 전압을 맞춥니다. LCD 쉴드는 아두이노 보드 상단에 직접 장착되며, LCD의 A1 핀은 아두이노에서 추가적인 입력 데이터를 처리하거나 표시하는 데 사용됩니다. 이 연결은 아두이노가 YL-69 센서에서 측정한 데이터를 수집하고, LCD를 통해 이를 시각적으로 표현할 수 있도록 합니다. YL-69 센서의 아날로그 출력은 정확한 수분 측정을 가능하게 하며, LCD 쉴드는 실시간 데이터를 사용자에게 제공하는 역할을 합니다. 이러한 연결 방식은 자동 급수 시스템이나 스마트 화분 프로젝트와 같은 응용 프로그램에서 효율적으로 활용될 수 있습니다. 모든 연결은 전원이 차단된 상태에서 작업하여 안전을 유지해야 합니다.
하드웨어 구성 요소
- 아두이노 보드: YL-69 센서와 LCD 쉴드를 연결하여 제어.
- YL-69 토양수분 센서: 토양의 수분 상태를 측정하여 아날로그 값을 출력.
- LCD 쉴드(16x2): 측정된 데이터를 시각적으로 표시.
연결 핀 구성
YL-69 센서와 아두이노 연결:
- YL-69의 Signal 핀 → 아두이노 A0 핀
- YL-69의 VCC 핀 → 아두이노 5V 핀
- YL-69의 GND 핀 → 아두이노 GND 핀
LCD 쉴드와 아두이노 연결:
- LCD 쉴드는 아두이노에 직접 장착됩니다.
- A1 핀 사용: LCD 쉴드의 A1 핀은 추가 데이터를 표시하거나 센서 데이터를 처리하는 데 사용됩니다.
연결 방법 설명
- YL-69 연결:
- 센서의 VCC 핀은 아두이노의 5V 핀과 연결하여 전원을 공급합니다.
- 센서의 GND 핀은 아두이노의 GND 핀과 연결하여 회로의 기준 전압을 맞춥니다.
- Signal 핀을 아두이노 A0 핀에 연결하여 아날로그 입력 데이터를 받습니다.
- LCD 쉴드 연결:
- LCD 쉴드는 아두이노의 상단에 부착하여 간단히 사용할 수 있습니다.
- LCD 쉴드의 A1 핀은 YL-69와 추가 데이터를 출력하거나 LCD에 표시할 정보를 처리하는 데 활용할 수 있습니다.
왜 이렇게 연결하나요?
- YL-69와 아두이노: YL-69 센서는 아날로그 출력만 제공하므로 아날로그 핀(A0)에 연결해야 데이터를 정확히 측정할 수 있습니다.
- LCD 쉴드와 아두이노: LCD 쉴드는 간단한 I/O 핀 연결로 작동하며, A1 핀은 추가 센서 데이터 출력 또는 메뉴 탐색 등의 용도로 사용할 수 있습니다.
- 5V와 GND 연결: 안정적인 전원 공급과 공통 접지 설정을 위해 필수적인 연결입니다.
이 구성은 아두이노가 YL-69 센서에서 데이터를 읽고, 이를 LCD 쉴드를 통해 사용자에게 시각적으로 보여주는 시스템을 완성합니다.
5. YL-69 토양수분 센서 소프트웨어 코딩하기
센서를 제어하기 위한 소프트웨어 준비 과정은 다음과 같은 단계로 이루어집니다
1. 아두이노
01 연결
- 아두이노와 PC 연결
- 아두이노 IDE 실행
- 메뉴 → 툴 → 보드:아두이노 UNO 확인
- 메뉴 → 스케치 → 확인/컴파일
02 컴파일 확인
스케치>확인/컴파일(CTRL+R) 를 선택해서 컴파일을 진행합니다.
03 아두이노 우노 업로드
컴파일이 이상없이 완료되면 스케치>업로드(CTRL+U) 를 선택해서 컴파일 파일을 업로드 합니다.
04 동작 확인
센서의 동작을 확인할 수 있습니다.
2. 코드 설명
이 코드는 아두이노, LCD 쉴드, YL-69 센서를 통해 토양 상태를 효율적으로 모니터링할 수 있는 구조로 설계되었습니다. 이를 통해 자동 급수 시스템, 스마트 화분 등 다양한 프로젝트에 활용할 수 있습니다.
전체 동작 요약
- 초기화 단계: LCD와 시리얼 통신을 설정하고 시스템을 준비합니다.
- 측정 단계: YL-69 센서를 통해 토양 수분 값을 읽어옵니다.
- 출력 단계: 측정된 데이터를 LCD와 시리얼 모니터에 표시합니다.
- 반복 단계: 1초 간격으로 데이터를 갱신하며 실시간 모니터링을 수행합니다.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// 최소 및 최대 토양 수분 값 정의
#define MOISTURE_MIN 60
#define MOISTURE_MAX 65
// LCD 초기화 (주소 0x3F, 16x2 화면)
LiquidCrystal_I2C lcd(0x3F, 16, 2);
// 토양 수분 값을 저장할 변수
int soilMoistureValue;
void setup() {
initializeLCD(); // LCD 초기화
Serial.begin(9600); // 시리얼 통신 시작
}
void loop() {
readSoilMoisture(); // 토양 수분 값 읽기
updateLCD(); // LCD 화면 업데이트
Serial.println(soilMoistureValue); // 시리얼 모니터에 값 출력
delay(1000); // 1초 대기
}
// LCD를 초기화하는 함수
void initializeLCD() {
lcd.init(); // LCD 초기화
lcd.backlight(); // LCD 백라이트 켜기
}
// 토양 수분 값을 읽어오는 함수
void readSoilMoisture() {
// 아날로그 값을 읽어 토양 수분 퍼센트로 변환 (0~100%)
soilMoistureValue = map(analogRead(A0), 0, 1023, 100, 0);
}
// LCD에 데이터를 출력하는 함수
void updateLCD() {
lcd.clear(); // LCD 화면 지우기
lcd.setCursor(0, 0); // 첫 번째 줄의 첫 번째 칸으로 이동
lcd.print("Moisture: "); // "Moisture:" 출력
lcd.print(soilMoistureValue); // 수분 값 출력
lcd.print("%"); // "%" 출력
lcd.setCursor(0, 1); //
동작 순서에 따른 코드의 구성과 동작 설명
1. 시스템 초기화
코드 흐름: setup() → initializeLCD() → Serial.begin(9600)
- 동작:
- LCD 쉴드를 초기화하고 백라이트를 켭니다.
- lcd.init()는 LCD 화면을 초기화하며, lcd.backlight()는 백라이트를 활성화합니다.
- 시리얼 통신을 시작하여 아두이노와 PC 간 데이터를 주고받을 수 있도록 설정합니다.
- Serial.begin(9600)은 초당 9600bps 속도로 통신을 설정합니다.
- LCD 쉴드를 초기화하고 백라이트를 켭니다.
- 목적: 초기 설정을 완료하여 LCD가 작동 가능 상태로 전환되고, 시리얼 모니터를 통해 데이터를 디버깅하거나 확인할 준비를 합니다.
2. 토양 수분 값 읽기
코드 흐름: loop() → readSoilMoisture()
- 동작:
- YL-69 센서의 아날로그 출력 값을 아두이노 A0 핀에서 읽어옵니다.
- analogRead(A0)는 0~1023 범위의 값을 반환하며, 이는 센서의 아날로그 출력입니다.
- 읽어온 값을 map() 함수로 변환하여 0%~100%의 토양 수분 값으로 조정합니다.
- 예: map(512, 0, 1023, 100, 0)은 약 50%의 수분을 나타냅니다.
- YL-69 센서의 아날로그 출력 값을 아두이노 A0 핀에서 읽어옵니다.
- 목적: 센서의 아날로그 데이터를 직관적인 퍼센트 값으로 변환하여 사용자가 쉽게 이해할 수 있도록 준비합니다.
3. LCD 화면 업데이트
코드 흐름: loop() → updateLCD()
- 동작:
- LCD 화면을 지우고(lcd.clear()), 첫 번째 줄에 현재 토양 수분 값을 표시합니다.
- lcd.setCursor(0, 0)은 첫 번째 줄의 첫 번째 칸으로 커서를 이동합니다.
- lcd.print("Moisture: ")와 lcd.print(soilMoistureValue)를 사용하여 수분 값을 출력합니다.
- 두 번째 줄에 수분 상태를 표시합니다.
- soilMoistureValue가 MOISTURE_MAX를 초과하면 "Water Enough!" 메시지를 출력.
- soilMoistureValue가 MOISTURE_MIN 미만이면 "Needs Water!" 메시지를 출력.
- 두 조건 사이면 "Moisture OK"를 출력.
- LCD 화면을 지우고(lcd.clear()), 첫 번째 줄에 현재 토양 수분 값을 표시합니다.
- 목적: 현재 토양 상태를 사용자에게 명확히 전달하여 수분 상태를 직관적으로 파악할 수 있도록 합니다.
4. 시리얼 모니터 출력
코드 흐름: loop() → Serial.println(soilMoistureValue)
- 동작:
- 읽어온 토양 수분 값을 시리얼 모니터에 출력합니다.
- 예: "Moisture: 45%"와 같은 형태로 출력.
- 매 1초 간격(delay(1000))으로 갱신된 데이터를 출력합니다.
- 읽어온 토양 수분 값을 시리얼 모니터에 출력합니다.
- 목적: 디버깅 또는 기록 목적으로 현재 토양 수분 데이터를 확인할 수 있습니다.
5. 반복 동작
코드 흐름: loop() 반복
- 동작:
- 토양 수분 값을 읽고(readSoilMoisture()), LCD와 시리얼 모니터에 출력합니다.
- delay(1000)로 1초 간격을 두어 연속적인 측정을 방지하고 데이터를 갱신합니다.
- 목적: 지속적으로 토양 상태를 모니터링하여 실시간으로 변화에 대응할 수 있도록 합니다.
동작 예시 (LCD 출력)
초기화 시
Moisture: 0%
Needs Water!
토양이 건조할 때 (수분 부족)
Moisture: 45%
Needs Water!
토양 수분이 적정할 때
Moisture: 63%
Moisture OK
토양에 물이 충분할 때
Moisture: 75%
Water Enough!
6. YL-69 토양수분 센서 동작 확인
YL-69 센서의 동작을 확인하기 위해 먼저 아두이노와 센서, LCD 쉴드의 연결 상태를 점검합니다. 작성된 코드를 아두이노 보드에 업로드한 후, LCD에 표시되는 "Moisture: XX%" 데이터를 확인합니다. 센서를 건조한 흙에 넣거나 물에 적셔보면서 LCD의 수분 값과 메시지가 정확히 반응하는지 확인합니다. 만약 값이 부정확하거나 출력이 되지 않는다면, 센서의 전원 및 신호 핀 연결과 코드 설정을 다시 점검합니다.
동작 확인 단계
- 하드웨어 연결 점검
- 먼저, YL-69 센서와 아두이노 보드, 그리고 LCD 쉴드의 모든 연결 상태를 점검합니다.
- 센서의 Signal 핀이 A0 핀에 올바르게 연결되었는지, 전원(VCC)와 접지(GND)가 안정적으로 연결되어 있는지 확인합니다.
- 코드 업로드 및 실행
- 작성된 코드를 아두이노 IDE를 통해 아두이노 보드에 업로드합니다.
- 업로드가 성공적으로 완료되면, 센서 데이터가 아두이노에 전달되고 LCD 화면에 나타납니다.
- 센서 데이터 확인
- LCD의 첫 번째 줄에서 "Moisture: XX%" 형태로 현재 토양 수분 값을 확인합니다.
- 센서를 건조한 흙이나 공기 중에 노출하면 값이 낮아지고, 센서를 물에 적시면 값이 높아지는지 관찰합니다.
- LCD 메시지 확인
- 건조한 상태: "Give me Water!!" 메시지가 나타나야 합니다.
- 적정 습도: "Moisture OK" 메시지가 표시됩니다.
- 습도가 높은 상태: "Water Enough!!" 메시지가 출력됩니다.
- 문제 해결
- 값이 정확하지 않거나 LCD에 메시지가 나타나지 않으면 연결 상태와 코드 설정을 재점검합니다.
- 특히, 센서의 **전원 공급(5V)**과 **Signal 핀의 연결(A0)**을 우선적으로 확인해야 합니다.
7. 마무리
이 프로젝트를 통해 YL-69 센서를 사용하여 토양 수분 데이터를 측정하고 LCD에 표시하는 과정을 익혔습니다. 하드웨어 연결과 센서 데이터를 기반으로 하는 소프트웨어 설계의 중요성을 경험하며, 스마트 농업 프로젝트로 확장할 가능성을 배웠습니다. 특히, 자동 급수 시스템이나 스마트 화분 같은 실용적인 응용 프로그램의 기반을 마련할 수 있었습니다. 이번 학습을 통해 초보자도 쉽게 접근할 수 있는 센서 활용 방법을 익혔으며, 이를 토대로 더욱 창의적인 프로젝트에 도전할 수 있습니다.
프로젝트 정리 및 학습 내용
YL-69 토양수분 센서를 이용한 프로젝트를 통해 다음과 같은 경험을 얻을 수 있습니다:
- 센서 데이터 활용: 토양 수분 데이터를 측정하고, 이를 LCD와 시리얼 모니터로 시각화하는 과정을 학습했습니다.
- 하드웨어 연결: 센서와 아두이노, LCD 쉴드의 핀 연결 방법을 익혔으며, 전원 공급 및 아날로그 데이터 처리의 중요성을 이해했습니다.
- 소프트웨어 설계: 센서 데이터 측정, 변환, 그리고 출력 과정을 관리하는 효율적인 코드를 작성하는 방법을 배웠습니다.
확장 가능성
이 프로젝트는 스마트 농업과 자동화 시스템으로 확장할 수 있는 잠재력을 제공합니다. 예를 들어:
- 자동 급수 시스템: 일정 수분 값 이하로 떨어지면 물을 공급하는 기능을 추가할 수 있습니다.
- 스마트 화분: Wi-Fi 모듈과 연동하여 스마트폰으로 토양 상태를 실시간으로 확인할 수 있습니다.
- 환경 모니터링 시스템: 온도 센서나 습도 센서를 추가하여 토양 외의 환경 데이터를 함께 분석할 수 있습니다.
마무리 메시지
이번 프로젝트를 통해 아두이노와 센서를 활용한 데이터 수집 및 시각화 방법을 익혔습니다. YL-69 센서는 저렴하면서도 실용적인 센서로, 초보자도 쉽게 이해하고 활용할 수 있는 좋은 도구입니다. 앞으로 이 프로젝트를 기반으로 다양한 아이디어를 발전시켜 보세요!
'모두의 아두이노 > 아두이노 센서' 카테고리의 다른 글
[아두이노][센서]스마트 농업의 시작! SHT10 토양수분 센서와 아두이노로 온습도 실시간 측정하기 (0) | 2024.11.25 |
---|---|
[아두이노][센서] OKY3443 토양수분 센서를 활용한 스마트 모니터링 시스템 구축 (0) | 2024.11.24 |
[아두이노][센서] KY-026 불꽃 감지 센서로 화재 경고 시스템 구축하기! (0) | 2024.11.22 |
[아두이노][센서] 햇빛 강도 측정! SI1145 UV 센서로 환경 모니터 (0) | 2024.11.21 |
[아두이노][센서] 실시간 자외선 강도 측정! ML8511 센서로 시작하는 환경 모니터링 프로젝트 (2) | 2024.11.20 |
댓글