아두이노 & GPRS/GPS 실시간 수질 모니터링 시스템
부품 및 소모품
| 부품 |
수량 |
비고 |
| 아두이노 우노 |
1 |
또는 아두이노 제누이노 101 |
| A7 GPRS/GPS 모듈 |
1 |
SIM900보다 저렴, GPRS+GPS 통합 |
| 수질 센서들 |
1세트 |
온도, pH, 용존산소(고장), 탁도 센서 포함 |
필요 도구
앱 및 온라인 서비스
- 마이크로소프트 애저 (Azure) - 웹사이트 호스팅 (학생 무료 티어)
- 아두이노 IDE
프로젝트 소개
도입부
2016년 9월, 오염된 물이 정수장으로 유입돼 정수장 가동 중단 사태 발생. 수자원 공사가 오염원을 특정하지 못해 심각한 급수 차질 초래. 대학 과제로 지역사회 문제 해결 시스템 구축 요구 → 자동 수질 모니터링 시스템으로 오염원 추적 용이화 목표.
시스템 개요
시스템 블록 다이어그램
4개 센서를 아두이노 제누이노 101에 인터페이스. 모두 전류 출력형이라 인터페이스 회로 필요. 아두이노가 주기적으로 측정 데이터 수집, GPS 좌표 획득, GPRS 데이터 링크로 데이터베이스 업로드. 사용자는 웹사이트에서 결과 확인.
웹 대시보드 - 구글 맵에 측정 위치 마커 표시
센서 프로브
글로벌 워터(Global Water)사 센서들 (지도교수 제공)
사용 센서: 온도, pH, 용존산소(DO), 탁도. 불행히도 DO 센서 고장. 탁도 센서는 부유 고형물 양에 비례하는 전압 출력.
탁도 센서
센서-아두이노 인터페이스
전류 출력을 전압으로 변환하는 저항 회로
전류 출력 센서는 저항을 통해 측정 가능한 전압 레벨로 변환.
A7 GPRS/GPS 모듈
A7 GPRS/GPS 모듈
SIM900보다 저렴하고 GPRS+GPS 통합 패키지라 선택. 하지만 단점도 있음:
- 동봉 GPS 안테나가 실은 GPS 안테나 아님 → 별도 구매 필요
- 기본 115200 bps UART만 지원. 소프트웨어로 보레이트 변경해도 파워 사이클 후 원복. 소프트웨어 시리얼 115200 bps 매우 불안정 → 이 문제로 이틀 고생 후 아두이노 코드에 보레이트 변경 함수 구현
- 신규 모듈이라 자체 라이브러리 작성 필요 (SIM900, Adafruit GPS 라이브러리 참고). 코드 지저분하지만 작동함
A7 모듈 라이브러리 구조
모듈 전원 제어 회로 필요: RESET 핀, PWR_KEY 핀 제어. PWR_KEY에 2초 이상 전압 인가로 부팅, RESET 핀을 GND로 풀면 리셋. 그 외엔 RESET을 5V로 풀업. 코드에서 먼저 리셋 후 파워업으로 확실한 시작 보장.
전원 공급
전류 출력 센서들은 최소 10V 필요 (아두이노 5V보다 높음). 원격 동작 시연 위해 리튬이온 배터리 채택.
전원 공급 회로
리튬이온 배터리 2개 직렬 → 7.4~8.4V. 벅 컨버터로 5V 강압 (아두이노, A7용), 부스트 컨버터로 11V 승압 (수질 센서용). 프로토타입이라 장시간 구동은 비목표.
보드 및 인클로저
시제품 보드에 구성. 아두이노 제누이노 101과 함께 인클로저에 수납.
시제품 보드
지도교수가 이전 학생들 프로젝트용으로 구멍 뚫린 오래된 인클로저 제공. 센서 커넥터가 GX16 타입이라 호환 커넥터 수급. 범용성 좋아 향후 프로젝트에도 유용.
인클로저 및 GX16 커넥터
웹사이트
가장 시간이 많이 걸린 부분 (수주 소요). 서버, 웹 지식이 전무한 상태에서 PHP, SQL, JavaScript, CSS, HTML 독학.
- 호스팅: 마이크로소프트 애저 학생 무료 티어 (제약 있지만 충분)
- 데이터베이스: ClearDB (애저 파트너십, 용량 제한 있지만 충분)
log.php: 아두이노 데이터 수신 → DB 저장
- 웹페이지: 구글 맵에 측정 위치 마커 표시. 기타 PHP 파일들은 DB 조회 도구
- 응답 속도 느림, 허술하게 짜여 개선 여지 많음. 제안 환영!
코드 및 회로도
- 전체 소스: GitHub 저장소 (웹사이트 코드
/Website, 아두이노 스케치 & A7 라이브러리 /Arduino)
- 회로도: 전체 시스템 회로도 포함