Quick

    ESP32란, ESP32 PLUS 개발 보드로 토양 수분 센서 사용하기

 

목록으로

안녕하세요, 코딩 교육의 가치를 전달하는 마케터입니다! 사물인터넷(IoT) 기술이 발전하면서 우리 일상 속 다양한 기기들이 인터넷과 연결되어 편리함을 더해주고 있습니다.

오늘은 코딩 강사님들과 코딩을 배우는 초중고 학생들을 위해 ESP32 PLUS 개발 보드를 활용한 재미있는 실습 프로젝트를 준비했습니다. 바로 스마트 농업(Smart Farming)과 스마트 화분의 핵심 부품인 토양 수분 센서(Soil Moisture Sensor)를 다루어보는 시간입니다. 센서의 데이터를 무선 블루투스 통신으로 확인하는 과정까지 모두 담았으니 끝까지 집중해 주세요!

■ 01. 토양 수분 센서란 무엇일까요?

식물을 키울 때 가장 어려운 점 중 하나가 '언제 물을 주어야 하는가'입니다. 겉흙은 말라 보여도 속흙은 축축한 경우가 많기 때문이죠. 이 문제를 과학적으로 해결해 주는 부품이 바로 토양 수분 센서입니다.

토양 수분 센서는 흙 속의 실제 수분 함량을 수치로 정밀하게 측정하는 하드웨어 장치입니다. 식물 재배나 현대의 스마트 농업(스마트 팜)에서 매우 핵심적인 역할을 수행하며, 토양의 수분이 일정 기준치 이하로 떨어졌을 때 워터 펌프를 작동시켜 자동으로 물을 공급하는 자동화 시스템의 기초가 됩니다.

위 사진과 같이 두 갈래로 나뉜 금속 전극 모양을 띠고 있으며, 측정하고자 하는 식물의 화분 흙 속에 깊숙이 꽂아서 사용하게 됩니다. 구조가 직관적이어서 어린 학생들도 쉽게 하드웨어의 형태와 용도를 유추할 수 있습니다.

■ 02. 수분 측정의 과학적 작동 원리

이 센서가 단순히 흙에 꽂혀 있다고 해서 어떻게 수분을 알아내는 것일까요? 여기에는 기초적인 전기 회로 원리가 숨어 있습니다. 토양 수분 센서는 두 개의 전극 사이를 흐르는 전기의 전도도(전기 저항)를 측정하는 방식으로 동작합니다.

물질 내에 물(수분)이 많을수록 전기가 더 잘 통하게 됩니다. 따라서 흙이 촉촉하고 물이 많으면 전극 사이의 전도도가 증가하고 저항은 낮아집니다. 반대로 흙이 바짝 말라 물이 적어지면 전도도는 감소하고 저항이 커집니다. 한쪽 전극에서 다른 전극으로 이동하는 전자의 흐름이 수분의 양에 비례하는 것입니다!

이러한 저항의 변화는 아날로그 전압 신호로 바뀌어 ESP32 PLUS 보드로 전달됩니다. 보드는 이 아날로그 신호를 0부터 일정 범위의 디지털 숫자로 변환합니다. 우리는 이 숫자를 프로그래밍하여 "건조함""촉촉함"의 기준을 코딩으로 구분할 수 있습니다.

■ 03. 실습을 위한 준비물 확인

성공적인 IoT 프로젝트를 위해 아래의 부품들을 미리 준비해 주세요.

부품명 설명 및 특징
ESP32 PLUS 보드 Wi-Fi와 블루투스가 내장된 강력한 코딩 교육용 메인 제어 보드
토양 수분 센서 흙의 수분을 아날로그 값으로 측정하는 센서 모듈
점퍼선 (M-F) 보드와 센서를 연결해 줄 전선
스마트폰 블루투스 데이터를 실시간으로 모니터링할 디스플레이 장치

■ 04. 하드웨어 회로 연결 방법

센서와 ESP32 보드를 연결하는 방법은 매우 간단합니다. 센서의 세 개의 핀을 ESP32의 전원과 아날로그 입력 핀에 알맞게 연결해 줍니다.

토양 수분 센서 핀 ESP32 PLUS 연결 핀
VCC (전원) 3.3V
GND (접지) GND
A0 (아날로그 출력) GPIO 34

주의사항: ESP32 보드는 3.3V 논리 전압을 사용하므로, 센서의 VCC를 반드시 3.3V 핀에 연결해야 합니다. 아날로그 신호를 읽기 위해 센서의 A0 핀은 ESP32의 아날로그 입력 지원 핀인 GPIO 34번에 연결해 줍니다.

■ 05. ESP32 블루투스 실습 코드 작성

회로 연결이 끝났다면 아두이노 IDE를 열고 아래의 코드를 작성해 줍니다. 이번 실습은 컴퓨터와 선이 연결되어 있지 않아도, 무선 블루투스를 통해 스마트폰으로 수분 데이터를 전송하는 고급 융합 프로젝트입니다.

#include // 아두이노 기본 라이브러리
#include "BluetoothSerial.h" // ESP32 블루투스 라이브러리

#define SOIL_SENSOR_PIN 34 // 토양 수분 센서가 연결된 핀

BluetoothSerial SerialBT; // 블루투스 시리얼 객체 생성

void setup() {
????Serial.begin(115200); // 기본 시리얼 통신 초기화
????SerialBT.begin("ESP32_SoilSensor"); // 블루투스 장치명 설정 및 시작
????pinMode(SOIL_SENSOR_PIN, INPUT); // 토양 수분 센서 핀을 입력으로 설정
????Serial.println("Bluetooth Serial Ready!"); // 블루투스 연결 가능 메시지 출력
}

void loop() {
????int soilValue = analogRead(SOIL_SENSOR_PIN); // 토양 수분 센서 값 읽기
????int moisturePercentage = map(soilValue, 0, 2048, 0, 100); // 0~100% 범위로 변환

????// 시리얼 모니터에 토양 수분 값 출력
????Serial.print("Soil Moisture: ");
????Serial.print(moisturePercentage);
????Serial.println("%");

????// 블루투스를 통해 토양 수분 값 전송
????SerialBT.print("Soil Moisture: ");
????SerialBT.print(moisturePercentage);
????SerialBT.println("%");

????delay(1000); // 1초 간격으로 데이터 전송
}

■ 06. 핵심 코드 완벽하게 이해하기

작성한 코드가 어떤 의미를 가지고 있는지 학생들에게 자세히 설명해 줄 수 있도록 주요 함수들을 분석해 보겠습니다.

  • SerialBT.begin("ESP32_SoilSensor");
    ESP32에 내장된 클래식 블루투스 기능을 활성화합니다. 스마트폰에서 장치를 검색할 때 괄호 안에 적힌 "ESP32_SoilSensor"라는 이름이 화면에 나타나게 됩니다.

  • int soilValue = analogRead(SOIL_SENSOR_PIN);
    지정된 GPIO 34번 핀에서 아날로그 전기 신호를 읽어옵니다. ESP32의 ADC(아날로그-디지털 변환기)는 12비트의 매우 높은 해상도를 가지므로 0부터 4095까지의 세밀한 수치로 수분량을 표현할 수 있습니다. 일반 아두이노(10비트, 0~1023)보다 훨씬 정밀한 데이터를 다룰 수 있는 것이 큰 장점입니다.

  • int moisturePercentage = map(soilValue, 0, 2048, 0, 100);
    센서에서 읽은 원시 데이터 값을 우리가 일상생활에서 쉽게 이해할 수 있는 퍼센트(%) 단위로 변환하는 과정입니다. 코딩 수학의 핵심인 비례식 변환 함수 map()을 사용하여, 식물에게 적절하게 젖은 상태의 기준값을 2048로 두고 이를 100%로 맵핑(Mapping)하였습니다.

  • delay(1000);
    수많은 데이터가 한꺼번에 전송되어 과부하가 걸리는 것을 방지하기 위해 1초(1000 밀리초)마다 한 번씩 데이터를 측정하고 전송하도록 대기 시간을 줍니다.

■ 07. 프로젝트 동작 테스트 및 결과 확인

코드 이해가 모두 끝났다면 이제 실제 환경에서 하드웨어가 의도한 대로 동작하는지 테스트를 해보겠습니다.

1. 아두이노 IDE 환경에서 ESP32 개발 보드를 정확히 설정한 후 컴파일 및 업로드를 진행합니다.
2. 스마트폰의 블루투스 설정에 들어가서 우리가 코딩한 "ESP32_SoilSensor" 장치를 찾아 페어링합니다.
3. 플레이스토어나 앱스토어에서 'Serial Bluetooth Terminal'과 같은 블루투스 시리얼 모니터 앱을 실행하여 장치와 연결합니다.

4. 앱 화면에 실시간 데이터가 출력되기 시작하면, 센서를 바짝 마른 흙에 꽂아보고, 물이 듬뿍 담긴 젖은 흙으로 옮겨 꽂아보며 스마트폰 화면의 퍼센트(%) 수치가 어떻게 급격하게 변하는지 직접 관찰해 보세요!

위의 시연 과정처럼 ESP32 PLUS 보드와 무선 블루투스 통신을 활용하면 아주 쉽게 토양의 상태를 실시간 데이터화할 수 있습니다. 여기서 코드를 조금만 더 응용한다면 "수분이 30% 이하일 때 모터 펌프를 켜라!"와 같은 스마트 자동 급수 시스템을 완성해 볼 수 있겠죠?

오늘은 ESP32를 활용하여 IoT 기반의 토양 수분 측정 프로젝트를 진행해 보았습니다. 코딩 교육 현장에서 인공지능과 스마트팜에 대한 관심이 높아지는 만큼 유용하게 활용되기를 바랍니다. 다음 시간에도 ESP32만의 독보적인 장점을 살린 더욱 멋진 실습 콘텐츠로 찾아오겠습니다. 그럼 다음 시간에 만나요!

실습준비물

연관 컨텐츠

결제 및 주문

공지사항 목록