# AltusMetrum
This is the design that started it all! Bdale got frustrated with existing
commercial altimeters and decided to build his own. This project was
presented in talks at LCA, SCALE, OLS, and Debconf in 2008.
Here are photos of the front and back sides of the version 0.1 prototype PCB,
which was 100% auto-routed on 2 layers using the
[gEDA](http://www.gpleda.org)
schematic and pcb tools.
## Features ##
### User View ###
* Recording altimeter for model rocketry
* Supports dual deployment (can fire 2 ejection charges)
* Primary operations based on pressure sensor
* 3-axis accelerometer
* Temperature sensor
* 2 serial ports for attachment of GPS and RF link modules
* USB for data recovery and post-flight power source
* Flexible battery choices
* Designed to fit 24mm airframe tube
### Developer View ###
* NXP LPC-2148 Processor (ARM7TDMI-S)
* 512k Flash memory, 32k RAM
* USB plus lots of analog, digital, and serial I/O
* Microchip 24FC1025 CMOS serial EEPROM
* 128k x 8
* I2C interface
* Various Sensors
* Freescale MP3H6115A pressure sensor
* Freescale MMA7260QT 3-axis accelerometer
* Microchip MCP9700A temperature sensor
* (Honeywell 2-axis magnetic sensor left out of v0.1)
* Software Features
* Written mostly in C with some ARM assembler
* Runs from on-chip flash, uses on-chip RAM, stores flight data to
serial EEPROM chip
* USB serial emulation for "console" interface
* Uses GCC, newlib, FreeRTOS, LPCUSB
* Based on a demo package written for the Olimex LPC-P2148 eval board
by J C Wren
* Licenses
* The hardware is licensed under the [TAPR](http://www.tapr.org) [Open Hardware License](http://www.tapr.org/ohl.html)
* The software is licensed [GPL version 2](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
## Problems ##
In addition to the various "oopses" that were found and fixed during initial
turn-on of this board, several issues contributed to the decision to shelve
the design for now:
* lots of work went in to trying to make the board fit in a 24mm airframe,
but the resulting design with battery is really too heavy for such a small
rocket.
* the 3-axis accelerometer has a max scale of +/- 6g. This is insufficient
for characterizing the kinds of motors that we're playing with now.
* while using a gcc-based toolchain to cross-develop for the ARM7 core works
reasonably well, it's a heavy toolchain to build and maintain, and the
processor really is serious overkill for the task at hand.
## Artifacts ##
The latest (best?) version of Bdale's [Peace Love and Rockets](AltusMetrum.odp)
presentation was given at the Ohio LinuxFest 2008. Note that there are many
photos included, so this is a HUGE file!
The version 0.1 design had enough issues that Bdale decided not to publish
it. Work on an 0.2 revision is mostly complete at the schematic level, and
some printed circuit board artwork updates were made, but a second run of
boards was never attempted. This design is now mostly of historical interest.
## Futures ##
If we decide to do further work on this design, a number of changes seem
potentially appropriate for the next board revision, in addition to just
fixing bugs found in the turn-on of the initial boards.
* The LiPo battery support from [TeleMetrum](../TeleMetrum) should be copied
into this design, replacing the battery screw terminals with a standard LiPo
2-pin battery connector.
* The [SparkFun](http://www.sparkfun.com) folks have produced
a [USB bootloader for the LPC2148](http://www.sparkfun.com/commerce/tutorial_info.php?tutorials_id=94). It
requires an SD card for temporary storage of code to be
flashed. Replacing the current external SPI memory chip with a microSD
socket could make sense. The socket size is under a cm square, and ones
that have a fold-up locking top are about $2, vs over $6 for the current
memory chip. The cards themselves are getting very cheap, too, and can
store much more data than the current 128k memory chip. This would require
moving ADC_Vbat to a different ADC input so that pins 27, 29, 30, and 31
would be available for the microSD socket.
* Consideration should be given to changing the accelerometer for a higher-G
single axis unit as in [TeleMetrum](../TeleMetrum) if we want to be able to
use it for motor characterization.