+ Configuration data is also stored in the flash memory on
+ TeleMetrum v1.x, TeleMini and EasyMini. This consumes 64kB
+ of flash space. This configuration space is not available
+ for storing flight log data. TeleMetrum v2.0 and TeleMega
+ store configuration data in a bit of eeprom available within
+ the processor chip, leaving that space available in flash for
+ more flight data.
+ </para>
+ <para>
+ To compute the amount of space needed for a single flight, you
+ can multiply the expected ascent time (in seconds) by 100
+ times bytes-per-sample, multiply the expected descent time (in
+ seconds) by 10 times the bytes per sample and add the two
+ together. That will slightly under-estimate the storage (in
+ bytes) needed for the flight. For instance, a TeleMetrum v2.0 flight spending
+ 20 seconds in ascent and 150 seconds in descent will take
+ about (20 * 1600) + (150 * 160) = 56000 bytes of storage. You
+ could store dozens of these flights in the on-board flash.
+ </para>
+ <para>
+ The default size allows for several flights on each flight
+ computer, except for TeleMini v1.0, which only holds data for a
+ single flight. You can adjust the size.
+ </para>
+ <para>
+ Altus Metrum flight computers will not overwrite existing
+ flight data, so be sure to download flight data and erase it
+ from the flight computer before it fills up. The flight
+ computer will still successfully control the flight even if it
+ cannot log data, so the only thing you will lose is the data.
+ </para>
+ </section>
+ <section>
+ <title>Installation</title>
+ <para>
+ A typical installation involves attaching
+ only a suitable battery, a single pole switch for
+ power on/off, and two pairs of wires connecting e-matches for the
+ apogee and main ejection charges. All Altus Metrum products are
+ designed for use with single-cell batteries with 3.7 volts
+ nominal. TeleMini v2.0 and EasyMini may also be used with other
+ batteries as long as they supply between 4 and 12 volts.
+ </para>
+ <para>
+ The battery connectors are a standard 2-pin JST connector and
+ match batteries sold by Spark Fun. These batteries are
+ single-cell Lithium Polymer batteries that nominally provide 3.7
+ volts. Other vendors sell similar batteries for RC aircraft
+ using mating connectors, however the polarity for those is
+ generally reversed from the batteries used by Altus Metrum
+ products. In particular, the Tenergy batteries supplied for use
+ in Featherweight flight computers are not compatible with Altus
+ Metrum flight computers or battery chargers. <emphasis>Check
+ polarity and voltage before connecting any battery not purchased
+ from Altus Metrum or Spark Fun.</emphasis>
+ </para>
+ <para>
+ By default, we use the unregulated output of the battery directly
+ to fire ejection charges. This works marvelously with standard
+ low-current e-matches like the J-Tek from MJG Technologies, and with
+ Quest Q2G2 igniters. However, if you want or need to use a separate
+ pyro battery, check out the “External Pyro Battery” section in this
+ manual for instructions on how to wire that up. The altimeters are
+ designed to work with an external pyro battery of no more than 15 volts.
+ </para>
+ <para>
+ Ejection charges are wired directly to the screw terminal block
+ at the aft end of the altimeter. You'll need a very small straight
+ blade screwdriver for these screws, such as you might find in a
+ jeweler's screwdriver set.
+ </para>
+ <para>
+ Except for TeleMini v1.0, the flight computers also use the
+ screw terminal block for the power switch leads. On TeleMini v1.0,
+ the power switch leads are soldered directly to the board and
+ can be connected directly to a switch.
+ </para>
+ <para>
+ For most air-frames, the integrated antennas are more than
+ adequate. However, if you are installing in a carbon-fiber or
+ metal electronics bay which is opaque to RF signals, you may need to
+ use off-board external antennas instead. In this case, you can
+ replace the stock UHF antenna wire with an edge-launched SMA connector,
+ and, on TeleMetrum v1, you can unplug the integrated GPS
+ antenna and select an appropriate off-board GPS antenna with
+ cable terminating in a U.FL connector.
+ </para>
+ </section>
+ </chapter>
+ <chapter>
+ <title>System Operation</title>
+ <section>
+ <title>Firmware Modes </title>
+ <para>
+ The AltOS firmware build for the altimeters has two
+ fundamental modes, “idle” and “flight”. Which of these modes
+ the firmware operates in is determined at start up time. For
+ TeleMetrum and TeleMega, which have accelerometers, the mode is
+ controlled by the orientation of the
+ rocket (well, actually the board, of course...) at the time
+ power is switched on. If the rocket is “nose up”, then
+ the flight computer assumes it's on a rail or rod being prepared for
+ launch, so the firmware chooses flight mode. However, if the
+ rocket is more or less horizontal, the firmware instead enters
+ idle mode. Since TeleMini v2.0 and EasyMini don't have an
+ accelerometer we can use to determine orientation, “idle” mode
+ is selected if the board is connected via USB to a computer,
+ otherwise the board enters “flight” mode. TeleMini v1.0
+ selects “idle” mode if it receives a command packet within the
+ first five seconds of operation.
+ </para>
+ <para>
+ At power on, the altimeter will beep out the battery voltage
+ to the nearest tenth of a volt. Each digit is represented by
+ a sequence of short “dit” beeps, with a pause between
+ digits. A zero digit is represented with one long “dah”
+ beep. Then there will be a short pause while the altimeter
+ completes initialization and self test, and decides which mode
+ to enter next.
+ </para>
+ <para>
+ Here's a short summary of all of the modes and the beeping (or
+ flashing, in the case of TeleMini v1) that accompanies each
+ mode. In the description of the beeping pattern, “dit” means a
+ short beep while "dah" means a long beep (three times as
+ long). “Brap” means a long dissonant tone.
+ <table frame='all'>
+ <title>AltOS Modes</title>
+ <?dbfo keep-together="always"?>
+ <tgroup cols='4' align='center' colsep='1' rowsep='1'>
+ <colspec align='center' colwidth='*' colname='Mode Name'/>
+ <colspec align='center' colwidth='*' colname='Letter'/>
+ <colspec align='center' colwidth='*' colname='Beeps'/>
+ <colspec align='center' colwidth='*' colname='Description'/>
+ <thead>
+ <row>
+ <entry>Mode Name</entry>
+ <entry>Abbreviation</entry>
+ <entry>Beeps</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>Startup</entry>
+ <entry>S</entry>
+ <entry>battery voltage in decivolts</entry>
+ <entry>
+ <para>
+ Calibrating sensors, detecting orientation.
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>Idle</entry>
+ <entry>I</entry>
+ <entry>dit dit</entry>
+ <entry>
+ <para>
+ Ready to accept commands over USB or radio link.
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>Pad</entry>
+ <entry>P</entry>
+ <entry>dit dah dah dit</entry>
+ <entry>
+ <para>
+ Waiting for launch. Not listening for commands.
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>Boost</entry>
+ <entry>B</entry>
+ <entry>dah dit dit dit</entry>
+ <entry>
+ <para>
+ Accelerating upwards.
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>Fast</entry>
+ <entry>F</entry>
+ <entry>dit dit dah dit</entry>
+ <entry>
+ <para>
+ Decelerating, but moving faster than 200m/s.
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>Coast</entry>
+ <entry>C</entry>
+ <entry>dah dit dah dit</entry>
+ <entry>
+ <para>
+ Decelerating, moving slower than 200m/s
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>Drogue</entry>
+ <entry>D</entry>
+ <entry>dah dit dit</entry>
+ <entry>
+ <para>
+ Descending after apogee. Above main height.
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>Main</entry>
+ <entry>M</entry>
+ <entry>dah dah</entry>
+ <entry>
+ <para>
+ Descending. Below main height.
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>Landed</entry>
+ <entry>L</entry>
+ <entry>dit dah dit dit</entry>
+ <entry>
+ <para>
+ Stable altitude for at least ten seconds.
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>Sensor error</entry>
+ <entry>X</entry>
+ <entry>dah dit dit dah</entry>
+ <entry>
+ <para>
+ Error detected during sensor calibration.
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
+ <para>
+ In flight or “pad” mode, the altimeter engages the flight
+ state machine, goes into transmit-only mode to send telemetry,
+ and waits for launch to be detected. Flight mode is indicated
+ by an “di-dah-dah-dit” (“P” for pad) on the beeper or lights,
+ followed by beeps or flashes indicating the state of the
+ pyrotechnic igniter continuity. One beep/flash indicates
+ apogee continuity, two beeps/flashes indicate main continuity,
+ three beeps/flashes indicate both apogee and main continuity,
+ and one longer “brap” sound which is made by rapidly
+ alternating between two tones indicates no continuity. For a
+ dual deploy flight, make sure you're getting three beeps or
+ flashes before launching! For apogee-only or motor eject
+ flights, do what makes sense.
+ </para>
+ <para>
+ If idle mode is entered, you will hear an audible “di-dit” or
+ see two short flashes (“I” for idle), and the flight state
+ machine is disengaged, thus no ejection charges will fire.
+ The altimeters also listen for the radio link when in idle
+ mode for requests sent via TeleDongle. Commands can be issued
+ in idle mode over either USB or the radio link
+ equivalently. TeleMini v1.0 only has the radio link. Idle
+ mode is useful for configuring the altimeter, for extracting
+ data from the on-board storage chip after flight, and for
+ ground testing pyro charges.
+ </para>
+ <para>
+ In “Idle” and “Pad” modes, once the mode indication
+ beeps/flashes and continuity indication has been sent, if
+ there is no space available to log the flight in on-board
+ memory, the flight computer will emit a warbling tone (much
+ slower than the “no continuity tone”)
+ </para>
+ <para>
+ Here's a summary of all of the “pad” and “idle” mode indications.
+ <table frame='all'>
+ <title>Pad/Idle Indications</title>
+ <?dbfo keep-together="always"?>
+ <tgroup cols='3' align='center' colsep='1' rowsep='1'>
+ <colspec align='center' colwidth='*' colname='Name'/>
+ <colspec align='center' colwidth='*' colname='Beeps'/>
+ <colspec align='center' colwidth='*' colname='Description'/>
+ <thead>
+ <row>
+ <entry>Name</entry>
+ <entry>Beeps</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>Neither</entry>
+ <entry>brap</entry>
+ <entry>
+ <para>
+ No continuity detected on either apogee or main
+ igniters.
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>Apogee</entry>
+ <entry>dit</entry>
+ <entry>
+ <para>
+ Continuity detected only on apogee igniter.
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>Main</entry>
+ <entry>dit dit</entry>
+ <entry>
+ <para>
+ Continuity detected only on main igniter.
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>Both</entry>
+ <entry>dit dit dit</entry>
+ <entry>
+ <para>
+ Continuity detected on both igniters.
+ </para>
+ </entry>
+ </row>
+ <row>
+ <entry>Storage Full</entry>
+ <entry>warble</entry>
+ <entry>
+ <para>
+ On-board data logging storage is full. This will
+ not prevent the flight computer from safely
+ controlling the flight or transmitting telemetry
+ signals, but no record of the flight will be
+ stored in on-board flash.
+ </para>
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ </para>
+ <para>
+ Once landed, the flight computer will signal that by emitting
+ the “Landed” sound described above, after which it will beep
+ out the apogee height (in meters). Each digit is represented
+ by a sequence of short “dit” beeps, with a pause between
+ digits. A zero digit is represented with one long “dah”
+ beep. The flight computer will continue to report landed mode
+ and beep out the maximum height until turned off.
+ </para>
+ <para>
+ One “neat trick” of particular value when TeleMetrum or TeleMega are used with
+ very large air-frames, is that you can power the board up while the
+ rocket is horizontal, such that it comes up in idle mode. Then you can
+ raise the air-frame to launch position, and issue a 'reset' command
+ via TeleDongle over the radio link to cause the altimeter to reboot and
+ come up in flight mode. This is much safer than standing on the top
+ step of a rickety step-ladder or hanging off the side of a launch
+ tower with a screw-driver trying to turn on your avionics before
+ installing igniters!
+ </para>
+ <para>
+ TeleMini v1.0 is configured solely via the radio link. Of course, that
+ means you need to know the TeleMini radio configuration values
+ or you won't be able to communicate with it. For situations
+ when you don't have the radio configuration values, TeleMini v1.0
+ offers an 'emergency recovery' mode. In this mode, TeleMini is
+ configured as follows:
+ <itemizedlist>
+ <listitem>
+ <para>
+ Sets the radio frequency to 434.550MHz
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Sets the radio calibration back to the factory value.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Sets the callsign to N0CALL
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Does not go to 'pad' mode after five seconds.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ To get into 'emergency recovery' mode, first find the row of
+ four small holes opposite the switch wiring. Using a short
+ piece of small gauge wire, connect the outer two holes
+ together, then power TeleMini up. Once the red LED is lit,
+ disconnect the wire and the board should signal that it's in
+ 'idle' mode after the initial five second startup period.
+ </para>
+ </section>
+ <section>
+ <title>GPS </title>
+ <para>
+ TeleMetrum and TeleMega include a complete GPS receiver. A
+ complete explanation of how GPS works is beyond the scope of
+ this manual, but the bottom line is that the GPS receiver
+ needs to lock onto at least four satellites to obtain a solid
+ 3 dimensional position fix and know what time it is.
+ </para>
+ <para>
+ The flight computers provide backup power to the GPS chip any time a
+ battery is connected. This allows the receiver to “warm start” on
+ the launch rail much faster than if every power-on were a GPS
+ “cold start”. In typical operations, powering up
+ on the flight line in idle mode while performing final air-frame
+ preparation will be sufficient to allow the GPS receiver to cold
+ start and acquire lock. Then the board can be powered down during
+ RSO review and installation on a launch rod or rail. When the board
+ is turned back on, the GPS system should lock very quickly, typically
+ long before igniter installation and return to the flight line are
+ complete.
+ </para>
+ </section>
+ <section>
+ <title>Controlling An Altimeter Over The Radio Link</title>
+ <para>
+ One of the unique features of the Altus Metrum system is the
+ ability to create a two way command link between TeleDongle
+ and an altimeter using the digital radio transceivers
+ built into each device. This allows you to interact with the
+ altimeter from afar, as if it were directly connected to the
+ computer.
+ </para>
+ <para>
+ Any operation which can be performed with a flight computer can
+ either be done with the device directly connected to the
+ computer via the USB cable, or through the radio
+ link. TeleMini v1.0 doesn't provide a USB connector and so it is
+ always communicated with over radio. Select the appropriate
+ TeleDongle device when the list of devices is presented and
+ AltosUI will interact with an altimeter over the radio link.
+ </para>
+ <para>
+ One oddity in the current interface is how AltosUI selects the
+ frequency for radio communications. Instead of providing
+ an interface to specifically configure the frequency, it uses
+ whatever frequency was most recently selected for the target
+ TeleDongle device in Monitor Flight mode. If you haven't ever
+ used that mode with the TeleDongle in question, select the
+ Monitor Flight button from the top level UI, and pick the
+ appropriate TeleDongle device. Once the flight monitoring
+ window is open, select the desired frequency and then close it
+ down again. All radio communications will now use that frequency.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Save Flight Data—Recover flight data from the rocket without
+ opening it up.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Configure altimeter apogee delays, main deploy heights
+ and additional pyro event conditions
+ to respond to changing launch conditions. You can also
+ 'reboot' the altimeter. Use this to remotely enable the
+ flight computer by turning TeleMetrum or TeleMega on in “idle” mode,
+ then once the air-frame is oriented for launch, you can
+ reboot the altimeter and have it restart in pad mode
+ without having to climb the scary ladder.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Fire Igniters—Test your deployment charges without snaking
+ wires out through holes in the air-frame. Simply assemble the
+ rocket as if for flight with the apogee and main charges
+ loaded, then remotely command the altimeter to fire the
+ igniters.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Operation over the radio link for configuring an altimeter, ground
+ testing igniters, and so forth uses the same RF frequencies as flight
+ telemetry. To configure the desired TeleDongle frequency, select
+ the monitor flight tab, then use the frequency selector and
+ close the window before performing other desired radio operations.
+ </para>
+ <para>
+ The flight computers only enable radio commanding in 'idle' mode.
+ TeleMetrum and TeleMega use the accelerometer to detect which orientation they
+ start up in, so make sure you have the flight computer lying horizontally when you turn
+ it on. Otherwise, it will start in 'pad' mode ready for
+ flight, and will not be listening for command packets from TeleDongle.
+ </para>
+ <para>
+ TeleMini listens for a command packet for five seconds after
+ first being turned on, if it doesn't hear anything, it enters