#GPS Clock v0.1 - my code is a mess edition This is a simple display clock that runs on the Arduino platform created out out of frustration with my current bedside clock losing time constantly.
It is designed to display a simple clock interface to an LCD. UTC time is synchronised via GPS NEMA data and stored in RTC module. Has support for adjustable timezones and automatic daylight-savings periods. Settings can be adjusted on the fly via a GUI menu interface. Also has support for displaying current temperature read from the simple and cheap Dallas 1-Wire range of temperature sensors.
##Hardware
-
The code currently compiles correctly for the Teensy 3.1 (@ 96Mhz) May work on standard Arduino boards, althought as GPS data is handled over a serial connection, baud rate of the GPS module will likely need to be reduced in order to fit in enough time for the main drawing and screen update loops within the main loop.
-
Standard NEMA compatible Serial GPS module (Tested succesfully at 10Hz @ 112500 baud)
-
I2C RTC module (optional, but very useful) - DS1307/DS3231 etc
-
20x4 Character LCD - I use an I2C backpack compatable with New Liquid Crystal, but any should work
-
1-Wire Temperature Sensor - DS18B20 provides 12bit resolution
-
Push button rotary encoder for menu interface
##Software This project makes use of the following libraries:
- New Liquid Crystal - Drop in faster and more extensible replacement for standard Arduino Liquid Crystal
- DS1307RTC - For RTC
- Arduino Timezone Library
- m2tklib - For LCD menu system
- Dallas Temperature Control Library - For DS18XXX series 1-Wire sensors
- OneWire - Requires modification for use with Teensy 3.x boards
- Wire - For I2C
##Planned
- Multiple main-screens to show different data
- Data/Time, Large Font Time, Temperature, GPS Location, GPS Status, etc
- Support for 128x64 pixel graphics LCDS
- Further working menu system
- Menu items actually work
- Allow in-device addition of custom timezones
- Temperature logging/stats