Archive for August, 2011
Backcountry Logger Free PCBs
The Backcountry Logger is a portable device for measuring and graphing altitude, temperature, and air pressure. It should appeal to any outdoorsy people interested in examining altitude, temperature, or pressure movements over timescales from an hour to two weeks. That includes hikers, climbers, skiers, trail runners, cyclists, kayakers, snowmobilers, horseback riders, and probably many others. The development of the Backcountry Logger has been discussed here in detail over the past few months.
Today I’m publishing the whole Backcountry Logger design under the Creative Commons license (CC BY-NC-SA 3.0). My hope is that others will build their own Backcountry Loggers, take them on trips and experiment with them, then make firmware or hardware improvements and share them back. I would love to see a community of user/developers emerge to make future Backcountry Logger versions even more awesome than anything I’ve yet imagined.
This Backcountry Logger file distribution contains all the firmware source code, schematics, board layouts, Gerbers, parts lists, and everything else you’ll need. You can build a copy of the Logger Classic or Logger Mini, or design your own version by modifying the hardware and firmware to meet your needs. If you make some improvements you’d like to share, send them to me and I’ll post them here. If there’s enough interest, I’ll make a project at Sourceforge or another site so people can collaborate on further Backcountry Logger development.
The total parts cost for either version of the Backcountry Logger is about $40. The Logger Classic can be assembled in an hour or two, and is fairly easy to build. The Logger Mini is more challenging to build, due to the use of surface-mount parts, but the result is a much more compact and professional-looking device. You can also build the Backcountry Logger on a breadboard, following the Logger Classic schematics.
PCBs can be made using the Gerbers included in the file distribution, but to kick things off, I’m giving away some free PCBs for the Logger Classic and Logger Mini to those who are seriously interested in experimenting with it. Send me email and let me know what you plan to do with it, and if I like your story I’ll send you a PCB.
For the curious, the README from the file distribution is included here:
Copyright (c) 2011 Stephen Chamberlin. All rights reserved.
Backcountry Logger by Stephen Chamberlin is licensed under a
Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. (CC BY-NC-SA 3.0)
The terms of the license may be viewed at http://creativecommons.org/licenses/by-nc-sa/3.0/
Based on a work at www.bigmessowires.com.
Permissions beyond the scope of this license may be available at www.bigmessowires.com.
BUILDING YOUR BACKCOUNTRY LOGGER
1. Buy the required parts. The total cost should be about $40 USD. The parts required depend on which version of the logger you want to
build. See partlist.txt for the list of required parts.
2. Make or buy the circuit board (PCB), or prepare a breadboard. Visit www.bigmessowires.com and ask if I have any extra boards left. If
not, send the included Gerber files to a PCB prototyping service, and they can manufacture a board for about $25. If you are building the
logger on a breadboard instead of a PCB, follow the instructions for the Logger Classic.
3. Assemble the board. The Logger Classic uses all through-hole parts, and can be assembled in an hour or two. The Logger Mini uses all
surface-mount parts, and is more challenging to assemble, but can still be assembled by hand (I did it!).
Logger Classic:
The BMP085 breakout board comes without the header attached, so you must solder your own header to it. Solder male header to the *same*
side as the BMP085 chip. When you later mount the breakout board onto the socket on the main board, it should be upside down, with the
BMP085 on the underside, hidden from view.
Logger Mini:
The SQ-SEN-200 vibration sensor can be omitted. This part is only available directly from Signal Quest, with a minimum order quanity of
20. If omitted, the trip timer feature will not work.
The schematic and board layout show an external EEPROM chip. This was originally intended to store longer-term or higher-resolution
altitude/temperature data, but the firmware doesn’t use it. It can be omitted.
The bare BMP085 chip is difficult to hand-solder, because the pins are on its bottom, inaccessable with a soldering iron. To solder it,
first tin all 8 pads on the PCB with a small amount of solder. Make sure the heights of the solder blobs are as even as possible from pad
to pad. Next, apply flux to the BMP085 pins, and place it in position on top of the tinned pads. While pushing down on the chip from above
with a pick, heat the exposed portion of each PCB pad, one at a time, until the solder melts. The heat will be conducted along the pad,
under the chip, and the molten solder will bond to the hidden BMP085 pin. You may need to repeat this procedure several times to get a good
solder connection.
There may be a clearance problem between the battery holder and a few of the surface-mount components closest to it. If necessary, cut
away a small portion of the battery holder plastic with a knife to make it fit. Do not cut away any more plastic than necessary, or the
battery holder may bend when a battery is inserted.
4. Get an AVR programmer. I use the AVRISP mkII, which is $35 from Digi-Key. The $22 USBtinyISP AVR programmer is another popular choice:
see http://www.adafruit.com/products/46
5. Install the battery.
6. Connect the programmer to the board’s ISP header. Run AVR Studio, avrdude, or other AVR programming software. Confirm that the board is
working electrically, but connecting to the AVR and reading the device ID.
7. Program the AVR with the Backcountry Logger firmware. Use the programming software to load the .hex file into the AVR’s Flash memory.
You can use the precompiled hikea.hex file, or compile the included C source files and make your own .hex file.
8. Set the EESAVE fuse on to prevent your altitude/temperature data from being erased every time you reprogram the AVR.
MODIFYING THE LOGGER
You are encouraged to experiment with changes to the Backcountry Logger software and hardware. If you make a change that you want to share,
please send it to me and I’ll include it in a new version of this distribution. If there is enough interest, I will make a project at
Sourceforge or a similar site, so people can collaborate on further Backcountry Logger development.
Some ideas for further development:
- Add more detailed analysis tools to the software. Rate of ascent graphs, day by day statistics comparisons, user-defined graph
timescales, etc. - Add a way to download the stored sample data to your PC.
- Preload the elevation profile of your expected route onto the logger before starting a trip, then compare measured altitude samples with
the preloaded profile to determine where you are. - Modify the Logger Mini software to make use of the external EEPROM, to store a longer sample history, or high-resolution samples.
- Make a version of the Logger Classic that uses the higher-resolution OLED found on the Mini. These OLED’s can be purchased on a breakout
board on eBay or from Adafruit: http://www.adafruit.com/products/326
COMPILING THE SOFTWARE
The Backcountry Logger source code was built with AVR Studio 5, and the hikea.avrgccproj file will only work with AVR Studio 5. If you are
using a different version of AVR Studio, or a different compiler entirely, you will need to create your own project file or makefile with
the following settings:
Logger Classic
define these symbols: LOGGER_CLASSIC, NOKIA_LCD, F_CPU=1000000
include these libraries: libm.a
change these fuses: EESAVE on. Fuse settings are low: 0x62, high: 0xD1, extended: 0xFF
Logger Mini
define these symbols: LOGGER_MINI, SSD1306_LCD, F_CPU=8000000, SHAKE_SENSOR (optional)
include these libraries: libm.a
change these fuses: EESAVE on, CKDIV8 off. Fuse settings are low: 0xE2, high: 0xD1, extended: 0xFF
Logger on a breadboard:
follow the instructions for Logger Classic.
If you want to use the original software as-is without compiling, you can also use the precompiled hikea.hex files in the Classic or Mini
subdirectories.
USING THE SCHEMATIC AND BOARD LAYOUT
The Eagle .sch and .brd files can be found in the Classic and Mini subdirectories. In addition to the standard Eagle libraries, you will
also need the SparkFun library, Adafruit library, and Big Mess o Wires library. The Sparkfun and Adafruit libraries can be downloaded from
their respective web sites.
https://github.com/sparkfun/SparkFun-Eagle-Library
http://www.ladyada.net/library/pcb/eaglelibrary.html
The BMOW library is included here, as big-mess-o-wires.lbr.
PIEZO BUZZER NOTE: The Logger Classic uses a Murata PKM13EPYH4002 piezo buzzer, which has a 5mm pin spacing. I was foolish and added a new
5mm piezo footprint to the Sparkfun library. Your version of the Sparkfun library will not have this footprint, so you will get an error
when opening the schematic of layout file. If you wish to use this same buzzer, you can find the appropriate part in the big-mess-o-wires
library, named PIEZO.
Logger Mini on the John Muir Trail
Logger Mini and I returned this week from the John Muir Trail. It was an amazing, epic trip, ending unexpectedly with me stranded in the middle of nowhere in the Owens Valley desert, gawking at the PLAGUE WARNING signs. It took me two days to get out, but I’m back home now and plague-free.
I used the logger quite a lot during the trip, and it worked like a champ. After a couple weeks of real-world use on the trail, a few points become clear:
- The trip timer feature (using a vibration sensor to detect movement) was totally pointless. It worked fairly well, but didn’t add anything of value, and I never used it even once. I’ll delete it and the associated hardware from future designs.
- Graphs going back more than 12 hours were also pointless. I never looked at them. That’s great, because it takes a lot of memory to store the sample data further in the past. I’ll delete the extra external EEPROM from future designs.
- Temperature measurement worked great for determining overnight lows, but not so great for highs or current daytime temperature. Inside its case, or in my pocket, or in the sun, it almost always showed a temperature that seemed unrealistically high. Maybe replace the minute-by-minute temperature graphs with daily high/low/avg stats instead.
- Where the logger really shone was the display of current and recent altitude. When we knew we were climbing towards a 12100 ft pass, and had been going for what seemed like hours, it was cool to pull out the logger and see exactly where we were and how much climbing was left.
- The screen was difficult to read in direct sunlight, where difficult means “impossible”. I knew this already, but it was still annoying.
- Reliability was excellent. I never experienced a single problem or unexplained reset on the trail.
- Battery life was excellent. My prototype is still on its original AAA battery, and the battery voltage has barely changed since I first installed it.
- There’s definitely a place for the logger, even in a GPS world. I also had a GPS along, but the logger is 20% of its size and 10% of its weight. The GPS chewed through batteries, had difficulty getting an accurate position fix, and exhibited poor alitutude accuracy even when it had a fix.
Overall, bringing along the logger was a clear success. So, what next? My inclination at this point is to share all the hardware and software design data, and try to get some additional people interested in improving the design further. I think there’s a place for both the Logger Mini and Logger Classic. The Classic is all through-hole parts and can be assembled in about an hour. The Mini is smaller and cooler, but more challenging to assemble. While the underlying hardware is different, the programming model is nearly identical, and the same software can be compiled for either device with only a few device-specific sections to reflect the different display screens. I have a few more unpopulated PCBs of both types that I can offer to developers, or put the Eagle and Gerber files somewhere and let people do what they like with them. Anyone have any other specific suggestions? It would be great to see this grow into something big.
Read 3 comments and join the conversation