프로젝트에 사용하는 GPS 모듈은 UART 통신을 사용하므로 UART 블럭이 2개 이상 지원되는 마이크로컨트롤러를 사용하는것이 프로그램 디버깅에 편리하다. 따라서 이번 프로젝트에서는 UART가 2개 들어있는 Atmega128A를 사용한다. Atmega128A 프로젝트를 생성하고 CPU 클럭을 위 그림처럼 보드에 맞게 설정해 준다. 참고로 C++ 프로젝트로 진행할것이기 때문에 AVR/GNU C++ Compiler에서 Symbols를 선택하였지만, 만약 C 프로젝트라면 AVR/GNU C Compiler에 있는 Symbols를 선택한 후 F_CPU값을 입력해 주어야 한다. 프로젝트 생성이 끝나면 UART0는 디버깅을 위하여 baudrate 값을 115200로 설정하고, UART1은 GPS와 연결하기 위하여 9..
이번에는 GPS 모듈을 사용하여 현재 시간, 위치, 속도 등등 필요한 정보를 GPS로부터 받아오는 방법에 대해서 설명한다. 프로젝트에서 사용할 GPS모듈은 u-blox에서 만든 neo-6m이다. 프로젝트를 시작하기에 앞서 가장 먼저 해야 할 일은 가지고 있는 GPS 모듈이 정상적으로 잘 동작하는지 확인해 보는 것이다. 이런 확인을 제대로 하지 않고 프로젝트를 진행했을때 원하는 결과가 나오지 않을 경우 코드를 디버깅하느라 쓸데없는 시간과 노력을 들이게 된다. 일단 아래 그림처럼 GPS 모듈을 UART 모듈과 직접 연결하여 PC에서 GPS가 정상적으로 동작되는지 확인한다. 위와 같이 연결한 후 컴퓨터의 UART 콘솔창을 열고 baudrate를 9600으로 설정한 후 GPS로부터 데이터가 잘 들어오는지 확인 ..
AtTiny85에는 별도의 I2C 기능을 제공하지 않는다. 대신에 USI라는 기능을 이용해서 I2C 기능을 사용할 수 있다. AtTiny85의 PB0에 SDA를 연결할고 PB2에 SCL을 연결하면 된다. 이 프로젝트에서 I2C에 연결된 디바이스는 pcf8563과 ssd1306이다. 즉, real time clock에서 i2c를 통해 읽은 현재 시간과 날짜 정보를 128x64 oled 화면에 출력하는 것이다. 현재 시간 설정은 2022년 12월 31일 23:59:30로 하였다. 30초 후에 2023년 1월 1일로 변경되는것을 볼수 있다.