센서 데이터를 수집하는 시스템을 만들려고 하면 보통 아두이노 IDE를 설치하고, 센서별 라이브러리를 찾고, 예제 코드를 수정한 뒤 배선과 납땜까지 해야 합니다.

여러 센서를 동시에 사용하거나 데이터를 클라우드로 전송하려면 작업은 더욱 복잡해집니다.

SparkFun DataLogger IoT(SKU: DEV-22462)는 이러한 과정을 크게 줄여주는 제로 코드(Zero-code) 데이터 로거입니다.

Qwiic 케이블로 센서를 연결하고 전원을 켜면 호환 센서를 자동으로 감지하고 설정해 데이터를 기록합니다. 복잡한 펌웨어를 직접 작성하지 않고도 환경 모니터링, 위치 추적, 장비 상태 기록과 같은 프로젝트를 빠르게 시작할 수 있습니다.

Qwiic 센서를 연결하면 자동으로 인식

SparkFun DataLogger IoT의 가장 큰 장점은 플러그 앤 플레이 방식의 자동 감지 기능입니다.

보드가 켜지면 Qwiic 버스에 연결된 센서를 검색하고, 지원되는 장치라면 자동으로 설정합니다.

Qwiic은 I²C 기반 연결 시스템으로, 커넥터 방향이 정해져 있어 배선 실수를 줄일 수 있고 납땜 없이 여러 센서를 연속으로 연결할 수 있습니다. 센서별 주소와 초기화 코드를 직접 관리해야 하는 부담도 줄어듭니다.

자동 감지를 지원하는 센서와 장치의 범위도 매우 넓습니다.

위치 및 GPS(GNSS)

u-blox의 ZED-F9P, NEO-M9N, MAX-M10S 등과 연결하면 위도, 경도, 고도, 이동 속도, 시간 정보를 기록할 수 있습니다.

이동체 추적, 야외 관측 장비, 현장 데이터 수집 시스템 등에 활용하기 좋습니다.

거리 및 움직임 감지

VL53L1X, VL53L5, TMF8820과 같은 ToF(Time-of-Flight) 센서 및 이미저를 이용하면 물체와의 거리, 움직임, 근접 여부, 공간 내 재실 상태 등을 측정할 수 있습니다.

환경 및 대기질 측정

BME280, CCS811, SGP40, SCD40, ENS160 등의 센서를 조합하면 온도, 습도, 기압, 이산화탄소, VOC 등 다양한 환경 정보를 기록할 수 있습니다.

실내 공기질 측정기, 스마트팜, 식물 생육환경 모니터, 창고 및 연구실 환경 기록 시스템을 비교적 간단하게 구성할 수 있습니다.

전문 측정 장치

이 밖에도 바이오메트릭 허브, NAU7802 기반 Qwiic 정밀 저울, 전력량계, 고정밀 ADC, RGB 인코더, RFID 및 Dynamic NFC/RFID Tag 등 다양한 전문 보드를 지원합니다.

지원 장치는 펌웨어 업데이트를 통해 추가될 수 있으므로, 실제 프로젝트를 시작하기 전에는 SparkFun이 제공하는 최신 호환 장치 목록을 확인하는 것이 좋습니다.

데이터는 microSD 카드에 CSV 또는 JSON으로 저장

측정된 데이터는 보드에 장착한 microSD 카드에 직접 저장할 수 있습니다.

최대 32GB 용량의 FAT16 또는 FAT32 형식 카드를 지원하며, 저장 형식은 CSV 또는 JSON 중에서 선택할 수 있습니다.

  • CSV: 엑셀, 구글 스프레드시트, Python, MATLAB 등으로 데이터를 분석할 때 편리합니다.
  • JSON: 웹 서비스, 서버, 데이터베이스 또는 애플리케이션과 연동할 때 유용합니다.

인터넷 연결이 불안정한 야외나 지하 공간에서는 SD 카드에 데이터를 보관하고, 네트워크에 연결할 수 있는 환경에서는 클라우드 전송 기능을 함께 사용하는 방식으로 시스템을 구성할 수 있습니다.

ESP32-WROOM-32E를 이용한 Wi-Fi 및 클라우드 연결

SparkFun DataLogger IoT에는 ESP32-WROOM-32E 모듈이 탑재되어 있습니다.

2.4GHz Wi-Fi를 통해 측정 데이터를 로컬에 저장하는 데 그치지 않고 여러 IoT 플랫폼과 서버로 전송할 수 있습니다.

지원하는 주요 연결 방식과 서비스는 다음과 같습니다.

  • MQTT Client 및 MQTT Secure Client
  • AWS IoT
  • Microsoft Azure IoT
  • ThingSpeak MQTT
  • Arduino Cloud
  • MachineChat
  • HTTP IoT

MQTT와 HTTP를 지원하므로 상용 IoT 플랫폼뿐 아니라 직접 구축한 서버나 대시보드와 연결하는 것도 가능합니다.

센서 데이터를 원격으로 확인하거나 여러 장소의 측정값을 한곳에 모아 관리하려는 프로젝트에 적합합니다.

초당 26회부터 하루 1회까지 기록 주기 설정

측정 주기는 프로젝트의 목적에 맞게 폭넓게 설정할 수 있습니다.

빠르게 변하는 현상을 관찰할 때는 초당 최대 약 26회까지 기록할 수 있으며, 장기간의 환경 변화를 확인할 때는 24시간에 한 번만 측정하도록 설정할 수도 있습니다.

예를 들어 다음과 같이 사용할 수 있습니다.

  • 움직임이나 장비 상태 변화: 짧은 간격으로 빠르게 기록
  • 실내 온습도와 공기질: 수분 또는 수십 분 간격으로 기록
  • 토양 수분과 식물 생육환경: 수십 분 또는 수시간 간격으로 기록
  • 야외 장기 관측: 하루 수회 또는 하루 1회 기록

기록 주기를 늘리면 데이터의 시간 해상도는 낮아지지만 전력 소비와 저장 공간 사용량을 줄일 수 있습니다.

따라서 실제 프로젝트에서는 필요한 변화 속도와 배터리 사용 시간을 함께 고려해야 합니다.

약 200µA의 초저전력 슬립 모드

슬립 모드가 활성화되었을 때 소비 전류는 약 200µA 수준입니다.

측정 사이에 보드를 슬립 상태로 두면 배터리 기반의 장기 모니터링 장치를 구성하는 데 유리합니다.

다만 실제 배터리 지속 시간은 연결한 센서의 수와 소비전력, Wi-Fi 접속 시간, 데이터 전송 빈도, 측정 주기, 배터리 용량 등에 따라 크게 달라질 수 있습니다.

특히 Wi-Fi 연결과 클라우드 전송은 순간적으로 비교적 큰 전류를 사용하므로, 장기 운용이 목적이라면 전송 횟수를 줄이고 데이터를 일정량 모아 한꺼번에 보내는 방식을 고려할 수 있습니다.

LiPo 충전 회로와 배터리 잔량 측정 기능 내장

보드에는 싱글셀 LiPo 배터리를 위한 MCP73831 충전 회로가 내장되어 있으며, 충전 전류는 약 500mA로 설정되어 있습니다.

또한 MAX17048 LiPo 연료 게이지를 통해 배터리 잔량을 모니터링할 수 있습니다.

전원은 다음과 같은 방식으로 공급할 수 있습니다.

  • USB Type-C
  • VIN 포트
  • LiPo 배터리 커넥터

USB-C로 개발과 설정을 진행한 뒤, 실제 설치 환경에서는 LiPo 배터리로 운용하는 구성이 가능합니다.

배터리 잔량까지 데이터로 관리할 수 있어 원격 설치 장비의 유지보수 시점을 판단하는 데도 도움이 됩니다.

시리얼 메뉴로 간단하게 설정

별도의 그래픽 프로그램을 설치하지 않아도 시리얼 터미널에서 주요 기능을 설정할 수 있습니다.

  1. 보드와 PC를 USB-C 케이블로 연결합니다.
  2. 시리얼 터미널을 열고 통신 속도를 115200 baud로 설정합니다.
  3. 키보드의 아무 키나 누릅니다.
  4. 화면에 표시되는 텍스트 기반 메뉴에서 센서, 기록 주기, 파일 형식, Wi-Fi 및 클라우드 연결 등을 설정합니다.

메뉴 방식이라 각종 설정값을 코드 안에서 찾아 수정하고 다시 컴파일하는 과정이 필요 없습니다.

코딩에 익숙하지 않은 사용자도 안내에 따라 데이터 로깅 시스템을 구성할 수 있고, 개발자에게는 초기 프로토타입 제작 시간을 줄여준다는 장점이 있습니다.

OTA와 microSD를 이용한 펌웨어 업데이트

새로운 센서 지원이나 기능이 추가되었을 때는 Wi-Fi를 이용한 OTA(Over-the-Air) 업데이트를 실행할 수 있습니다.

네트워크 사용이 어려운 경우에는 최신 펌웨어 파일을 microSD 카드에 저장한 뒤 보드를 부팅하는 방식으로도 업데이트할 수 있습니다.

직접 소스 코드를 내려받아 개발 환경을 구성하고 펌웨어를 빌드하지 않아도 되므로, 여러 대의 데이터 로거를 운용하거나 현장 장비를 관리할 때 특히 편리합니다.

어떤 프로젝트에 활용할 수 있을까?

SparkFun DataLogger IoT는 센서 조합에 따라 다양한 시스템의 중심 장치로 활용할 수 있습니다.

  • 온도·습도·CO₂·VOC를 기록하는 실내 공기질 모니터
  • 토양 수분·온습도·조도를 측정하는 식물 생육환경 기록 장치
  • GNSS와 환경 센서를 결합한 이동형 야외 관측 장비
  • ToF 센서를 이용한 거리·재실·움직임 모니터
  • 로드셀과 NAU7802를 이용한 무게 변화 기록 시스템
  • 전압·전류·전력 사용량을 기록하는 에너지 모니터
  • RFID/NFC와 센서를 결합한 시료 및 물품 관리 시스템

특히 센서 조합을 먼저 시험해 보고 싶은 연구자, 메이커, 교육자에게 유용합니다.

제로 코드 방식으로 측정 가능성을 빠르게 확인한 뒤, 필요에 따라 전용 하드웨어나 맞춤형 펌웨어로 발전시키는 프로토타이핑 도구로 사용할 수 있습니다.

마무리

SparkFun DataLogger IoT는 센서 자동 감지, SD 카드 기록, Wi-Fi 클라우드 전송, 저전력 동작, 배터리 관리 기능을 한 보드에 통합한 제품입니다.

Qwiic 센서를 연결하고 메뉴에서 필요한 항목을 설정하는 것만으로 데이터 수집을 시작할 수 있다는 점이 가장 큰 특징입니다.

아두이노 환경 설정과 라이브러리 관리, 센서 초기화 코드 작성에 시간을 들이기보다 실제 측정과 데이터 분석에 집중하고 싶다면 매력적인 선택지가 될 수 있습니다.

여러 종류의 센서를 빠르게 조합해 아이디어를 검증하려는 경우에도 활용 가치가 높습니다.

여러분이라면 이 데이터 로거에 어떤 센서를 연결해 보고 싶으신가요?

온습도와 CO₂를 이용한 실내 공기질 모니터, 토양 수분과 조도를 이용한 식물 환경 기록 장치, 또는 GNSS를 결합한 야외 관측 시스템도 흥미로운 프로젝트가 될 수 있습니다.

#SparkFun #DataLoggerIoT #데이터로거 #제로코드 #Qwiic #ESP32 #ESP32WROOM32E #IoT #사물인터넷 #센서 #센서데이터 #데이터수집 #환경모니터링 #스마트팜 #메이커 #아두이노 #MQTT #AWSIoT #AzureIoT #ThingSpeak #microSD #OTA #임베디드시스템 #전자공작

Espressif가 ESP32-C61-MINI-1과 ESP32-C61-MINI-1U 모듈의 판매를 시작했습니다.

ESP32-C61은 2.4GHz Wi-Fi 6(802.11ax)와 Bluetooth LE 5.3을 지원하는 저가형 RISC-V MCU입니다.

특히 새롭게 등장한 MINI 모듈은 크기가 작으면서도 Wi-Fi 6, BLE, USB Serial/JTAG, ADC 등 IoT 기기에 필요한 주요 기능을 갖추고 있습니다.

기사 작성 시점 기준으로 5개 묶음이 약 10.7달러에 판매되어, 모듈 하나당 약 2달러 수준이라는 점도 눈에 띕니다.


1. ESP32-C61이란?

ESP32-C61은 Espressif가 저가형 IoT 시장을 겨냥해 개발한 MCU입니다.

기본 구조는 다음과 같습니다.

  • 32비트 RISC-V 싱글코어
  • 최대 클럭 160MHz
  • SRAM 320KB
  • ROM 256KB
  • 최대 8MB Quad SPI Flash
  • 최대 8MB PSRAM
  • 2.4GHz Wi-Fi 6
  • Bluetooth LE 5.3
  • 최대 23 GPIO

기존 ESP32-C6와 비슷한 위치에 있지만 중요한 차이가 있습니다.

ESP32-C6가 Wi-Fi + BLE뿐 아니라 IEEE 802.15.4도 지원하는 반면, ESP32-C61에는 802.15.4 무선 기능이 없습니다. 따라서 Thread나 Zigbee가 필요하지 않고 Wi-Fi와 BLE만 사용하는 IoT 제품이라면 C61이 훨씬 흥미로운 선택지가 됩니다.


2. ESP32-C61-MINI-1과 MINI-1U

ESP32-C61 MINI 시리즈는 두 가지 안테나 버전으로 제공됩니다.

ESP32-C61-MINI-1

PCB 안테나가 모듈에 내장된 일반적인 형태입니다.

크기는 약

13.2 × 16.6 × 2.4mm

입니다.

별도의 외부 안테나가 필요하지 않으므로 일반적인 센서 노드, 스마트홈 기기, 소형 IoT 장치 등에 사용하기 편리합니다.

ESP32-C61-MINI-1U

기본 기능은 MINI-1과 거의 같지만 PCB 안테나 대신 외부 안테나 커넥터를 사용합니다.

공식 데이터시트 기준 모듈 본체 크기는 약

13.2 × 12.5 × 2.4mm

입니다.

따라서 금속 케이스 내부에 모듈을 설치하거나, 안테나 위치를 PCB와 분리해야 하거나, 외장 안테나를 사용해 RF 성능을 확보해야 하는 제품에 적합합니다.


3. CPU와 메모리

ESP32-C61의 CPU는

32-bit RISC-V Single Core / 최대 160MHz

입니다.

ESP32-S3처럼 고성능 듀얼코어 MCU는 아닙니다.

대신 센서 측정, Wi-Fi 통신, BLE 연결, MQTT, HTTP API, 스마트홈 장치 같은 일반적인 IoT 애플리케이션에는 충분한 수준입니다.

메모리는 다음과 같습니다.

항목
사양
CPU
32-bit RISC-V
Core
Single Core
최대 클럭
160MHz
SRAM
320KB
ROM
256KB
Flash
최대 8MB
PSRAM
최대 8MB

특히 최대 8MB PSRAM을 구성할 수 있다는 점은 작은 IoT 모듈치고 상당히 유용합니다.


4. 핵심은 Wi-Fi 6

ESP32-C61의 가장 중요한 특징은 저렴한 가격보다는 Wi-Fi 6 지원이라고 볼 수 있습니다.

2.4GHz 대역에서 IEEE 802.11ax를 지원하며 Wi-Fi 6 모드에서는 20MHz 채널을 사용합니다.

주요 기능에는 다음이 포함됩니다.

  • MCS0 ~ MCS9
  • Uplink OFDMA
  • Downlink OFDMA
  • Downlink MU-MIMO
  • Beamformee
  • CQI
  • DCM
  • Spatial Reuse
  • Target Wake Time(TWT)

특히 IoT 장치에서는 OFDMA와 TWT에 주목할 만합니다.


5. TWT가 IoT에서 중요한 이유

TWT(Target Wake Time)는 Wi-Fi 6에서 IoT 개발자에게 상당히 흥미로운 기능입니다.

기존 Wi-Fi IoT 장치는 AP와의 연결을 유지하기 위해 주기적으로 깨어나 통신해야 합니다.

TWT를 사용하면 AP와 장치가 "언제 깨어나서 통신할 것인가"를 미리 조정할 수 있습니다.

따라서 배터리 기반 센서 노드처럼 대부분의 시간을 절전 상태에서 보내고 필요할 때만 통신하는 장치에서 전력 소비를 줄이는 데 도움이 될 수 있습니다.

물론 실제 배터리 수명은 AP의 TWT 지원 여부, 펌웨어 구현, Wi-Fi 연결 시간, RF 환경, 센서 소비전력 등에 따라 크게 달라집니다.

따라서 단순히 "Wi-Fi 6이므로 배터리 수명이 길다"고 판단하기보다는 실제 제품 환경에서 측정해야 합니다.


6. 기존 Wi-Fi 공유기에서도 사용할 수 있을까?

가능합니다.

ESP32-C61은 Wi-Fi 6만 지원하는 것이 아니라 기존 IEEE 802.11b/g/n과도 호환됩니다.

Wi-Fi 4(802.11n)에서는 20MHz와 40MHz 대역폭을 지원하며 최대 데이터 속도는 150Mbps입니다.

따라서 반드시 Wi-Fi 6 공유기를 사용해야 하는 것은 아닙니다.

기존 2.4GHz Wi-Fi 네트워크에서도 사용할 수 있다는 의미입니다.


7. Bluetooth LE 5.3

ESP32-C61은 Bluetooth LE 5.3 인증을 지원합니다.

주요 기능은 다음과 같습니다.

  • BLE Mesh
  • 최대 20dBm High Power Mode
  • 125kbps
  • 500kbps
  • 1Mbps
  • 2Mbps
  • Advertising Extensions
  • Multiple Advertisement Sets
  • Channel Selection Algorithm #2
  • LE Power Control

Wi-Fi와 Bluetooth는 하나의 안테나를 공유하기 때문에 내부적으로 두 무선 시스템을 위한 coexistence 기능도 제공합니다.

이 구성은 특히 IoT 제품에 유용합니다.

예를 들어 초기 설정에서는 스마트폰과 BLE로 연결하고,

스마트폰 → BLE → ESP32-C61 → Wi-Fi 설정 → Cloud

방식으로 Wi-Fi SSID와 비밀번호를 전달한 뒤 이후에는 Wi-Fi를 통해 클라우드와 통신하는 구조를 만들 수 있습니다.


8. 사용할 수 있는 주변장치

작은 MINI 모듈이지만 MCU 주변장치는 상당히 다양합니다.

대표적으로 다음 기능을 사용할 수 있습니다.

  • GPIO
  • SPI
  • UART
  • I2C
  • I2S
  • LED PWM
  • USB Serial/JTAG
  • GDMA
  • JTAG Debug
  • ADC
  • 내부 Temperature Sensor
  • Analog Voltage Comparator
  • General-purpose Timer
  • System Timer
  • Watchdog Timer

센서 기반 IoT 장치를 만들기에는 충분한 구성입니다.


9. USB Serial/JTAG 지원

개발자 입장에서 반가운 부분 중 하나가 USB Serial/JTAG Controller입니다.

USB를 이용해 디버깅과 시리얼 통신을 구성할 수 있기 때문에, PCB 설계에 따라 별도의 USB-to-UART 칩 없이 개발 인터페이스를 구성할 수 있습니다.

ESP32 보드를 직접 설계하는 경우 CH340, CP2102 같은 별도 USB-UART IC의 필요성을 줄일 수 있어 PCB 공간과 BOM 비용을 절약할 가능성이 있습니다.

다만 실제 제품 PCB에서는 USB 회로, ESD 보호, 부트/다운로드 방식 등을 데이터시트와 Hardware Design Guideline에 맞춰 설계하는 것이 좋습니다.


10. 전원 조건

모듈의 권장 전원 범위는

3.0 ~ 3.6V

입니다.

따라서 일반적으로 3.3V 전원 시스템을 사용하면 됩니다.

동작 온도 범위는

-40°C ~ +85°C

입니다.

배터리 기반 제품을 설계한다면 단순히 MCU의 평균 소비전력만 볼 것이 아니라 Wi-Fi 송신 시 순간 전류를 충분히 공급할 수 있도록 전원 IC와 디커플링 커패시터를 설계해야 합니다.


11. 어떤 모듈을 선택해야 할까?

일반적인 IoT 제품이라면 우선 ESP32-C61-MINI-1을 고려할 수 있습니다.

PCB 안테나가 이미 내장되어 있기 때문에 외부 안테나와 커넥터가 필요하지 않습니다.

반면 다음과 같은 상황에서는 MINI-1U가 유리합니다.

  • 금속 케이스 사용
  • 외부 안테나 필요
  • PCB 위치 때문에 안테나 영역 확보가 어려움
  • 안테나를 제품 외부로 분리해야 함
  • 특정 방향으로 RF 성능을 확보해야 함

단, MINI-1의 PCB 안테나를 사용할 경우에는 모듈 주변의 copper keep-out과 PCB 배치 조건을 반드시 공식 권장 레이아웃에 맞춰야 합니다.


12. 개발 환경

현재 가장 확실한 개발 방법은 ESP-IDF입니다.

CNX Software에 따르면 ESP-IDF 6.0부터 ESP32-C61 지원이 포함되었습니다.

따라서 새로운 프로젝트를 시작한다면 ESP-IDF 기반 개발이 가장 자연스럽습니다.

Arduino도 지원되지만 현재는 일반 ESP32처럼 Arduino IDE에서 보드를 선택해 바로 사용하는 수준과는 조금 다릅니다.

기사에서 소개한 현재 방식은 Arduino-ESP32를 ESP-IDF Component로 사용

하거나 필요한 static library를 다시 빌드하는 방법입니다.

따라서 Arduino 중심의 초보 개발자라면 생태계가 조금 더 성숙할 때까지 기다리는 것도 방법입니다.


13. 개발을 시작하려면

처음부터 MINI 모듈로 PCB를 만드는 것보다는 개발보드로 시작하는 것이 편합니다.

현재 사용할 수 있는 보드 중 하나가 ESP32-C61-DevKitC-1-N8R2입니다.

기사에서는 해당 개발보드가 약 9달러 수준에 판매되고 있다고 소개합니다. CircuitPython 역시 해당 보드를 위한 alpha 버전이 확인되고 있습니다.

따라서 개발 순서는 대략

DevKit 구입 → ESP-IDF 테스트 → Wi-Fi/BLE 테스트 → 소비전력 측정 → Custom PCB 설계 순서가 안전합니다.


14. ESP32-C6와 무엇이 다른가?

ESP32-C61을 이해하는 가장 쉬운 방법은 ESP32-C6의 저가형 변형이라고 보는 것입니다.

ESP32-C6는 Wi-Fi 6와 BLE 외에도 IEEE 802.15.4를 지원하기 때문에 Zigbee와 Thread 기반 제품을 만들 수 있습니다.

반면 ESP32-C61은 802.15.4를 제거했습니다.

또한 SRAM도 C6의 512KB보다 작은 320KB입니다.

따라서 선택 기준은 비교적 명확합니다.

Matter over Thread / Zigbee 필요

→ ESP32-C6

Wi-Fi + BLE IoT 제품

→ ESP32-C61을 적극적으로 검토

즉, 사용하지 않는 802.15.4 기능을 빼고 비용을 낮춘 것이 C61의 핵심 포지션이라고 볼 수 있습니다.


15. 어떤 프로젝트에 적합할까?

ESP32-C61-MINI 시리즈는 특히 다음과 같은 장치에 잘 맞습니다.

  • 온습도 센서
  • 식물 모니터링 장치
  • 스마트홈 센서
  • Wi-Fi 데이터 로거
  • 환경 모니터링 장치
  • 스마트 플러그
  • BLE Provisioning이 필요한 Wi-Fi 제품
  • 배터리 기반 무선 센서
  • MQTT 센서 노드
  • 소형 IoT 제품

특히

Sensor → ESP32-C61 → Wi-Fi → Cloud

구조의 제품이라면 상당히 매력적인 선택입니다.

BLE를 함께 사용할 수 있으므로

BLE로 초기 설정 → Wi-Fi로 클라우드 연결

이라는 상용 IoT 제품에서 흔히 사용하는 구조도 구현할 수 있습니다.


16. ESP32-C61의 진짜 의미

ESP32-C61-MINI 시리즈의 가장 흥미로운 부분은 단순히 새로운 ESP32가 하나 더 등장했다는 것이 아닙니다.

저가 IoT MCU의 기본 무선 규격이 Wi-Fi 6로 이동하고 있다는 것에 더 큰 의미가 있습니다.

160MHz RISC-V CPU, Wi-Fi 6, BLE 5.3, USB Serial/JTAG, 최대 8MB Flash와 8MB PSRAM을 지원하는 모듈이 약 2달러 수준까지 내려온다면 저가형 IoT 제품에서도 굳이 오래된 Wi-Fi MCU를 사용할 이유가 점차 줄어들 수 있습니다.

다만 현재는 ESP-IDF 쪽이 가장 안정적인 개발 경로이고 Arduino 지원은 아직 일반적인 ESP32만큼 간단하지 않습니다.

따라서 지금 당장 기존 ESP32 제품을 모두 C61로 변경하기보다는 새로운 Wi-Fi/BLE IoT 제품을 설계할 때 차세대 저가형 후보로 평가해 볼 만한 모듈이라고 보는 것이 적절합니다.

특히 앞으로 Arduino 지원, 인증 현황, 실제 저전력 성능, 모듈 공급가격이 안정화된다면 ESP32-C61은 ESP32-C3/C6 계열과 함께 상당히 많이 사용되는 IoT용 MCU가 될 가능성이 있습니다.

___________________________________________________________________________

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

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

·        기술 블로그와 학습 자료

·        pcb 제작 강의와 최신 소식

·        ESP32 IoT 하드웨어 프로젝트

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

·        펌웨어 개발

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



 

#Espressif #ESP32C6 #ESP32C61 #개발보드 #DIY #MCU

아두이노나 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)

· 펌웨어 개발

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

+ Recent posts