😂😂😂
seen from United States
seen from United States
seen from United States

seen from Macao SAR China
seen from Malaysia

seen from Malaysia

seen from United States
seen from Singapore
seen from China
seen from Türkiye
seen from China
seen from Singapore
seen from Germany

seen from Portugal

seen from Australia

seen from Maldives

seen from United States

seen from Portugal
seen from United States
seen from United States
😂😂😂
Arduino GPS GridSquare Decoder
For some time I've been looking at how to make use of a GPS module with Arduino. Working out what my Grid Square or Maidenhead location for which is used when making VHF contacts with Amateur Radio seemed like a good little project. Of course there are easier ways to do this, such as apps loaded on your GPS smart phone, and then there's a range of web apps, assuming you have internet access and a pc of some sort. But where's the fun in that.
First thing to get is a GPS module. Most of the regular Arduino sites sell them. I particularly like LittleBird and Freetronics. Ebay is always worth a look too, and that's where I got mine. I bought a "SkyNav SKM53 Series with embedded GPS" that came with a small breakout board. The breakout board enabled me to use the standard 0.1" spaced pins. In hindsight, this probably wasn't needed. The GPS module cost just under $30 Australian.
For the prototype I used an ATmega328 chip in a breadboard. I was going to make up my own PCB and created an Eagle file that was optimized for a single sided board. I broke out all the LCD, FTDI and GPS pins as separate pins, which allowed me to move them around on the PCB. In the end it all seemed too much effort so I bought an Arduino Pro Mini off ebay for less than $10 Au, which is less than the cost of all the components for a custom build.
The GPS data sheet showed that VCC is 5v and RX and TX is LVTTL, which needs 2.85v to switch. As the Arduino I/O pins are 5v some voltage conversion is required. A voltage divider network was used to get a 3.3v reference which, along with a pair of 10k resistors, was used as a pull up on both the RX and TX lines.
For the GPS TX pin, the GPS drives the line and the Arduino only listens. I'd planned to add a diode in line to prevent the Ardunio accidentally driving the GPS RX, but never did.
On the GPS RX pin, a 1k resistor was used to drop the voltage which is driven by the Arduino. If you were to use a higher value resistor you risk not being able to get the pin down to zero. Sticking a multimeter on the line doesn't show any movement, so I'm not even sure the line is needed.
I also needed an LCD display. For the prototype I've used my stock blue 4 line one. For the final one I'm thinking of a 4 line green one, so it's not as dependent on the back light.
The code avoided making use of any floating point functions. This made it both smaller and faster. I made a point of building up strings of data to be printed to the LCD. Whilst this makes the code a little bit bigger, it's quite a bit faster than multiple LCD writes as opening and closing the LCD for writing is quite slow. Writing out a whole line of data in one write saves some time.
I displayed the location in WGS84 format. This seems to be the most common format these days, though it needs some calculations to get that format out of the decimal format provided by the NEMA string.
The display cycles through two formats. The second shows various pieces of information that's able to be extracted from the GPS. The only key piece of a data I didn't show is speed and course. I really didn't think I'd need it.
The Grid Square is shown on both screens. Given that's the whole point of the project, it seemed worthwhile.
The local time is calculate via some offsets that are hard coded. So if I travel to another time zone I'd need to be able to update the code. Same thing when daylight savings kicks in or out.
FCS is a count of the number of strings that have failed check sum.
I think it would be easy enough to adapt to a 2 line screen. That would make the whole package smaller, which would be good. The variation in cost seems to make it not worth the effort.
Only a prototype at this point. I've ordered the Arduino pro mini for the final build. Next thing is to order the LCD. I'm thinking about adding a temperature monitor and also a battery voltage monitor. Watch this space I guess.
The Arduino Sketch and the Eagle files are on github.
Any questions, just ask.