I2C GPS Shield





Introducing the I2C GPS Shield, an Arduino based shield that gives the user the ability to access most of the commonly used GPS data using the I2C protocol.  The shield features an ultra high sensitive -165dBm GPS receiver.  The shield is directly compatible with the Diecimila, Duemilanove and Uno.  The shield can also be modified to work with the Arduino Mega by removing two solder jumpers and soldering external wires to the SDA and SCL lines.

Standard GPS modules output NEMA 0183 data in serial format which then need to be read and parsed.  While there are several libraries out there that will parse the data some users still have trouble incorporating the overall code into their designs.

The Mysterious HMC5883L

AsHMC5883L most people know Honeywell recently discontinued production on the popular HMC5843 3-Axis Magnetometer.  Honeywell replaced it with the HMC5883L which has a better resolution, larger full scale range, consumes less power, comes in a smaller package and most importantly...it's much CHEAPER in price! Needless to say I placed a backorder for the parts in December and was pleasantly surprised when they arrived yesterday.  I pulled out the prototype board I had made and proceeded to mount all the components.  I placed the populated board in my handy reflow oven and a few minutes later...VOILA....we had a breakout board.

Effects of Varying I2C Pull-Up Resistors


I2C is a popular communication protocol in embedded systems.  When interfacing with the slave device a pull-up resistor is needed on each bi-directional line.  One common question that arises is "what size pull-up resistor should I use?".  Instead of going through a bunch of theory and calculations I thought it would be easier to show what happens to the signals when different resistor values are used.

Since the Arduino is a popular micro-controller among hobbyists we'll use it for the following examples.  We'll interface the Arduino to a DS3231 Real Time Clock, which is a 5 volt device.  We'll also look at the effects on the signal with varying speeds of I2C (100 and 400kHz clock signals).

We'll set up our oscilloscope to measure rise time, frequency and peak voltage.  Frequency? Why do we want to measure frequency, I thought the clock frequency was running at 100kHz...well let's just see what the scope says.  Since the capacitance is roughly the same for the SDA (data) and SCL (clock) lines we'll only vary the resistance on the SCL line and keep a standard 4.7k ohm resistor on the SDA line.  It's just easier to analyze a repetitive clock signal on the oscilloscope than a data pattern.  

Page 4 of 5



Go to top