자동차 HUD: 실시간 풍속 속도계 & 나침반 디스플레이
부품 및 소모품
전체 부품 리스트 (작성자 제공):
- MCU 아두이노 나노 ×1
- 5161AS 7세그먼트 디스플레이 공통 캐소드(적색) ×3
- 베이티안 BN-220 시리얼 TTL GPS (1Hz GNRMC) ×1
- 점퍼 ×1
- 택트 스위치(상시개방) + 캡 ×3
- 1/4W 220Ω 저항 ×22
- 3mm 적색 LED ×1
- 100nF 커패시터 ×2
- CD4511 BCD 디코더+래치 ×3
- USB B타입 암커넥터 ×1
- 핀 헤더 등 배선 부자재
- 3D 프린팅 케이스 (그랩캐드에서 다운로드)
프로젝트 소개
개요
고급 차량의 윈드실드 HUD(헤드업 디스플레이)처럼 속도와 방향을 앞유리에 투영하는 장치를 직접 제작했습니다. GPS에서 속도(km/h)와 진로(도)를 읽어 7세그먼트 3자리로 표시합니다.
소프트웨어 핵심
- 미러링 표시: 앞유리 반사로 보게 되므로 숫자가 좌우 반전되어 표시됨
- 3개 버튼: +/- 밝기 조절, S/H 모드 전환(속도↔방위)
- 방위 모드 시 적색 LED 점등 (나침반 표시 의미)
- GPS는 이동해야 정확한 방위 나옴 (전자 나침반 아님)
- 밝기 값은 EEPROM에 1분마다 자동 저장 (PWM으로 디스플레이/LED 동시 제어)
- NMEA 문장($GNRMC) 파싱 및 체크섬 검증으로 데이터 무결성 확보
- BCD 디코더 래치 3개를 시분할로 제어하여 3자리 표시
- 앞자리 0은 블랭킹(미표시) 처리
중요 주의사항
새 스케치 업로드 전 점퍼를 제거하세요! GPS TX가 아두이노 RX(핀 0)와 연결되어 있어 업로드 시 충돌 발생. 업로드 후 다시 꽂아야 정상 작동.
PCB 제작
- 양면 기판 2장 사용, 약 50개 리벳으로 층간 연결
- 정렬용 5개 홀 먼저 뚫고 맞춤
- 레이저 프린터(1200dpi, 토너 절약 끄기)로 블루/옐로 시트에 인쇄 → 다리미 전사
- 부품면도 인쇄해 '전문적' 마감
- USB 커넥터 아래 절연 테이프 필수 (구리 패턴과 쇼트 방지)
버전 업데이트 내역
- V2 (2021.07.20): 고도 표시 추가 ($GNGGA 문장 필요, D5→D13 핀 변경, 디스플레이 소수점 연결)
- V2.2 (2021.11.01): 고도 999m까지 정수 표시, 1000m 이상은 천 단위(예: 1.24=1240m). LDR 조도 센서(GL5539)+10kΩ로 자동 밝기 3단계 추가. +/- 버튼 수동 조작 우선, 동시 길게 누르면 자동 모드 복귀. EEPROM 저장 기능 삭제.
코드
아두이노 나노용 전체 스케치. 주요 특징:
serialEvent()로 GPS 데이터 수신 (1초 주기)
nmeaExtractData()로 $GNRMC 파싱 (속도, 진로 추출)
nmea0183_checksum()로 체크섬 검증
- BCD 디코더 제어: 래치 핀 3개(2,8,12), 데이터 버스 4비트(4-7)
- PWM 핀(9,10,11)로 각 디지트 밝기 개별 제어
- 버튼 디바운싱 및 모드 전환 로직
// 주요 상수
const int disp001 = 2, disp010 = 8, disp100 = 12; // 래치 핀
const int disp001dim = 9, disp010dim = 10, disp100dim = 11; // PWM 밝기
const int button_kt = 14, button_more = 15, button_less = 16;
const int degreesLED = 3;
const int bit_3 = 7, bit_2 = 6, bit_1 = 5, bit_0 = 4;
// NMEA 파싱 및 표시 루프 등 전체 코드는 원본 참조
회로도 및 파일
- 프리칭 회로도 이미지 다수
- 3D 프린팅 케이스 STL: 그랩캐드
- V2, V2.2 스케치 파일 포함
운전 중에는 운전에만 집중하세요. 안전 운전!