-
프로그램 실행 시 메인 화면이 나타나고 초기 설정이 완료된다.
- "Start" 버튼을 클릭하면 운전면허 장내기능시험 시뮬레이션이 시작되며, "Manual" 버튼 선택 시 메뉴얼이 표시되고 전/후 페이지를 넘길 수 있는 터치 버튼이 제공된다.
- 모든 페이지를 확인한 후 "Test Start" 및 "Main Screen" 버튼으로 이동할 수 있다.
- "Test Start"를 누르면 시뮬레이션이 시작되고, "Main Screen"을 누르면 초기 화면으로 돌아간다.
- "Start" 버튼을 클릭하면 운전면허 장내기능시험 시뮬레이션이 시작되며, "Manual" 버튼 선택 시 메뉴얼이 표시되고 전/후 페이지를 넘길 수 있는 터치 버튼이 제공된다.
-
기본 조작 시험에서는 "Start" 버튼을 누르면 자동차의 기본 조작 시험이 시작된다.
- 시동 버튼을 제외한 전조등, 와이퍼, 기어, 방향 지시등 중 랜덤으로 2개가 출제되며, 사용자는 제한된 시간 내에 해당하는 버튼을 눌러 기능을 수행해야 한다.
-
기본 조작 시험이 종료되면 주행 단계가 진행된다.
- 게임 시작 시 Text LCD에는 시뮬레이션 진행 시간과 현재 단계가 표시되고, FND에는 현재 점수와 감점될 점수가 표기된다.
- Color LED는 현재 신호등의 불빛을 표시한다.
- 키트를 왼쪽으로 꺾으면 좌회전, 오른쪽으로 꺾으면 우회전하며, 앞으로 기울이면 차가 앞으로 진행하고 앞으로 많이 기울이면 가속한다.
- 게임 시작 시 Text LCD에는 시뮬레이션 진행 시간과 현재 단계가 표시되고, FND에는 현재 점수와 감점될 점수가 표기된다.
-
키트를 중앙에 위치시키면 기존 속도로 계속 진행된다.
- 좌회전 또는 우회전을 해야 하는데 하지 않는 등 게임에서 제시한 조건을 만족하지 못하면 감점을 당하거나 치명적인 실수를 하면 실격 처리되고 시뮬레이션이 종료된다.
- 반대로 완주하면 성공 화면이 출력되며 시뮬레이션이 종료된다.
- 이를 통해 다양한 조작 요소를 통해 실제 장내 기능 시험과 유사한 시뮬레이션 경험을 즐길 수 있다.
- 좌회전 또는 우회전을 해야 하는데 하지 않는 등 게임에서 제시한 조건을 만족하지 못하면 감점을 당하거나 치명적인 실수를 하면 실격 처리되고 시뮬레이션이 종료된다.
초기 프로젝트 기여 OpenGL, OldProject |
Device Driver 제작 libmyperi |
최종 프로젝트 기여 ProjectFolder |
|
KimTeddy (나, 팀장) |
|
|
|
kms0511 |
|
|
|
bllobll5 |
|
|
|
JW-LEE-1015 |
|
|
|
공통 | 디바이스 드라이버를 프로젝트 마감 2주 전에 배워서 미리 할 수 있는게 거의 없었음. | - |
|
- 초기 개발 모습
- 제안 아이디어
a. 제안 배경
b. 아이디어 기술 - 연구 방법
a. SW 구성도
b. Flow Chart - 설계
a. 빌드업/실행과정
b. 작동 <- 작동 모습만 보고 싶다면! - 결과
a. 결론
b. 시연 - 부록
- Commit Graph
- OpenGL 사용, 3D 그래픽 구현
- 1000줄 코드, 프로젝트 마감 2주 전 폐기
- (초반에 안 알려주고 마감 2주 전에 알려준)프로젝트 제한조건 -> Xwindow 사용 불가
- 따라서 OpenGL을 EGL로 렌더링 후 BMP 파일로 빼내어 frame buffer로 출력하는 시도를 했으나 실패 -> 빠른 코드 폐기 판단
- 점점 떨어지고 있는 운전 면허 시험 합격률
- 초보 운전자의 운전 미숙으로 인한 다양한 사고 발생 등의 사회적인 문제
⇒ 현실적인 운전 경험을 모의로 제공하여 공간의 제약 없이 "운전면허 기능시험 모의 시뮬레이션"을 할 수 있도록 제작
- 운전 면허를 취득할 사람이라면 누구나 통과해야할 장내 기능 시험을 시뮬레이션으로 구현
- 시간과 공간의 제약 없이 시험해볼 수 있는 모의 시뮬레이션
- 키트의 가속도 센서를 이용하여 키트를 핸들로 사용하는 시뮬레이션 제작
- Color LED와 FND, Text LCD, TFT LCD(+Overlay), Buzzer를 활용한 시각적&청각적 피드백
- TFT LCD를 통해 현재 운전자의 시야와 코스 내 구간을 한 눈에 확인하여 변화하는 환경에 즉각적으로 반응하면서 운전 능력을 높이고 주행 경험을 제공할 수 있는, "운전면허 기능시험 모의 시뮬레이션"
- [노트북]led.c, led.h / button.c, button.h / buzzer.c, buzzer.h, buzzer_pitch.h, buzzer_soundeffect_defs.h / fnd.c, fnd.h / colorled.c, colorled.h / lcdtext.c, lcdtext.h / temp.c, temp.h / accelMagGyro.c, accelMagGyro.h / libfbdev.c, libfbdev.h / libbmp.c, libbmp.h, bitmapFileHeader.h 를 포함한 디바이스 드라이버 코드를 Makefile을 통해 libMyPeri.a 라이브러리로 컴파일한 후 결과 파일을 main.c와 같은 폴더에 탑재한다.
- [노트북]touch.c, touch.h를 Makefile을 통해 libtouch.a 라이브러리 파일을 만든다.
- [노트북]Makefile을 통해 libMyPeri.a, libtouch.a 라이브러리와 함께 main.c를 컴파일함과 동시에 나온 실행 파일을 udoo 보드로 자동 전송한다.
- [키트]udoo 보드에 원격접속 후 미리 만들어 둔 loaddrv.sh파일을 실행하여 필요한 .ko 확장자인 디바이스 드라이버를 적재한다.
#!/bin/bash
# 드라이버 파일들의 배열 정의
drivers=("buttondrv.ko" "buzzerdrv.ko" "fnddrv.ko" "leddrv.ko" "textlcddrv.ko")
# 배열에 있는 각 드라이버를 순차적으로 로드
for driver in "${drivers[@]}"
do
echo "loading: $driver"
sudo insmod "$driver"
if [ $? -eq 0 ]; then
echo "SUCCESS: $driver ins complete"
else
echo "ERROR: $driver ins Failed"
exit 1 # 실패 시 스크립트 종료
fi
done
echo "insmod all complete"
- [키트]udoo 보드에 원격접속 후 만든 실행 파일을 실행한다.
- Button & LED
- FND(KimTeddy 담당)
- Buzzer
- Accelerometer
- TFT LCD(bmp+frame buffer)
- LCD Touch Screen (bmp overlay)
- 본 프로젝트를 통해 운전면허 장내 기능 시험의 시뮬레이션을 구현하는 과정에서 다양한 하드웨어 및 소프트웨어 요소들이 어떻게 상호작용하는지 이해할 수 있었다.
- LED, 버튼, Buzzer, Text LCD, 가속도 센서 등 다양한 센서의 디바이스 드라이버들을 활용하여 프로젝트를 수행하고자 노력했다. 이 과정에서 기기들 간의 상호 연결 및 통신에 대한 이해를 향상시키고, 리눅스 시스템에 대한 지식을 확장할 수 있었다.
- 이를 바탕으로, 팀원들간의 원활한 협업을 함으로써, 이번 임베디드시스템 프로젝트를 잘 마무리할 수 있었다.