요트용 고급 오토파일럿 시스템 - 아두이노 기반 정밀 자동 조향
필요한 부품 및 소모품
아두이노 우노 (Arduino UNO) × 1 - 메인 MCU
아두이노 나노 R3 (Arduino Nano R3) × 1 - 워치독(Watchdog)용
※ 전체 부품 리스트는 본문 '부품 리스트' 섹션 참조 (GPS, 스테퍼 모터, L298 드라이버, RF 433MHz 리모컨, LCD, EEPROM, 센서 등 다수 포함)
프로젝트 배경
혼자 요트를 탈 때 가장 즐거운 순간은 '티타임'입니다. 하지만 조타를 계속 잡아야 하죠. 오토파일럿을 켜면 GPS가 방위와 속도를 계산해 스테퍼 모터로 키를 자동 조향 해 줍니다. 단, 이 프로젝트는 교육/취미용 프로토타입 이며, 실제 해상 항해용 정식 오토파일럿 대체용이 아닙니다.
시스템 아키텍처
듀얼 MCU 구성
아두이노 우노 (메인): GPS 파싱, 조향 알고리즘, 디스플레이, 버튼/리모컨 처리, EEPROM 파라미터 저장, 센서 모니터링
아두이노 나노 (워치독): 우노 핀 3 → 나노 A0로 2.5초마다 하트비트 신호 수신. 미수신 시 우노 리셋 (독립 감시로 신뢰성 확보)
주요 하드웨어 모듈
GPS: Beitian BN-220T (2Hz, $GNRMC NMEA 문장만 출력 설정). 구형 EM406A는 주 롤오버 버그로 교체.
조향 액추에이터: 23LM 스테퍼 모터 (54스텝 = 1/4회전) + Keyes L298 드라이버. 풀리/로프로 키 연결.
원격 제어: RF 433MHz 4버튼 리모컨 (+1, -1, +10, -10도) + 코일 안테나로 10~20m 도달.
사용자 인터페이스: I2C LCD 16x2, 하드웨어 버튼 6개(좌/우/일시정지/설정/±10), 상태 LED 3개.
전원: 2S LiPo 7.4V 2600mAh + 7805 레귤레이터 (방열판 필수). NTC 서미스터로 레귤레이터 온도 감시.
안전 기능: 배터리 저전압(7.0V 미만) 부저 경보, 과열(50°C 초과) 경보, 전류 모니터링 (0.22Ω 션트 + 4051 멀티플렉서로 아날로그 입력 절약).
PCB 설계 및 조립
단면 PCB 2장 (파워 보드 + 오토파일럿 보드)을 아두이노 우노 위에 스택 형태로 적층.
레이저 프린터 토너 전사 방식으로 제작 (1200dpi, 토너 절약 모드 해제).
모든 연결을 헤더/듀폰 와이어로 구성해 모듈화 (납땜 권장: 진동 환경에서 접점 불량 방지).
파라미터 설정 및 디스플레이
측면 검정 버튼(설정) 으로 진입 (항해 중에도 가능). 반복 눌러 페이지 전환:
센서 모니터: 배터리 전압, 소비 전류, 레귤레이터 온도
Interval (기본 2000ms): 조향 시도 간격
Minimum (기본 2°): 개입 최소 편차각
Max (기본 40°): 1회 최대 조향각 제한
Coefficient (기본 1.50): 조향 게인 (계산값 × 계수 = 실제 스테퍼 이동각)
저장 확인: "Updating..." 표시 후 EEPROM 기록
이 파라미터들은 풀리 직경, 키 길이, 러더 민감도 등에 따라 실선에서 튜닝 필요.
실제 작동 시나리오
항해 중 '티타임' → 오토파일럿 켜기 (파란 버튼).
GPS 위성 고정 대기 → 현재 방위(H)와 목표 방위(R) 표시 (예: H270° R270°).
스테퍼 모터 로프를 키 스틱에 연결.
파란 버튼(일시정지/재개) 눌러 조향 시작. H가 R을 벗어나면 ±보정각으로 키 조작.
코스 변경 필요 시 본체 또는 리모컨의 ±1/±10 버튼으로 R 값 조정.
직접 조타 복귀 시: 일시정지 버튼 → 로프 분리 → 수동 조향.
소프트웨어 핵심 로직
NMEA 파싱: serialEvent()로 2Hz 수신 → nmeaExtractData()로 필드 추출 → nmea0183_checksum()로 무결성 검증.
조향 제어 (gomotor): 목표 방위(R)와 현재 방위(H) 차이 계산 → 최소/최대/게인 적용 → 스테퍼 이동 → 인터벌 후 중앙 복귀 (왕복 운동).
EEPROM (24C04 I2C): 파라미터 12바이트 저장 (ID 바이트로 초기화 여부 판별).
멀티플렉서(4051) 센서 읽기: 10초마다 배터리/전류/온도 샘플링.
워치독 피딩: 메인 루프 매 사이클 핀 3 토글.
요트 설치 예시
선미에 본체와 스테퍼 고정. 메인 풀리에서 양현 풀리(번지 코드로 텐션 유지) 거쳐 키 스틱에 임시 연결. 방수 박스 필수.
3D 프린트 파트
스테퍼 풀리 (56T)
마운팅 플레이트 (Andrew Barney 설계)
STEP 파일 다운로드 가능.
면책 조항
이것은 놀이용 프로젝트입니다. 실제 항해용 오토파일럿은 하드웨어/소프트웨어 모두 생명을 맡길 수 있는 수준의 신뢰성이 필요합니다. 이 아두이노 오토파일럿은 학습과 즐거움을 위한 것입니다. 안전 항해하세요!
— Marco Zonca
소스 코드
오토파일럿 스케치 (우노용): 본문 코드 섹션 참조 (약 65% 플래시, 45% 램 사용)
워치독 스케치 (나노용): 본문 코드 섹션 참조
회로도
전체 회로도 5장 제공 (파워 보드, 오토파일럿 보드, 센서 멀티플렉서, RF 수신부, 스테퍼 드라이버 연결).