20130718_092110

I don’t remember if I mentioned this, but I’m building a “MEGA Xronos Wall Clock” for myself, which will have four 24×16 LED matrix displays, tons of sensors and other goodies 🙂  One thing I wanted it to do was automatically sync time. After doing some research simplest way seems to be via GPS receiver.  Time library supports it so it was decided, and I ordered Ultimate GPS breakout module from Adafruit!
It arrived today in the “kit”, but there was virtually nothing to solder, just battery holder and some headers. I opted out to use my favorite polarized headers, and soldered 4 pin header to VIN,GND,RX and TX pins on the module.
Unfortunately I didn’t realize that this GPS “requires” SoftSerial mode, which basically doesn’t work with my ATMega1284p and 644p processors.
Continued after break…


ultimate_gps

So first thing I did was to connect it to a PC via FTDI Serial to USB dongle.  Of course I had to be creative with wires, because pinouts doesn’t exactly match.  Anyway I fired serial monitor program (i.e. Putty or RealTerm) configured it to 9600 baud (default rate for this module) and voila I can see spitting out some text, a lot of it!
It took about 10 minutes to get satellite fix, but it worked!  I found Visual GPS Survey program online that parses NMEA format text coming to from serial to meaningful information. Everything worked, I got Latitude, Longitude, etc.

Not it was time to get my Xronos board to talk to the GPS. I immediately dismissed Adarfuits GPS library, it just seemed to complex for what I needed, and used interrupts, and other complex stuff 🙂
Fortunately Time library used TinyGPS library, which is indeed very lightweight and straightforward.
It also “requires” SoftwareSerial, however I was able to bypass it and use second serial UART on my chip. Unfortunately there are 2 issues with it. TX1 and RX1 pins are D10 and D11, but D11 is where I had my Infrared remote header connected.   But I really needed just D10, alas it was not connected to any headers. What’s worse it’s used by RFM12B module!
For now I soldered a wire to IC’s pin 16 (D10) and connected it to the GPS TX pin.  I also moved IR receiver to next available pin.

Good news it works!  I’m able to get time from Satellites and update RTC clock.  Bad news RFM12B won’t work now 🙁  I’ve attempted to use regular serial pins (RX0/TX0), but for some reason it didn’t work. I can’t tell what’s wrong because I cannot monitor serial output.  Something for me to figure out in the future….