This is only a preview of the October 2017 issue of Silicon Chip. You can view 34 of the 104 pages in the full issue, including the advertisments. For full access, purchase the issue for $10.00 or subscribe for access to the latest issues. Items relevant to "0.01Hz - 6+GHz touchscreen frequency meter, Part 1":
Items relevant to "El Cheapo Modules Part 10: GPS receivers":
Items relevant to "One hour project: Kelvin – the very clever cricket":
Items relevant to "3-way Active Crossover for speakers, Part 2":
Items relevant to "Deluxe eFuse, Part 3: using it!":
Purchase a printed copy of this issue for $10.00. |
Using
Cheap
Asiannic
ro
Elect ules
Mod 10
Pa r t
Two really
low cost GPS
receiver modules
These two GPS receiver modules combine low cost with impressive
performance – making them very attractive for use in all kinds of
projects. One is the V.KEL “GMouse” VK2828U7G5LF, and the other
the u-blox Neo-7M module.
By JIM ROWE
O
ver the 10 years or so that GPS receiver modules have been available for use in electronic projects, they
have not only improved significantly
in performance but have also dropped
dramatically in price.
For example, the Garmin GPS15L
module we used in our GPS-derived
Frequency Reference (Silicon Chip
March-May 2007) cost $130 but also
needed a separately powered outside
antenna/LNA which cost about half
as much again.
At the time, we thought this was surprisingly cheap but by 2013 the prices
for similar modules had dropped to
less than $60 – despite the fact that
they were more sensitive and had a
built-in ceramic “patch” antenna.
But technology and market forces keep marching on and now you
can buy a very compact GPS receiver module complete with ceramic patch antenna (the V.KEL Electronics VK2828U7G5LF) for around
$25, which we supply on our on-
The u-blox Neo-7M module is
35 x 25 x 5mm by itself, with a
separate ceramic patch antenna of
25 x 25 x 8mm.
36
Silicon Chip
Celebrating 30 Years
line shop (www.siliconchip.com.au/
Shop/7/3362). Or you can buy a similar
unit (the u-blox Neo-7M) with separate
patch antenna for as little as $16, from
many different suppliers on eBay and
AliExpress.
The two modules look a little different, as you can see from the photos.
For the V.KEL “GMouse”, the ceramic patch antenna is mounted on the
underside of the module's main PCB,
while for the Neo-7M it is separate and
connected to the receiver using a short
length of thin coaxial cable. Both modules are built in China and they're both
based on the GPS receiver engine chip
(the UBX-G7020-KT), made by Swiss
firm u-blox Holding AG.
Founded in 1997 as a spin-off from
the Swiss Federal Institute of Technology in Zurich, u-blox had delivered
one million GPS receivers by 2004
and its 10 millionth receiver by 2008.
In 2011, it acquired the Californian
firm Fusion Wireless and in 2012 it
acquired Finland-based Fastrax.
The firm now has offices in Finland,
China and Japan as well as in the USA
and many European countries. You
can find more about them on their website at www.u-blox.com, including a
data sheet on the UBX-G7020-KT engine chip and a full data sheet on the
closely related Neo-7M module.
You can also get a comprehensive
data sheet for the VK2828U7G5LF
module from either of these websites:
www.vkelcom.com
https://github.com/CainZ/V.KELGPS/blob/master/VK2828U7G5LF%20
Data%20Sheet%2020150902.pdf
siliconchip.com.au
Fig.1: block diagram of the UBX-G7020-KT GPS engine chip. The whole chip
is contained within a 5 x 5 x 0.6mm SMD package. Due to a multi-mode GNSS
decoding engine, this chip can handle 56 channels of GPS, GLONASS or
GALILEO. Note that the European GALILEO system is not yet operational.
As you can see from the block diagram in Fig.1, the UBX-G7020-KT GPS
engine chip is impressive. It's a complete GPS receiving system integrated
inside a 5 x 5 x 0.6mm SMD package.
There's an RF/microwave front-end
receiving block with an LNA (lownoise amplifier) and a crystal-derived
fractional-N frequency synthesiser for
the local oscillator, with its IF output
fed to a digital block with a CPU controlling a digital IF filter and a multimode GNSS decoding engine which
can handle 56 channels of either GPS
or GLONASS (Russian version of GPS)
satellite signals.
Supporting the rest of the digital
block are ROM, RAM and backup
RAM, RTC (real-time clock) and a
number of programmable I/O sections
– including one which provides con-
figurable time pulse signals (0.25Hz10MHz) with an RMS accuracy of
30ns. Finally, there's a selection of
four different output interfaces: USB,
SPI, UART and I2C.
Additionally, the cold-start sensitivity of the UBX-G7020-KT chip
is claimed as -148dBm, falling to
-160dBm for reacquisitions. The time
to first fix for a cold start is listed as 30
seconds, dropping to one second for
a hot start. In short, it's an impressive
little performer.
Inside the Neo-7M
So that's a glimpse of what's inside
the UBX-G7020-KT chip itself. Now
let's take a look at one of the modules
using it, the Neo-7M. This measures
35 x 25 x 5mm for the module itself,
with the separate patch antenna meas-
uring 25 x 25 x 8mm. You'll find the
Neo-7M's full circuit in Fig.2. (We
don't have the full circuit details of
the VK2828U7G5LF module but it's
likely quite similar.)
As you can see, there's not a lot in it
apart from the UBX-G7020-KT receiver
(IC1) and its matching active antenna
which is a ceramic patch antenna with
onboard LNA (low-noise amplifier).
The antenna connects to the RF input
of IC1 (pin 11) via a 20mm length of
very small diameter coax and a pair
of ultra-miniature U.FL coax connectors. DC power to operate the LNA is
provided via inductor L1 and its series
22W resistor, connected to pin 9 of IC1.
Now the UBX-G7020 is designed
to operate from a 3.3V supply, so the
module includes a low-dropout regulator (REG1) so that it can be connected
directly to a 5V DC supply. Note that
there's also a pill-sized rechargeable
backup battery connected to pin 22 of
IC1 which is charged via diode D1 and
the series 1kW resistor when power is
applied to the module.
But what's the purpose of IC2, a
32Kb (4KB) EEPROM? It is provided in
order to save the UBX-G7020's configuration data, since many aspects of its
configuration can be changed – such as
the I/O port to be used, the frequency
of its time-pulse output and so on.
The Neo-7M module leaves the
factory with a default configuration
where the UART and I2C I/O ports
are activated, with the UART I/O set
for a bit rate of 9600 baud and “8N1”
no-handshaking. The time-pulse
Fig.2: the full circuit diagram
for the Neo-7M module.
siliconchip.com.au
Celebrating 30 Years
October 2017 37
Underside of the Neo-7M and separate ceramic patch antenna. The outer
two gold rectangular pads on the Neo-7M can be used to provide an earth
connection, which can be useful if you need an outdoor antenna.
frequency is also set for 1Hz. However, it's also programmed to save its
configuration data in external memory, via the I2C port, so that it can retrieve this information each time it's
powered up.
The module designers have provided IC2 to save this configuration data,
so if you want to change the Neo-7M's
configuration, it's possible to do this by
reprogramming IC2. Most users probably won't want to do this, though,
because the default configuration is
likely to be suitable for most common
applications.
That's about it, apart from the two
LEDs. Red LED1 is provided as a power indication, lighting up whenever
+5V power is provided to the module
via pin 4 of CON1. And green LED2
is connected via a second 1kW resistor to pin 3 of IC1, which is the time
pulse output.
So LED2 flashes once per second
(with the default configuration), once
the UBX-G7020 has achieved a fix from
the GPS satellites. This usually happens less than 30 seconds after applying power, assuming the antenna has
a reasonable view of the sky.
Unfortunately, the designers of this
module have not provided a specific
output on the PCB for taking off the
1pps/time pulse signal for external
use. But it's not all that hard to do
this yourself, with a small amount of
surgery.
All you need do is to identify the
PCB track connecting pin 3 of IC1 to
the top end of the 1kW resistor next
to LED2 and then scrape some of the
protective lacquer from the top of the
track as close as possible to the resistor's mounting pad. Then you need to
tin it quickly with your fine-tipped sol38
Silicon Chip
dering iron, so that you can solder the
bared end of a short length of hookup
wire to the top of the tinned track.
This isn't quite as simple as it might
sound. For a start, the PCB track concerned is only about 0.5mm wide. So
you have to do the scraping very carefully and the tinning and soldering as
quickly as possible – otherwise the
track may detach from the PCB laminate and break off, removing the connection to pin 3 of IC1 altogether.
Can't you simply solder the wire to
the pad at the outer end of the 1kW
resistor, to avoid risking damage to
the thinner track? Yes, you can but
when I tried this myself the solder
joint between the resistor and the pad
underneath lifted slightly, breaking the
connection to the track for both the resistor and the added wire.
So LED2 no longer flashed and there
were still no 1pps pulses available via
the added wire. Then when I tried
resoldering things, the original 1kW
SMD resistor overheated and came
off altogether.
So I decided to try re-soldering the
1pps takeoff wire to both the resistor
pad and the track to pin 3 of IC1, and
then fitting a new 1kW (0805) resistor
in place of the old one – mounted at
an angle, so that its outer end could be
soldered to the top of the takeoff wire.
This looks a bit messy, as you can
see from the photo below but it does
work. You should also be able to see
from the photo that I looped the takeoff
wire through the PCB mounting hole
nearby, to avoid stress on the solder
joint when the outer end of the wire
is moved around.
I also soldered the end of another
short length of hookup wire to the
nearest of the three long gold-flashed
pads at that end of the PCB, to make
another ground connection. This wire
was also looped through the PCB
mounting hole.
Incidentally, those three long goldflashed pads at the end of the module's PCB seem to have been provided
to allow fitting a PCB edge-mounting
SMA socket, for connection of an alternative external active GPS antenna.
The two outside pads are connected
to PCB ground, while the inner pad
is connected to the RF input between
the U.FL connector and pin 11 of IC1.
There are also two gold-flashed
pads on the underside of the PCB,
directly under the two outer pads
and connected to ground as well.
It's an option that could be handy in
applications where you must have an
outside antenna.
Inside the VK2828U7G5LF
Detailed information regarding the
internals of the V.KEL VK2828U7G5LF
module is limited. The manufacturer's
data doesn't say much at all, apart from
confirming that it uses the u-blox UBXG7020-KT engine chip, giving the pin
designations for the module's 6-pin
power/IO connector and also giving
the overall dimensions of the module
as 28 x 28 x 8.6mm.
Some circuit work is
needed to take a 1pps/
time pulse signal for
external use on the
Neo-7M. This is done
by attaching hookup
wire on the PCB track
connecting pin 3 of IC1
and the 1kW resistor
next to LED2. The
second hookup wire
you can see is attached
to one of the gold pads
to provide another
ground connection.
Celebrating 30 Years
siliconchip.com.au
However, a quick visual inspection
of the module when powered up and
working revealed another detail: this
module provides two PPS indicator
LEDs – one on the top of the module's
PCB like the red power LED, and the
other on the other side of the PCB just
at the end of the patch antenna. So as
the module would normally be placed
antenna side uppermost for best GPS
reception, this means that this second
PPS LED will always be visible – a
nice feature.
Fig.3 shows all of the available information regarding the internals of
the VK2828U7G5LF module. We have
labelled the two PPS LEDs LED2 and
LED3 since there are no markings on
the PCB. One final point which should
be noted is that this module does provide a specific output pin for the PPS
pulses, so no surgery is required to
make use of these pulses.
Putting them to use
It's actually quite easy to make
use of either of these GPS receiver
modules. As a bare minimum, all
you need to do is hook them up to
a source of 5V DC and then connect
the TX/TXD output to the RXD input
of your Arduino, Micromite or other
micro, to feed it with the module's
NMEA (National Marine Electronics
Association) data stream.
Note that with the VK2828U7G5LF
module both the E/EN and V/VCC wires
should be connected to +3.3V or +5V,
while with the Neo-7M module only
the VCC pin (pin 4) is connected to +5V.
To show how easy it is to connect
one of these modules to a Micromite,
I can refer you to Geoff Graham's article in the April 2016 issue of Silicon
Chip describing his Touch-Screen Boat
Computer with GPS. There's also quite
a bit of information on the web describing how to use this type of module with an Arduino.
It's also surprisingly easy to connect
up the module to a PC. All you need
is one of the little UART/USB bridge
modules, like the one we discussed in
the third article in this series (see the
January 2017 issue of Silicon Chip).
As you can see from the diagrams of
Figs.4 & 5, you just need to make the
correct interconnections between the
two modules (note the crossover between the two serial data lines) after
which the USB socket on the bridge
module can be connected to a USB port
on your PC via a standard USB cable.
siliconchip.com.au
Fig.3: what we can infer about the internals of the VK2828U7G5LF module. Note
that this module, unlike the Neo-7M, provides a specific output pin for 1pps/
time pulse signals.
The nice thing about this approach
is that power for both modules comes
from the PC via the USB cable, so no
separate power supply is needed. In
passing, the current drawn from the
USB supply by either GPS receiver
module plus the UART-USB bridge
module combination is only about
60mA.
Remember that when you first plug
the cable from the UART/USB bridge
into a USB port on your PC, Windows
should automatically install the correct VCP (virtual COM port) driver for
it. So before proceeding further, it's a
good idea to fire up Control Panel and
check that the driver has been installed
– also noting the COM port number it
has been given (like COM5, COM8 etc).
You should be able to configure the
port settings – in this case for communication at 9600 baud, with no handshaking and 8-N-1 (8 data bits, no
parity and 1 stop bit) data formatting.
Once the simple setup of Fig.4 or
Fig.5 is hooked up to your PC and the
LEDs on the modules indicate that
it's running, you can easily monitor
the NMEA data stream coming from
the GPS receiver using a serial terminal emulator program like Tera Term.
This is a very stable serial terminal emulator written originally by
Japanese software designer T. Teranishi, which has been maintained as
free open-source software since 2007
by the Tera Term Project.
You can download it from either of
Fig.4 (top): required connections to connect the VK2828U7G5LF to a computer.
Fig.5 (bottom): required connections for the Neo-7M to connect to a computer.
Celebrating 30 Years
October 2017 39
GPS in a Nutshell
GPS or the Global Positioning System was the first global navigation
satellite system (GNSS) to become
fully operational, in 1995 (the 24th
orbiting GPS satellite had been
launched in 1994).
GPS was developed by the US
Department of Defense (DoD) and
was initially intended for use
only by the US military, with the
signals intentionally degraded for
non-military users via a system
known as “Selective Availability”. However, Selective Availability was turned off in May 2000,
following a policy directive that
had been signed by President Bill
Clinton in 1996.
Since then, the uses of GPS by
civilians have grown almost exponentially, not just in the USA but
all around the planet. GPS receivers are now incorporated into mobile phones, laptops and touch-pad
PCs, navigation receivers for cars,
trucks and buses, tracking systems
for trains and light-rail systems and
of course navigation receivers for
aircraft, ships and boats.
By February 2016, the number
of satellites orbiting in the GPS
constellation had risen to 32, with
31 of them in use and one a spare
in case of a failure. Strictly speaking, only 24 orbiting satellites are
needed for navigation anywhere
on the globe because this ensures
that four satellites are visible at
all times. However, the additional
satellites provide worthwhile redundancy and improves receiver
accuracy.
But how does GPS actually work? Well, all of the GPS
satellites orbit the Earth at an altitude of approximately 20,200km,
in orbital planes that are tilted at
approximately 55° to the equator.
They’re orbiting at a speed such
they make one full revolution
in half a sidereal day (11 hours
and 58 minutes). The orbits are
arranged so that at least six satellites are always within line-ofsight from virtually anywhere on
the planet’s surface.
Inside each satellite there are
two caesium-beam atomic clocks,
and the satellites all make frequent
radio contact with each other as
well as with dedicated ground
monitoring stations. As a result,
each satellite always knows two
crucial parameters with great accuracy: the current GPS/UTC time
and its own current location in
terms of latitude, longitude and
altitude.
Each satellite also contains a
CDMA spread-spectrum microwave transmitter, which continually broadcasts its current time
and location data on a number of
frequencies – mainly 1.57542GHz
(the “L1” signal) and 1.2276GHz
(the “L2” signal). Although all of
the satellites use the same frequencies, the signals from each satellite
are encoded with a different highrate pseudorandom sequence, so
receivers can always identify from
which satellite any signal is originating.
This allows a GPS receiver to
work out its own current location
by decoding and comparing each
of the signals currently being received from at least four satellites.
It does this by measuring the time
taken for the signals to come from
each satellite, at their specified locations. This allows it to calculate
Fig.6: shows the way $GPRMC header data is arranged.
40
Silicon Chip
Celebrating 30 Years
its distance from each satellite,
and then to find its own location
by finding the intersection of these
multiple path distances – a technique called triangulation.
But a GPS receiver doesn’t just
provide this accurate location information. Most GPS receivers
actually provide a continuous
stream of many items of data, in a
format known as the NMEA 0183
data stream (where NMEA stands
for the US National Marine Electronics Association). This emerges
from a GPS receiver as alphanumeric serial CSV (comma separated variable) data, usually at a
rate of 4800 or 9600 baud (bits/second). It’s in the form of a number
of one-line message “sentences”,
each one identified by a unique
header word. All of these header
words begin with the characters
“$GP”, but are then followed by a
three-letter combination identifying the type of sentence.
Perhaps the most useful message sentence for many applications is the one carrying the
$GPRMC header, also known as
the Recommended Minimum
sentence. This provides the
current UTC time, the receiver’s
latitude and longitude, its speed
in knots (not very useful when
operating in a fixed location) and
the date.
As well as providing this
handy data stream (updated every
second), most GPS receivers also
provide a 1pps time pulse each
second, with its leading edge
accurately locked to GPS/UTC
time. This makes them especially
useful for synchronising clocks
and frequency references.
these websites:
https://osdn.net/projects/ttssh2/
releases/
http://download.cnet.com/TeraTerm/3000-20432_4-75766675.html
At the time of writing, the current
version is 4.92.
When you install Tera Term and
first start it up, you'll need to set it up
before proceeding. Do this by clicking on the Setup menu, and then on
“Terminal”. Then in the dialog that
siliconchip.com.au
Data stream from the GPS receiver being viewed in Tera Term.
appears, set the New-Line Receive
mode to AUTO, check that the terminal ID shows as “VT100” and that the
Local echo is not selected.
Then exit from the Setup Terminal
dialog and click on the Setup menu
again, but this time drop down to
click on “Serial Port”. Then in the new
dialog that appears, set the Port to the
VCP number that you saw in Control
Panel and make sure that the data rate
is set to 9600 and the format to 8-N-1.
Finally, click on the Setup menu one
more time and drop down to click on
“Save setup”. This will let you save
the new setup so that in future when
you start up Tera Term, it will be able
to begin accepting the data stream
from your GPS receiver without any
further ado.
In fact, as soon as you finish saving
the setup, Tera Term should immediately swing into action, receiving the
GPS data stream and displaying it in
its main window as shown in the adjacent screen grab. Notice that there are
quite a few data sentences sent by the
GPS receiver each second, as well as
the one with the “$GPRMC” header.
Fig.6 shows the way the time, location and date information is arranged
in the $GPRMC sentences. This should
be enough for many people, but if
you need to analyse any of the other
sentences you can get a lot of useful
information by using this link:
www.gpsinformation.org/dale/
nmea.htm
The UBX-G7020-KT GPS receiver
chip used in both modules can be programmed to change various parameters in its NMEA 0183 output stream
– for example to select or deselect any
of the data sentences, change the data
rate from the default 9600 baud and so
on. It can also be instructed to change
the PPS rate from the default 1pps
up to 10pps. All of these changes are
made by sending a hexadecimal data
stream to the chip via the RX/RXD
serial input. This is explained in the
VK2828U7G5LF data sheet.
I hope the foregoing gives you
enough insight into either of the GPS
receiver modules based on the u-blox
UBX-G7020-KT chip, so that you'll
be confident in getting one and trying it out.
In closing perhaps I should mention
that you don't even have to hook up
the receiver modules to a UART-USB
bridge module as per Figs.4 and 5 in order to use it purely for extracting 1pps
pulses from the GPS signals to drive
a digital clock or a GPS-disciplined
frequency reference. All you'll need to
do is connect the module's VCC (or VCC
and EN) and GND lines to a source of
5V DC, and away it will go.
SC
The left plot shows the 1pps pulse and NMEA (National Marine Electronics Association) data from the Neo-7M while the
right plot shows just the 1pps pulse data from the VK2828U7G5LF.
siliconchip.com.au
Celebrating 30 Years
October 2017 41
|