아두이노나 ESP32 같은 마이크로컨트롤러를 이용해 프로젝트를 만들다 보면 스마트폰과 데이터를 간단하게 주고받고 싶을 때가 있습니다.

블루투스나 WiFi를 사용할 수도 있지만, 단순히 스마트폰을 장치에 가까이 가져가는 것만으로 데이터를 읽거나 설정을 전달하고 싶다면 NFC(Near Field Communication)가 상당히 편리한 방법입니다.

특히 이번에 소개할 SparkFun Qwiic Dynamic NFC/RFID Tag (SEN-21274)는 일반적인 NFC 태그보다 훨씬 다양한 기능을 제공합니다.

단순히 URL이나 텍스트를 저장해 놓는 수동형 NFC 태그가 아니라, 마이크로컨트롤러와 I2C로 연결해 데이터를 변경할 수 있고 스마트폰과 무선으로 데이터를 주고받을 수도 있는 Dynamic NFC Tag입니다.

더 흥미로운 점은 메인 시스템의 전원이 꺼져 있어도 스마트폰이나 NFC 리더에서 태그의 데이터를 읽고 쓸 수 있다는 것입니다.


SparkFun Qwiic Dynamic NFC/RFID Tag란?

SparkFun Qwiic Dynamic NFC/RFID Tag는 STMicroelectronics의 ST25DV64KC 칩을 기반으로 제작된 NFC/RFID 개발 보드입니다.

ST25DV64KC에는 64-kbit, 즉 8kByte EEPROM 메모리가 내장되어 있습니다.

이 메모리는 두 가지 방법으로 접근할 수 있습니다.

하나는 아두이노나 ESP32 같은 마이크로컨트롤러에서 사용하는 I2C 인터페이스이고, 다른 하나는 스마트폰이나 RFID 리더에서 사용하는 NFC/RFID 무선 인터페이스입니다.

즉,

MCU ↔ I2C ↔ NFC Tag ↔ NFC ↔ 스마트폰

과 같은 구조를 만들 수 있습니다.

이 때문에 단순 NFC 태그뿐 아니라 마이크로컨트롤러와 스마트폰 사이에서 데이터를 전달하는 일종의 무선 데이터 브리지로 활용할 수 있습니다.


전원이 없어도 데이터를 읽고 쓸 수 있다

이 제품의 가장 흥미로운 특징 중 하나입니다.

일반적으로 ESP32나 아두이노 같은 전자 장치는 전원이 꺼지면 외부에서 데이터를 읽기 어렵습니다.

하지만 NFC 태그는 스마트폰이나 NFC 리더에서 발생하는 RF 전자기장을 이용해 동작할 수 있습니다.

따라서 SparkFun Dynamic NFC Tag가 연결된 메인 장치의 전원이 완전히 꺼져 있더라도 스마트폰을 태그에 가까이 가져가면 EEPROM에 저장된 데이터를 읽거나 쓸 수 있습니다.

예를 들어 배터리가 방전된 장치에서도 다음과 같은 정보를 확인하도록 만들 수 있습니다.

제품 일련번호, 장치 설정 정보, 마지막 측정값, 설치 정보, 사용 설명서 URL, 유지보수 기록 등을 NFC로 확인할 수 있습니다.

IoT 장치를 만든다면 상당히 재미있는 기능입니다.


주요 하드웨어 구성

SparkFun Qwiic Dynamic NFC/RFID Tag에는 개발에 필요한 여러 인터페이스가 기본적으로 준비되어 있습니다.

Qwiic 커넥터

보드에는 SparkFun의 Qwiic 커넥터 두 개가 장착되어 있습니다.

Qwiic 시스템은 I2C 기반이므로 SDA, SCL, 전원, GND를 케이블 하나로 연결할 수 있습니다.

따라서 Qwiic을 지원하는 아두이노, ESP32 개발보드 또는 다른 센서 모듈과 연결할 경우 별도의 납땜 없이 바로 개발을 시작할 수 있습니다.

다만 Qwiic 시스템은 기본적으로 3.3V 로직을 사용하므로 Qwiic을 통해 연결할 때에는 3.3V 환경을 사용하는 것이 좋습니다.


0.1인치 PTH 헤더

보드에는 일반적인 0.1인치 간격의 PTH(Pin Through Hole)도 제공됩니다.

따라서 브레드보드나 점퍼 케이블을 이용해 직접 연결할 수도 있습니다.

여기에서는 단순히 전원과 I2C뿐 아니라 다음과 같은 기능도 사용할 수 있습니다.

VEH : Energy Harvesting 출력

GPO : General Purpose Output

이 핀들을 활용하면 단순 NFC 메모리 이상의 응용이 가능합니다.


PCB 안테나 내장

NFC 통신을 위한 안테나가 PCB 자체에 포함되어 있습니다.

따라서 별도의 외부 안테나를 연결할 필요가 없습니다.

일반적인 스마트폰 NFC 리더를 사용하면 대략 수 센티미터 거리에서 태그를 인식할 수 있습니다.

NFC 특성상 장거리 통신을 위한 기술은 아니지만 장치에 스마트폰을 가져다 대어 데이터를 읽거나 설정하는 용도로는 매우 편리합니다.


주요 기술 사양

SparkFun Qwiic Dynamic NFC/RFID Tag의 핵심 사양은 다음과 같습니다.

  • 사용 IC : STMicroelectronics ST25DV64KC
  • 메모리 : 64-kbit EEPROM
  • 실제 용량 : 8kByte
  • 공급 전압 : 약 1.8V ~ 5.5V
  • Qwiic 사용 시 : 3.3V
  • 통신 인터페이스 : I2C + NFC/RFID
  • NFC 규격 : ISO/IEC 15693
  • NFC Forum : Type 5 Tag
  • Data Mailbox : 256Byte
  • EEPROM 데이터 보존 기간 : 최대 약 40년
  • 쓰기 내구성 : 환경에 따라 약 40만 ~ 100만 회

I2C를 이용하면 EEPROM을 바이트 단위로 접근할 수 있으며 RF 인터페이스에서는 기본적으로 4바이트 블록 단위로 접근합니다.

쓰기 시간은 일반적인 EEPROM과 비슷하게 수 ms 정도가 필요합니다.


I2C 주소

ST25DV64KC는 기능에 따라 여러 I2C 주소를 사용합니다.

User Memory : 0x53

System Memory : 0x57

RF Switch Off : 0x51

RF Switch On : 0x55

일반적으로 아두이노에서 사용자 데이터를 읽고 쓰는 경우에는 User Memory 영역을 가장 많이 사용하게 됩니다.


스마트폰으로 URL을 바로 열 수 있는 NDEF

이 보드가 특히 재미있는 이유 중 하나는 NDEF(NFC Data Exchange Format)를 지원한다는 것입니다.

NDEF는 스마트폰 NFC에서 널리 사용하는 표준 데이터 형식입니다.

이를 이용하면 스마트폰에 별도의 전용 애플리케이션을 설치하지 않아도 NFC 태그를 인식했을 때 특정 동작을 수행하게 만들 수 있습니다.

대표적으로 다음과 같은 정보를 저장할 수 있습니다.

웹사이트 URL

태그에 웹사이트 주소를 저장해 놓으면 사용자가 스마트폰을 가져다 대는 것만으로 해당 웹페이지를 열 수 있습니다.

제품 설명 페이지, 매뉴얼, 설정 페이지, 회사 홈페이지, 이벤트 페이지 등으로 연결하는 데 사용할 수 있습니다.

예를 들어 제품 외부에 NFC 로고를 표시해 놓고 사용자가 스마트폰을 가져다 대면 온라인 사용 설명서가 바로 열리도록 만들 수 있습니다.


WiFi 정보를 NFC로 전달

WiFi 네트워크 정보를 NDEF 형식으로 저장하는 것도 가능합니다.

SSID와 비밀번호 등의 정보를 저장해 놓으면 NFC를 지원하는 스마트폰에서 네트워크 정보를 쉽게 전달할 수 있습니다.

집이나 사무실 방문객에게 WiFi 정보를 제공하거나 IoT 장치 설치 과정에서 네트워크 설정을 전달하는 용도로 활용할 수 있습니다.

복잡한 WiFi 비밀번호를 직접 입력할 필요가 없다는 것이 장점입니다.


일반 텍스트 전달

간단한 텍스트 정보도 저장할 수 있습니다.

예를 들면 다음과 같습니다.

제품 이름

장치 ID

연락처

간단한 사용 설명

장비 상태

설치 위치

점검 기록

이런 정보를 NFC로 제공하면 QR 코드와는 또 다른 형태의 장치 인터페이스를 만들 수 있습니다.


Dynamic NFC Tag가 특별한 이유: MCU가 내용을 변경할 수 있다

일반적인 NFC 스티커는 한 번 정보를 저장한 뒤 동일한 데이터를 계속 제공하는 경우가 많습니다.

하지만 Dynamic NFC Tag는 이름 그대로 내용을 동적으로 변경할 수 있습니다.

마이크로컨트롤러가 I2C를 통해 EEPROM 내용을 변경하면 스마트폰에서 읽는 NFC 정보도 달라질 수 있습니다.

예를 들어 센서 장치를 만들었다고 생각해 보겠습니다.

ESP32가 센서를 측정한 뒤 마지막 측정값을 NFC 메모리에 기록합니다.

그 후 장치가 Deep Sleep 상태로 들어가거나 배터리가 방전되더라도 사용자는 스마트폰을 태그에 가져다 대어 마지막 측정 정보를 확인할 수 있습니다.

이런 구조는 초저전력 IoT 장치를 만들 때 상당히 흥미로운 활용 방법이 될 수 있습니다.


Data Mailbox 기능

ST25DV64KC에는 256Byte Data Mailbox 기능이 있습니다.

Data Mailbox는 MCU와 NFC 리더 사이에서 데이터를 빠르게 주고받을 수 있도록 만들어진 버퍼입니다.

즉,

스마트폰 → NFC → Mailbox → MCU

또는

MCU → Mailbox → NFC → 스마트폰

형태의 데이터 전송이 가능합니다.

EEPROM에 데이터를 계속 기록하는 방식보다 빠르게 정보를 교환할 수 있기 때문에 스마트폰을 장치의 간단한 설정 인터페이스처럼 사용하는 것도 가능합니다.

예를 들어 스마트폰에서 설정값을 전달하고 MCU가 해당 값을 읽어 장치 동작을 변경하는 시스템을 만들 수 있습니다.


RF Energy Harvesting 기능

ST25DV64KC는 NFC의 RF 필드에서 일부 에너지를 얻어 사용할 수 있는 Energy Harvesting 기능도 지원합니다.

스마트폰이나 NFC 리더를 태그 가까이에 가져가면 RF 전자기장이 형성됩니다.

이 에너지의 일부를 수확하여 VEH 핀을 통해 외부 회로에 공급할 수 있습니다.

출력 가능한 전력은 매우 작아 일반적인 ESP32 같은 장치를 그대로 구동하기에는 부족하지만, 초저전력 회로나 간단한 센서 회로에는 활용 가능성이 있습니다.

즉, 배터리를 사용하지 않는 초저전력 센서나 NFC 기반 인터랙티브 장치를 연구할 때 흥미로운 기능입니다.


GPO 인터럽트 기능

보드의 GPO(General Purpose Output) 핀을 이용하면 NFC 관련 이벤트를 MCU에 전달할 수 있습니다.

예를 들어 스마트폰이 태그 근처에 접근했을 때 이를 감지하도록 만들 수 있습니다.

RF Field 감지

RF 데이터 접근

I2C 쓰기

Mailbox 이벤트

등의 상황에서 마이크로컨트롤러에 인터럽트를 전달할 수 있습니다.

이를 이용하면 평소에는 MCU를 저전력 상태로 유지하다가 스마트폰이 NFC 태그에 접근했을 때 특정 기능을 수행하도록 만드는 것도 가능합니다.


데이터 보안 기능

ST25DV64KC에는 비교적 강력한 메모리 보호 기능도 포함되어 있습니다.

사용자 메모리를 최대 4개의 영역으로 나누고 각 영역에 서로 다른 접근 정책을 설정할 수 있습니다.

RF 접근에는 여러 개의 64비트 패스워드를 사용할 수 있으며 I2C 접근에도 별도의 비밀번호를 설정할 수 있습니다.

시스템 설정 영역 역시 RF와 I2C 접근에 대한 쓰기 보호가 가능합니다.

따라서 단순 공개 정보뿐 아니라 장치 설정값이나 관리용 데이터처럼 제한된 정보도 영역을 나누어 관리할 수 있습니다.


어디에 활용할 수 있을까?

Dynamic NFC Tag의 장점은 단순 NFC 태그와 MCU 연결 기능을 동시에 사용할 수 있다는 점입니다.

특히 다음과 같은 프로젝트에 활용하기 좋습니다.

1. 스마트 제품 설명서

제품에 NFC를 내장하고 스마트폰을 가져다 대면 사용 설명서나 설정 페이지가 바로 열리도록 만들 수 있습니다.

QR 코드와 비슷하지만 카메라를 실행할 필요 없이 스마트폰을 가까이 가져가는 것만으로 동작합니다.


2. WiFi 접속 정보 제공

카페, 사무실, 전시장 또는 IoT 장치 설치 과정에서 WiFi 정보를 NFC로 제공할 수 있습니다.

긴 WiFi 비밀번호를 직접 입력하는 불편을 줄일 수 있습니다.


3. 스마트 재고 관리

제품이나 장비 내부에 NFC Tag를 설치하면 전원이 없는 상태에서도 제품 정보를 확인할 수 있습니다.

제품 번호, 생산 날짜, 유지보수 기록, 설치 정보 등을 EEPROM에 저장할 수 있습니다.

장비가 창고에 보관되어 전원이 없는 상태에서도 RFID 리더나 스마트폰으로 정보를 읽을 수 있다는 장점이 있습니다.


4. IoT 장치 설정

스마트폰을 장치에 가까이 가져가 설정값을 전달하는 방식으로 사용할 수 있습니다.

예를 들어 장치 ID, WiFi 설정, 센서 설정값, 측정 주기 등을 NFC를 통해 전달할 수 있습니다.

별도의 디스플레이나 버튼을 장치에 설치하지 않아도 되기 때문에 IoT 제품의 사용자 인터페이스를 단순화할 수 있습니다.


5. 초저전력 데이터 로거

센서 데이터를 주기적으로 EEPROM에 기록한 뒤 장치가 Deep Sleep에 들어가는 구조를 만들 수 있습니다.

사용자는 필요할 때 스마트폰으로 데이터를 읽을 수 있습니다.

장치가 꺼져 있거나 배터리가 부족한 상태에서도 저장된 데이터를 읽을 수 있다는 것이 큰 장점입니다.


6. 인터랙티브 전시 및 미디어 아트

관람객이 스마트폰을 작품 가까이에 가져가면 웹페이지, 영상, 설명 또는 특정 콘텐츠가 나타나는 인터랙티브 전시물을 만들 수 있습니다.

GPO나 Data Mailbox 기능까지 이용하면 단순 정보 제공을 넘어 스마트폰과 작품이 서로 데이터를 주고받는 구조도 구현할 수 있습니다.


Arduino 라이브러리

SparkFun에서는 ST25DV64KC를 쉽게 사용할 수 있도록 공식 Arduino 라이브러리를 제공합니다.

라이브러리 이름은

SparkFun_ST25DV64KC_Arduino_Library

입니다.

이 라이브러리를 이용하면 복잡한 ST25DV64KC 레지스터를 직접 제어하지 않아도 주요 기능을 사용할 수 있습니다.

특히 다음과 같은 NDEF 데이터 생성 기능이 제공되기 때문에 NFC 프로젝트를 처음 시작할 때 유용합니다.

URI / 웹사이트 URL

WiFi 자격증명

Text Record

EEPROM 읽기/쓰기

메모리 영역 설정

패스워드 설정

등을 비교적 간단하게 구현할 수 있습니다.


스마트폰 테스트용 앱

NFC 데이터를 직접 확인하거나 테스트하고 싶다면 스마트폰 NFC 앱을 사용하는 것이 편리합니다.

대표적으로 다음 두 가지 앱을 사용할 수 있습니다.

STMicroelectronics NFC Tap

ST에서 제공하는 공식 NFC 애플리케이션입니다.

ST25 계열 NFC 태그를 테스트하거나 설정할 때 특히 편리합니다.

NFC Tools

wakdev에서 개발한 범용 NFC 앱으로 Android와 iOS에서 널리 사용됩니다.

NDEF 데이터를 읽거나 URL, Text 등의 정보를 기록할 때 편리합니다.


SparkFun DataLogger IoT와 연결

SparkFun의 DataLogger IoT 시스템과 함께 사용하는 것도 가능합니다.

Qwiic 인터페이스를 이용하면 복잡한 배선 없이 장치를 연결할 수 있으며, SparkFun의 생태계를 이용해 센서 데이터 기록과 NFC 기능을 함께 구성할 수 있습니다.

Qwiic 센서들을 많이 사용하는 프로젝트라면 상당히 편리한 조합입니다.


일반 NFC 태그와 Dynamic NFC Tag의 차이

일반 NFC 태그는 주로 미리 저장된 정보를 전달하는 용도로 사용됩니다.

반면 Dynamic NFC Tag는 MCU와 연결되어 데이터를 계속 변경할 수 있습니다.

일반 NFC 태그가

스마트폰 → NFC 태그

형태라면 Dynamic NFC Tag는

스마트폰 ↔ NFC 태그 ↔ 마이크로컨트롤러

구조를 만들 수 있습니다.

이 차이 때문에 단순한 URL 태그를 넘어 IoT 장치의 설정, 데이터 확인, 유지보수 인터페이스 등으로 활용할 수 있습니다.


마무리

SparkFun Qwiic Dynamic NFC/RFID Tag는 단순한 NFC 태그라기보다는 스마트폰과 마이크로컨트롤러를 연결해 주는 작은 무선 인터페이스에 가깝습니다.

8kByte EEPROM, I2C, NFC Forum Type 5, NDEF, 256Byte Data Mailbox, Energy Harvesting, GPO 인터럽트, 메모리 보안 기능을 하나의 작은 보드에서 사용할 수 있습니다.

특히 흥미로운 점은 장치의 전원이 꺼져 있어도 스마트폰으로 저장된 정보를 확인할 수 있다는 것입니다.

그래서 IoT 센서, 데이터 로거, 스마트 제품, 재고 관리, 장비 유지보수, 전시 시스템, WiFi 설정 장치 등 여러 프로젝트에서 활용 가능성이 높습니다.

ESP32나 아두이노 프로젝트에서 Bluetooth나 WiFi까지 사용할 정도로 복잡한 통신은 필요 없지만, 스마트폰과 간단하게 데이터를 주고받을 방법이 필요하다면 Dynamic NFC Tag는 상당히 재미있는 선택지가 될 수 있습니다.


참고 자료

SparkFun Qwiic Dynamic NFC/RFID Tag Hookup Guide

https://learn.sparkfun.com/tutorials/qwiic-dynamic-nfcrfid-tag-hookup-guide

SparkFun ST25DV64KC Arduino Library

https://github.com/sparkfun/SparkFun_ST25DV64KC_Arduino_Library

SparkFun Qwiic Dynamic NFC/RFID Tag Schematic

https://cdn.sparkfun.com/assets/c/a/a/7/b/Qwiic_RFID_Tag.pdf

STMicroelectronics ST25DV64KC Datasheet

https://cdn.sparkfun.com/assets/f/5/4/e/d/st25dv04kc-2450072.pdf

※ 제품 사용 전에는 최신 데이터시트와 SparkFun의 공식 Hookup Guide에서 전원 조건, 핀 구성 및 RF 관련 설정을 다시 확인하는 것을 권장합니다.

#SparkFun #NFC #RFID #DynamicNFC #NFC태그 #RFID태그 #ST25DV64KC #Qwiic #Arduino #아두이노 #ESP32 #IoT #사물인터넷 #전자공학 #전자부품 #개발보드 #메이커 #메이커프로젝트 #임베디드 #임베디드시스템 #NDEF #NFC통신 #I2C #EEPROM #에너지하베스팅 #EnergyHarvesting #스마트폰연동 #와이파이설정 #센서프로젝트 #DIY전자공학

지금까지 약 1년간 기록한 호야와 스킨답서스 데이터를 여러 방향으로 살펴봤습니다.

그리고 한 가지 중요한 사실을 발견했습니다.

식물의 물주기는 고정된 일정이 아니라 반복되는 패턴에 가깝습니다.

식물마다 물주기 주기가 다르고, 같은 식물도 환경에 따라 건조 속도가 달라집니다.

그런데 여러 번의 물주기 기록이 쌓이면 그 식물이 평소 어떻게 마르는지도 조금씩 알 수 있게 됩니다.

그렇다면 마지막으로 이런 질문을 해볼 수 있습니다.

과거의 물주기와 건조 패턴을 이용하면 다음 물주기 날짜를 미리 예상할 수 있을까?

그것도 흙이 거의 다 마른 뒤가 아니라, 7일, 10일 전부터 말입니다.

1. 사실 2~3일 뒤의 물주기는 예측하기 어렵지 않다

토양 수분 그래프를 계속 보고 있으면 어느 정도 감이 생깁니다.

예를 들어 토양 수분이 며칠 동안

1600 → 1450 → 1300 → 1150

처럼 감소하고 있고 평소 1000 부근에서 물을 준다면,

"아마 하루 이틀 뒤에는 물을 줘야겠구나."

라고 사람이 직접 예상할 수 있습니다.

센서 데이터를 이용해 최근 감소 속도를 계산해도 마찬가지입니다.

현재 수분에서 물주기 기준까지 얼마나 남았는지를 최근 건조 속도로 나누면 됩니다.

문제는 이것이 그다지 놀라운 기능이 아니라는 것입니다.

그래프만 봐도 어느 정도 알 수 있기 때문입니다.

제가 더 궁금했던 것은 이것입니다.

물을 준 지 얼마 되지 않았을 때도 다음 물주기가 언제쯤 필요할지 알 수 있을까?

2. 가장 간단한 방법은 현재 건조 속도를 그대로 연장하는 것이다

먼저 아주 단순한 방법을 시험했습니다.

최근 3~4개의 토양 수분값으로 현재 화분이 하루에 얼마나 빠르게 마르고 있는지를 계산합니다.

그리고 그 속도가 앞으로도 계속된다고 가정합니다.

예를 들어 현재 수분값이 2000이고 다음 물주기 기준이 1000이라고 하겠습니다.

최근 건조 속도가 하루 100 ADC라면,

남은 수분 범위는 1000 ADC이므로

약 10일 후

라고 예상할 수 있습니다.

간단하고 직관적인 방법입니다.

그런데 실제 과거 데이터에 적용해보니 큰 문제가 나타났습니다.

3. 물을 준 직후에는 이 방법이 거의 맞지 않았다

물주기 사이클을 진행률에 따라 네 구간으로 나누어 예측 오차를 계산했습니다.

건조 진행률
평균 예측오차(MAE)
±2일 이내 예측
0~25%
15.17일
26.8%
25~50%
3.18일
44.2%
50~75%
1.27일
85.5%
75~100%
0.61일
98.3%

굉장히 극단적인 결과입니다.

물을 준 직후인 0~25% 구간에서는 평균 예측오차가 무려 15.17일이었습니다.

사실상 장기 예측에 사용하기 어려운 수준입니다.

그런데 건조 사이클의 절반을 지나면 평균오차가 1.27일까지 줄어듭니다.

마지막 25% 구간에서는 불과 0.61일입니다.

왜 이런 일이 생겼을까요?

4. 물을 준 직후의 '속도'는 미래를 대표하지 못한다

5편에서 살펴본 정규화 건조곡선을 떠올려보면 이유를 이해할 수 있습니다.

물을 준 직후의 토양 수분 변화는 이후 전체 건조 과정과 완전히 같은 속도로 진행되지 않습니다.

초기 몇 개 데이터만 가지고 직선을 그은 뒤 그것을 10일 이상 연장하면 작은 기울기 오차도 미래에는 큰 날짜 오차가 됩니다.

반대로 사이클이 절반 이상 진행되면 실제로 이번 화분이 어떻게 마르고 있는지 충분한 정보가 쌓입니다.

그래서 최근 건조 속도가 강력한 예측 정보가 됩니다.

즉,

최근 건조 속도는 단기 예측에는 매우 유용하지만 장기 예측에는 오히려 불안정합니다.

그렇다면 물을 준 직후에는 무엇을 이용해야 할까요?

5. 답은 현재가 아니라 '과거'에 있었다

물을 준 직후에는 이번 사이클의 정보가 거의 없습니다.

하지만 센서를 몇 달 동안 사용했다면 다른 정보가 있습니다.

이 식물의 과거입니다.

이 식물은 이전에 평균적으로 며칠 만에 다시 물을 주었는가?

보통 어느 정도 범위에서 물주기 주기가 변했는가?

같은 계절에는 어떤 패턴을 보였는가?

5편에서 본 것처럼 평소 건조곡선의 형태는 어떠했는가?

현재 사이클의 데이터가 부족할 때는 이런 과거의 물주기 이력(historical cycle)을 이용할 수 있습니다.

예를 들어 이 식물이 과거에 대체로 9~12일 정도의 물주기 주기를 보였다면 물을 준 직후에는 "다음 물주기는 약 9~12일 후로 예상됩니다."라고 시작하는 것입니다.

정확한 하루를 맞히려고 하지 않고 가능성이 높은 범위를 알려주는 것입니다.

6. 그리고 시간이 지나면 현재 식물의 행동을 반영한다

여기서 중요한 아이디어가 하나 나옵니다.

처음부터 끝까지 같은 방법으로 예측할 필요가 없습니다.

물을 준 직후에는 과거 이력이 더 중요합니다.

시간이 지나면서 이번 사이클의 실제 데이터가 쌓이면 현재 건조 속도가 점점 더 중요해집니다.

그래서 다음과 같은 방식으로 예측할 수 있습니다.

0~25%

이번 사이클의 정보가 부족하므로 과거 물주기 이력을 중심으로 예측

25~50%

과거 이력 + 현재 건조 속도를 함께 사용

50~75%

현재 건조 속도의 비중을 더 높임

75~100%

현재 건조 속도를 중심으로 다음 물주기 시점을 예측

쉽게 말하면,

처음에는 기억으로 예측하고, 시간이 지나면 관찰한 현실로 수정하는 방식입니다.

7. 실제 과거 데이터로 시험해봤다

이 방법이 실제로 효과가 있는지 확인하기 위해 과거 데이터를 이용한 walk-forward 방식의 백테스트를 했습니다.

방법은 실제 제품을 사용하는 상황과 비슷하게 만들었습니다.

어떤 물주기 사이클을 예측할 때 미래의 데이터는 전혀 보여주지 않고, 그 시점 이전에 이미 기록된 사이클만 학습에 사용했습니다.

그리고 세 가지 방법을 비교했습니다.

첫 번째는 과거 물주기 주기만 사용하는 방법입니다.

두 번째는 최근 건조 속도만 사용하는 방법입니다.

세 번째는 두 가지의 비중을 건조 진행률에 따라 바꾸는 adaptive hybrid 방식입니다.

결과는 다음과 같았습니다.

예측 방법
평균오차(MAE)
중앙 절대오차
±2일 이내
과거 주기만
2.51일
2.00일
55.1%
최근 건조속도만
4.82일
2.00일
50.7%
Adaptive hybrid
2.07일
1.59일
62.6%

과거 주기만 이용해도 평균오차는 약 2.51일이었습니다.

하지만 현재 건조 상태까지 점진적으로 반영하는 adaptive hybrid에서는 2.07일로 감소했습니다.

약 17% 개선된 결과입니다.

8. 재미있는 것은 '어느 모델이 최고인가'가 아니었다

처음에는 가장 정확한 예측 방법 하나를 찾아서 처음부터 끝까지 사용하는 것이 좋을 것이라고 생각했습니다.

그런데 실제 결과는 달랐습니다.

물주기 직후에는 오히려 과거 이력만 사용하는 방법이 유리했습니다.

현재 건조 속도는 데이터가 충분히 쌓이지 않았기 때문입니다.

반대로 사이클 후반으로 갈수록 현재의 실제 건조 속도가 훨씬 유용해집니다.

즉 가장 좋은 예측 정보가 시간에 따라 바뀝니다.

그래서 하나의 고정된 예측식을 찾는 것보다,

식물이 마르는 과정에 따라 어떤 정보를 믿을지를 바꾸는 것

이 더 합리적이었습니다.

9. 그러면 7~10일 전에 정확한 날짜를 맞힐 수 있을까?

여기서는 조금 신중하게 답해야 합니다.

현재 데이터만으로

"10일 전에 다음 물주기 날짜를 ±1일로 정확하게 맞힐 수 있다."

고 말할 수는 없습니다.

특히 물을 준 직후에는 이번 사이클이 평소보다 빠르게 진행될지, 느리게 진행될지 아직 알 수 없습니다.

하지만 정확한 날짜 대신 예상 범위를 제공하는 것은 가능합니다.

예를 들어 물을 준 직후에는

다음 물주기 예상: 9~12일 후

라고 시작합니다.

며칠 뒤 현재 건조 데이터가 쌓이면

예상: 7~9일 후

다시 며칠이 지나면

예상: 3~4일 후

마지막에는

예상: 내일~모레

처럼 범위를 계속 좁혀가는 것입니다.

 

이렇게 생각하면 장기 예측에서 중요한 것은 처음부터 정확한 날짜 하나를 맞히는 것이 아닙니다.

처음에는 넓게 예상하고, 식물을 계속 관찰하면서 예측의 불확실성을 줄여가는 것입니다.

위 그래프는 Adaptive hybrid 모델이 예측한 다음 물주기까지의 남은 날짜와 실제 남은 날짜를 비교한 결과입니다.

각 점의 가로축은 실제로 다음 물주기까지 남아 있었던 일수이고, 세로축은 그 시점까지의 데이터만 이용해 모델이 예측한 남은 일수입니다. 대각선은 예측과 실제가 정확히 일치하는 경우를 나타내므로 점이 이 선에 가까울수록 예측이 정확합니다.

전체적으로 물주기 시점이 가까운 구간에서는 점들이 대각선 주변에 비교적 모여 있는 반면, 실제 남은 기간이 길어질수록 분산이 커지는 모습을 볼 수 있습니다. 이는 물주기 직후의 장기 예측에는 아직 불확실성이 크지만, 새로운 토양 수분 데이터가 계속 쌓이면서 물주기 시점이 가까워질수록 예측을 보다 정확하게 수정할 수 있음을 보여줍니다.

10. 그렇다면 AI가 필요한가?

여기까지 분석하면서 저도 궁금했습니다.

이런 예측을 하려면 결국 AI가 필요한 것이 아닐까?

현재 데이터에서 얻은 답은 의외로 '아직은 아니다'에 가깝습니다.

각 식물에 대해

평소 젖은 상태,

평소 다시 물을 주는 상태,

평균 물주기 주기,

건조곡선,

최근 건조 속도

를 계속 업데이트하는 것만으로도 개인화된 예측 알고리즘을 만들 수 있습니다.

그리고 이번 분석에서 adaptive hybrid 방식은 실제로 단순한 과거 주기 예측보다 성능이 좋아졌습니다.

따라서 현재 단계에서는 복잡한 AI보다 설명할 수 있고 검증하기 쉬운 적응형 알고리즘부터 시작하는 것이 더 합리적으로 보입니다.

나중에 수백, 수천 개 식물의 데이터가 쌓인다면 이야기가 달라질 수 있습니다.

새로 등록된 식물처럼 과거 데이터가 없는 경우 비슷한 식물들의 데이터를 이용해 초기 예측을 만들고, 이후 그 식물 자신의 데이터가 쌓이면서 개인화하는 방식으로 AI를 활용할 수 있을 것입니다.

발견 6: 물주기 예측은 '한 번 맞히는 것'이 아니라 '계속 수정하는 것'이다

처음 이 분석을 시작했을 때 제가 생각한 물주기 예측은 단순했습니다.

현재 토양 수분과 건조 속도를 측정해서

"앞으로 7일 뒤에 물을 주세요."

라고 계산하면 될 것이라고 생각했습니다.

하지만 약 1년의 데이터를 분석해보니 실제로는 조금 달랐습니다.

물을 준 직후에는 현재 건조 속도보다 그 식물의 과거가 더 유용했습니다.

시간이 지나면서 이번 사이클의 데이터가 쌓이면 현재의 실제 건조 속도가 더 중요해졌습니다.

그래서 장기적인 물주기 예측은 한 번 계산하고 끝나는 숫자가 아니라,

과거의 패턴으로 미래를 먼저 예상하고, 현재의 데이터를 관찰하면서 그 예측을 계속 수정하는 과정에 더 가까웠습니다.

1년 동안 식물을 기록하고 나서

처음 센서 데이터를 기록한 목적은 단순했습니다.

흙이 말랐는지 알고 싶었습니다.

그런데 약 1년 동안 데이터를 모으고 분석하면서 질문이 조금씩 바뀌었습니다.

'현재 흙이 얼마나 말랐는가?'에서

'이 식물은 평소 어떻게 마르는가?'

그리고 다시

지금 속도라면 앞으로 언제 물이 필요할까?'로 바뀌었습니다.

1편에서는 호야와 스킨답서스의 물주기 리듬이 다르다는 것을 보았습니다.

2편에서는 물주기 사이에 반복되는 건조 사이클을 관찰했습니다.

3편과 4편에서는 환경과 건조 속도의 관계를 살펴봤습니다.

5편에서는 서로 다른 두 식물도 정규화하면 상당히 비슷한 건조 패턴을 보일 수 있다는 것을 발견했습니다.

그리고 마지막 6편에서는 그 반복되는 과거의 패턴과 현재의 건조 상태를 결합하면 다음 물주기를 미리 예상할 가능성이 있다는 것을 확인했습니다.

그래서 이 1년간의 관찰에서 제가 얻은 가장 큰 결론은 이것입니다.

식물에게 필요한 것은 정해진 물주기 달력이 아니라, 그 식물 자신의 기록일지도 모릅니다.

센서는 오늘의 숫자를 보여주는 데서 끝날 필요가 없습니다.

오랫동안 기록하면 그 숫자는 그 식물의 습관이 되고,

그 습관을 이해하기 시작하면 센서는 현재를 보여주는 장치에서 미래를 예상하는 장치로 바뀔 수 있습니다.

#식물관찰 #식물데이터 #물주기 #호야 #스킨답서스 #토양수분 #물주기예측 #식물센서 #스마트화분

 

지금까지 호야와 스킨답서스의 데이터를 살펴보면서 두 식물이 꽤 다르다는 것을 확인했습니다.

물주기 간격도 달랐고, 물을 준 직후의 토양 수분 센서값도 달랐습니다.

화분이 마르는 속도도 달랐습니다.

그런데 여기서 한 가지 생각이 들었습니다.

두 식물의 숫자가 다른 것은 당연한데, 혹시 '마르는 과정의 모양'은 비슷하지 않을까?

그래서 이번에는 숫자의 크기를 비교하는 대신, 두 식물의 물주기 사이클을 같은 출발점과 도착점으로 맞춰서 겹쳐봤습니다.

결과는 예상보다 흥미로웠습니다.

1. 먼저 두 식물은 숫자만 보면 상당히 다르다

같은 방식으로 측정했지만 호야와 스킨답서스의 토양 수분 센서값은 상당히 달랐습니다.

대표적인 물주기 직후의 센서값은

호야 약 2507 ADC

스킨답서스 약 2031 ADC

였습니다.

다음 물주기 직전에는 각각 약 1090과 964 정도였습니다.

한 번의 물주기 사이클에서 감소하는 센서값의 범위도 달랐습니다.

호야는 약 1403 ADC, 스킨답서스는 약 1065 ADC였습니다.

건조 속도도 달랐습니다.

호야는 대표적으로 약 133 ADC/day, 스킨답서스는 약 166 ADC/day로 스킨답서스가 더 빠르게 마르는 모습을 보였습니다.

숫자만 보면 상당히 다른 두 화분입니다.

2. 그래서 절대적인 센서값만 비교하면 문제가 생긴다

예를 들어 두 화분의 토양 수분 센서가 똑같이 1800을 가리키고 있다고 생각해보겠습니다.

같은 센서값이니 두 식물의 수분 상태도 같다고 생각하기 쉽습니다.

하지만 그렇지 않습니다.

호야에서 1800은 자신의 건조 범위에서 대략 중간 정도까지 진행된 상태일 수 있습니다.

반면 스킨답서스에서는 상대적으로 더 젖어 있는 상태일 수 있습니다.

즉, ADC 1800이라는 숫자 자체보다 중요한 것은 그 숫자가 '그 식물의 평소 범위에서 어디쯤인가'입니다.

이 문제를 해결하기 위해 데이터를 조금 다른 방식으로 바꿔봤습니다.

3. 모든 물주기 사이클을 0~100%로 바꿔보자

방법은 생각보다 간단합니다.

먼저 물을 준 직후의 상태를

건조 진행률 0%

로 놓습니다.

그리고 다음 물주기 직전의 가장 마른 상태를

건조 진행률 100%

로 놓습니다.

그 사이의 토양 수분값은 모두 0~100% 사이의 값으로 변환합니다.

예를 들어 한 사이클에서

물주기 직후 = 2500

다음 물주기 직전 = 1000

이었다고 해보겠습니다.

현재 센서값이 1750이라면 전체 건조 범위의 절반 정도를 지나온 셈입니다.

즉, 건조 진행률 약 50%입니다.

이렇게 하면 호야의 ADC 1800과 스킨답서스의 ADC 1800을 직접 비교하는 대신,

호야의 건조 진행률 50%와 스킨답서스의 건조 진행률 50%를 비교할 수 있습니다.

4. 시간도 0~100%로 바꿨다

시간도 같은 방식으로 정규화했습니다.

호야의 어떤 물주기 사이클이 14일이었다고 하고, 스킨답서스의 어떤 사이클이 8일이었다고 해보겠습니다.

절대적인 날짜로 비교하면 두 사이클의 길이가 다르기 때문에 직접 겹쳐보기 어렵습니다.

그래서

물을 준 순간 = cycle progress 0%

다음 물주기 직전 = cycle progress 100%

로 바꿨습니다.

그러면 14일짜리 사이클과 8일짜리 사이클도 같은 축 위에 놓을 수 있습니다.

결국 그래프의 가로축과 세로축이 모두 0~100%가 됩니다.

가로축: 물주기 사이클이 얼마나 진행되었는가

세로축: 토양 건조가 얼마나 진행되었는가

이제 식물마다 다른 ADC값과 서로 다른 물주기 기간을 걷어내고 '마르는 과정의 모양' 자체를 비교할 수 있습니다.

5. 그런데 두 곡선을 겹쳐보니 놀랍게도 비슷했다

그 결과가 다음 그래프입니다.

그래프에는 호야의 평균 건조곡선과 스킨답서스의 평균 건조곡선이 함께 표시되어 있습니다.

그리고 비교를 위해 y = x인 직선도 함께 표시했습니다.

만약 건조가 사이클 진행시간에 거의 비례해서 진행된다면 이 직선에 가까운 모양이 됩니다.

결과를 보면 호야의 평균 건조곡선은 거의 이 직선에 가깝습니다.

그런데 더 흥미로운 것은 스킨답서스입니다.

두 식물의 곡선이 상당히 비슷합니다.

절대적인 센서값도 다르고,

물주기 주기도 다르고,

건조 속도도 다른데,

각자의 범위에서 0~100%로 바꾸자 상당히 비슷한 궤적이 나타난 것입니다.

6. 완전히 똑같은 것은 아니다

물론 두 곡선이 완전히 일치하는 것은 아닙니다.

사이클 진행 단계별로 비교하면 다음과 같습니다.

물주기 사이클 진행
호야 건조 진행
스킨답서스 건조 진행
10%
8.3%
9.8%
25%
23.3%
27.2%
50%
50.8%
55.9%
75%
76.8%
81.5%
90%
91.9%
93.8%

차이가 가장 커지는 것은 사이클 중간 부분입니다.

사이클의 50% 지점에서 호야는 평균적으로 50.8% 정도 건조되어 있었지만 스킨답서스는 55.9%까지 진행되어 있었습니다.

약 5.1 percentage point 차이입니다.

즉 스킨답서스가 사이클 중반부에서 조금 더 앞서 마르는 경향이 있습니다.

하지만 사이클의 시작과 끝에서는 다시 차이가 작아집니다.

두 평균 건조곡선 전체의 차이를 RMSE로 계산하면 약 3.97 percentage point였습니다.

서로 다른 두 식물이라는 점을 생각하면 상당히 비슷한 형태입니다.

7. 이것은 꽤 중요한 결과일지도 모른다

처음에는 식물마다 전혀 다른 건조곡선을 가질 것이라고 생각할 수도 있습니다.

실제로 절대적인 센서값을 보면 그렇게 보입니다.

하지만 정규화하고 나니 다른 모습이 나타났습니다.

절대값은 다르지만 상대적인 건조 과정은 비슷했습니다.

이것은 식물 데이터를 바라보는 방법에 중요한 힌트를 줍니다.

모든 식물에게

"ADC 1000이 되면 물을 주세요."

같은 하나의 절대 기준을 적용하는 것은 적절하지 않을 수 있습니다.

대신 각각의 식물이 평소에 보여주는 가장 젖은 상태와 다시 물을 주는 상태를 학습한 뒤,

현재 그 범위에서 몇 %까지 진행되었는지를 보는 방법이 더 합리적입니다.

예를 들어 "현재 토양 수분 1673"이라고 보여주는 것보다,

"현재 이 식물은 평소 건조 사이클의 약 65%까지 진행되었습니다."

라고 표현하는 것이 실제 관리에는 더 의미 있는 정보가 될 수 있습니다.

8. 그렇다면 모든 식물에 공통된 '건조곡선'이 있을까?

여기서 더 흥미로운 질문이 생깁니다.

호야와 스킨답서스처럼 서로 다른 식물을 정규화했는데도 비슷한 곡선이 나타났다면,

모든 식물에 적용할 수 있는 공통적인 건조곡선이 존재하는 것은 아닐까요?

가장 단순한 형태는

건조 진행률 = 물주기 사이클 진행률

즉 D(P) = P입니다.

이번 호야 데이터는 실제로 이 직선에 상당히 가까웠고, 스킨답서스도 약간의 차이는 있지만 비슷한 형태를 보였습니다.

조금 더 발전시키면 식물마다 곡선의 형태를 나타내는 작은 보정값 하나만 학습하는 방법도 생각할 수 있습니다.

그러면 복잡한 모델 없이도 각 식물의 젖은 상태, 마른 상태, 평균 물주기 기간, 건조곡선의 모양 정도만 학습해서 식물마다 다른 물주기 패턴을 표현할 수 있을지도 모릅니다.

9. 하지만 아직 '모든 식물의 보편 법칙'이라고 말할 수는 없다

여기서는 특히 조심할 필요가 있습니다.

현재 비교한 것은 사실상 호야 한 개체와 스킨답서스 한 개체입니다.

따라서 이 결과만으로

"모든 식물은 같은 건조곡선을 가진다."

라고 말할 수는 없습니다.

화분 크기, 토양 종류, 식물 크기, 뿌리의 양, 센서 위치, 물을 주는 양 등이 달라지면 결과도 달라질 수 있습니다.

종 수준의 차이를 이야기하려면 같은 종의 여러 독립적인 개체도 비교해야 합니다.

그래서 현재 단계에서 말할 수 있는 것은 이 정도입니다.

'호야와 스킨답서스의 절대적인 토양 수분 범위와 물주기 리듬은 달랐지만, 각자의 물주기 사이클을 정규화하자 평균 건조곡선은 상당히 비슷해졌다.'

이것만으로도 충분히 흥미로운 결과입니다.

발견 5: 식물마다 숫자는 달라도 '마르는 과정의 모양'은 비슷할 수 있다

이번 분석에서 가장 재미있는 것은 처음과 마지막의 대비입니다.

호야와 스킨답서스는 분명 다릅니다.

물주기 간격도 다르고,

센서의 절대값도 다르고,

건조 속도도 다릅니다.

그런데 각 식물이 가진 범위 안에서

시간을 0~100%,

건조 정도를 0~100%

로 바꾸자 두 식물의 차이가 크게 줄어들었습니다.

그래서 다섯 번째 발견은 이것입니다.

식물마다 절대적인 물주기 리듬은 달라도, 상대적인 건조 진행 패턴에는 공통된 형태가 존재할 가능성이 있다.

그리고 이것은 마지막 질문으로 이어집니다.

지금까지 우리는 이미 끝난 물주기 사이클을 분석했습니다.

그렇다면 이 반복되는 패턴을 이용해서 아직 오지 않은 다음 물주기 시점을 미리 예상할 수 있을까요?

단순히 흙이 마른 뒤

"이제 물을 주세요."

라고 알려주는 것이 아니라,

물을 준 직후부터

"이 식물은 평소 패턴이라면 약 10일 후 다시 물이 필요할 가능성이 있습니다."

라고 예상하는 것입니다.

그리고 시간이 지나 실제 건조 데이터가 쌓이면 그 예측을 계속 수정할 수도 있습니다.

다음 글에서는 지금까지 발견한 건조 패턴을 이용해 실제로 다음 물주기까지 남은 날짜를 예측해보고, 그 예측이 얼마나 정확했는지 살펴보겠습니다.

식물 관찰기 6편 — 다음 물주기를 7~10일 전에 예측할 수 있을까?

#식물관찰 #식물데이터 #호야 #스킨답서스 #토양수분 #물주기 #건조곡선 #식물센서 #스마트화분

지난 글에서는 한 가지 질문을 던졌습니다.

화분을 빨리 마르게 하는 것은 무엇일까?

온도일까요?

공기의 습도일까요?

빛일까요?

이번에는 그래프를 눈으로 비교하는 것에서 한 단계 더 나아가 실제 데이터를 이용해 이 질문에 답해보려고 합니다.

방법은 간단합니다.

먼저 각각의 물주기 사이클에서 토양이 하루에 얼마나 빨리 말랐는지를 계산합니다.

그리고 같은 기간의 온도, 습도, 조도와 비교해

환경조건이 변할 때 토양의 건조 속도도 함께 변했는가?

를 살펴보는 것입니다.

1. 두 값이 얼마나 함께 움직이는지 숫자로 비교해보자

예를 들어 이런 질문을 할 수 있습니다.

온도가 높은 기간에는 토양도 더 빨리 말랐을까요?

그렇다면 온도가 올라갈수록 토양 건조 속도도 함께 증가하는 경향이 나타나야 합니다.

반대로 습도가 높은 기간에 토양이 천천히 말랐다면 습도가 올라갈수록 건조 속도는 감소하는 경향이 나타날 것입니다.

이런 두 값 사이의 관계를 숫자로 나타내는 방법 중 하나가 상관분석(correlation analysis)입니다.

이번 분석에서는 상관관계를 나타내는 값으로 상관계수 r을 사용했습니다.

r은 -1에서 +1 사이의 값을 가집니다.

쉽게 생각하면 다음과 같습니다.

r 값
의미
+1에 가까움
한 값이 커질수록 다른 값도 함께 커지는 경향이 강함
0에 가까움
두 값 사이에 뚜렷한 선형 관계가 보이지 않음
-1에 가까움
한 값이 커질수록 다른 값은 작아지는 경향이 강함

예를 들어 온도와 토양 건조 속도의 r이 큰 양수라면,

온도가 높을수록 토양이 빨리 마르는 경향

이 있다는 뜻입니다.

반대로 습도와 건조 속도의 r이 음수라면,

습도가 높을수록 토양은 천천히 마르는 경향

이 있다는 뜻입니다.

그리고 r이 0에 가깝다면 적어도 이번 데이터에서는 두 값 사이에 뚜렷한 선형적인 관계가 관찰되지 않았다는 뜻입니다.

여기서 한 가지 중요한 점이 있습니다.

상관관계가 있다고 해서 그것이 곧 원인이라는 뜻은 아닙니다.

예를 들어 VPD와 토양 건조 속도가 함께 증가한다고 해도, VPD 하나가 건조 속도를 결정한다고 단정할 수는 없습니다.

식물의 크기나 뿌리 상태, 토양, 관수량 등 측정하지 않은 다른 요인이 함께 영향을 주고 있을 수도 있기 때문입니다.

따라서 이번 분석의 목적은

"무엇이 화분을 마르게 하는 원인인가?"를 확정하는 것보다는,

"측정한 환경변수 중 어떤 값이 실제 토양 건조 속도와 가장 강하게 함께 움직였는가?"

를 찾아보는 것입니다.

2. 먼저 '마르는 속도'를 계산해봤다

토양 수분 그래프를 다시 보겠습니다.

물을 주면 토양 수분 센서값이 급격히 상승하고 이후 다음 물주기까지 서서히 감소합니다.

이 하나의 구간을 하나의 건조 사이클로 보고, 각 사이클에서 토양 수분이 하루에 얼마나 감소했는지를 계산했습니다.

단위는 ADC/day입니다.

예를 들어 센서값이 2500에서 1000까지 감소하는 데 10일이 걸렸다면 평균적인 감소 속도는

(2500 - 1000) ÷ 10 = 150 ADC/day

가 됩니다.

숫자가 클수록 더 빠르게 마른 것입니다.

호야 데이터에서는 분석 가능한 27개의 물주기 사이클을 얻을 수 있었습니다.

이들의 평균 건조 속도는 약 136 ADC/day였습니다.

그리고 각 사이클의 건조 속도와 같은 기간의 온도, 습도, 조도, VPD를 하나씩 비교했습니다.

이제 결과를 살펴보겠습니다.

3. 온도가 높으면 정말 빨리 말랐을까?

가장 먼저 온도를 비교했습니다.

직관적으로는 가장 먼저 이런 생각을 하게 됩니다.

"더우면 물이 빨리 마르지 않을까?"

그런데 각 건조 사이클의 평균 온도와 토양 건조 속도를 비교한 결과,

r ≈ +0.12

였습니다.

0에 상당히 가까운 값입니다.

즉 온도가 높을수록 조금 더 빨리 마르는 방향은 나타났지만, 그 관계는 매우 약했습니다.

적어도 이번 호야 데이터에서는

'온도가 높으면 화분이 빨리 마른다'는 설명만으로 실제 건조 속도의 차이를 설명하기 어려웠습니다.

4. 습도에서는 조금 더 뚜렷한 관계가 나타났다

이번에는 대기 습도입니다.

상대습도와 토양 건조 속도를 비교한 결과,

r ≈ -0.38

이었습니다.

온도보다 훨씬 뚜렷한 관계가 나타났습니다.

그리고 이번에는 음수입니다.

즉,

공기의 습도가 높을수록 화분은 천천히 마르고, 공기가 건조할수록 더 빨리 마르는 경향

이 나타났습니다.

5. 의외로 조도와의 관계는 거의 없었다

이번에는 빛입니다.

빛을 많이 받으면 식물의 증산 활동이 증가할 수 있기 때문에 조도 역시 건조 속도와 어느 정도 관계가 있을 것으로 예상했습니다.

그런데 결과는 예상과 달랐습니다.

r ≈ 0.00

에 가까웠습니다.

즉, 이번 데이터에서는 조도와 화분의 평균 건조 속도 사이에 뚜렷한 선형 관계가 나타나지 않았습니다.

물론 이것이 빛이 식물의 물 소비에 영향을 주지 않는다는 뜻은 아닙니다.

제가 사용한 조도값은 2시간 간격으로 측정한 센서의 상대적인 값이고, 실내에서 측정했다는 한계도 있습니다.

따라서 정확하게는 '이번 측정 방법과 조건에서는 조도값과 건조 속도 사이에서 뚜렷한 선형 상관관계를 발견하지 못했다'고 표현하는 것이 적절합니다.

6. 온도와 습도를 합쳐보니 결과가 달라졌다

그렇다면 온도와 습도를 따로 보지 않고 함께 고려하면 어떨까요?

여기서 VPD(Vapor Pressure Deficit, 증기압 부족량)를 계산했습니다.

VPD는 쉽게 말하면,

현재 공기가 수분을 얼마나 더 받아들일 수 있는 상태인지를 나타내는 값

이라고 생각할 수 있습니다.

따뜻하고 건조한 공기는 일반적으로 VPD가 높고, 습한 공기는 낮습니다.

그리고 VPD와 토양 건조 속도의 상관관계를 계산해보니,

r ≈ +0.50

이 나왔습니다.

이번에 비교한 환경변수 가운데 가장 큰 상관관계였습니다.

7. 네 가지 결과를 한 번에 비교해보자

결과를 한곳에 모으면 훨씬 쉽게 보입니다.

환경변수
건조 속도와의 r
이번 데이터에서의 해석
VPD
+0.50
VPD가 높을수록 빨리 마르는 경향
대기 습도
-0.38
습도가 높을수록 천천히 마르는 경향
온도
+0.12
관계가 약함
조도
≈ 0.00
뚜렷한 선형 관계가 보이지 않음

가장 눈에 띄는 것은 VPD +0.50입니다.

온도 하나만 비교했을 때는 +0.12에 불과했지만, 온도와 습도를 함께 반영한 VPD에서는 +0.50까지 올라갔습니다.

즉 이번 호야 데이터에서는

'몇 도인가?'보다 '그 온도에서 공기가 얼마나 건조한가?'가 화분의 건조 속도와 더 강하게 연결되어 있었습니다.

발견 4: 온도보다 '공기의 건조 정도'가 토양 건조 속도와 더 강한 관계를 보였다

이번 분석의 결과는 꽤 흥미롭습니다.

온도 +0.12

습도 -0.38

조도 ≈ 0.00

VPD +0.50

처음에는 온도가 가장 중요한 변수일 것이라고 생각하기 쉽지만, 실제 호야 데이터에서는 온도보다 VPD가 훨씬 강한 상관관계를 보였습니다.

다만 여기서 발견한 것은 인과관계가 아니라 상관관계입니다.

그래서 이번 결과를

"VPD가 높기 때문에 화분이 빨리 마른다."

라고 단정하기보다는,

"이번 호야 데이터에서는 VPD가 높을 때 토양도 빠르게 마르는 경향이 가장 뚜렷했다."

라고 표현하는 것이 정확합니다.

하지만 이것만으로도 다음 단계로 넘어갈 중요한 단서가 됩니다.

현재 토양 수분만 측정하는 것이 아니라 토양 수분이 감소하는 속도와 주변 환경을 함께 관찰하면, 앞으로 언제 물이 필요해질지를 미리 예상할 수도 있지 않을까요?

다음 글에서는 서로 다른 호야와 스킨답서스의 건조 사이클을 같은 기준으로 정규화해서 겹쳐보겠습니다.

물주기 간격은 서로 달라도 마르는 과정 자체에는 공통된 패턴이 있는지 살펴보겠습니다.

식물 관찰기 5편 — 서로 다른 두 식물의 '마르는 곡선'을 겹쳐보면 무엇이 보일까?

#식물관찰 #식물데이터 #물주기 #호야 #스킨답서스 #토양수분 #VPD #상관관계 #식물센서

 

지난 글에서 한 가지 흥미로운 사실을 확인했습니다.

같은 식물, 같은 화분인데도 물을 준 뒤 다시 마르는 데 걸리는 시간은 매번 달랐습니다.

그렇다면 무엇이 이 차이를 만들었을까요?

제가 기록한 데이터에는 토양 수분뿐 아니라 온도, 대기 습도, 조도가 함께 들어 있습니다.

이번에는 이 세 가지 환경변수 중 무엇이 화분의 건조 속도와 가장 관계가 있을지 살펴보겠습니다.

1. 가장 먼저 의심되는 것은 온도

먼저 약 8개월 동안 측정한 실내 온도입니다.

8월에는 30℃를 넘는 날이 많았지만 시간이 지나면서 점차 낮아져 겨울에는 주로 20℃대 초중반을 유지했습니다.

직관적으로 생각하면 온도가 높을수록 화분도 빨리 마를 것 같습니다.

하지만 토양 수분 그래프와 나란히 놓고 보면 그렇게 간단하지 않습니다.

높은 온도에서 항상 물주기 간격이 짧은 것도 아니고, 낮은 온도에서 항상 길어지는 것도 아닙니다.

온도는 분명 후보이지만 온도 하나만으로 건조 속도의 변화를 설명하기에는 부족해 보입니다.

2. 그렇다면 대기 습도는 어떨까?

이번에는 같은 기간의 대기 습도입니다.

여름에는 상대습도가 60~70% 이상인 구간이 많았지만 겨울로 갈수록 대체로 50%대 수준으로 낮아졌습니다.

여기서 온도와 반대되는 효과가 생길 가능성이 있습니다.

여름에는 온도가 높아서 화분이 빨리 마를 것 같지만 동시에 공기의 습도도 높았습니다.

반대로 겨울에는 온도가 낮지만 실내 공기는 상대적으로 더 건조했습니다.

따라서 온도와 습도를 따로 떼어 보는 것만으로는 실제 건조 환경을 충분히 설명하기 어려울 수 있습니다.

3. 빛은 어떨까?

이번에는 하루 동안 측정된 조도의 누적값입니다.

빛의 변화는 상당히 큽니다.

관찰 초기에는 하루 누적값이 50,000을 넘는 날도 있었지만 이후에는 훨씬 낮아졌고, 겨울 후반에는 다시 증가하는 모습이 나타납니다.

빛은 식물의 증산 활동과 관련될 수 있기 때문에 역시 중요한 후보입니다.

하지만 이 그래프 역시 토양 수분 그래프와 눈으로 비교하는 것만으로는

"빛이 많을수록 화분이 빨리 마른다."

라고 단정하기 어렵습니다.

4. 문제는 세 변수가 동시에 변한다는 것이다

여기서 데이터 분석이 조금 어려워집니다.

실제 환경에서는 온도만 변하거나 습도만 변하지 않습니다.

온도, 습도, 빛이 동시에 변합니다.

예를 들어 여름의 어느 날은

높은 온도 + 높은 습도 + 강한 빛

일 수 있습니다.

반면 겨울에는

낮은 온도 + 낮은 습도 + 약한 빛

일 수 있습니다.

각 조건은 서로 다른 방향으로 화분의 건조에 영향을 줄 가능성이 있습니다.

그래서 단순히 계절을 여름과 겨울로 나누거나 그래프 몇 개를 눈으로 비교하는 것만으로는 부족합니다.

5. 우리가 정말 비교해야 하는 것은 '물주기 간격'이 아닐지도 모른다

여기서 분석 방법을 조금 바꿔볼 필요가 있습니다.

지금까지는 물을 준 날부터 다음 물을 준 날까지 며칠이 걸렸는지를 비교했습니다.

하지만 물주기 간격에는 사람이 언제 물을 주었는가라는 요소도 포함됩니다.

환경의 영향을 알고 싶다면 더 직접적인 값은 토양 수분이 감소하는 속도입니다.

예를 들어 토양 수분 센서값이

2500 → 2000 → 1500 → 1000

으로 감소했다고 할 때, 이 변화가 5일 동안 일어난 경우와 15일 동안 일어난 경우는 분명 다릅니다.

그래서 각 물주기 사이클마다 다음과 같은 값을 생각할 수 있습니다.

토양 건조 속도 = 일정 시간 동안 감소한 토양 수분 센서값 / 시간

이 값을 구하면 각 사이클을

'며칠 만에 물을 주었는가'

대신

'얼마나 빠르게 토양 수분이 감소했는가'

라는 기준으로 비교할 수 있습니다.

6. 그리고 같은 기간의 환경 데이터를 붙여본다

각각의 건조 사이클에 대해

  • 평균 온도
  • 평균 대기 습도
  • 누적 또는 평균 조도
  • 토양 수분 감소 속도

를 계산하면 조금 더 흥미로운 비교가 가능해집니다.

예를 들어,

온도가 높았던 사이클일수록 실제 건조 속도가 빨랐는가?

대기 습도가 낮았던 사이클일수록 빨리 말랐는가?

빛을 많이 받은 사이클에서 더 빨리 말랐는가?

를 수치로 비교할 수 있습니다.

이제부터는 그래프를 눈으로 보는 관찰에서 환경과 건조 속도의 관계를 정량화하는 분석으로 넘어가는 것입니다.

7. 온도와 습도를 하나로 묶어보면 어떨까?

여기서 한 가지 더 흥미로운 변수를 생각할 수 있습니다.

온도와 상대습도는 서로 독립적으로만 작용하는 것이 아니라, 함께 공기의 건조 정도를 결정합니다.

그래서 식물 재배에서는 VPD(Vapor Pressure Deficit, 증기압 부족량)라는 값을 사용하기도 합니다.

쉽게 말하면,

현재 공기가 수분을 얼마나 더 받아들일 수 있는 상태인가

를 온도와 습도를 이용해 나타낸 값입니다.

같은 상대습도 50%라도 온도가 다르면 VPD는 달라집니다.

따라서 토양의 건조 속도가 단순한 온도나 습도보다 VPD와 더 강한 관계를 보일 가능성도 있습니다.

이것은 실제 데이터를 계산해 봐야 알 수 있습니다.

발견 3: '계절'보다 중요한 것은 건조 속도를 만드는 환경변수다

지금까지 데이터를 계절별로 바라봤다면 질문을 조금 바꿀 필요가 있습니다.

"여름에는 몇 일마다 물을 줘야 할까?"

가 아니라,

"어떤 환경에서 이 화분은 더 빨리 마르는가?"

입니다.

그리고 이 질문에 답하기 위해서는 온도, 습도, 조도를 각각 건조 속도와 비교하고, 온도와 습도를 결합한 VPD도 함께 살펴볼 필요가 있습니다.

이 관계를 찾아낼 수 있다면 더 재미있는 가능성이 생깁니다.

현재 토양 수분만 보고 물을 줄 시점을 판단하는 것을 넘어,

앞으로의 온도, 습도, 빛을 이용해 화분이 얼마나 빨리 마를지를 예상할 수 있지 않을까요?

그렇게 되면 식물 센서는 단순히

"지금 흙이 말랐습니다."

라고 알려주는 장치에서,

"지금 속도라면 며칠 뒤 물이 필요할 것 같습니다."

라고 알려주는 장치로 한 단계 발전할 수 있습니다.

다음 글에서는 실제 데이터를 이용해 토양 건조 속도와 온도·습도·조도, 그리고 VPD의 관계를 비교해 보겠습니다.

식물 관찰기 4편 — 토양이 마르는 속도를 계산해보니: 온도·습도·빛·VPD 중 무엇이 가장 중요했을까?

#식물관찰 #식물데이터 #물주기 #호야 #스킨답서스 #토양수분 #VPD #식물센서 #스마트화분

 

지난 글에서는 같은 집에서 약 1년 동안 키운 호야 카르노사와 스킨답서스의 데이터를 비교했습니다.

두 식물은 같은 크기의 화분과 같은 토양을 사용했고, 같은 공간에서 자랐습니다. 그리고 토양 수분이 일정 수준까지 떨어지면 물을 주었습니다.

그런데 물주기 간격은 상당히 달랐습니다.

  • 호야 평균 물주기 간격: 12.4일
  • 스킨답서스 평균 물주기 간격: 9.9일
  • 중앙값: 호야 12일, 스킨답서스 8일

같은 공간에서 키워도 식물마다 물주기 리듬이 다르다는 것이 첫 번째 발견이었습니다.

그렇다면 여기서 한 가지 질문이 더 생깁니다.

물을 준 순간부터 다음 물주기까지 화분 속에서는 무슨 일이 일어나고 있을까요?

이번에는 단순히 '며칠마다 물을 주었는가'가 아니라, 물을 준 뒤 토양이 다시 마르기까지의 과정을 자세히 들여다보겠습니다.

1. 물을 주면 그래프에 아주 뚜렷한 흔적이 남는다

먼저 호야의 약 8개월간 토양 수분 데이터입니다.

가로축은 시간이고 세로축은 토양 수분 센서의 ADC 출력값입니다.

여기서 센서값은 토양의 절대적인 수분 함량(%)을 의미하지 않습니다. 같은 센서와 화분에서 시간에 따른 수분 상태의 변화를 비교하기 위한 상대적인 값으로 보는 것이 적절합니다.

그래프를 보면 재미있는 모양이 반복됩니다.

토양 수분값이 어느 정도까지 내려가면 갑자기 위로 뛰어오르고, 이후 며칠에 걸쳐 다시 천천히 내려갑니다.

마치 톱니처럼 생겼습니다.

이 급격한 상승이 바로 물을 준 순간입니다.

물을 주면 토양에 물이 공급되면서 센서값이 급격히 올라갑니다. 그 뒤 시간이 지나면서 화분의 물이 줄어들고 센서값도 다시 내려갑니다.

그리고 설정해 놓은 하한값 근처(약 1000)에 도달하면 다시 물을 주었습니다.

따라서 그래프의 톱니 하나하나가 사실상 하나의 '물주기 사이클(watering cycle)'입니다.

2. 그런데 물은 일정한 속도로 줄어들지 않는다

그래프를 조금 더 자세히 보면 또 하나 흥미로운 점이 보입니다.

물을 준 직후부터 센서값이 직선으로 일정하게 감소하지 않습니다.

대체로 처음에는 비교적 빠르게 떨어지고, 시간이 지나면서 감소 속도가 달라지는 곡선 형태를 보입니다.

즉,

관수 → 젖은 토양 → 지속적인 건조 → 다음 관수

라는 과정이 단순한 직선이 아닙니다.

여기에는 여러 현상이 동시에 들어 있습니다.

화분 표면과 토양에서 직접 일어나는 증발도 있고, 식물의 뿌리가 물을 흡수하고 잎을 통해 수분을 내보내는 과정도 있습니다.

따라서 이 그래프만으로 식물이 실제로 얼마만큼의 물을 흡수했는지를 직접 계산할 수는 없습니다.

하지만 한 가지는 분명하게 관찰할 수 있습니다.

'이 화분이 얼마나 빨리 마르고 있는가'입니다.

그리고 이것은 단순히 현재 토양 수분값 하나를 아는 것과는 다른 정보입니다.

3. 같은 호야도 매번 똑같은 속도로 마르지 않았다

호야 그래프를 다시 보면 각각의 톱니 폭이 다릅니다.

어떤 때에는 비교적 빠르게 하한값에 도달하지만, 어떤 때에는 상당히 오랫동안 천천히 내려갑니다.

즉,

같은 식물도 물을 준 뒤 다음 물주기가 필요한 시점까지 걸리는 시간이 항상 같지 않았습니다.

이것은 1편에서 살펴본 물주기 간격의 최소값과 최대값에서도 나타났습니다.

호야의 물주기 간격은 짧게는 약 5일, 길게는 23일까지 나타났습니다.

같은 호야인데도 4배가 넘는 차이가 발생한 것입니다.

그렇다면 무엇이 이런 차이를 만들었을까요?

4. 식물이 놓인 환경은 계속 변하고 있었다

같은 기간의 실내 온도를 살펴보겠습니다.

여름에는 실내 온도가 30℃를 넘는 구간이 많았지만 가을이 되면서 점차 낮아졌고, 겨울에는 대체로 20℃대 초중반까지 내려갔습니다.

이번에는 대기 습도입니다.

습도 역시 일정하지 않습니다.

여름에는 상대습도가 60~70% 이상인 구간이 많았지만 겨울에는 대체로 더 낮은 수준을 보입니다.

빛도 크게 달라졌습니다.

이 그래프는 2시간마다 측정한 조도 센서의 값을 하루 단위로 합산한 값입니다. 따라서 절대적인 광량 단위라기보다는 하루 동안 식물이 받은 빛의 상대적인 크기를 비교하기 위한 값입니다.

특히 관찰 초기인 여름과 이후 가을·겨울 사이에 상당한 차이가 나타납니다.

결국 식물은 1년 내내 같은 환경에서 살고 있었던 것이 아닙니다.

같은 자리에 놓여 있어도

온도도 변하고,

습도도 변하고,

빛도 변합니다.

따라서 화분이 마르는 속도 역시 계속 달라질 가능성이 있습니다.

5. 스킨답서스에서는 더 촘촘한 톱니가 나타났다

이번에는 같은 시간축에서 스킨답서스의 토양 수분을 보겠습니다.

호야와 마찬가지로 물을 줄 때 센서값이 급격하게 상승하고 이후 서서히 감소하는 톱니 모양이 반복됩니다.

하지만 호야 그래프와 비교하면 전체적으로 톱니가 더 촘촘합니다.

1편에서 계산한 평균 물주기 간격이

호야 12.4일,

스킨답서스 9.9일

이었던 것과 일치하는 모습입니다.

즉, 단순히 통계표의 평균값만 다른 것이 아니라 1년 가까운 실제 시계열 데이터에서도 두 식물의 서로 다른 물주기 리듬을 눈으로 확인할 수 있습니다.

6. 중요한 것은 '현재 수분'만이 아닐지도 모른다

여기서 조금 다른 생각을 해볼 수 있습니다.

예를 들어 오늘 두 화분의 토양 수분 센서값이 똑같이 1500이라고 가정해 보겠습니다.

그러면 두 식물의 상태도 같다고 볼 수 있을까요?

반드시 그렇지는 않을 것입니다.

한 화분은 어제 1800에서 오늘 1500으로 빠르게 떨어지고 있을 수도 있고, 다른 화분은 며칠 동안 1550 근처에 머물다가 오늘 1500이 되었을 수도 있습니다.

두 화분 모두 현재값은 1500이지만,

마르고 있는 속도는 전혀 다릅니다.

이 차이는 앞으로 언제 물이 필요할지를 판단할 때 상당히 중요한 정보가 될 수 있습니다.

그래서 토양 수분 데이터를 볼 때는

현재 얼마나 젖어 있는가?

뿐만 아니라,

얼마나 빠르게 마르고 있는가?

도 함께 볼 필요가 있습니다.

7. 물주기를 '날짜'가 아니라 '사이클'로 생각해보면

보통 식물 물주기는 이런 식으로 설명됩니다.

"일주일에 한 번 물을 주세요."

"겨울에는 2주에 한 번 주세요."

물론 처음 식물을 키울 때는 유용한 기준입니다.

하지만 실제 데이터를 보면 조금 다른 모습이 나타납니다.

호야 하나만 보더라도 물주기 간격이 5일에서 23일까지 달라졌습니다.

그렇다면 '12일마다 물을 준다'는 것보다,

물을 준다 → 토양이 젖는다 → 서서히 마른다 → 일정 수준에 도달한다 → 다시 물을 준다

라는 하나의 건조 사이클로 보는 편이 실제 식물의 상태를 더 잘 설명할 수 있습니다.

달력은 시간이 얼마나 지났는지를 알려줍니다.

반면 센서는 화분에서 실제로 무슨 일이 일어나고 있는지를 보여줍니다.

발견 2: 물주기에서 중요한 것은 '며칠이 지났는가'만이 아니라 '얼마나 빠르게 마르고 있는가'다

1편에서는 두 식물의 물주기 주기가 다르다는 것을 발견했습니다.

이번에는 그 안을 조금 더 자세히 들여다봤습니다.

그러자 물을 준 뒤 토양이 다시 마르는 과정이 하나의 반복적인 사이클을 만들고 있었고, 그 사이클의 길이와 형태가 매번 같지 않다는 것을 확인할 수 있었습니다.

그래서 두 번째 발견은 이것입니다.

식물의 물주기를 이해하려면 현재 토양 수분값뿐 아니라 토양이 마르는 속도와 변화의 패턴도 함께 볼 필요가 있습니다.

그렇다면 무엇이 화분을 빨리 마르게 할까?

여기서 다음 질문이 자연스럽게 생깁니다.

왜 어떤 때는 5일 만에 마르고, 어떤 때는 20일 이상 걸렸을까요?

온도가 높아서일까요?

공기가 건조해서일까요?

빛을 많이 받아서일까요?

아니면 이 변수들이 함께 작용한 결과일까요?

다음 글에서는 1년 동안 측정한 온도, 대기 습도, 조도와 실제 토양 건조 속도를 비교해 보겠습니다.

식물 관찰기 3편 — 여름에는 화분이 정말 더 빨리 마를까? 1년 데이터로 본 계절과 물주기

__________________________________________________________________

이 글이 도움이 되셨다면 제 홈페이지(댓글에 링크)를 방문해 보세요.

홈페이지에서는 다음과 같은 다양한 콘텐츠를 만나실 수 있습니다.

· 기술 블로그와 학습 자료

· pcb 제작 강의와 최신 소식

· ESP32와 IoT 하드웨어 프로젝트

· KiCad PCB 설계 템플릿 (Github, Gumroad)

· 펌웨어 개발

배우고, 만들고, 함께 성장하는 메이커들을 위한 공간으로 계속 발전시켜 나가겠습니다.

지난 글에서는 같은 집에서 약 1년 동안 키운 호야 카르노사와 스킨답서스의 데이터를 비교했습니다.

두 식물은 같은 크기의 화분과 같은 토양을 사용했고, 같은 공간에서 자랐습니다. 그리고 토양 수분이 일정 수준까지 떨어지면 물을 주었습니다.

그런데 물주기 간격은 상당히 달랐습니다.

  • 호야 평균 물주기 간격: 12.4일
  • 스킨답서스 평균 물주기 간격: 9.9일
  • 중앙값: 호야 12일, 스킨답서스 8일

같은 공간에서 키워도 식물마다 물주기 리듬이 다르다는 것이 첫 번째 발견이었습니다.

그렇다면 여기서 한 가지 질문이 더 생깁니다.

물을 준 순간부터 다음 물주기까지 화분 속에서는 무슨 일이 일어나고 있을까요?

이번에는 단순히 '며칠마다 물을 주었는가'가 아니라, 물을 준 뒤 토양이 다시 마르기까지의 과정을 자세히 들여다보겠습니다.

1. 물을 주면 그래프에 아주 뚜렷한 흔적이 남는다

먼저 호야의 약 8개월간 토양 수분 데이터입니다.

가로축은 시간이고 세로축은 토양 수분 센서의 ADC 출력값입니다.

여기서 센서값은 토양의 절대적인 수분 함량(%)을 의미하지 않습니다. 같은 센서와 화분에서 시간에 따른 수분 상태의 변화를 비교하기 위한 상대적인 값으로 보는 것이 적절합니다.

그래프를 보면 재미있는 모양이 반복됩니다.

토양 수분값이 어느 정도까지 내려가면 갑자기 위로 뛰어오르고, 이후 며칠에 걸쳐 다시 천천히 내려갑니다.

마치 톱니처럼 생겼습니다.

이 급격한 상승이 바로 물을 준 순간입니다.

물을 주면 토양에 물이 공급되면서 센서값이 급격히 올라갑니다. 그 뒤 시간이 지나면서 화분의 물이 줄어들고 센서값도 다시 내려갑니다.

그리고 설정해 놓은 하한값 근처(약 1000)에 도달하면 다시 물을 주었습니다.

따라서 그래프의 톱니 하나하나가 사실상 하나의 '물주기 사이클(watering cycle)'입니다.

2. 그런데 물은 일정한 속도로 줄어들지 않는다

그래프를 조금 더 자세히 보면 또 하나 흥미로운 점이 보입니다.

물을 준 직후부터 센서값이 직선으로 일정하게 감소하지 않습니다.

대체로 처음에는 비교적 빠르게 떨어지고, 시간이 지나면서 감소 속도가 달라지는 곡선 형태를 보입니다.

즉,

관수 → 젖은 토양 → 지속적인 건조 → 다음 관수

라는 과정이 단순한 직선이 아닙니다.

여기에는 여러 현상이 동시에 들어 있습니다.

화분 표면과 토양에서 직접 일어나는 증발도 있고, 식물의 뿌리가 물을 흡수하고 잎을 통해 수분을 내보내는 과정도 있습니다.

따라서 이 그래프만으로 식물이 실제로 얼마만큼의 물을 흡수했는지를 직접 계산할 수는 없습니다.

하지만 한 가지는 분명하게 관찰할 수 있습니다.

'이 화분이 얼마나 빨리 마르고 있는가'입니다.

그리고 이것은 단순히 현재 토양 수분값 하나를 아는 것과는 다른 정보입니다.

3. 같은 호야도 매번 똑같은 속도로 마르지 않았다

호야 그래프를 다시 보면 각각의 톱니 폭이 다릅니다.

어떤 때에는 비교적 빠르게 하한값에 도달하지만, 어떤 때에는 상당히 오랫동안 천천히 내려갑니다.

즉,

같은 식물도 물을 준 뒤 다음 물주기가 필요한 시점까지 걸리는 시간이 항상 같지 않았습니다.

이것은 1편에서 살펴본 물주기 간격의 최소값과 최대값에서도 나타났습니다.

호야의 물주기 간격은 짧게는 약 5일, 길게는 23일까지 나타났습니다.

같은 호야인데도 4배가 넘는 차이가 발생한 것입니다.

그렇다면 무엇이 이런 차이를 만들었을까요?

4. 식물이 놓인 환경은 계속 변하고 있었다

같은 기간의 실내 온도를 살펴보겠습니다.

여름에는 실내 온도가 30℃를 넘는 구간이 많았지만 가을이 되면서 점차 낮아졌고, 겨울에는 대체로 20℃대 초중반까지 내려갔습니다.

이번에는 대기 습도입니다.

습도 역시 일정하지 않습니다.

여름에는 상대습도가 60~70% 이상인 구간이 많았지만 겨울에는 대체로 더 낮은 수준을 보입니다.

빛도 크게 달라졌습니다.

이 그래프는 2시간마다 측정한 조도 센서의 값을 하루 단위로 합산한 값입니다. 따라서 절대적인 광량 단위라기보다는 하루 동안 식물이 받은 빛의 상대적인 크기를 비교하기 위한 값입니다.

특히 관찰 초기인 여름과 이후 가을·겨울 사이에 상당한 차이가 나타납니다.

결국 식물은 1년 내내 같은 환경에서 살고 있었던 것이 아닙니다.

같은 자리에 놓여 있어도

온도도 변하고,

습도도 변하고,

빛도 변합니다.

따라서 화분이 마르는 속도 역시 계속 달라질 가능성이 있습니다.

5. 스킨답서스에서는 더 촘촘한 톱니가 나타났다

이번에는 같은 시간축에서 스킨답서스의 토양 수분을 보겠습니다.

호야와 마찬가지로 물을 줄 때 센서값이 급격하게 상승하고 이후 서서히 감소하는 톱니 모양이 반복됩니다.

하지만 호야 그래프와 비교하면 전체적으로 톱니가 더 촘촘합니다.

1편에서 계산한 평균 물주기 간격이

호야 12.4일,

스킨답서스 9.9일

이었던 것과 일치하는 모습입니다.

즉, 단순히 통계표의 평균값만 다른 것이 아니라 1년 가까운 실제 시계열 데이터에서도 두 식물의 서로 다른 물주기 리듬을 눈으로 확인할 수 있습니다.

6. 중요한 것은 '현재 수분'만이 아닐지도 모른다

여기서 조금 다른 생각을 해볼 수 있습니다.

예를 들어 오늘 두 화분의 토양 수분 센서값이 똑같이 1500이라고 가정해 보겠습니다.

그러면 두 식물의 상태도 같다고 볼 수 있을까요?

반드시 그렇지는 않을 것입니다.

한 화분은 어제 1800에서 오늘 1500으로 빠르게 떨어지고 있을 수도 있고, 다른 화분은 며칠 동안 1550 근처에 머물다가 오늘 1500이 되었을 수도 있습니다.

두 화분 모두 현재값은 1500이지만,

마르고 있는 속도는 전혀 다릅니다.

이 차이는 앞으로 언제 물이 필요할지를 판단할 때 상당히 중요한 정보가 될 수 있습니다.

그래서 토양 수분 데이터를 볼 때는

현재 얼마나 젖어 있는가?

뿐만 아니라,

얼마나 빠르게 마르고 있는가?

도 함께 볼 필요가 있습니다.

7. 물주기를 '날짜'가 아니라 '사이클'로 생각해보면

보통 식물 물주기는 이런 식으로 설명됩니다.

"일주일에 한 번 물을 주세요."

"겨울에는 2주에 한 번 주세요."

물론 처음 식물을 키울 때는 유용한 기준입니다.

하지만 실제 데이터를 보면 조금 다른 모습이 나타납니다.

호야 하나만 보더라도 물주기 간격이 5일에서 23일까지 달라졌습니다.

그렇다면 '12일마다 물을 준다'는 것보다,

물을 준다 → 토양이 젖는다 → 서서히 마른다 → 일정 수준에 도달한다 → 다시 물을 준다

라는 하나의 건조 사이클로 보는 편이 실제 식물의 상태를 더 잘 설명할 수 있습니다.

달력은 시간이 얼마나 지났는지를 알려줍니다.

반면 센서는 화분에서 실제로 무슨 일이 일어나고 있는지를 보여줍니다.

발견 2: 물주기에서 중요한 것은 '며칠이 지났는가'만이 아니라 '얼마나 빠르게 마르고 있는가'다

1편에서는 두 식물의 물주기 주기가 다르다는 것을 발견했습니다.

이번에는 그 안을 조금 더 자세히 들여다봤습니다.

그러자 물을 준 뒤 토양이 다시 마르는 과정이 하나의 반복적인 사이클을 만들고 있었고, 그 사이클의 길이와 형태가 매번 같지 않다는 것을 확인할 수 있었습니다.

그래서 두 번째 발견은 이것입니다.

식물의 물주기를 이해하려면 현재 토양 수분값뿐 아니라 토양이 마르는 속도와 변화의 패턴도 함께 볼 필요가 있습니다.

그렇다면 무엇이 화분을 빨리 마르게 할까?

여기서 다음 질문이 자연스럽게 생깁니다.

왜 어떤 때는 5일 만에 마르고, 어떤 때는 20일 이상 걸렸을까요?

온도가 높아서일까요?

공기가 건조해서일까요?

빛을 많이 받아서일까요?

아니면 이 변수들이 함께 작용한 결과일까요?

다음 글에서는 1년 동안 측정한 온도, 대기 습도, 조도와 실제 토양 건조 속도를 비교해 보겠습니다.

식물 관찰기 3편 — 여름에는 화분이 정말 더 빨리 마를까? 1년 데이터로 본 계절과 물주기

 

__________________________________________________________________

이 글이 도움이 되셨다면 제 홈페이지(댓글에 링크)를 방문해 보세요.

홈페이지에서는 다음과 같은 다양한 콘텐츠를 만나실 수 있습니다.

· 기술 블로그와 학습 자료

· pcb 제작 강의와 최신 소식

· ESP32와 IoT 하드웨어 프로젝트

· KiCad PCB 설계 템플릿 (Github, Gumroad)

· 펌웨어 개발

배우고, 만들고, 함께 성장하는 메이커들을 위한 공간으로 계속 발전시켜 나가겠습니다.

Adafruit STCC4 + SHT41 사용 가이드

실내 공기질을 측정할 때 가장 대표적으로 사용하는 지표 중 하나가 이산화탄소(CO₂) 농도입니다.

사람이 오랫동안 머무르는 밀폐된 공간에서는 호흡으로 인해 CO₂ 농도가 점차 높아집니다. CO₂ 농도가 지나치게 높아지면 공기가 답답하게 느껴지고 피로감이나 집중력 저하를 경험할 수도 있습니다.

참고로 신선한 야외 공기의 CO₂ 농도는 대략 400 ppm 수준입니다.

그런데 CO₂를 직접 측정하는 센서는 생각보다 까다롭습니다.

기존의 NDIR 방식 CO₂ 센서는 비교적 정확하지만 센서 크기가 크고 가격도 높은 편입니다. 반면 SGP30과 같은 저렴한 가스 센서는 VOC(휘발성 유기화합물)를 측정하여 CO₂ 농도를 간접적으로 추정하는 방식이기 때문에 실제 CO₂ 농도를 직접 측정하는 센서와는 차이가 있습니다.

이번에 살펴볼 Adafruit STCC4 + SHT41 브레이크아웃 보드는 조금 다른 접근법을 사용합니다.

초소형 열전도식 CO₂ 센서 STCC4와 고정밀 온습도 센서 SHT41을 하나의 작은 보드에 결합한 제품입니다.

작은 크기와 낮은 소비전력이 특히 흥미로운 센서입니다.


1. STCC4는 어떻게 CO₂를 측정할까?

STCC4에서 가장 흥미로운 부분은 CO₂를 측정하는 방식입니다.

일반적으로 많이 사용하는 CO₂ 센서는 NDIR(비분산 적외선) 방식입니다. CO₂가 특정 파장의 적외선을 흡수하는 특성을 이용하여 농도를 측정합니다.

STCC4는 이와 달리 열전도율(Thermal Conductivity, TC)을 이용합니다.

STCC4 센서 자체의 크기는 약

4 × 3 × 1.2 mm

정도로 상당히 작습니다.

센서 내부의 작은 측정 공간(Cavity)에 있는 공기를 가열한 뒤 주변으로 열이 얼마나 전달되는지를 측정합니다.

기체마다 열을 전달하는 정도, 즉 열전도율이 서로 다르기 때문에 이 차이를 이용하여 CO₂ 농도의 변화를 알아내는 것입니다.

개념적으로 표현하면 다음과 같습니다.

공기 유입

센서 내부의 공기 가열

열이 주변으로 전달되는 정도 측정

기체의 열전도 특성 분석

CO₂ 농도 계산

광학계가 필요한 NDIR 센서와 비교하면 구조를 상당히 작게 만들 수 있다는 장점이 있습니다.


2. 열전도식 CO₂ 센서의 장단점

물론 열전도 방식이 모든 상황에서 NDIR 센서보다 좋은 것은 아닙니다.

열전도율은 CO₂뿐만 아니라 주변에 존재하는 다른 기체의 구성에도 영향을 받을 수 있습니다.

따라서 특수한 가스가 존재하는 산업 환경이나 매우 높은 정확도가 필요한 과학 측정에는 적합하지 않을 수 있습니다.

하지만 우리가 일반적으로 CO₂ 센서를 사용하는 환경을 생각해 보면 이야기가 조금 달라집니다.

예를 들어

  • 사무실
  • 회의실
  • 교실
  • 침실
  • 거실
  • 작업실
  • 스마트홈
  • 실내 식물 재배 공간

등에서는 주로 사람의 호흡이나 환기 상태에 따른 CO₂ 변화를 관찰합니다.

이런 용도에서는 작은 크기와 낮은 소비전력을 가진 STCC4가 상당히 매력적인 선택지가 될 수 있습니다.

특히 "정밀 분석 장비"보다는 환기가 필요한 시점을 판단하는 IoT 센서에 더 잘 어울리는 제품이라고 볼 수 있습니다.


3. STCC4와 SHT41을 하나의 보드에

Adafruit 보드의 또 다른 특징은 STCC4만 탑재되어 있는 것이 아니라 Sensirion SHT41 온습도 센서도 함께 들어 있다는 것입니다.

SHT41은 소형 IoT 장치에서 사용하기 좋은 고정밀 온습도 센서입니다.

대표적인 사양은 다음과 같습니다.

상대습도 정확도

전형 오차 약 ±1.8% RH

온도 정확도

전형 오차 약 ±0.2°C

온습도 측정 성능이 상당히 좋은 편입니다.

따라서 하나의 작은 보드로

CO₂ + 온도 + 상대습도

세 가지 주요 실내 환경 데이터를 동시에 측정할 수 있습니다.


4. SHT41을 별도로 제어할 필요가 없다

여기서 재미있는 설계가 하나 더 있습니다.

SHT41은 일반적인 방식으로 메인 I2C 버스에 병렬 연결되어 있는 것이 아니라 STCC4의 보조 I2C 인터페이스에 연결되어 있습니다.

즉 마이크로컨트롤러 입장에서는 STCC4와 SHT41을 각각 따로 관리할 필요가 없습니다.

STCC4에 데이터를 요청하면 STCC4가 SHT41의 온습도 데이터까지 함께 처리하여 전달할 수 있습니다.

덕분에 개발자는 하나의 센서 시스템처럼 다룰 수 있습니다.

여러 환경 센서를 하나의 IoT 장치에 넣어야 할 때는 이런 구조가 꽤 편리합니다.


5. 주요 하드웨어 사양

STCC4의 CO₂ 측정 범위는

400 ~ 5,000 ppm

입니다.

실내 환경 모니터링 용도로는 충분히 넓은 범위입니다.

CO₂ 측정 정확도는

±(100 ppm + 측정값의 10%)

수준입니다.

따라서 고정밀 계측용 센서라기보다는 실내 CO₂ 변화와 환기 필요성을 파악하는 용도에 적합하다고 보는 것이 좋습니다.

동작 전압은 3.3V ~ 5V를 지원하기 때문에 Arduino 계열뿐 아니라 ESP32, Raspberry Pi 등과 연결하기도 편리합니다.


6. 소비전력이 상당히 낮다

개인적으로 STCC4에서 눈에 띄는 부분 중 하나는 낮은 소비전력입니다.

Single-shot 방식으로 측정할 경우 평균 소비전류를 100 µA 이하 수준으로 낮출 수 있습니다.

SHT41 역시 대기 상태에서 소비전력이 매우 낮은 센서입니다.

이 특징은 배터리 기반 IoT 장치를 만들 때 특히 중요합니다.

예를 들어 센서를 계속 켜두는 대신,

Deep Sleep

일정 시간 후 Wake-up

CO₂ / 온도 / 습도 측정

Wi-Fi 또는 BLE 전송

다시 Deep Sleep

같은 구조로 동작시키면 배터리 기반의 장기 환경 모니터링 장치를 만드는 것도 가능합니다.

항상 전원이 연결된 실내 공기질 모니터뿐 아니라 무선 환경 센서 노드에도 활용할 수 있는 이유입니다.


7. I2C 주소

STCC4의 기본 I2C 주소는

0x64입니다.

하드웨어 설정을 통해

0x65로 변경할 수도 있습니다.

SHT41 자체의 I2C 주소는

0x44입니다.

다만 앞에서 설명했듯이 이 보드에서는 SHT41이 STCC4의 보조 I2C 인터페이스에 연결되어 있기 때문에 일반적인 사용에서는 STCC4를 중심으로 데이터를 읽게 됩니다.


8. STEMMA QT로 간단하게 연결

Adafruit 센서 보드답게 연결도 상당히 간단합니다.

보드 양쪽에는 STEMMA QT 커넥터가 있습니다.

SparkFun의 Qwiic 시스템과 호환되기 때문에 케이블을 연결하는 것만으로

전원

SDA

SCL

GND

연결을 모두 해결할 수 있습니다.

납땜 없이 센서를 테스트할 수 있다는 것이 큰 장점입니다.

물론 일반적인 0.1인치 피치 헤더 핀도 사용할 수 있기 때문에 브레드보드에 꽂아 테스트하는 것도 가능합니다.


9. Arduino와 Python 모두 지원

소프트웨어 지원도 잘 되어 있습니다.

Arduino 환경뿐 아니라 CircuitPython / Python에서도 사용할 수 있기 때문에 ESP32, Arduino 계열 MCU부터 Raspberry Pi까지 다양한 플랫폼에서 활용할 수 있습니다.

따라서 간단한 실내 CO₂ 모니터부터 클라우드에 데이터를 전송하는 IoT 환경 센서까지 비교적 쉽게 확장할 수 있습니다.


10. 사용할 때 중요한 점: 주기적인 자가 교정

STCC4를 사용할 때 반드시 알아둘 부분이 있습니다.

바로 자가 교정(Self-calibration)입니다.

센서의 정확도를 장기간 유지하려면 주기적으로 신선한 외부 공기에 노출시켜 기준점을 잡을 수 있도록 해주는 것이 좋습니다.

일반적으로 신선한 야외 공기는 CO₂ 농도가 약 400 ppm 수준이므로 이를 기준으로 센서가 보정될 수 있습니다.

권장되는 방법은 대략 일주일에 한 번 정도 신선한 야외 공기에 노출시키는 것입니다.

따라서 완전히 밀폐된 공간에 센서를 장기간 설치하는 경우에는 이 부분을 고려해야 합니다.


11. STCC4는 어떤 프로젝트에 적합할까?

이 센서의 특징을 종합하면 방향이 꽤 명확합니다.

STCC4는 최고의 정밀도를 목표로 하는 CO₂ 분석 센서라기보다는

"작고 전기를 적게 사용하는 실내 CO₂ 센서"

에 가깝습니다.

그래서 다음과 같은 프로젝트에 특히 잘 어울립니다.

  • ESP32 기반 실내 공기질 모니터
  • 스마트 환기 시스템
  • 사무실 및 회의실 CO₂ 모니터
  • 스마트홈 환경 센서
  • 식물 재배 환경 모니터
  • 배터리 기반 무선 환경 센서
  • 데이터 로거
  • IoT 환경 모니터링 노드

특히 CO₂ + 온도 + 습도를 하나의 작은 보드에서 측정할 수 있다는 점은 환경 모니터링 프로젝트에서 상당히 편리합니다.


마무리

CO₂ 센서는 오랫동안 NDIR 방식이 사실상 표준처럼 사용되어 왔습니다.

정확도 측면에서는 여전히 NDIR 방식이 유리한 경우가 많지만, IoT 장치를 직접 만들어 보면 센서의 크기와 소비전력 역시 매우 중요한 설계 조건이라는 것을 알게 됩니다.

STCC4는 열전도율이라는 다른 물리적 원리를 이용해 이 문제에 접근합니다.

400 ~ 5,000 ppm의 CO₂ 측정 범위, 초소형 크기, 낮은 소비전력, 그리고 SHT41을 이용한 정밀 온습도 측정까지 하나의 작은 보드에 넣었다는 것이 가장 큰 특징입니다.

ESP32나 Raspberry Pi를 이용해서 작은 실내 공기질 모니터나 배터리 기반 환경 IoT 센서를 만들어보고 싶다면 꽤 흥미로운 선택지가 될 것 같습니다.

+ Recent posts