Mobile QR Code QR CODE : Journal of the Korean Institute of Illuminating and Electrical Installation Engineers

Journal of the Korean Institute of Illuminating and Electrical Installation Engineers

ISO Journal TitleJ Korean Inst. IIIum. Electr. Install. Eng.

  1. (Researcher, Cherwon Plasma Research Institute, Korea)



Arduino, Lighting system, Smart farm, Dimming, Modbus

1. 서 론

스마트 농업 (Smart Farming)은 정보통신 반도체칩의 보편화로 인해 정보통신기술(ICT)이 농업에 접목된 혁신적인 농업기술이다. 정보통신 반도체칩은 IoT (Internet of Things)칩으로 WiFi, BLE, ZigBee, LoRa 등의 통신을 지원하는 MCU(Micro Control Unit)들이다. 시장조사기업 IOT ANALYTICS의 State of IoT Summer 2024 보고서에 따르면[1], 2023년까지 IoT 기기는 166억대로 추정하며, 2024년 말까지 13% 증가하여 188억대에 이를 것으로 예측된다. 또한 2030년까지는 400억대까지 이를 것으로 추산하고 있다.

과거 정보통신기술이 접목된 시설 농업 기술은 IoT칩의 대중화를 통해 스마트팜(Smart Farm)이라는 기술로 발전하고 있다. 과거에는 유선통신(RS485, 이더넷케이블 등)을 통해 네트워크를 구축하고, 네트워크를 관리할 수 있는 서버 컴퓨터에 기업이 개발한 소프트웨어를 설치하여 사용자가 이용했다. 그러나 현재는 IoT칩과 무선통신(WiFi, BLE, LoRa등)을 사용하는 중계기를 통해 무선네트워크를 구축하고, 이를 제어하는 방법으로 다양한 기업에서 제공하는 인터넷 플랫폼을 통해 사용자가 직접 제어 환경을 사용자 맞춤형으로 구축할 수 있게 되었다. 이러한 플랫폼을 이용하려면 사용자는 해당 플랫폼에서 사용하는 컴퓨터 언어를 배워 코딩이라는 작업을 해야 하는데, 이는 일반인에게는 높은 진입 장벽으로 작용한다. 그러나 2020년부터 등장한 생성형 인공지능은 이런 진입장벽을 낮추는 데 큰 역할을 하고 있어[2], 농업 분야에서 스마트팜의 대중화가 더 가속화될 것으로 기대된다.

우리나라 정부 기관도 이런 시대적 흐름에 맞춰 스마트팜 보급과 기술개발에 힘쓰고 있다. 스마트팜 혁신밸리, 스마트팜 청년창업보육센터, 스마트팜 다부처 패키지 혁신기술개발 사업 등 정부 주도로 다양한 지원 사업들을 현재 운영하고 있다. 정부 중심의 노력으로 스마트 농업의 보급을 확대해오고 있지만 그 과정에서 문제점이 드러났다[3-5].

스마트 농업 실태조사 관련한 보고서에 따르면[3], 스마트팜 농가 평균 연령은 50대 후반에서 60대 초반으로 조사되었으며, 스마트팜의 어려움으로 스마트팜 기술 및 장비에 대한 낮은 이해도를 가장 큰 어려움으로 뽑았다. 또한, 설치업체와의 커뮤니케이션, 설치비용 확보가 뒤를 이었다.

스마트팜으로 전환을 희망하거나 창업을 희망하는 농업인들은 IoT형 원격 제어 환경 계측 및 제어 장비를 추가적으로 구입해야한다. 이는 초기 높은 투자비의 주 원인이다[4]. 이런 문제에 직면한 청년 농업인들은 1세대 수준의 스마트팜을 자체 제작해 보고 자료를 공유하고 있다[5]. 환경측정값 확인 및 단순 릴레이 ON/OFF 원격제어는 현재 값싸고 좋은 플랫폼이 많이 공유되고 있어 접근이 쉬워졌기 때문이다[6].

스마트팜에 활용될 수 있는 표준화된 조명 제어 시스템에는 DALI2, DMX512, 혹은 사용자 맞춤형 PLC 시스템을 설계하여 구현할 수 있다. 그러나 해당 방법들은 농업 분야에 활용되기에는 초기 투자비가 높고, 기술적 접근이 어려워 스마트팜에 도입되지 못하고 있다.

본 논문에서는 스마트팜의 조명 제어 시스템을 아두이노를 사용하여 저렴하고 합리적인 비용으로 구축할 수 있는 방안에 대해 소개하고자 한다. 2024년 8월 30일에 개정된 KS C 7751-1:2024의 “표 A.1 - 스마트 조명 시스템의 장치 목록 및 선택 기능” 중 2.2. 조도 감지, 2.3. 최대 밝기 재설정, 2.6 스케줄링 제어와 관련이 있다[7]. 본 논문은 2세대 스마트팜 기술인 타이머 기능이 있는 원격 디밍 제어과 센서값과 연계되는 자동 디밍 제어를 아두이노를 통해 구현하였다. 더불어, 해당 시스템은 4채널까지 확장이 가능하여 4채널 파장가변형 식물 조명이나 층별 제어를 사용할 때 유용할 것으로 기대된다. IoT형 스마트팜을 자체제작해보려는 농업인들에게 이 논문이 도움이 되길 희망한다.

2. 하드웨어 구성

조명 제어 시스템을 구현하기 위해 Table 1의 구성품을 사용하였다. 아두이노는 저전력 Arduino MKR WiFi 1010 모델을 선택하였다. Arduino MKR WiFi 1010은 SAMD21 Cortex-M0+ MCU를 사용하는 시리즈 중 무선통신 WiFi 및 BLE를 지원하는 보드다. 또한 해당 보드는 모드버스와 관련된 아두이노사의 공식 라이브러리 ArduinoModbus를 사용할 수 있다. 해당 라이브러리는 여러 주소의 홀딩레지스터를 한 번의 통신처럼 읽고 쓰는 함수를 제공하는 점이 큰 이점이다.

메인 통신으로는 MAX1348 칩셋으로 기반으로 하는 아두이노 TTL to RS485 모듈을 사용하였다. MAX1348은 자동 흐름 제어를 지원하여 코딩의 난이도를 낮출 수 있다. 시간 제어를 위해서는 DS3231 Real Time Clock (RTC) 모듈을 사용하였다. 센서를 읽기 위해서 별도의 I2C 통신을 사용하는 16비트의 해상도와 4채널 ADC를 제공하는 ADS1115 모듈을 사용하였다. SMPS는 ㈜유니온전자통신의 1-10V 디밍 제어를 갖는 200W 제품을 사용하였다. 광센서로는 Apogree사의 SQ-512-SS를 사용하였다. 해당 센서는 광의 세기에 따라 0-2.5V의 출력전압을 보내며, 보정된 측정 광파장 범위는 400- 700nm 영역이다. 해당 센서의 장점은 식물조명(인공광 환경)에 대한 PPFD Error가 –3.9%로 정확한 센싱값을 보여주는 것이다.

그 외에, 전자회로적으로 0-3.3V의 PWM을 0-10V PWM으로, 0-3.3V의 On/OFF 신호를 0-5V의 On/Off 신호로 바꾸기 위해 PC847과 LM2902N을 사용하는 회로를 구성하였다.

Table 1. Hardware configuration

역할

선택 구성품

MCU

Arduino MKR WiFi 1010

RS485통신

MAX1348 칩셋 모듈

RTC

DS3231 칩셋 모듈

센싱보드

ADS1115 칩셋 모듈

PPFD 센서

SQ-512-SS

전압레벨변경

PC847/LM2902N 자체개발보드

3. 모드버스 레지스터맵 및 기능

조명 제어를 위한 모드버스의 홀딩레지스터맵을 Table 2와 같이 선언하였다. 4개의 채널을 가지는 LED 제어 시스템이며, 1번∼4번 채널은 1층∼4층으로 제어로 대체될 수 있다. 아두이노 상에서는 전역상수로 선언한다.

최상위 제어는 시간제어로, LED제어보드의 홀딩레지스터 0x10에 0이 아닌 값이 쓰여지면 우선 시작시간과 종료시간의 명령어가 적절한지 판단하고, 이상이 없으면 RTC로부터 읽은 시간을 기본으로 작동시간을 정하게 된다. 만약 시작시간과 종료시간에 이상이 있다면 홀딩레지스터 0x10은 다시 0으로 복귀된다. 해당 타이머가 작동되는 동안에만 작동모드 내의 동작이 유효하며, 해당 시간 외의 시간에는 LED는 모두 OFF가 된다.

Table 2. Modbus register map and descriptions

홀딩레지스터 주소

설명

0x00~0x03

PWM값 (1번~4번)

0x04~0x07

광센서값 (1번~4번)

0x08

작동모드

0x09

센서 연계 자동 디밍 제어 On/Off

0x0A~0x0D

목표센서값 (1번~4번)

0x10

타이머 On/Off용

0x11

시직시간(시)

0x12

시작시간(분)

0x13

종료시간(시)

0x14

종료시간(분)

Table 3. Descriptions of input values for 0x08 holding register

홀딩레지스터

(0x08)

설명

0

전체 LED OFF

1

전체 LED FULL ON

2

사용자 지정 디밍 제어 (0-255)

홀딩레지스터

의미

0x00

2번 PWM 제어값 (1층)

0x01

3번 PWM 제어값 (2층)

0x02

4번 PWM 제어값 (3층)

0x03

5번 PWM 제아값 (4층)

3

센서 연계 자동 디밍 제어

홀딩레지스터

의미

0x04/0x0A

2번 자동 제어 (1층)

0x05/0x0B

3번 자동 제어 (2층)

0x06/0x0C

4번 자동 제어 (3층)

0x07/0x0D

5번 자동 제어 (4층)

LED제어보드의 홀딩레지스터에서 작동모드 0x08 주소에 Table 3과 같이 값을 쓸 수 있다. 0을 쓰면 LED 전체 OFF, 1을 쓰면 LED 전체 FULL ON, 2를 쓰면 PWM값 0x00-0x03 홀딩레지스터 활성화를 통한 사용자 디밍 제어, 3를 쓰면 광센서값 0x04-0x07 홀딩레지스터 및 목표센서값 0x0A-0x0D 홀딩레지스터가 활성화되며, 0x09 홀딩레지스터가 동시에 0이 아닌 값이 쓰여지면 (0x04, 0x0A), (0x05, 0x0B), (0x06, 0x0C), (0x07, 0x0D)이 값을 비교하며 PWM값을 LED컨트롤보드에서 계산하여 자동으로 조절하게 된다.

이 기능은 추후 통신이 끊어진 상태에서 Local 쪽에 직접 광 센서가 연결된 경우 Local Dimming 기능을 추가하도록 수정할 수 있다. 다만, 본 논문의 실증 프로젝트에서는 다수의 베드 중 한 개 혹은 두 개의 선택된 베드에만 층마다 광 센서를 설치하였다. 마스터 장치는 센서 보드로부터 센서값을 읽어와 특정 주기마다 Broadcast 방식으로 마스터에서 계산한 변환된 PWM값을 슬레이브에 전달하도록 구현하였다. 만약 통신이 끊어진 상태를 감지하면, 작동모드는 자동으로 2의 값인 사용자 디밍 제어로 전환되도록 설계하였다.

4. 시스템 구성

전체 시스템은 Fig. 1과 같이 구성할 수 있다. 메인보드는 모드버스의 마스터에 해당되며, LED 제어보드 및 광센서보드는 모드버스의 슬레이브에 해당된다. 마스터와 슬레이브는 2선식 RS485 통신을 사용하여 연결하였다. 2선식에는 D+/A, D-/B 의 데이터선 외에 통신환경개선을 위해 GND 및 RS485선에 있는 접지선(Drain Wire)을 연결하면 좋다. UL2919 2P(4가닥) 24AWG를 사용하여 RS485 모듈 사이를 아래의 Fig. 2Fig. 3과 같이 연결하였다.

Fig. 1. System overview (Example)

../../Resources/kiiee/JIEIE.2024.38.6.403/fig1.png

Fig. 2. RS485 communication connection diagram

../../Resources/kiiee/JIEIE.2024.38.6.403/fig2.png

Fig. 3. UL2919 2P 4-wire connection diagram

../../Resources/kiiee/JIEIE.2024.38.6.403/fig3.png

GND선은 Fig. 3에서 표시된 GND로 표시된 두 개 선 중 하나만 연결해도 충분하다. 만약 Fig. 3에서의 빨간선/흰색선 쌍의 흰색선을 GND에 연결한다면, 해당 선으로만 GND를 연결하고, 다른 파란선/흰색선 쌍의 흰색선은 절연테이프로 잘 감아야 한다. 선 색상은 제조사마다 다를 수 있다.

더불어, UL2919 쉴드의 접지선은 가능하면 각 설치된 환경에서의 F.G. (Frame Ground)에 개별적으로 연결해야 한다. F.G.는 기기의 금속 케이스나 섀시에 연결되는 접지 포인트로, 스마트팜 시설의 경우 전기함 철판이나 모듈의 철봉 등이 될 수 있다. 이는 외부 전자기 간섭(EMI)으로 인한 신호의 오류를 줄이는데 유용하다. 주의할 점은 GND와 F.G.는 절대로 연결되어서는 안 된다.

RS485 2선식으로 통신선을 구성할 때, 시작 지점 (메인보드에서 나가는 선)에 120Ω 저항을 A와 B 사이에 끼우고, 종단지점(슬레이브 연결의 끝)에 120Ω 저항을 A와 B 사이에 끼우면 통신 신호 오류를 줄일 수 있다. 이 저항을 종단 저항이라고 부르며, 120Ω이 표준이다. 주의할 점은 슬레이브 연결 중간에 종단 저항을 설치하면, 종단 저항이 설치된 슬레이브 이후로 통신이 안 되므로 주의해야 한다.

메인보드의 아두이노를 통해 부분 무료 플랫폼인 Adafruit (사이트: io.adafruit.com)를 이용하였다. 해당 플랫폼을 사용하기 위해 아두이노 상에서는 Adafruit_MQTT.h, Adafruit_MQTT_Client.h 라이브러리를 사용한다. 해당 플랫폼에서는 MQTT 프로토콜을 이용하여 발행(Publish-메인보드), 구독(Subscribe-플랫폼)을 구현하며, Feed (MQTT에서는 Topic에 해당)를 아래와 같이 사용하였다.

5. 메인보드 구성 및 S/W 제어

메인보드는 모드버스의 마스터로 사용되며, Fig. 4처럼 최소한의 모듈로 구성될 수 있다. AC/DC컨버터는 DC 5V 2W 이상의 제품을 사용하면 충분하다. (MKR ∼200mA, RTC모듈 ∼0.2mA, RS485모듈 ∼3mA) RTC모듈의 SCL핀은 아두이노의 D12번 핀에, SDA핀은 D11번 핀에 연결하고, RS485 모듈의 Tx는 아두이노의 D13번 핀에, RS485 모듈의 Rx는 아두이노의 D14번 핀에 연결하면, 메인 컨트롤보드를 구성할 수 있다.

Fig. 5는 메인보드의 동작 흐름도를 보여준다. 일정한 주기마다(오프셋 20초) 슬레이브의 홀딩레지스터를 읽어 내부 데이터를 업데이트한다. 또한, 일정한 주기마다(오프셋 1분) 메인보드에서는 WiFi를 통해 MQTT로 데이터를 발행한다 (PWM값, 광센서값). 매 loop마다 시리얼 포트와 WiFi 클라이언트에 읽을 수 있는 데이터(명령어)가 있는지를 확인한다.

Fig. 4. Main board configuration

../../Resources/kiiee/JIEIE.2024.38.6.403/fig4.png

Fig. 5. Main board loop structure

../../Resources/kiiee/JIEIE.2024.38.6.403/fig5.png

Table 4. Sensitivity based on the difference between Sensor value and taget value

센서값 - 목표값 차이

민감도 (PWM 변동값)

40 이상

20

40 미만 20 이상

10

20 미만 10 이상

5

10 미만 5 이상

1

5 미만

0

일정 주기마다 슬레이브의 홀딩레지스터의 데이터는 requestFrom 함수를 사용해 일괄적으로 읽어온다. 광센서 슬레이브 ID 번호는 사전에 전역 변수 배열에 저장해두었으며, 이를 for문을 통해 순차적으로 읽는다. 광센서값은 0x04-0x07 홀딩레지스터에 저장되므로, 해당 주소에 접근해 데이터를 읽는다.

읽어온 데이터는 메인보드 내부의 처리용 변수에 저장한다. 저장된 슬레이브 ID의 개수만큼 슬레이브의 홀딩레지스터 접근이 제대로 이루어졌는지 확인한다. 예를 들어, 저장된 슬레이브 ID가 3, 5, 10으로 총 3개이나, 접근된 슬레이브 ID가 하나도 없으면 통신 오류 메세지를 출력한다. 하나 이상 접근이 이루어지면, 읽은 데이터를 평균 내어 값을 저장한다.

핵심은 Table 4와 같이 센서 데이터와 목표 설정값의 차이를 계산해, 해당 차이에 따라 민감도를 설정하고 이를 기반으로 PWM값을 조정하는 것이다. (광센서값 – 목표값)이 양수라면, 광센서값이 크므로 보광이 강하다는 뜻이다. 따라서 기존 pwm값에서 설정된 민감도를 빼준다. 반대로 음수라면 광센서값이 작으므로 보광이 더 필요하다는 의미로, 기존 pwm값에서 설정된 민감도를 더해준다.

메인보드는 MQTT를 통해 각 층별 광센서값과 채널별 PWM 값을 인터넷에 업로드한다. Adafruit 플랫폼에서는 미리 선언한 feed 이름을 사용해 값을 발행(publish)하며, 발행된 값은 WiFi를 통해 인터넷으로 전달되고 io.adafruit.com의 대시보드와 연동하여 데이터를 볼 수 있다. 아두이노의 PWM 핀 출력을 관리하기 위해 별도의 함수와 전역 변수를 선언하고, analogWrite 함수를 호출 시 값을 전역 변수에 저장해 실시간 PWM 값을 추적하였다.

Fig. 6. Command processing function

../../Resources/kiiee/JIEIE.2024.38.6.403/fig6.png

Fig. 6은 명령어 처리 함수를 나타낸다. 이 함수는 다양한 통신으로부터 받은 문자열을 처리할 수 있다. 본 논문에서는 일부 예시만 공개한다. “M”이라는 입력어가 들어오면 현재 모드 상태가 시리얼 통신을 통해 출력된다. “M0”, “M1”, “M2”, “M3”라는 문자열이 입력되면, 모드는 M 뒤에 오는 숫자 상태로 변경된다. 이 숫자는 앞서 언급한 0x08의 홀딩레지스터의 입력값에 따른 동작과 동일하다. 추가적인 명령어 예시로. “ST” 데이터 수집/전송 주기 변경, “C” 타이머 활성화 변경, “CSH” 시작시간(시) 변경, “CSM” 시작시간(분) 변경, “AT” 마스터의 변수값 전체 슬레이브의 홀딩레지스터에 쓰기 등이 있다. 본 논문에서는 작성한 명령어들을 상세히 다루지는 않았으나, 해당 함수 내에 필요한 다양한 명령어를 추가 작성할 수 있다.

6. 광센서보드 구성 및 S/W 제어

광센서보드는 모드버스의 슬레이브로 사용되며, Fig. 7과 같이 최소한의 모듈로 구성될 수 있다. AC/DC컨버터 DC 12V 2W 이상의 제품을 사용하면 충분하다. (MKR ∼200mA, RS485 ∼3mA, 광센서 개당 ∼0.1 mA) ADS1115 모듈의 SCL 핀은 아두이노의 D12번 핀에, SDA핀은 D11번 핀에 연결한다. RS485 모듈은 메인보드와 동일하게 사용된다. 광센서에는 12V 전압을 공급하기 위해서, AC/DC 컨버터는 12V로 구성한다. 아두이노, RS485모듈, ADS1115 모듈에 전원 공급을 위해 DC/DC 컨버터(DC 12V 입력, DC 5V 출력)를 사용한다 (ex: AMS1117 모듈). ADS1115 모듈은 ADC를 총 4채널을 제공하여 최대 4개의 광센서와 연결할 수 있다. 광센서의 타입이 아날로그 타입이 아닌 RS485 통신을 사용하는 모드버스의 디지털 타입일 수도 있다. Arduino MKR Wifi 1010에서는 SERCOM 모듈을 통해 특정 핀을 재구성하면 RS485 모듈을 2개 사용할 수 있다. 하나는 메인보드와의 통신을 위해서, 다른 하나는 광센서를 읽는데 사용할 수 있다.

Fig. 7. Light sensor board configuration

../../Resources/kiiee/JIEIE.2024.38.6.403/fig7.png

메인보드에서 ModbusClient를 개설했다면, 광센서보드에서는 ModbusRTUServer를 개설한다. 이 후, 사용하고자 하는 홀딩레지스터의 주소와 주소 개수를 설정하여 레지스터 맵을 구성할 수 있다. 광센서보드는 개설된 서버에서 메인보드(마스터, 클라이언트)로부터 RTU 프레임을 수신했는지 지속적으로 확인한다. 수신이 이뤄지면 알람 문구를 출력하여 통신이 진행되고 있음을 확인할 수 있다. 메인보드와 마찬가지로 광센서보드용 명령어 처리 함수를 사용하여 중요 설정을 변경할 수 있다. 예시로 “ST”를 입력하면 센서 간 측정 간격을 변경시킬 수 있고, “ID”를 입력하면 슬레이브 ID 주소를 변경하고 새로 서버를 개설한다. “R”을 입력하면 입력 즉시 광센서값을 재측정한다. 메인보드와 동일한 방식으로 작성되었으며, 관련 코드의 자세한 내용은 생략한다.

광센서보드의 핵심 코드는 연결된 광센서로부터 데이터를 읽고, 개설한 홀딩레지스터에 저장하는 함수이다. 데이터의 가공처리 방법에는 다양한 방법들이 존재한다. 본 논문에서는 Fig. 8의 20개의 배열을 가지는 전역 변수를 사용하였으며, Fig. 9와 같이 해당 배열을 처리하였다. 전체 데이터를 좌측 쉬프트 방식을 통해 가장 낮은 0번 배열의 데이터를 삭제한 후, 비어 있는 가장 높은 19번 배열에 새로운 데이터를 저장하고, 이 데이터들을 평균 내는 가공 방법을 사용하였다.

ADS1115를 통해서 광센서에서 보내는 전압값을 읽고, 광센서 매뉴얼에 명시된 Calibration Factor를 반영하여 광센서값을 얻을 수 있다. 예를 들면 측정된 전압값이 2.5V로 최대값이라면, 2.5V×1.6×1000 = 4,000 umol m-2 s-1 와 같은 계산으로 최대 측정값을 얻을 수 있다.

Fig. 8. Example of light sensor data processing

../../Resources/kiiee/JIEIE.2024.38.6.403/fig8.png

Fig. 9. Data processing function of light sensor board

../../Resources/kiiee/JIEIE.2024.38.6.403/fig9.png

7. LED제어보드 구성 및 S/W 제어

Fig. 10은 LED제어보드의 구성을 보여준다. 통신이 끊어지더라도 타이머가 작동하도록 하기 위한 RTC 모듈, 제어보드(마스터)로부터의 신호를 받기 위한 RS485모듈, 디밍기능이 있는 LED 전원 공급 장치 SMPS와 해당 장치의 전력공급을 차단하기 위한 릴레이, AC/DC 12V 컨버터, DC/DC 5V 컨버터, 누전차단기, 그리고 3.3V/0V의 On/Off신호를 5V/0V로 전환시키는 릴레이 신호 증폭 회로, 0-3.3V PWM 신호를 0-10V PWM 신호 혹은 DC 신호로 변환시켜주는 PWM 신호 증폭 회로이다. 릴레이 신호 증폭 회로와 PWM 신호 증폭 회로는 동일한 IC칩을 사용했으며, 최적화된 저항값을 사용하여 구현하였다.

신호 증폭 회로는 사용할 핀(채널)이 8개이므로, 4채널 포토커플러 PC847 2개와 4채널 OP-AMP LM2902N 2개로 구현할 수 있다. 다만, 본 논문에선 설명의 편의성을 위해서 동일한 성능을 가지며 1채널인 포토커플러 PC817, OP-AMP LM321로 설명한다.

먼저 OP-AMP에서 주의해서 살펴봐야할 것은 Rail-to- Rail 출력의 개념이다. 데이터시트에서는 VOH(High-level output voltage) 및 VOL(Low-level output voltage) 또는 Output Voltage Swing 항목을 확인해야 한다. Rail-to- Rail 출력이란, OP-AMP의 공급전압에 가깝게 출력이 가능한 소자를 말한다. 예를 들어, OP-AMP에 공급전압으로 0V와 5V를 인가한 경우, Rail-to-Rail을 지원한다면 최저 출력 전압은 0V에, 최대 출력 전압은 5V에 가깝게 출력된다. 반면, Rail-to-Rail을 지원하지 않는 OP-AMP의 경우 최저 출력 전압이 1.5V로 높거나, 혹은 최대 출력 전압이 3.5V로 낮을 수 있다. 사용한 LM2902N이나 LM321은 Rail-to-Rail을 지원하지 않으며, VOH의 경우 최소 VCC – 1.5V로 출력되며, VOL은 5∼20 mV로 출력된다.

Fig. 10. LED control board configuration

../../Resources/kiiee/JIEIE.2024.38.6.403/fig10.png

Fig. 11. LTSPICE simulation example

../../Resources/kiiee/JIEIE.2024.38.6.403/fig11.png

Fig. 11은 LTSPICE 시뮬레이션 프로그램을 사용한 회로 구성과 시뮬레이션 결과를 보여준다. 전원으로 12V를 사용하였다. PC817의 앞단 전원은 PWM 신호로, 실제 회로에서는 아두이노의 PWM 핀에 대응된다. 입력으로 0-3.3V의 Duty Ratio 50%의 PWM 값을 넣으면, 출력으로 DC 5V가 나오는 회로이다. 해당 회로에서 C1 10uF를 제거하면, 0-10V PWM으로 출력된다. 또한, R2를 1.5kΩ으로, R4와 R7을 각각 1.1kΩ으로 설정하고 C1을 제거하면, 3.3V/0V의 On/Off 신호를 5V/0V의 On/Off 신호로 변환할 수 있다.

실제 회로에서는 정밀한 전압조정을 하기 위해서 R2 와 병렬로 10kΩ의 가변저항을 추가하여, 가변저항으로 전압을 조정하였다. LED컨트롤보드를 제작하여 테스트한 결과, Duty Ratio가 100%일 때 10V로 가변저항을 맞춰놓고, Duty Ratio를 50%로 줄였을 때, 약 5.4-5.5V 가 출력됨을 확인했다. PWM 값에 따른 출력이 선형 비례를 보여주지는 않으나, 센서 연계형 제어에서는 PWM 값이 센서값에 따라 조정되므로 큰 문제가 되지는 않는다.

Fig. 12. LED control board loop structure

../../Resources/kiiee/JIEIE.2024.38.6.403/fig12.png

LED제어보드에서는 Fig. 12와 같이 통신이 끊겼는지 확인하기 위해서 watchdog 알고리즘을 사용했다. 통신카운트를 전역변수로 선언하고, 통신주기시간이 지나면 통신카운트를 감소시킨다. 통신주기 내에 모드버스에서 polling이 이루어지면, 통신카운트를 증가시키는 방식으로 구현하였다. LED작동함수는 통신주기에 따라 호출되며, 모드버스에 기록된 값을 계산하여 LED 디밍값을 제어한다. 현재 모드는 홀딩레지스터 0 x 08의 값에 따르며, 값이 3인 경우 센서 연계 자동 디밍 제어를 의미한다. 이 모드에서는 통신주기(오프셋 20초)마다 PWM값을 계산한다. 그 외의 모드에서는 통신주기(20초)의 10을 나눈 2초마다 PWM 값을 계산한다. 이는 센서 연계 자동 디밍 제어 모드에서는 측정 1회에 작동 1회를 보장하기 위함이며, 그 외의 모드에서는 측정과 관계없이 사용자의 변화에 즉각적으로 대응하기 위함이다.

Fig. 13. Write function for 1-10V SMPS

../../Resources/kiiee/JIEIE.2024.38.6.403/fig13.png

확보된 PWM 값은 해당 논문에서 Fig. 13과 같이 사용하는 1-10V SMPS에 맞춰 수정된 쓰기 함수를 통해 아두이노 핀에 쓰여지게 된다. LED제어보드에서 아두이노의 2번, 3번, 4번, 5번 핀은 PWM 값으로 출력하며, 6번, 7번, 8번, 10번 핀은 릴레이 제어핀으로 사용된다. 릴레이와 PWM 제어 핀은 (2번-6번), (3번-7번), (4번-8번), (5번-10번)이 연동되도록 Array를 구성했다. SMPS의 디밍선이 2번 핀에 연결되었다면, AC의 릴레이 모듈은 아두이노 6번에 연결된 모듈을 사용해야 한다. PWM 값이 25 미만이 되면, 릴레이는 OFF 상태가 되고, 디밍값은 0V가 된다.

Fig. 14. Timer calculation function

../../Resources/kiiee/JIEIE.2024.38.6.403/fig14.png

Fig. 14은 RTC 모듈을 사용해 현재 시간을 확인하고, 모드버스 홀딩레지스터에서 저장된 시작시간(시), 시작시간(분), 종료시간(시), 종료시간(분)의 값을 불러와 분 단위로 변환하여 비교하는 함수다. 계산 방식은 (시×60 + 분)의 계산식을 사용하여 시작시간(OnTime), 현재시간(nowTime), 종료시간(OffTime) 의 값을 계산한다. 시작시간이 종료시간보다 큰 경우는 에러(-1)를 반환하고, 타이머 작동 Toggle값을 FALSE로 설정한다. 시작시간이 현재시간보다 크고 종료시간보다 작으면 1을 반환한다. 이 조건을 만족하지 않으면, 0을 반환한다. ‘1’ 값이 반환되면 LED는 정상 작동하며, ‘0’ 값이 반환되면 LED는 OFF 상태가 된다.

Fig. 15. LED operation function

../../Resources/kiiee/JIEIE.2024.38.6.403/fig15.png

PWM 계산은 Fig. 15에 나타난 LED작동함수를 호출하여 수행된다. 이 함수는 호출될 때마다 계산을 진행하므로, 특히 센서 연계 자동 디밍 모드에서는 측정 1회에 계산 1회를 보장해야 한다. 이를 위해 통신주기가 틀어지지 않도록 주의하여야 한다.

본 논문에서는 통신주기를 20초로 설정하였다. 20초 간격으로 마스터는 슬레이브에 PWM 값 또는 광센서값을 Broadcast 방식으로 전달한다. LED제어보드는 20초마다 PWM 값을 읽어 출력값을 조정하거나, 광센서값을 1회 읽어서 1회 계산하여 자체적으로 출력값을 조정하도록 설계되었다. 본 논문의 실증 테스트는 전자의 방식으로 운영하였다.

8. 실증 테스트 결과

Fig. 16은 해당 시스템을 본 연구원이 보유한 장소에 설치하여 실증 테스트를 진행한 모습을 보여준다. Fig. 17은 1층과 2층에 동일한 센서목표값을 설정하여 테스트를 진행한 결과를 보여주며, 1층의 PWM 값이 2층보다 더 낮게 나타났다. 이는 Fig. 16에서 보이듯, 2층의 광원이 대각선으로 위치한 1층에 빛을 투사하여 영향을 미치기 때문이다. 만약 1층과 2층을 동일한 디밍값으로 운영하였다면, 1층에 노출되는 실제 광세기는 2층에 비해 훨씬 높았을 것이다.

Fig. 16. Second-floor smart farm system

../../Resources/kiiee/JIEIE.2024.38.6.403/fig16.png

Fig. 17. Empirical data of PWM values

../../Resources/kiiee/JIEIE.2024.38.6.403/fig17.png

운영 중 가끔 발생한 문제 중 하나는 릴레이에 OFF 신호를 보냈음에도 조명이 꺼지지 않는 현상이었다. 이는 릴레이의 접점이 유도성 부하를 제어할 때 발생하는 문제로, 부하가 차단되는 순간 유도성 부하에 저장된 에너지로 인해 역기전력이 발생하면서 접점이 떨어지지 않는 현상 때문이다. 사용한 릴레이 모듈은 저항성부하일 경우 220V 10A까지 차단할 수 있다. 220V 1A SMPS를 2개까지 연결했을 때는 문제가 없었으나, 3개 이상에서는 종종 릴레이 접점이 제대로 동작하지 않는 현상이 나타났다. 이 문제는 마그네틱 스위치 사용, 용량이 더 큰 릴레이로 교체, 혹은 유도성부하에 적합한 보조회로가 내장된 무접점 릴레이를 사용하면 해결할 수 있다.

또 다른 문제는 모드버스 통신 불통 현상이었다. 이는 슬레이브(광센서보드 혹은 LED제어보드)가 계산 중일 때 마스터가 접근하거나, 슬레이브가 delay 함수에 있거나 내부 모듈 간 통신 대기 상태에 있을 때 발생하였다. 이를 방지하기 위해서는 슬레이브 쪽은 delay함수를 가능하면 사용하지 않아야 한다. 불가피하게 사용 한다면 마스터의 setTime과 RS485 지연시간을 고려해서 delay 시간을 짧게 설정해야 한다.

9. 결 론

본 논문에서는 아두이노를 사용하여 저렴하고 합리적인 비용으로 스마트팜용 조명 제어 시스템을 구현하는 방법을 제안하였다. 1세대 스마트팜 기술인 조명의 단순 On/Off 제어를 넘어, 2세대 스마트팜 기술인 센서 연계형 자동 디밍 기술을 구현하였다. 이 기술은 센서값과 현재 PWM 디밍값의 차이에 따라 민감도 값을 조정하는 알고리즘을 기반으로 설계되었다.

해당 시스템을 실증 테스트를 한 결과, 릴레이 접점 제어 실패, 통신 불통과 같은 문제가 발생되었다. 그러나 릴레이를 허용 용량 범위 내에서 사용하고, 슬레이브의 delay 함수를 최소화하는 코딩 최적화를 통해 이러한 문제를 해결할 수 있었다.

해당 논문의 기술은 3세대 스마트팜 기술로 확장할 수 있다. 3세대 스마트팜 조명 기술은 작물 성장에 맞춘 완전 자율 제어형 조명을 의미한다. 이 시스템은 조명 제어 시스템의 마스터에서 작물의 성장에 맞춘 센서 목표값과 시간 타이머를 자동으로 설정하는 방식으로 구현될 수 있다. 작물의 정식 시점과 현재 시간과의 차이를 기반으로 생장 주차를 계산하고, 주차별로 설정된 광레시피의 목표값과 시간 타이머를 적용하는 방식으로 구현이 가능하다. 또한, 인공지능 카메라를 활용하여 작물의 실제 생장 상태를 분석하고, 이를 바탕으로 성장 주차를 결정하여 자동으로 시스템에 반영하는 방식도 고려할 수 있다.

이 논문이 스마트팜을 직접 준비하거나 스마트팜으로 전환에 관심이 있는 농장주들에게 실질적인 도움이 되기를 바란다.

Acknowledgement

이 논문은 농림축산식품부의 재원으로 농림식품기술기획평가원의 기술사업화지원사업의 지원을 받아 연구되었음. (No. 122043.03, 122056.03)

References

1 
IoT Analytics, “State of IoT summer 2024,” Market Report, 2024.URL
2 
Seulgi Kim, “Developing code generation prompts for programming education with generative AI,” Journal of Computer Education, vol. 26, no. 5, pp. 107-117, 2023.DOI
3 
Ministry of Agriculture, Food and Rural Affairs, “2023 Smart agriculture survey report,” 2024.URL
4 
Seung-Hyo Nam, “A study on the perception differences of farmers on smart farm polices,” Master’s Thesis, Graduate School of Chonnam National University, 2020.URL
5 
Korea Rural Economic Institute, “Strategies for enhancing farmers’ competencies in response to the expansion of smart agriculture,” 2022.URL
6 
Jung-Hoon Kim, et al., “Design and implementation of automatic control smartfarm platform using IoT technology,” Proceedings of the Korea Computer Information Society, vol. 28, no. 1, pp. 71-72, 2020.URL
7 
Korean Standards Association, “Smart lighting system – Part 1: General requirements,” KS C 7751-1, 2024.URL

Biography

Minha Kim
../../Resources/kiiee/JIEIE.2024.38.6.403/au1.png

He received his B.S. degree in Electrical and Electronic Engineering from Sungkyunkwan University, Suwon, South Korea, in 2015, and his M.S. degree in Electrical, Electronic, and Computer Engineering in 2017. He is currently a Senior Researcher at the Cheorwon Plasma Research Institute (CPRI), where his research interests focus on smart lighting and system control.

Sunghwan Bae
../../Resources/kiiee/JIEIE.2024.38.6.403/au2.png

He received his M.S. degree in Horticulture from Kyungpook National University, Daegu, South Korea, in 2014, and completed his Ph.D. coursework in 2017. He is currently a Senior Researcher at the Cheorwon Plasma Research Institute (CPRI), where his work focuses on analyzing changes in plant growth and physiological mechanisms influenced by light.

Yongduk Kim
../../Resources/kiiee/JIEIE.2024.38.6.403/au3.png

He received his Ph.D. degree in Electrical Engineering from Kyungpook National University, Daegu, South Korea, in 2006. He is currently the Director of the Photonics and Display Convergence Business Division at the Cheorwon Plasma Research Institute (CPRI).