PlantsBot 최종완성하기 및 소감
1. 개발과정
1) H/W 기존 개발 내용과 변경된 부분
- 라즈베리파이 제로를 사용하려고 했으나 장착하는 모듈때문에 라즈베리파이 4 정식버전 사용
- 라즈베리파이에 ADC, DAC 관련된 모듈이 장착되어 있지 않아서 다른 칩은 검토
- PCF8591 칩을 사용하여 아날로그 데이터 확인
- 라즈베리파이 장착된 핀들에서 전원 핀 부족한 것은 인지하여 추가 헤더핀이 필요한 상황에서 Pioneer600 모듈 확인에 ADC와 OLED, 해더핀이 장착된 것이 있다는 것을 확인하여 추가로 구성하여 기능 구현
2) S/W 개발 사항
- 버전 관리를 하기 위하여 git을 적용하여 소스 관리 진행
- 기존 순차적 처리 로직에서 온도 습도, 화면 출력, 땅의 습도(아날로그 값) 수신을 하면서 하기는 문제가 있다고 판단되어 pthread를 이용하여 서로간 다르게 동작하도록 작성
- AUTO MODE와 MANUAL MODE를 두었으며, MANUAL MODE는 테스트 및 필요할 때 마다 사람이 판단하여 작동할 수 있도록 추가로 구성
- 원격에서 SSH로 접속하여 키보드의 입력을 받아 작동하도록 구현
- 모터와 팬을 작동시 소프트웨어 PWM을 사용하지 않고 하드웨어 PWM으로 구현
2. 메뉴 간단 설명
1) AUTO MODE :
- 토양의 습도를 수치와 온도 설정값을 입력하여, 각각의 수치에 따라 자동으로 펌프와 팬이 작동( 땅의 습도가 수치가 높아지면, 펌프를 작동시켜 물을 주고 LED를 켜주며, 온도가 높아지면 팬을 작동시켜 공기를 순환)
2) PUMP, LED START :
- PUMP와 LED각 동시에 PWM 신호에 의해 계속 작동
3) FAN START :
- FAN이 PWM 신호에 의해 계속 작동
4) PUMP, FAN STOP :
- 위에서 수동으로 작동시킨 PUMP와 FAN을 멈추게 함
5) QUIT :
- 프로그램을 종료
3. 구성 설명
- 라즈베리파이 4에 Pioneer600 모듈을 장착
- PWM0을 IRF520 SIGNAL에 입력으로 하여PUMP,LED 제어에 사용
- PWM1을 IRF520 SIGNAL에 입력으로 하여 FAN 제어에 사용
- 1Wire 신호로 DHT11 과 데이터 통신하여 온도와 습도를 가져옴
- PCF8591를 IC2 통신을 통해 아날로그 신호를 가져옴
- Putty 프로그램을 통해 WiFi를 이용하여 원격접속하여 제어
4. 동영상 설명
- 수동으로 펌프와 FAN을 작동시킨 후 AUTO MODE를 선택하여 토양의 습도 수치에 의해 작동되는 것을 확인
5. 프로젝트 진행 중 얻게된 경험과 소감
- 사전에 계획했던 부분과 다르게 치밀하게 분석하지 않아서 하드웨어 구성이 조금씩 변경이 생기게 되었습니다. 역시 상세설계가 필요하고 사용하고자 하는 하드웨어에 대해서 분석이 필요하다고 생각됩니다.
- 토양 습도 수치 센서가 한 개만 있어서는 한쪽에 물을 충분한 물을 공급할 수 있는 수치를 만들어 내지 못하기 때문에 2개 혹은 3개를 장착하여 평균값 등 수치 데이터를 가공해서 펌프를 조절해야 한다는 것을 알게 되었습니다.
- 3D 프린터를 다루지 못해서 물리적인 외형에 아쉬움이 많이 남는 부분이 있습니다. 현재 판매되고 있는 LG 제품 등과 비교할 것은 아니지만, 이렇게 구현하면 되는구나 확인할 수 있었으며, 추가로 개발을 진행하게 된다면 RTC와 같은 것을 넣어서 시간이 되면 작동되도록 하면 좋겠다고 생각하였습니다.
- 한 달 조금 넘는 시간 동안 기획해서 스케줄로 준비하고 진행되어 가는 것을 보면서 Quest마다 긴장도 되고 이렇게 해봐야 한다고 생각도 들게 많은 생각을 하게 해주었고, 즐거운 경험이었습니다.
감사합니다.
- 첨부파일
- plantsBot.zip 다운로드