+ </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
+ 'pad' mode, ready for flight and will no longer listen for
+ command packets. The easiest way to connect to TeleMini is to
+ initiate the command and select the TeleDongle device. At this
+ point, the TeleDongle will be attempting to communicate with
+ the TeleMini. Now turn TeleMini on, and it should immediately
+ start communicating with the TeleDongle and the desired
+ operation can be performed.
+ </para>
+ <para>
+ You can monitor the operation of the radio link by watching the
+ lights on the devices. The red LED will flash each time a packet
+ is transmitted, while the green LED will light up on TeleDongle when
+ it is waiting to receive a packet from the altimeter.
+ </para>
+ </section>
+ <section>
+ <title>Ground Testing </title>
+ <para>
+ An important aspect of preparing a rocket using electronic deployment
+ for flight is ground testing the recovery system. Thanks
+ to the bi-directional radio link central to the Altus Metrum system,
+ this can be accomplished in a TeleMega, TeleMetrum or TeleMini equipped rocket
+ with less work than you may be accustomed to with other systems. It
+ can even be fun!
+ </para>
+ <para>
+ Just prep the rocket for flight, then power up the altimeter
+ in “idle” mode (placing air-frame horizontal for TeleMetrum or TeleMega, or
+ selecting the Configure Altimeter tab for TeleMini). This will cause
+ the firmware to go into “idle” mode, in which the normal flight
+ state machine is disabled and charges will not fire without
+ manual command. You can now command the altimeter to fire the apogee
+ or main charges from a safe distance using your computer and
+ TeleDongle and the Fire Igniter tab to complete ejection testing.
+ </para>
+ </section>
+ <section>
+ <title>Radio Link </title>
+ <para>
+ Our flight computers all incorporate an RF transceiver, but
+ it's not a full duplex system... each end can only be transmitting or
+ receiving at any given moment. So we had to decide how to manage the
+ link.
+ </para>
+ <para>
+ By design, the altimeter firmware listens for the radio link when
+ it's in “idle mode”, which
+ allows us to use the radio link to configure the rocket, do things like
+ ejection tests, and extract data after a flight without having to
+ crack open the air-frame. However, when the board is in “flight
+ mode”, the altimeter only
+ transmits and doesn't listen at all. That's because we want to put
+ ultimate priority on event detection and getting telemetry out of
+ the rocket through
+ the radio in case the rocket crashes and we aren't able to extract
+ data later...
+ </para>
+ <para>
+ We don't generally use a 'normal packet radio' mode like APRS
+ because they're just too inefficient. The GFSK modulation we
+ use is FSK with the base-band pulses passed through a Gaussian
+ filter before they go into the modulator to limit the
+ transmitted bandwidth. When combined with forward error
+ correction and interleaving, this allows us to have a very
+ robust 19.2 kilobit data link with only 10-40 milliwatts of
+ transmit power, a whip antenna in the rocket, and a hand-held
+ Yagi on the ground. We've had flights to above 21k feet AGL
+ with great reception, and calculations suggest we should be
+ good to well over 40k feet AGL with a 5-element yagi on the
+ ground with our 10mW units and over 100k feet AGL with the
+ 40mW devices. We hope to fly boards to higher altitudes over
+ time, and would of course appreciate customer feedback on
+ performance in higher altitude flights!
+ </para>
+ </section>
+ <section>
+ <title>APRS</title>
+ <para>
+ TeleMetrum v2.0 and TeleMega can send APRS if desired, and the
+ interval between APRS packets can be configured. As each APRS
+ packet takes a full second to transmit, we recommend an
+ interval of at least 5 seconds to avoid consuming too much
+ battery power or radio channel bandwidth. You can configure
+ the APRS interval using AltosUI; that process is described in
+ the Configure Altimeter section of the AltosUI chapter.
+ </para>
+ <para>
+ AltOS uses the APRS compressed position report data format,
+ which provides for higher position precision and shorter
+ packets than the original APRS format. It also includes
+ altitude data, which is invaluable when tracking rockets. We
+ haven't found a receiver which doesn't handle compressed
+ positions, but it's just possible that you have one, so if you
+ have an older device that can receive the raw packets but
+ isn't displaying position information, it's possible that this
+ is the cause.
+ </para>
+ <para>
+ The APRS packet format includes a comment field that can have
+ arbitrary text in it. AltOS uses this to send status
+ information about the flight computer. It sends four fields as
+ shown in the following table.
+ </para>
+ <table frame='all'>
+ <title>Altus Metrum APRS Comments</title>
+ <?dbfo keep-together="always"?>
+ <tgroup cols='3' align='center' colsep='1' rowsep='1'>
+ <colspec align='center' colwidth='*' colname='Field'/>
+ <colspec align='center' colwidth='*' colname='Example'/>
+ <colspec align='center' colwidth='4*' colname='Description'/>
+ <thead>
+ <row>
+ <entry align='center'>Field</entry>
+ <entry align='center'>Example</entry>
+ <entry align='center'>Description</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry>1</entry>
+ <entry>L</entry>
+ <entry>GPS Status U for unlocked, L for locked</entry>
+ </row>
+ <row>
+ <entry>2</entry>
+ <entry>6</entry>
+ <entry>Number of Satellites in View</entry>
+ </row>
+ <row>
+ <entry>3</entry>
+ <entry>B4.0</entry>
+ <entry>Altimeter Battery Voltage</entry>
+ </row>
+ <row>
+ <entry>4</entry>
+ <entry>A3.7</entry>
+ <entry>Apogee Igniter Voltage</entry>
+ </row>
+ <row>
+ <entry>5</entry>
+ <entry>M3.7</entry>
+ <entry>Main Igniter Voltage</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+ <para>
+ Here's an example of an APRS comment showing GPS lock with 6
+ satellites in view, a primary battery at 4.0V, and
+ apogee and main igniters both at 3.7V.
+ <screen>
+ L6 B4.0 A3.7 M3.7
+ </screen>
+ </para>
+ <para>
+ Make sure your primary battery is above 3.8V, any connected
+ igniters are above 3.5V and GPS is locked with at least 5 or 6
+ satellites in view before flying. If GPS is switching between
+ L and U regularly, then it doesn't have a good lock and you
+ should wait until it becomes stable.
+ </para>
+ <para>
+ If the GPS receiver loses lock, the APRS data transmitted will
+ contain the last position for which GPS lock was
+ available. You can tell that this has happened by noticing
+ that the GPS status character switches from 'L' to 'U'. Before
+ GPS has locked, APRS will transmit zero for latitude,
+ longitude and altitude.
+ </para>
+ </section>
+ <section>
+ <title>Configurable Parameters</title>
+ <para>
+ Configuring an Altus Metrum altimeter for flight is very
+ simple. Even on our baro-only TeleMini and EasyMini boards,
+ the use of a Kalman filter means there is no need to set a
+ “mach delay”. The few configurable parameters can all be set
+ using AltosUI over USB or or radio link via TeleDongle. Read
+ the Configure Altimeter section in the AltosUI chapter below
+ for more information.
+ </para>
+ <section>
+ <title>Radio Frequency</title>
+ <para>
+ Altus Metrum boards support radio frequencies in the 70cm
+ band. By default, the configuration interface provides a
+ list of 10 “standard” frequencies in 100kHz channels starting at
+ 434.550MHz. However, the firmware supports use of
+ any 50kHz multiple within the 70cm band. At any given
+ launch, we highly recommend coordinating when and by whom each
+ frequency will be used to avoid interference. And of course, both
+ altimeter and TeleDongle must be configured to the same
+ frequency to successfully communicate with each other.
+ </para>
+ </section>
+ <section>
+ <title>Callsign</title>
+ <para>
+ This sets the callsign used for telemetry, APRS and the
+ packet link. For telemetry and APRS, this is used to
+ identify the device. For the packet link, the callsign must
+ match that configured in AltosUI or the link will not
+ work. This is to prevent accidental configuration of another
+ Altus Metrum flight computer operating on the same frequency nearby.
+ </para>
+ </section>
+ <section>
+ <title>Telemetry/RDF/APRS Enable</title>
+ <para>
+ You can completely disable the radio while in flight, if
+ necessary. This doesn't disable the packet link in idle
+ mode.
+ </para>
+ </section>
+ <section>
+ <title>APRS Interval</title>
+ <para>
+ This selects how often APRS packets are transmitted. Set
+ this to zero to disable APRS without also disabling the
+ regular telemetry and RDF transmissions. As APRS takes a
+ full second to transmit a single position report, we
+ recommend sending packets no more than once every 5 seconds.
+ </para>
+ </section>
+ <section>
+ <title>Apogee Delay</title>
+ <para>
+ Apogee delay is the number of seconds after the altimeter detects flight
+ apogee that the drogue charge should be fired. In most cases, this
+ should be left at the default of 0. However, if you are flying
+ redundant electronics such as for an L3 certification, you may wish
+ to set one of your altimeters to a positive delay so that both
+ primary and backup pyrotechnic charges do not fire simultaneously.
+ </para>
+ <para>
+ The Altus Metrum apogee detection algorithm fires exactly at
+ apogee. If you are also flying an altimeter like the
+ PerfectFlite MAWD, which only supports selecting 0 or 1
+ seconds of apogee delay, you may wish to set the MAWD to 0
+ seconds delay and set the TeleMetrum to fire your backup 2
+ or 3 seconds later to avoid any chance of both charges
+ firing simultaneously. We've flown several air-frames this
+ way quite happily, including Keith's successful L3 cert.
+ </para>
+ </section>
+ <section>
+ <title>Apogee Lockout</title>
+ <para>
+ Apogee lockout is the number of seconds after boost where
+ the flight computer will not fire the apogee charge, even if
+ the rocket appears to be at apogee. This is often called
+ 'Mach Delay', as it is intended to prevent a flight computer
+ from unintentionally firing apogee charges due to the pressure
+ spike that occurrs across a mach transition. Altus Metrum
+ flight computers include a Kalman filter which is not fooled
+ by this sharp pressure increase, and so this setting should
+ be left at the default value of zero to disable it.
+ </para>
+ </section>
+ <section>
+ <title>Main Deployment Altitude</title>
+ <para>
+ By default, the altimeter will fire the main deployment charge at an
+ elevation of 250 meters (about 820 feet) above ground. We think this
+ is a good elevation for most air-frames, but feel free to change this
+ to suit. In particular, if you are flying two altimeters, you may
+ wish to set the
+ deployment elevation for the backup altimeter to be something lower
+ than the primary so that both pyrotechnic charges don't fire
+ simultaneously.
+ </para>
+ </section>
+ <section>
+ <title>Maximum Flight Log</title>
+ <para>
+ Changing this value will set the maximum amount of flight
+ log storage that an individual flight will use. The
+ available storage is divided into as many flights of the
+ specified size as can fit in the available space. You can
+ download and erase individual flight logs. If you fill up
+ the available storage, future flights will not get logged
+ until you erase some of the stored ones.
+ </para>
+ <para>
+ Even though our flight computers (except TeleMini v1.0) can store
+ multiple flights, we strongly recommend downloading and saving
+ flight data after each flight.
+ </para>
+ </section>
+ <section>
+ <title>Ignite Mode</title>
+ <para>
+ Instead of firing one charge at apogee and another charge at
+ a fixed height above the ground, you can configure the
+ altimeter to fire both at apogee or both during
+ descent. This was added to support an airframe Bdale designed that
+ had two altimeters, one in the fin can and one in the nose.
+ </para>
+ <para>
+ Providing the ability to use both igniters for apogee or
+ main allows some level of redundancy without needing two
+ flight computers. In Redundant Apogee or Redundant Main
+ mode, the two charges will be fired two seconds apart.
+ </para>
+ </section>
+ <section>
+ <title>Pad Orientation</title>
+ <para>
+ TeleMetrum and TeleMega measure acceleration along the axis
+ of the board. Which way the board is oriented affects the
+ sign of the acceleration value. Instead of trying to guess
+ which way the board is mounted in the air frame, the
+ altimeter must be explicitly configured for either Antenna
+ Up or Antenna Down. The default, Antenna Up, expects the end
+ of the board connected to the 70cm antenna to be nearest the
+ nose of the rocket, with the end containing the screw
+ terminals nearest the tail.
+ </para>
+ </section>
+ <section>
+ <title>Configurable Pyro Channels</title>
+ <para>
+ In addition to the usual Apogee and Main pyro channels,
+ TeleMega has four additional channels that can be configured
+ to activate when various flight conditions are
+ satisfied. You can select as many conditions as necessary;
+ all of them must be met in order to activate the
+ channel. The conditions available are:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Acceleration away from the ground. Select a value, and
+ then choose whether acceleration should be above or
+ below that value. Acceleration is positive upwards, so
+ accelerating towards the ground would produce negative
+ numbers. Acceleration during descent is noisy and
+ inaccurate, so be careful when using it during these
+ phases of the flight.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Vertical speed. Select a value, and then choose whether
+ vertical speed should be above or below that
+ value. Speed is positive upwards, so moving towards the
+ ground would produce negative numbers. Speed during
+ descent is a bit noisy and so be careful when using it
+ during these phases of the flight.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Height. Select a value, and then choose whether the
+ height above the launch pad should be above or below
+ that value.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Orientation. TeleMega contains a 3-axis gyroscope and
+ accelerometer which is used to measure the current
+ angle. Note that this angle is not the change in angle
+ from the launch pad, but rather absolute relative to
+ gravity; the 3-axis accelerometer is used to compute the
+ angle of the rocket on the launch pad and initialize the
+ system. Because this value is computed by integrating
+ rate gyros, it gets progressively less accurate as the
+ flight goes on. It should have an accumulated error of
+ less than 0.2°/second (after 10 seconds of flight, the
+ error should be less than 2°).
+ </para>
+ <para>
+ The usual use of the orientation configuration is to
+ ensure that the rocket is traveling mostly upwards when
+ deciding whether to ignite air starts or additional
+ stages. For that, choose a reasonable maximum angle
+ (like 20°) and set the motor igniter to require an angle
+ of less than that value.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Flight Time. Time since boost was detected. Select a
+ value and choose whether to activate the pyro channel
+ before or after that amount of time.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Ascending. A simple test saying whether the rocket is
+ going up or not. This is exactly equivalent to testing
+ whether the speed is > 0.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Descending. A simple test saying whether the rocket is
+ going down or not. This is exactly equivalent to testing
+ whether the speed is < 0.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ After Motor. The flight software counts each time the
+ rocket starts accelerating (presumably due to a motor or
+ motors igniting). Use this value to count ignitions for
+ multi-staged or multi-airstart launches.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Delay. This value doesn't perform any checks, instead it
+ inserts a delay between the time when the other
+ parameters become true and when the pyro channel is
+ activated.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Flight State. The flight software tracks the flight
+ through a sequence of states:
+ <orderedlist>
+ <listitem>
+ <para>
+ Boost. The motor has lit and the rocket is
+ accelerating upwards.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Fast. The motor has burned out and the rocket is
+ decelerating, but it is going faster than 200m/s.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Coast. The rocket is still moving upwards and
+ decelerating, but the speed is less than 200m/s.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Drogue. The rocket has reached apogee and is heading
+ back down, but is above the configured Main
+ altitude.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Main. The rocket is still descending, and is below
+ the Main altitude
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Landed. The rocket is no longer moving.
+ </para>
+ </listitem>
+ </orderedlist>
+ </para>
+ <para>
+ You can select a state to limit when the pyro channel
+ may activate; note that the check is based on when the
+ rocket transitions <emphasis>into</emphasis> the state, and so checking for
+ “greater than Boost” means that the rocket is currently
+ in boost or some later state.
+ </para>
+ <para>
+ When a motor burns out, the rocket enters either Fast or
+ Coast state (depending on how fast it is moving). If the
+ computer detects upwards acceleration again, it will
+ move back to Boost state.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ </section>
+
+ </chapter>
+ <chapter>
+ <title>AltosUI</title>
+ <informalfigure>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="altosui.png" width="4.6in"/>
+ </imageobject>
+ </mediaobject>
+ </informalfigure>
+ <para>
+ The AltosUI program provides a graphical user interface for
+ interacting with the Altus Metrum product family. AltosUI can
+ monitor telemetry data, configure devices and many other
+ tasks. The primary interface window provides a selection of
+ buttons, one for each major activity in the system. This chapter
+ is split into sections, each of which documents one of the tasks
+ provided from the top-level toolbar.
+ </para>
+ <section>
+ <title>Monitor Flight</title>
+ <subtitle>Receive, Record and Display Telemetry Data</subtitle>
+ <para>
+ Selecting this item brings up a dialog box listing all of the
+ connected TeleDongle devices. When you choose one of these,
+ AltosUI will create a window to display telemetry data as
+ received by the selected TeleDongle device.
+ </para>
+ <informalfigure>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="device-selection.png" width="3.1in"/>
+ </imageobject>
+ </mediaobject>
+ </informalfigure>
+ <para>
+ All telemetry data received are automatically recorded in
+ suitable log files. The name of the files includes the current
+ date and rocket serial and flight numbers.
+ </para>
+ <para>
+ The radio frequency being monitored by the TeleDongle device is
+ displayed at the top of the window. You can configure the
+ frequency by clicking on the frequency box and selecting the desired
+ frequency. AltosUI remembers the last frequency selected for each
+ TeleDongle and selects that automatically the next time you use
+ that device.
+ </para>
+ <para>
+ Below the TeleDongle frequency selector, the window contains a few
+ significant pieces of information about the altimeter providing
+ the telemetry data stream:
+ </para>
+ <itemizedlist>