printf("ho_tari\n");

Mini Project2 - Auto Car 본문

(Telechips) AI 시스템 반도체 SW 개발자 교육/ATmega128A mini Project

Mini Project2 - Auto Car

호타리 2025. 3. 24. 11:13

2025.03.20 ~ 2025.03.24

 

ATmega128A를 이용하여 자율주행차 (Auto Car) 구현 프로젝트 진행

 

🧩 프로젝트 개요

  • MCU: ATMega128A
  • 구성요소:
    • 초음파 센서 3개 (좌/중앙/우)
    • DC 모터 + L298N 드라이버
    • 버튼 (자율주행 모드 전환)
    • I2C LCD (상태표시)
    • FND (모드 번호 표시)
    • 부저 (장애물 경고)
    • UART (블루투스 수신)
  • 주요 기능:
    • 수동 모드: 블루투스 명령으로 조종
    • 자율 주행 모드: 초음파 센서 기반 장애물 회피
    • LCD 및 FND를 통해 상태 및 모드 표시

🎮 모드 설명

1. 수동 모드

  • Bluetooth(UART) 명령 수신:
    • 'F', 'B', 'L', 'R', 'S' → 전진, 후진, 좌회전, 우회전, 정지
  • LCD: Normal 표시
  • FND: 현재 명령 번호 또는 누적된 실행 횟수 표시
  • 사용 함수: manual_mode()

2. 자율 주행 모드

  • 버튼을 눌러 모드 전환 (auto_mode_check())
  • 초음파 거리 측정 주기적으로 수행
  • LCD: Auto 상태 표시
  • 사용 함수: auto_mode()

🚘 자율 주행 알고리즘

  1. 전방 위험 거리 이하일 경우:
    • 후진 + 좌/우 회전으로 장애물 회피
  2. 충분히 열려있음:
    • 정방향 빠른 주행
  3. 부분 장애물 감지:
    • 느린 직진 또는 좌/우 회전
  4. 좌/우 모두 막힘:
    • 후진 후 좌/우 중 넓은 방향으로 회전
조건동작
Center ≤ 40cm 후진 + 회전
Center > 210cm & 좌/우 ≈ 넓음 정방향
좌/우 거리 차이 큼 넓은 쪽으로 회전
좌/우 모두 좁음 후진 + 회전
  • 거리 임계값:
    • CENTER_WARNING_RANGE = 250
    • SIDE_WARNING_RANGE = 220
    • CRITICAL_DISTANCE = 40

📡 초음파 센서 구성

센서 위치트리거에코인터럽트
좌측 PA0 PE4 INT4
중앙 PA1 PE5 INT5
우측 PA2 PE6 INT6
  • 타이머2 사용 (128분주)
  • 거리 = TCNT2 * 128 / F_CPU * 1,000,000

🖥️ 인터페이스 구성

버튼

  • PORTA.7: AUTO 모드 토글
  • 상태 LED 제어 및 func_index 설정

FND

  • PORTC, PORTF 연결
  • init_fnd()로 초기화
  • fnd_display(mode)로 0~4 상태 출력

LCD

  • I2C 주소 0x27
  • I2C_LCD_Normal() : 수동 모드
  • I2C_LCD_Auto() : 자율 주행 모드

🔊 부가 기능

  • 부저 (추정): Auto_siren() 호출 (정의는 누락됨)
  • 시간 제어:
    • TIMER0 → 1ms 간격 오버플로우 인터럽트
    • 타이머 초기값 TCNT0 = 6 설정
  • LCD 업데이트 주기: 1000ms 단위로 갱신

 

<프로젝트 정리 자료>

ATmega128A_AutoCarProject_박성호.pdf
1.37MB

 

<소스 코드>

10.AUTOCAR.zip
0.03MB

 

<실행 결과>

자율 주행 영상

https://youtube.com/shorts/6Wx-I0pbpkk

 

FND & I2C LCD 영상

https://youtube.com/shorts/5h3yXWO0DD4

 

BUZZER & LED & BUTTON 영상

https://youtube.com/shorts/7KOlTIEEiLM