|Walk-Pal FM Tuner, Altimeter, Barometer, Compass|
Walk-Pal FM Tuner, Altimeter, Barometer, Compass
During the development of the Picaxe Weather Station I'd aquired a couple of sensor breakout boards that, ultimately, I didn't use. I devised this little project basically to make use of these spare parts that would otherwise be lying around unused.
In addition, I'd recently bought the an Si4703 FM Tuner Breakout Board.
HMC6352 Compass ModuleThe compass module is the HMC6352 available from Sparkfun Electronics .
This module does not have any tilt compensation but I would have found it difficult to justify the cost of a tilt compensated version - the HMC6343 - for what is, after all, just a "novelty" project.
BMP085 Barometric Pressure &Temperature SensorThere are a couple of variations of breakout boards available for the BMP085. The version from Sparkfun needs a 3.3 volt supply. The version from Adafruit has an on-board 3 volt regulator so it "5 volt ready".
The version I had as a spare was the Adafruit 5 volt version but, as this project requires a 3.3 volt regulator anyway (for the FM tuner), the Sparkfun version would be equally suitable (with suitable modifications to the PCB layout).
The Si4702 FM Radio TunerAt the heart of the tuner breakout board is, of course, the Si 4702/03 FM Radio Tuner IC from Silicon Labs.
As space is limited in the case I had available, there wasn't room for an LCD piggy-backed serial driver so I opted to use a parallel interface 16 x 2 display from Oomlaut.
Some LCDs have timing "issues" with Arduino Sketches so I decided to power the LCD from an Arduino output pin. By this means, the ATMeag328 is fully up and running (including the initialization of the I2C interface) before the LCD is powered on. As all the Digital pins were already in use, I used Analoge pin A2 as a digital output pin.
I used Digital output D8 in order to turn the LCD backlight on and off.
D7 and D9 to D13 perform the usual LCD parallel interface functions. Note that these pin assignments are different from the Arduino LCD "Hello World" example. I swapped the pins around to simplify the PCB layout.
D6, D5, D4 and D3 are configured as inputs for the buttons: UP, DOWN, SET and MODE.
The actions of the buttons are determined purely in software. I have them as follows:
The current MODE is written to non-volatile EEPROM along with the current pre-set channel and the currently-selected scan frequency. These values are recalled when the power is next turned on. The volume setting and backlight timer are similarly saved and recovered.
DownloadsArduino Sketch & Circuit Wizard PCB Layout