개발 목적
최근 농가의 농작물 서리 및 야생 동물의 침입으로 농작물 손실 발생.
침입 감지시 알림을 주는 간단한 장치를 설계하여 도움을 받을 수 있도록 하고자 함.
기술 요약
- 사용 보드: Arduino UNO R3
- 입력 장치: 버튼 (Button) 초음파 센서, PIR 센서
- 출력 장치: RGB LED, 부저 (Buzzer)
- 주요 구현 기술: 거리 기반 분기 제어, 디바운스 처리, 모듈화 구조
- 사용 언어: C/C++ (Arduino)
시스템 구현
1. 초음파 센서
거리 측정 후 거리에 따른 LED 제어 및 기능 동작
1. 거리 값 >= 30
침입 감지 안됨.
LED 녹색 점등
2. 거리값 >= 10
침입 주의
근처에 무언가 감지됨을 알림.
LED 노란색 점등
3. 거리값 < 10
침입 감지
야생동물 또는 사람이 침입했을 알림
부저 작동 및 LED 빨간색 점등 신호를 보냄
2. PIR 센서
초음파 센서로만 감지가 되지만, 정확성을 높이기 위하여 추가.
초음파 센서의 거리값이 10 이하일 경우와 PIR 센서가 감지되면 탐지 알림을 보냄
3. Buzzer
탐지 알림을 내기 위해 사용설정한 알림을 울린다
4. Button
디바운스를 활용하여 버튼을 동작해당 시스템을 On/Off 함.
하드웨어 구성도

소프트웨어 흐름도

문제점 해결
1. 버튼을 이용한 온 오프 기능 문제
디바운스를 적용하여 버튼을 구현했다. On은 잘 되지만 Off는 여러 번 눌러야 한 번 인식되서
종료되는 현상이 있었다.
디바운스를 적용하면 한 번 클릭 시 실행되니 당연히 잘 구현될 줄 알았다.
하지만 기능이 잘 구현이 되지 않아 원인을 찾아보니 "버튼 떨림" 현상이었다.
버튼 떨림 현상이란 버튼의 상태가 변할 때 물리적으로 깜빡거리며 여러 번 상태 변화가 감지되는 문제이다.
즉, 코드의 흐름에서 한 번 클릭을 하더라도 여러 번 상태변화가 감지되어 flag가 여러 번 바뀌어 제대로 된
기능을 못하는 현상이었다. 코드의 흐름이 너무 빠른게 원인이었다.
따라서 버튼의 상태가 안정될 때까지 충분한 시간을 주기 위한 방법이 필요했다.
delay(10)을 추가하여 코드 실행 속도를 늦춰 버튼의 상태를 안정화 시켜 문제를 해결하였다.
2. 거리 감지 문제
코드 구성에서 처음에는 char 포인터를 이용한 문자열을 이용하였고 getter 구성으로 데이터를 받았다.
아두이노에서 포인터를 잘못 사용한 문제였고, 그로인해 데이터를 제대로 받을 수 없어 기능을 못한 것이었다.
char 타입으로 변경 후 해결이 되었다.
코드
코드는 github에서 확인 바랍니다.
https://github.com/karist7/intrusion-detector
GitHub - karist7/intrusion-detector: AI를 활용한 사물인터넷 개발자 양성 과정 미니 프로젝트 - 야생동물
AI를 활용한 사물인터넷 개발자 양성 과정 미니 프로젝트 - 야생동물의 침입을 탐지를 목적으로 개발 - karist7/intrusion-detector
github.com
테스트
직접 손이나 물체를 이용하여 테스트를 진행했다.
거리의 차이를 두며 테스트를 진행하며 각각의 결과값들이 잘 도출 되는지 확인을 했다.
테스트 결과 80% 이상의 탐지 결과가 나타났으며, 의도한 대로 동작을 했다.
중간 중간의 노이즈로 인하여 잘못된 결과가 나오기도 하여 완벽한 성능을 구현하지 못했다.
향후 발전 가능성
노이즈 필터링 및 거리 감지 알고리즘 개선을 진행 한다면 더 높은 정확도를 도출할 수 있을 것 같다.
해당 시스템을 실 상황에 적용해 보며 데이터를 수집한 후 개선한다면 간단하게 농민들이 사용할 수 있을거라 예상한다.
구현 결과
'개발 내용' 카테고리의 다른 글
| 프로젝트 - 자동 물건 분류 시스템 (1) | 2025.06.13 |
|---|---|
| 미니 프로젝트 - 가위바위보 게임 (3) | 2025.05.30 |
| 미니 프로젝트 - 색 인식 트레이싱 RC카 (0) | 2025.05.26 |
| 미니 프로젝트 - OLED 캡처 프로그램 (0) | 2025.05.21 |
| 미니 프로젝트 (라인 트레이싱 RC카) (0) | 2025.05.15 |