bca1ee8003b1a7f2c654e309fd05b76402c85d2c
[fw/altos] / doc / system-operation.inc
1 [appendix]
2 == System Operation
3
4         === Firmware Modes
5
6                 The AltOS firmware build for the altimeters has two
7                 fundamental modes, “idle” and “flight”.  Which of these modes
8                 the firmware operates in is determined at start up time. For
9                 TeleMetrum, TeleMega and EasyMega, which have accelerometers, the mode is
10                 controlled by the orientation of the
11                 rocket (well, actually the board, of course...) at the time
12                 power is switched on.  If the rocket is “nose up”, then
13                 the flight computer assumes it's on a rail or rod being prepared for
14                 launch, so the firmware chooses flight mode.  However, if the
15                 rocket is more or less horizontal, the firmware instead enters
16                 idle mode.  Since TeleMini v2.0 and EasyMini don't have an
17                 accelerometer we can use to determine orientation, “idle” mode
18                 is selected if the board is connected via USB to a computer,
19                 otherwise the board enters “flight” mode. TeleMini v1.0
20                 selects “idle” mode if it receives a command packet within the
21                 first five seconds of operation.
22
23                 At power on, the altimeter will beep out the battery voltage
24                 to the nearest tenth of a volt.  Each digit is represented by
25                 a sequence of short “dit” beeps, with a pause between
26                 digits. A zero digit is represented with one long “dah”
27                 beep. Then there will be a short pause while the altimeter
28                 completes initialization and self test, and decides which mode
29                 to enter next.
30
31                 Here's a short summary of all of the modes and the beeping (or
32                 flashing, in the case of TeleMini v1) that accompanies each
33                 mode. In the description of the beeping pattern, “dit” means a
34                 short beep while "dah" means a long beep (three times as
35                 long). “Brap” means a long dissonant tone.
36
37                 .AltOS Modes
38                 [options="border",cols="1,1,2,2"]
39                 |====
40                 |Mode Name
41                 |Abbreviation
42                 |Beeps
43                 |Description
44
45                 |Startup
46                 |S
47                 |battery voltage in decivolts
48                 |Calibrating sensors, detecting orientation.
49
50                 |Idle
51                 |I
52                 |dit dit
53                 |Ready to accept commands over USB or radio link.
54
55                 |Pad
56                 |P
57                 |dit dah dah dit
58                 |Waiting for launch. Not listening for commands.
59
60                 |Boost
61                 |B
62                 |dah dit dit dit
63                 |Accelerating upwards.
64
65                 |Fast
66                 |F
67                 |dit dit dah dit
68                 |Decelerating, but moving faster than 200m/s.
69
70                 |Coast
71                 |C
72                 |dah dit dah dit
73                 |Decelerating, moving slower than 200m/s
74
75                 |Drogue
76                 |D
77                 |dah dit dit
78                 |Descending after apogee. Above main height.
79
80                 |Main
81                 |M
82                 |dah dah
83                 |Descending. Below main height.
84
85                 |Landed
86                 |L
87                 |dit dah dit dit
88                 |Stable altitude for at least ten seconds.
89
90
91                 |Sensor error
92                 |X
93                 |dah dit dit dah
94                 |Error detected during sensor calibration.
95                 |====
96
97                 In flight or “pad” mode, the altimeter engages the flight
98                 state machine, goes into transmit-only mode to send telemetry,
99                 and waits for launch to be detected.  Flight mode is indicated
100                 by an “di-dah-dah-dit” (“P” for pad) on the beeper or lights,
101                 followed by beeps or flashes indicating the state of the
102                 pyrotechnic igniter continuity.  One beep/flash indicates
103                 apogee continuity, two beeps/flashes indicate main continuity,
104                 three beeps/flashes indicate both apogee and main continuity,
105                 and one longer “brap” sound which is made by rapidly
106                 alternating between two tones indicates no continuity.  For a
107                 dual deploy flight, make sure you're getting three beeps or
108                 flashes before launching!  For apogee-only or motor eject
109                 flights, do what makes sense.
110
111                 If idle mode is entered, you will hear an audible “di-dit” or
112                 see two short flashes (“I” for idle), and the flight state
113                 machine is disengaged, thus no ejection charges will fire.
114                 The altimeters also listen for the radio link when in idle
115                 mode for requests sent via TeleDongle.  Commands can be issued
116                 in idle mode over either USB or the radio link
117                 equivalently. TeleMini v1.0 only has the radio link.  Idle
118                 mode is useful for configuring the altimeter, for extracting
119                 data from the on-board storage chip after flight, and for
120                 ground testing pyro charges.
121
122                 In “Idle” and “Pad” modes, once the mode indication
123                 beeps/flashes and continuity indication has been sent, if
124                 there is no space available to log the flight in on-board
125                 memory, the flight computer will emit a warbling tone (much
126                 slower than the “no continuity tone”)
127
128                 Here's a summary of all of the “pad” and “idle” mode indications.
129
130                 .Pad/Idle Indications
131                 [options="header",cols="1,1,3"]
132                 |====
133                 |Name           |Beeps          |Description
134
135                 |Neither
136                 |brap
137                 |No continuity detected on either apogee or main igniters.
138
139                 |Apogee
140                 |dit
141                 |Continuity detected only on apogee igniter.
142
143                 |Main
144                 |dit dit
145                 |Continuity detected only on main igniter.
146
147
148                 |Both
149                 |dit dit dit
150                 |Continuity detected on both igniters.
151
152
153                 |Storage Full
154                 |warble
155                 |On-board data logging storage is full. This will
156                  not prevent the flight computer from safely
157                  controlling the flight or transmitting telemetry
158                  signals, but no record of the flight will be
159                  stored in on-board flash.
160                 |====
161
162                 Once landed, the flight computer will signal that by emitting
163                 the “Landed” sound described above, after which it will beep
164                 out the apogee height (in meters). Each digit is represented
165                 by a sequence of short “dit” beeps, with a pause between
166                 digits. A zero digit is represented with one long “dah”
167                 beep. The flight computer will continue to report landed mode
168                 and beep out the maximum height until turned off.
169
170                 One “neat trick” of particular value when TeleMetrum, TeleMega
171                 or EasyMega are used with
172                 very large air-frames, is that you can power the board up while the
173                 rocket is horizontal, such that it comes up in idle mode.  Then you can
174                 raise the air-frame to launch position, and issue a 'reset' command
175                 via TeleDongle over the radio link to cause the altimeter to reboot and
176                 come up in flight mode.  This is much safer than standing on the top
177                 step of a rickety step-ladder or hanging off the side of a launch
178                 tower with a screw-driver trying to turn on your avionics before
179                 installing igniters!
180
181                 TeleMini v1.0 is configured solely via the radio link. Of course, that
182                 means you need to know the TeleMini radio configuration values
183                 or you won't be able to communicate with it. For situations
184                 when you don't have the radio configuration values, TeleMini v1.0
185                 offers an 'emergency recovery' mode. In this mode, TeleMini is
186                 configured as follows:
187
188
189                  * Sets the radio frequency to 434.550MHz
190                  * Sets the radio calibration back to the factory value.
191                  * Sets the callsign to N0CALL
192                  * Does not go to 'pad' mode after five seconds.
193
194                 To get into 'emergency recovery' mode, first find the row of
195                 four small holes opposite the switch wiring. Using a short
196                 piece of small gauge wire, connect the outer two holes
197                 together, then power TeleMini up. Once the red LED is lit,
198                 disconnect the wire and the board should signal that it's in
199                 'idle' mode after the initial five second startup period.
200
201         === GPS
202
203                 TeleMetrum and TeleMega include a complete GPS receiver.  A
204                 complete explanation of how GPS works is beyond the scope of
205                 this manual, but the bottom line is that the GPS receiver
206                 needs to lock onto at least four satellites to obtain a solid
207                 3 dimensional position fix and know what time it is.
208
209                 The flight computers provide backup power to the GPS chip any time a
210                 battery is connected.  This allows the receiver to “warm start” on
211                 the launch rail much faster than if every power-on were a GPS
212                 “cold start”.  In typical operations, powering up
213                 on the flight line in idle mode while performing final air-frame
214                 preparation will be sufficient to allow the GPS receiver to cold
215                 start and acquire lock.  Then the board can be powered down during
216                 RSO review and installation on a launch rod or rail.  When the board
217                 is turned back on, the GPS system should lock very quickly, typically
218                 long before igniter installation and return to the flight line are
219                 complete.
220
221         === Controlling An Altimeter Over The Radio Link
222
223                 One of the unique features of the Altus Metrum system is the
224                 ability to create a two way command link between TeleDongle
225                 and an altimeter using the digital radio transceivers
226                 built into each device. This allows you to interact with the
227                 altimeter from afar, as if it were directly connected to the
228                 computer.
229
230                 Any operation which can be performed with a flight computer can
231                 either be done with the device directly connected to the
232                 computer via the USB cable, or through the radio
233                 link. TeleMini v1.0 doesn't provide a USB connector and so it is
234                 always communicated with over radio.  Select the appropriate
235                 TeleDongle device when the list of devices is presented and
236                 AltosUI will interact with an altimeter over the radio link.
237
238                 One oddity in the current interface is how AltosUI selects the
239                 frequency for radio communications. Instead of providing
240                 an interface to specifically configure the frequency, it uses
241                 whatever frequency was most recently selected for the target
242                 TeleDongle device in Monitor Flight mode. If you haven't ever
243                 used that mode with the TeleDongle in question, select the
244                 Monitor Flight button from the top level UI, and pick the
245                 appropriate TeleDongle device.  Once the flight monitoring
246                 window is open, select the desired frequency and then close it
247                 down again. All radio communications will now use that frequency.
248
249                  * Save Flight Data—Recover flight data from the
250                    rocket without opening it up.
251
252                  * Configure altimeter apogee delays, main deploy
253                    heights and additional pyro event conditions to
254                    respond to changing launch conditions. You can also
255                    'reboot' the altimeter. Use this to remotely enable
256                    the flight computer by turning TeleMetrum or
257                    TeleMega on in “idle” mode, then once the air-frame
258                    is oriented for launch, you can reboot the
259                    altimeter and have it restart in pad mode without
260                    having to climb the scary ladder.
261
262                  * Fire Igniters—Test your deployment charges without snaking
263                    wires out through holes in the air-frame. Simply assemble the
264                    rocket as if for flight with the apogee and main charges
265                    loaded, then remotely command the altimeter to fire the
266                    igniters.
267
268                 Operation over the radio link for configuring an
269                 altimeter, ground testing igniters, and so forth uses
270                 the same RF frequencies as flight telemetry.  To
271                 configure the desired TeleDongle frequency, select the
272                 monitor flight tab, then use the frequency selector
273                 and close the window before performing other desired
274                 radio operations.
275
276                 The flight computers only enable radio commanding in
277                 'idle' mode.  TeleMetrum and TeleMega use the
278                 accelerometer to detect which orientation they start
279                 up in, so make sure you have the flight computer lying
280                 horizontally when you turn it on. Otherwise, it will
281                 start in 'pad' mode ready for flight, and will not be
282                 listening for command packets from TeleDongle.
283
284                 TeleMini listens for a command packet for five seconds
285                 after first being turned on, if it doesn't hear
286                 anything, it enters 'pad' mode, ready for flight and
287                 will no longer listen for command packets. The easiest
288                 way to connect to TeleMini is to initiate the command
289                 and select the TeleDongle device. At this point, the
290                 TeleDongle will be attempting to communicate with the
291                 TeleMini. Now turn TeleMini on, and it should
292                 immediately start communicating with the TeleDongle
293                 and the desired operation can be performed.
294
295                 You can monitor the operation of the radio link by watching the
296                 lights on the devices. The red LED will flash each time a packet
297                 is transmitted, while the green LED will light up on TeleDongle when
298                 it is waiting to receive a packet from the altimeter.
299
300         === Ground Testing
301
302                 An important aspect of preparing a rocket using electronic deployment
303                 for flight is ground testing the recovery system.  Thanks
304                 to the bi-directional radio link central to the Altus Metrum system,
305                 this can be accomplished in a TeleMega, TeleMetrum or TeleMini equipped rocket
306                 with less work than you may be accustomed to with other systems.  It
307                 can even be fun!
308
309                 Just prep the rocket for flight, then power up the altimeter
310                 in “idle” mode (placing air-frame horizontal for TeleMetrum or TeleMega, or
311                 selecting the Configure Altimeter tab for TeleMini).  This will cause
312                 the firmware to go into “idle” mode, in which the normal flight
313                 state machine is disabled and charges will not fire without
314                 manual command.  You can now command the altimeter to fire the apogee
315                 or main charges from a safe distance using your computer and
316                 TeleDongle and the Fire Igniter tab to complete ejection testing.
317
318         === Radio Link
319
320                 TeleMetrum, TeleMini and TeleMega all incorporate an RF transceiver, but
321                 it's not a full duplex system... each end can only be transmitting or
322                 receiving at any given moment.  So we had to decide how to manage the
323                 link.
324
325                 By design, the altimeter firmware listens for the radio link when
326                 it's in “idle mode”, which
327                 allows us to use the radio link to configure the rocket, do things like
328                 ejection tests, and extract data after a flight without having to
329                 crack open the air-frame.  However, when the board is in “flight
330                 mode”, the altimeter only
331                 transmits and doesn't listen at all.  That's because we want to put
332                 ultimate priority on event detection and getting telemetry out of
333                 the rocket through
334                 the radio in case the rocket crashes and we aren't able to extract
335                 data later...
336
337                 We don't generally use a 'normal packet radio' mode like APRS
338                 because they're just too inefficient.  The GFSK modulation we
339                 use is FSK with the base-band pulses passed through a Gaussian
340                 filter before they go into the modulator to limit the
341                 transmitted bandwidth.  When combined with forward error
342                 correction and interleaving, this allows us to have a very
343                 robust 19.2 kilobit data link with only 10-40 milliwatts of
344                 transmit power, a whip antenna in the rocket, and a hand-held
345                 Yagi on the ground.  We've had flights to above 21k feet AGL
346                 with great reception, and calculations suggest we should be
347                 good to well over 40k feet AGL with a 5-element yagi on the
348                 ground with our 10mW units and over 100k feet AGL with the
349                 40mW devices.  We hope to fly boards to higher altitudes over
350                 time, and would of course appreciate customer feedback on
351                 performance in higher altitude flights!
352
353         === APRS
354
355                 TeleMetrum v2.0 and TeleMega can send APRS if desired, and the
356                 interval between APRS packets can be configured. As each APRS
357                 packet takes a full second to transmit, we recommend an
358                 interval of at least 5 seconds to avoid consuming too much
359                 battery power or radio channel bandwidth. You can configure
360                 the APRS interval using AltosUI; that process is described in
361                 the Configure Altimeter section of the AltosUI chapter.
362
363                 AltOS uses the APRS compressed position report data format,
364                 which provides for higher position precision and shorter
365                 packets than the original APRS format. It also includes
366                 altitude data, which is invaluable when tracking rockets. We
367                 haven't found a receiver which doesn't handle compressed
368                 positions, but it's just possible that you have one, so if you
369                 have an older device that can receive the raw packets but
370                 isn't displaying position information, it's possible that this
371                 is the cause.
372
373                 APRS packets include an SSID (Secondary Station Identifier)
374                 field that allows one operator to have multiple
375                 transmitters. AltOS allows you to set this to a single digit
376                 from 0 to 9, allowing you to fly multiple transmitters at the
377                 same time while keeping the identify of each one separate in
378                 the receiver. By default, the SSID is set to the last digit of
379                 the device serial number.
380
381                 The APRS packet format includes a comment field that can have
382                 arbitrary text in it. AltOS uses this to send status
383                 information about the flight computer. It sends four fields as
384                 shown in the following table.
385
386                 .Altus Metrum APRS Comments
387                 [options="header",cols="1,1,1"]
388                 |====
389                 |Field        |Example        |Description
390
391                 |1
392                 |L
393                 |GPS Status U for unlocked, L for locked
394
395                 |2
396                 |6
397                 |Number of Satellites in View
398
399                 |3
400                 |B4.0
401                 |Altimeter Battery Voltage
402
403                 |4
404                 |A3.7
405                 |Apogee Igniter Voltage
406
407                 |5
408                 |M3.7
409                 |Main Igniter Voltage
410
411                 |6
412                 |1286
413                 |Device Serial Number
414                 |====
415
416                 Here's an example of an APRS comment showing GPS lock with 6
417                 satellites in view, a primary battery at 4.0V, and
418                 apogee and main igniters both at 3.7V from device 1286.
419
420                 ....
421                 L6 B4.0 A3.7 M3.7 1286
422                 ....
423
424                 Make sure your primary battery is above 3.8V, any
425                 connected igniters are above 3.5V and GPS is locked
426                 with at least 5 or 6 satellites in view before
427                 flying. If GPS is switching between L and U regularly,
428                 then it doesn't have a good lock and you should wait
429                 until it becomes stable.
430
431                 If the GPS receiver loses lock, the APRS data
432                 transmitted will contain the last position for which
433                 GPS lock was available. You can tell that this has
434                 happened by noticing that the GPS status character
435                 switches from 'L' to 'U'. Before GPS has locked, APRS
436                 will transmit zero for latitude, longitude and
437                 altitude.
438
439         === Configurable Parameters
440
441                 Configuring an Altus Metrum altimeter for flight is
442                 very simple.  Even on our baro-only TeleMini and
443                 EasyMini boards, the use of a Kalman filter means
444                 there is no need to set a “mach delay”.  The few
445                 configurable parameters can all be set using AltosUI
446                 over USB or or radio link via TeleDongle. Read the
447                 Configure Altimeter section in the AltosUI chapter
448                 below for more information.
449
450                 ==== Radio Frequency
451
452                         Altus Metrum boards support radio frequencies
453                         in the 70cm band. By default, the
454                         configuration interface provides a list of 10
455                         “standard” frequencies in 100kHz channels
456                         starting at 434.550MHz.  However, the firmware
457                         supports use of any 50kHz multiple within the
458                         70cm band. At any given launch, we highly
459                         recommend coordinating when and by whom each
460                         frequency will be used to avoid interference.
461                         And of course, both altimeter and TeleDongle
462                         must be configured to the same frequency to
463                         successfully communicate with each other.
464
465                 ==== Callsign
466
467                         This sets the callsign used for telemetry,
468                         APRS and the packet link. For telemetry and
469                         APRS, this is used to identify the device. For
470                         the packet link, the callsign must match that
471                         configured in AltosUI or the link will not
472                         work. This is to prevent accidental
473                         configuration of another Altus Metrum flight
474                         computer operating on the same frequency
475                         nearby.
476
477                 ==== Telemetry/RDF/APRS Enable
478
479                         You can completely disable the radio while in
480                         flight, if necessary. This doesn't disable the
481                         packet link in idle mode.
482
483                 ==== Telemetry baud rate
484
485                         This sets the modulation bit rate for data
486                         transmission for both telemetry and packet
487                         link mode. Lower bit rates will increase range
488                         while reducing the amount of data that can be
489                         sent and increasing battery consumption. All
490                         telemetry is done using a rate 1/2 constraint
491                         4 convolution code, so the actual data
492                         transmission rate is 1/2 of the modulation bit
493                         rate specified here.
494
495                 ==== APRS Interval
496
497                         This selects how often APRS packets are
498                         transmitted. Set this to zero to disable APRS
499                         without also disabling the regular telemetry
500                         and RDF transmissions. As APRS takes a full
501                         second to transmit a single position report,
502                         we recommend sending packets no more than once
503                         every 5 seconds.
504
505                 ==== APRS SSID
506
507                         This selects the SSID reported in APRS
508                         packets. By default, it is set to the last
509                         digit of the serial number, but you can change
510                         this to any value from 0 to 9.
511
512                 ==== Apogee Delay
513
514                         Apogee delay is the number of seconds after
515                         the altimeter detects flight apogee that the
516                         drogue charge should be fired.  In most cases,
517                         this should be left at the default of 0.
518                         However, if you are flying redundant
519                         electronics such as for an L3 certification,
520                         you may wish to set one of your altimeters to
521                         a positive delay so that both primary and
522                         backup pyrotechnic charges do not fire
523                         simultaneously.
524
525                         The Altus Metrum apogee detection algorithm
526                         fires exactly at apogee.  If you are also
527                         flying an altimeter like the PerfectFlite
528                         MAWD, which only supports selecting 0 or 1
529                         seconds of apogee delay, you may wish to set
530                         the MAWD to 0 seconds delay and set the
531                         TeleMetrum to fire your backup 2 or 3 seconds
532                         later to avoid any chance of both charges
533                         firing simultaneously.  We've flown several
534                         air-frames this way quite happily, including
535                         Keith's successful L3 cert.
536
537                 ==== Apogee Lockout
538
539                         Apogee lockout is the number of seconds after
540                         boost where the flight computer will not fire
541                         the apogee charge, even if the rocket appears
542                         to be at apogee. This is often called 'Mach
543                         Delay', as it is intended to prevent a flight
544                         computer from unintentionally firing apogee
545                         charges due to the pressure spike that occurrs
546                         across a mach transition. Altus Metrum flight
547                         computers include a Kalman filter which is not
548                         fooled by this sharp pressure increase, and so
549                         this setting should be left at the default
550                         value of zero to disable it.
551
552                 ==== Main Deployment Altitude
553
554                         By default, the altimeter will fire the main
555                         deployment charge at an elevation of 250
556                         meters (about 820 feet) above ground.  We
557                         think this is a good elevation for most
558                         air-frames, but feel free to change this to
559                         suit.  In particular, if you are flying two
560                         altimeters, you may wish to set the deployment
561                         elevation for the backup altimeter to be
562                         something lower than the primary so that both
563                         pyrotechnic charges don't fire simultaneously.
564
565                 ==== Maximum Flight Log
566
567                         Changing this value will set the maximum
568                         amount of flight log storage that an
569                         individual flight will use. The available
570                         storage is divided into as many flights of the
571                         specified size as can fit in the available
572                         space. You can download and erase individual
573                         flight logs. If you fill up the available
574                         storage, future flights will not get logged
575                         until you erase some of the stored ones.
576
577                         Even though our flight computers (except TeleMini v1.0) can store
578                         multiple flights, we strongly recommend downloading and saving
579                         flight data after each flight.
580
581                 ==== Ignite Mode
582
583                         Instead of firing one charge at apogee and
584                         another charge at a fixed height above the
585                         ground, you can configure the altimeter to
586                         fire both at apogee or both during
587                         descent. This was added to support an airframe
588                         Bdale designed that had two altimeters, one in
589                         the fin can and one in the nose.
590
591                         Providing the ability to use both igniters for
592                         apogee or main allows some level of redundancy
593                         without needing two flight computers.  In
594                         Redundant Apogee or Redundant Main mode, the
595                         two charges will be fired two seconds apart.
596
597                 ==== Pad Orientation
598
599                         TeleMetrum, TeleMega and EasyMega measure
600                         acceleration along the axis of the
601                         board. Which way the board is oriented affects
602                         the sign of the acceleration value. Instead of
603                         trying to guess which way the board is mounted
604                         in the air frame, the altimeter must be
605                         explicitly configured for either Antenna Up or
606                         Antenna Down. The default, Antenna Up, expects
607                         the end of the board connected to the 70cm
608                         antenna to be nearest the nose of the rocket,
609                         with the end containing the screw terminals
610                         nearest the tail.
611
612                 ==== Configurable Pyro Channels
613
614                         In addition to the usual Apogee and Main pyro
615                         channels, TeleMega and EasyMega have four
616                         additional channels that can be configured to
617                         activate when various flight conditions are
618                         satisfied. You can select as many conditions
619                         as necessary; all of them must be met in order
620                         to activate the channel. The conditions
621                         available are:
622
623                         include::pyro-channels.raw[]
624