
components
Hardware Components
Project Description
딱딱한 분위기의 사무실에 식물을 키우면 분위기가 더 좋아질 거라 생각했다
집에 부모님이 키우는 식물들만 좀 봤었고 내가 직접 키워본 적이 없어서 손이 덜 가고 키우기 비교적 수월하다는 선인장을 들여놨다
그런데...월 1~2회 정도만 급수해야하는 걸 모르고 주 1~2회를 줬더니 얼마 못가서 뿌리가 썩었다. ㅠ.ㅠ
그 후 다시 식물 키우기에 도전하고자 미세먼지 제거에 탁월하고 키우기 쉽다는 수염 틸란드시아를 데리고 왔다
습한 환경만 조성되면 무럭무럭 자란다는 얘기만 듣고 무작정 욕실에 걸어뒀다. 매일 샤워를 하면서 물을 머금을 것이고 집안 어디보다 습한 환경일 테니 잘 자랄 것이라고 기대했다
하지만 틸란드시아도 죽어버렸다. 이유는 햇빛을 너무 못봐서였다 ㅠ_ㅠ
아직도 식물을 키울 생각이 있으나 식물 생장에 최적화된 환경을 어떠헥 조성해줘야 할지, 물은 언제 줬고 언제 줘야 하는지 등을 하나하나 메모하기엔 내 성격에 맞지 않아서 이를 알려주는 시스템이 있으면 어떨까? 라는 생각에 직접 개발해봤다
이 포스팅에서는
1. 개발환경을 어떻게 세팅했는지
2. 대기 중 온습도와 조도 측정 방법
3. 식물들에게 중요한 토양 습도 측정 방법
4. 직접 물을 공급해주는 워터펌프 동작법
5. 식물이 잘 자라고 있는지 데이터를 쌓아줄 클라우드 연결
로 이루어져 있다
가성비를 고려하여, 유선 인터넷(Ethernet)과 컨트롤을 동시에 지원하는 W5100S-EVB-PICO 로 만들려고 한다
(출처 - 부엉이 곳간)
집에 부모님이 키우는 식물들만 좀 봤었고 내가 직접 키워본 적이 없어서 손이 덜 가고 키우기 비교적 수월하다는 선인장을 들여놨다
(출처 - 오늘의 집)
그런데...월 1~2회 정도만 급수해야하는 걸 모르고 주 1~2회를 줬더니 얼마 못가서 뿌리가 썩었다. ㅠ.ㅠ
그 후 다시 식물 키우기에 도전하고자 미세먼지 제거에 탁월하고 키우기 쉽다는 수염 틸란드시아를 데리고 왔다
(출처 - 옥션)
습한 환경만 조성되면 무럭무럭 자란다는 얘기만 듣고 무작정 욕실에 걸어뒀다. 매일 샤워를 하면서 물을 머금을 것이고 집안 어디보다 습한 환경일 테니 잘 자랄 것이라고 기대했다
하지만 틸란드시아도 죽어버렸다. 이유는 햇빛을 너무 못봐서였다 ㅠ_ㅠ
아직도 식물을 키울 생각이 있으나 식물 생장에 최적화된 환경을 어떠헥 조성해줘야 할지, 물은 언제 줬고 언제 줘야 하는지 등을 하나하나 메모하기엔 내 성격에 맞지 않아서 이를 알려주는 시스템이 있으면 어떨까? 라는 생각에 직접 개발해봤다
이 포스팅에서는
1. 개발환경을 어떻게 세팅했는지
2. 대기 중 온습도와 조도 측정 방법
3. 식물들에게 중요한 토양 습도 측정 방법
4. 직접 물을 공급해주는 워터펌프 동작법
5. 식물이 잘 자라고 있는지 데이터를 쌓아줄 클라우드 연결
로 이루어져 있다
가성비를 고려하여, 유선 인터넷(Ethernet)과 컨트롤을 동시에 지원하는 W5100S-EVB-PICO 로 만들려고 한다
STEP 1 개발환경 세팅
이제부터 아두이노의 개발환경 세팅 방법을 알아보려 한다.
1. 아두이노 설치
Arduino 홈페이지 혹은 Microsoft Store에서 Arduino IDE를 다운로드 후 설치
- Arduino 공식 홈페이지: https://www.arduino.cc/en/software
2. 보드 매니저 및 URL추가
Arduino IDE에서 추가적인 URL을 입력
추가적인 URL:
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
환경설정 -> 추가적인 보드 매니저 URLs -> 추가적인 URL 입력
3. Raspberry Pi PICO 보드 추가
툴 -> 보드 -> 보드매니저 -> "Raspberry Pi Pico/RP2040" 설치
4. Raspberry Pi Pico 선택
툴 -> 보드 "Raspberry Pi PICO" -> Raspberry Pi PR2040 Boards -> Raspberry Pi PICO 선택
이렇게 설정하면 기본 설정은 끝이다
Step2 공기 중 온도, 습도, 조도 측정
W5100S-EVB-PICO를 이용하여 공기 중 온도, 습도, 조도 측정을 위해 아래 디바이스들을 사용하였다.
공기 중 온도, 습도
- DHT11 module
조도
- CDS module
개발환경
Arduino IDE
1. 공기 중 온도, 습도 측정하기
DHT11 module은 공기 중 온도, 습도를 측정할 수 있는 모듈이며, Adafruit에서 제공하는 DHT 라이브러리를 사용하면, 쉽게 온도, 습도를 측정할 수 있다
1-1. 회로구성
모듈의 DATA Pin, VCC Pin, GND Pin 은 아래와 같이 연결한다
DATA Pin : GPIO 2
VCC Pin : 3.3v
GND Pin : GND
1-2. 라이브러리 다운로드
툴 -> 라이브러리 관리 -> "dht11 검색" -> DHT sensor library 설치
1-3. 온도, 습도 측정 아두이노 코드
DHT에서 제공하는 예제를 이용하여 아래 코드를 완성하였다
예제코드에서도 볼 수 있지만, DHT11의 경우, 약 2초정도 지나야 정상적인 측정 데이터가 나오는 것을 확인할 수 있었다
2. 조도 측정하기
CDS module은 조도(빛의 세기)를 측정할 수 있는 아날로그 센서이며, 별도의 라이브러리 추가 없이 아두이노에서 제공하는 analogRead( ADC PIN ) 을 이용하여 조도 값을 쉽게 측정할 수 있다
2-1. 회로구성
모듈의 OUT Pin, VCC Pin, GND Pin 은 아래와 같이 연결한다
OUT Pin : GPIO 26 (ADC 0, A0)
VCC Pin : 3.3v
GND Pin: GND
2-2. 조도 측정 아두이노 코드
GPIO 26번과 analogRead( ADC PIN ) 함수를 이용하여 아래와 같이 간단하게 완성하였다.
3. 온도, 습도, 조도 측정 아두이노 코드
1번과 2번을 취합하여 아래 코드를 완성하였다
<온도 습도 조도 실행결과>
Step 3
Step2 토양 습도 측정
W5100S-EVB-PICO를 이용하여 토양 습도측정을 위해 아래 디바이스를 사용하였다
토양 습도
- 아두이노 토양습도 센서 DM456
개발환경
Arduino IDE
1. 토양습도 측정하기
아두이노 토양습도 센서 DM456은 센서 부분을 토양에 꽂아서 토양의 습도를 측정할 수 있는 모듈이며, 별도의 라이브러리 추가 없이 아두이노에서 제공하는 analogRead( ADC PIN ) 을 이용하여 조도 값을 쉽게 측정할 수 있다
1-1. 회로구성
모듈의 AO Pin, VCC Pin, GND Pin 은 아래와 같이 연결한다
AO Pin : GPIO 27 (ADC 1, A1)
VCC Pin : 3.3v
GND Pin : GND
1-2. 토양습도 측정 아두이노 코드
GPIO 27번과 analogRead( ADC PIN ) 함수를 이용하여 아래와 같이 간단하게 완성하였다
GPIO 27번 Pin은 "A1" 로도 선언 가능하다
1-3. 토양습도 측정 결과
아래 그림과 같이 토양습도 측정 결과를 얻을 수 있으며, 건조할 때에는 1000 이상의 값이 나타나며, 센서를 물에 담궜을 때에는 측정 값이 떨어지는 것을 볼 수 있다 (붉은색 부분)
Step 4
Step4 워터 펌프 작동
W5100S-EVB-PICO를 이용하여 화분에 물을 주기 위해 아래 디바이스를 사용하였다
워터 펌프
- npm-4 12v (12v 워터 펌프 모터)
전원 제어
- 3.3v Relay Module
전원
- 1.5v 전지 8 Socket
개발환경
Arduino IDE
1. 워터 펌프 제어하기
아두이노용 워터 펌프와 모터 제너레이터를 사용할 수도 있었으나, 화분이 크고, 고 출력이 필요하다 생각하여, 12v 워터 펌프를 사용하였다
12v 전원의 경우 W5100S-EVB-PICO 에서 지원하지 않으므로, 외부 전원을 사용하였으며, W5100S-EVB-PICO 에서 전원을 제어하는 방식으로 설계하였다 (Relay Module)
1-1. 회로구성
Relay Module과 외부 전원, 워터 펌프는 아래와 같이 연결하였다
12V(- 극) - COM (Relay Module) || NC (Relay Module) - 워터펌프(- 극)
12V(+ 극) - 워터펌프(+ 극)
W5100S-EVB-PICO와 Relay Module은 아래와 같이 연결하였다
VCC Pin : 3.3v
GND Pin: GND
IN Pin: GPIO 12
1-2. 워터 펌프 제어 아두이노 코드
GPIO 12번과 digitalWrite() 함수를 이용하여 아래와 같이 간단하게 완성하였다
Step 5
Step5 클라우드 연결(Ethernet)
W5100S-EVB-PICO를 이용하여 측정한 다양한 데이터를 원거리에서 볼 수 있기 위해 클라우드 서버와 연결하였다
다양한 IoT 클라우드 서버 중 Ubidots 라는 클라우드를 선택하였다
해당 클라우드의 경우 간편한 UI/UX를 제공하였으며, 30일간 무료로 사용 가능하였다
다만, 메뉴얼이 모두 영어였기 때문에 구글 번역기를 꽤 많이 사용했다.
개발환경
Arduino IDE
LAN Cable
유효한 MAC Address
1. Ubidots 연결하기
1-1. 계정 생성하기
ubidots.com 에 접속하여 "SIGN UP" 버튼을 눌러 계정을 생성한다
1-2. Device 생성하기
상단 메뉴 Devices - Devices - Add New Device(+) 를 누르고 Devices를 생성한다
생성시, "Blank Device" 로 생성
ps. 나중에 TEST 한 결과, W5100S-EVB-PICO에서 데이터 송신 시 자동으로 생성되므로, 1-2 번은 진행하지 않아도 된다
1-3. Token 확인 및 Ubidots 에 데이터 전송하기
Ubidots 사이트 내 프로필에서 내 Token을 확인 후 저장해야한다
"industrial.api.ubidots.com" 에 접속하거나 "169. 55. 61. 243" 에 접속 후 아래 포맷으로 데이터를 전송하면 된다
1-4. Ubidots 에 데이터 전송 코드
아두이노 Ethernet 예제 Web Client를 이용하여 Ubidots 서버에 접속 후 데이터 전송하는 함수를 만들었다
해당 코드는 DATA를 Device Label - Variable Label 에 전송 하는 함수이며, 이 함수를 이용하여 간단하게 데이터를 보낼 수 있다
Step 6
W5100S-EVB-PICO를 이용하여 먼 거리에서도 화분 상태를 확인하고, 자동으로 물을 줄 수 있는 간단한 스마트 화분을 완성하였다
완성한 스마트 화분은 특정 식물의 적정 온도 환경을 입력하여, LED로 현재 화분의 온도를 확인할 수 있으며(RED: BAD, GREEN: NOT BAD, BLUE: GOOD)
먼 거리에서도 스마트폰이나 PC에서 화분의 상태(온도, 습도, 조도, 토양 습도)를 확인할 수 있다
또한, 설정한 토양 습도에 따라 자동으로 물을 주기도 한다
작동 영상은 개인블로그를 참고 바란다
위 내용은 개인 블로그(wowgogogo.blogspot.com/2022/04) 에서도 확인하실 수 있습니다
documents
Hi yhm8029,
I’m Ron from WIZnet HK. Could I post your article to our WIZnet HK instagram account?
BTW, do you have a instagram account that I could tag you?
Best Regards,
Ron