산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

하이드로메이징 스마트 가든 시스템 – IoT 기반 첨단 식물 관리

필요한 부품 및 소모품

부품 수량 비고
라즈베리 파이 3 모델 B 1 선택 사항 – IoT, 문자 알림용
아두이노 나노 R3 2
아두이노 나노 익스팬션 실드 2
DHT21/22 온습도 센서 1 VCC-데이터 간 10kΩ 풀업 저항 필요할 수 있음
포토셀 모듈 (조도 센서) 1
nRF24L01 2.4GHz 무선 트랜시버 1 SMA 안테나 유/무 상관없음
달라스 온도 센서 (양액 온도용) 1 커넥터 별도 필요 가능
433MHz RF 송수신 모듈 1세트
무선 제어 콘센트 세트 (리모컨 포함, 3~5구) 1
DFRobot LCD 버튼 실드 (아두이노 우노용) 1

필요한 도구

앱 및 온라인 서비스

프로젝트 소개

처음부터 제품을 만들려는 의도는 아니었습니다. 단순히 흔한 문제를 해결하고 싶었을 뿐입니다. 실내나 제어된 환경에서 식물을 키우고 싶은데, 흔한 전자 부품과 가정용품으로 어떻게 최적의 환경을 만들 수 있을까? 토양 재배가 나을까, 수경 재배가 나을까?

하이드로메이징(hydroMazing)은 집에서도 성공적으로 식물을 키울 수 있도록 최적의 생육 조건을 손쉽게 제공하는 도구입니다. 원격 클라우드가 아닌 자체 기기에 독립적인 데이터 수집 시스템과 웹 인터페이스를 갖췄습니다.

식물 키우기는 복잡하고 비용이 많이 듭니다. 식물은 강하지만 사소한 실수 하나로 작물을 망칠 수 있습니다. 스마트 가드닝 시스템이 그 힘든 일을 대신해 주면 그런 실수를 피할 수 있습니다!

홈 오토메이션으로의 여정

2년 전, 개별적으로 쓰던 Lux WIN100 프로그래머블 온도 콘센트(히터나 환풍기 제어용)를 아두이노 우노로 대체하려 했습니다. 이 콘센트는 수동으로 온도를 설정해 기기를 켜고 끄는 방식인데, 여러 개 쓰니 연장선이 엉망이었습니다. 처음엔 연장 박스를 해킹해 릴레이를 직접 달고 아두이노에 연결하려 했으나, 곧 전선과 커넥터 너트로 엉망이 되어 포기했습니다.

그러다 무선 제어 콘센트(리모컨 타입)의 리모컨을 해킹해 아두이노로 신호를 보내면 어떨까 생각했습니다. 315/433MHz 송수신 모듈을 찾아 아두이노 라이브러리(RC-Switch 등)로 리모컨 코드를 읽고 재전송하도록 했습니다. 무선 콘센트 제어가 온도 센서 읽기 기반으로 잘 작동했습니다.

프로그래밍: 'TheDecider' 알고리즘

소프트웨어는 기본 파라미터(타이밍, 센서/가전 객체 관리, 송수신)를 펌웨어에 담고, 'TheDecider'라 명명한 알고리즘 집합으로 센서 읽기와 사전 설정 임계값을 바탕으로 가전(무선 콘센트)을 켜고 끄는 결정을 내립니다. 수경, 버섯 재배 등 센서 읽기와 규칙 기반 제어가 필요한 다양한 환경에 쉽게 적용 가능하게 설계했습니다.

아두이노 우노의 프로그램 용량 한계(플래시 메모리 32KB)에 부딪혀 더 효율적인 코드를 짜게 되었고, 결국 여러 마이크로컨트롤러를 분담시키는 구조로 발전했습니다.

인터넷 없는 무선 모니터링

마이크로컨트롤러 간 통신엔 저렴한 nRF24L01 무선 트랜시버를 사용했습니다. 저전력·경량 블루투스 유사 모듈로, 하이드로메이징이 모니터링 유닛과 통신합니다.

LCD 실드를 얹은 또 다른 아두이노 우노를 모니터링 유닛으로 만들어 센서 값, 가전 상태, 알림을 표시합니다. 자체 완결형 무선 시스템이면서도 개방형 아키텍처로 인터넷 연동과 웹 서비스 확장이 쉽습니다.

인터넷 모니터링 (라즈베리 파이 연동)

nRF24L01을 단 라즈베리 파이 3를 게이트웨이로 추가했습니다. 아두이노 송신 코드를 수정해 파이에서 수신받은 데이터를 파일로 기록합니다:

PHP 스크립트로 이 파일들을 읽어 아파치 서버에 실시간 대시보드로 표시하고, 파이썬 스크립트로 알림 파일을 감시해 이메일/SMS로 전송합니다. 로그 파일로 데이터베이스를 구축하면 분석과 리포트 생성도 가능합니다.

전체 재배 과정을 안내하는 '하이드로메이징 가든 위자드' 웹 인터페이스도 제공합니다: hydroMazing.com

양액 모니터링 (수경 재배용)

수경 재배 용기의 양액 레벨을 모니터링합니다. 레벨이 떨어지면 신선한 물로 보충('토핑 오프')해 농도 상승을 방지합니다. 하이드로메이징 뉴트리언트 컨트롤러는 펌프를 제어해 레벨 유지, pH·EC 모니터링 및 관리, 이상 시 알림까지 수행합니다.

더 알아보기

코드: CoreSettings.h (C/C++)

하이드로메이징 시스템에서 사용하는 nRF 네트워크 설정, 무선 콘센트 리모컨 코드, 타이머/가전/센서 객체 정의 등 핵심 설정이 담긴 파일입니다.

#ifndef __CORESETTINGS_H__
#define __CORESETTINGS_H__

#ifdef ARDUINO
#define RX_PIN 103
#define TONE_PIN 104
#define TX_PIN 8
uint8_t node_address = 1;
uint8_t totalNodes = 3;
unsigned long lastRxTimeStamp = 0;
const uint64_t nRFbaseAddress = 1034834473100;
uint8_t nRFaddress = 0;
uint64_t tx_pipes[3] = { 0xF0F0F0F0F8LL, 0xF0F0F0F0F7LL, 0xF0F0F0F0F6LL };
uint64_t rx_pipes[3] = { 0xF0F0F0F0F1LL, 0xF0F0F0F0F2LL, 0xF0F0F0F0F3LL };

/************************************************************************/
// 무선 제어 콘센트 스위치 코드 (ETEKCITY 등 다양한 모델 예시)
/************************************************************************/
uint8_t totalSwitches = 5;
unsigned long mySwitchOn[]  = {24,333107,333251,333571,335107,341251};
unsigned long mySwitchOff[] = {24,333116,333260,333580,335116,341260};

/************************************************************************/
// I2C 통신 설정
/************************************************************************/
const int MY_ADDRESS = 42;
const int SEND_TO_ADDRESS = 22;

/************************************************************************/
// 타이머 객체 정의 (타입, 간격(ms), ready, triggered, timestamp, next 포인터)
/************************************************************************/
Timer Timer_txData = { TIMER_TX_DATA, 30000UL, true, false, 0, NULL };
Timer Timer_Lcd = { TIMER_LCD, 12000UL, true, false, 0, &Timer_Log };
Timer Timer_Lcd_Cycle = { TIMER_LCD_CYCLE, 6000UL, true, false, 0, &Timer_Lcd };
Timer Timer_Lcd_Scroller = { TIMER_LCD_SCROLLER, 500UL, true, false, 0, &Timer_Lcd_Cycle };
Timer Timer_Save_Settings = { TIMER_SAVE_SETTINGS, 3600000UL, true, false, 0, &Timer_txData };
Timer Timer_Sensor_Read = { TIMER_SENSOR_READINGS, 7000UL, true, false, 0, &Timer_Save_Settings };
Timer Timer_Alerts = { TIMER_ALERTS, 45000UL, true, false, 0, &Timer_Sensor_Read };
Timer Timer_rxData = { TIMER_RX_DATA, 6000UL, true, false, 0, &Timer_Save_Settings };

/************************************************************************/
// 가전(Appliance) 객체 초기화: {ID, 스위치인덱스, 타입, 기본시간, 활성, 상태, 초기상태, next}
/************************************************************************/
Appliance Appliance_Light_1 = {101, 1, APPLIANCE_LIGHT, DEFAULT_TIME, true, false, OFF, NULL };
Appliance Appliance_IntakeFan = {104, 1, APPLIANCE_INTAKE_FAN, DEFAULT_TIME, true, false, OFF, &Appliance_Light_1 };
Appliance Appliance_ExhaustFan = {103, 1, APPLIANCE_EXHAUST_FAN, DEFAULT_TIME, true, false, OFF, &Appliance_IntakeFan };
Appliance Appliance_Humidifier = {102, 0, APPLIANCE_HUMIDIFIER, DEFAULT_TIME, true, false, OFF, &Appliance_ExhaustFan };
Appliance Appliance_Heater = {101, 0, APPLIANCE_HEATER, DEFAULT_TIME, true, false, OFF, &Appliance_Humidifier };
Appliance Appliance_FeedPump = {105, 1, APPLIANCE_PUMP, DEFAULT_TIME, true, false, OFF, &Appliance_Heater };
uint8_t totalAppliances = 6;

/************************************************************************/
// 센서(Sensor) 객체 초기화: {핀, 노드주소, 타입, 주기, 최솟값, 최댓값, 타임스탬프, 값, next}
/************************************************************************/
Sensor Sensor_Photocell = { PIN_A0, 1, SENSOR_PHOTO, 100, 50, 100, 0, 25, NULL };
Sensor Sensor_Temp = { PIN7, 1, SENSOR_TEMPF, 50, 70, 80, 0, 75, &Sensor_Photocell };
Sensor Sensor_Humidity = { PIN7, 1, SENSOR_HUMIDITY, 50, 40, 70, 0, 50, &Sensor_Temp };
Sensor Sensor_WaterTemp = { PIN3_INT1, 1, SENSOR_WATER_TEMPF, 100, 50, 70, 0, 65, &Sensor_Humidity };
Sensor Sensor_Flow = { PIN2_INT0, 2, SENSOR_FLOW, 100, 50, 50, 0, 75, &Sensor_WaterTemp };
Sensor Sensor_Float = { PIN_A2, 1, SENSOR_FLOAT, 100, 0, 1, 0, 1, &Sensor_Flow };
Sensor Sensor_Voltage = { PIN1_TX, 1, SENSOR_VOLTAGE, 100, 0, 100, 0, 50, &Sensor_Float };
uint8_t totalSensors = 7;

#endif

회로도

제조공정

  1. 라즈베리 파이와 DS18B20을 이용한 전문적인 온도 모니터링
  2. AT89S52 마이크로컨트롤러와 LM35 센서를 이용한 온도 기반 기기 제어 시스템
  3. MCP3008 ADC로 라즈베리 파이에서 아날로그 센서 읽기
  4. 스마트홈 기술 격차 해소: 왜 영국이 유럽에 뒤처지는가
  5. 도시 생활의 미래: 신흥 스마트시티 핵심 특성 – 1부
  6. IoT 기반 액체 수위 모니터링으로 음료 생산성 강화
  7. ABS(잠금 방지 브레이크 시스템) 작동 원리 완벽 가이드
  8. 전자 점화 시스템 작동 원리: 구성품·장단점 완벽 해설
  9. 마그네토 점화 시스템 작동 원리: 핵심 원리·구성·장단점
  10. 미국식 제조 시스템(Armory Practice): 역사·기법·영향 총정리