From c871dd92a548e6af1e14d8866e01dda37d129747 Mon Sep 17 00:00:00 2001 From: Bdale Garbee Date: Sat, 13 Sep 2014 12:28:41 -0600 Subject: [PATCH] update docs --- AltOS/doc/altos.html | 214 ++++----- AltOS/doc/altos.pdf | Bin 162027 -> 162027 bytes AltOS/doc/altusmetrum.html | 657 +++++++++++++++++--------- AltOS/doc/altusmetrum.pdf | Bin 14009623 -> 14603787 bytes AltOS/doc/companion.html | 16 +- AltOS/doc/companion.pdf | Bin 24524 -> 24524 bytes AltOS/doc/configure-altimeter.png | Bin 44924 -> 47224 bytes AltOS/doc/configure-groundstation.png | Bin 17329 -> 16306 bytes AltOS/doc/easymega-outline.pdf | Bin 0 -> 7022 bytes AltOS/doc/easymega.svg | 33 ++ AltOS/doc/easymini-outline.pdf | Bin 7047 -> 7047 bytes AltOS/doc/micropeak.html | 42 +- AltOS/doc/micropeak.pdf | Bin 3675043 -> 3675043 bytes AltOS/doc/release-notes-1.5.html | 68 +++ AltOS/doc/scan-channels.png | Bin 18787 -> 18400 bytes AltOS/doc/telegps.html | 138 +++--- AltOS/doc/telegps.pdf | Bin 2886583 -> 2886587 bytes AltOS/doc/telemega-outline.pdf | Bin 7025 -> 7025 bytes AltOS/doc/telemetrum-outline.pdf | Bin 7097 -> 7097 bytes AltOS/doc/telemetry.html | 36 +- AltOS/doc/telemetry.pdf | Bin 40587 -> 40587 bytes 21 files changed, 760 insertions(+), 444 deletions(-) create mode 100644 AltOS/doc/easymega-outline.pdf create mode 100644 AltOS/doc/easymega.svg create mode 100644 AltOS/doc/release-notes-1.5.html diff --git a/AltOS/doc/altos.html b/AltOS/doc/altos.html index 6e5da2b..bae58c0 100644 --- a/AltOS/doc/altos.html +++ b/AltOS/doc/altos.html @@ -1,11 +1,11 @@ -AltOS

AltOS

Altos Metrum Operating System

Keith Packard

+AltOS

AltOS

Altos Metrum Operating System

Keith Packard

This document is released under the terms of the Creative Commons ShareAlike 3.0 license. -

Revision History
Revision 1.105 November 2012
Portable version
Revision 0.122 November 2010
Initial content

Table of Contents

1. Overview
2. AltOS Porting Layer
1. Low-level CPU operations
1.1. ao_arch_block_interrupts/ao_arch_release_interrupts
1.2. ao_arch_save_regs, ao_arch_save_stack, - ao_arch_restore_stack
1.3. ao_arch_wait_interupt
2. GPIO operations
2.1. GPIO setup
2.2. Reading and writing GPIO pins
3. Programming the 8051 with SDCC
1. 8051 memory spaces
1.1. __data
1.2. __idata
1.3. __xdata
1.4. __pdata
1.5. __code
1.6. __bit
1.7. __sfr, __sfr16, __sfr32, __sbit
2. Function calls on the 8051
2.1. __reentrant functions
2.2. Non __reentrant functions
2.3. __interrupt functions
2.4. __critical functions and statements
4. Task functions
1. ao_add_task
2. ao_exit
3. ao_sleep
4. ao_wakeup
5. ao_alarm
6. ao_start_scheduler
7. ao_clock_init
5. Timer Functions
1. ao_time
2. ao_delay
3. ao_timer_set_adc_interval
4. ao_timer_init
6. AltOS Mutexes
1. ao_mutex_get
2. ao_mutex_put
7. DMA engine
1. CC1111 DMA Engine
1.1. ao_dma_alloc
1.2. ao_dma_set_transfer
1.3. ao_dma_start
1.4. ao_dma_trigger
1.5. ao_dma_abort
2. STM32L DMA Engine
2.1. ao_dma_alloc
2.2. ao_dma_set_transfer
2.3. ao_dma_set_isr
2.4. ao_dma_start
2.5. ao_dma_done_transfer
2.6. ao_dma_abort
8. Stdio interface
1. putchar
2. getchar
3. flush
4. ao_add_stdio
9. Command line interface
1. ao_cmd_register
2. ao_cmd_lex
3. ao_cmd_put16
4. ao_cmd_put8
5. ao_cmd_white
6. ao_cmd_hex
7. ao_cmd_decimal
8. ao_match_word
9. ao_cmd_init
10. USB target device
1. ao_usb_flush
2. ao_usb_putchar
3. ao_usb_pollchar
4. ao_usb_getchar
5. ao_usb_disable
6. ao_usb_enable
7. ao_usb_init
11. Serial peripherals
1. ao_serial_getchar
2. ao_serial_putchar
3. ao_serial_drain
4. ao_serial_set_speed
5. ao_serial_init
12. CC1111 Radio peripheral
1. Radio Introduction
2. ao_radio_set_telemetry
3. ao_radio_set_packet
4. ao_radio_set_rdf
5. ao_radio_idle
6. ao_radio_get
7. ao_radio_put
8. ao_radio_abort
9. Radio Telemetry
9.1. ao_radio_send
9.2. ao_radio_recv
10. Radio Direction Finding
10.1. ao_radio_rdf
11. Radio Packet Mode
11.1. ao_packet_putchar
11.2. ao_packet_pollchar
11.3. ao_packet_slave_start
11.4. ao_packet_slave_stop
11.5. ao_packet_slave_init
11.6. ao_packet_master_init

Chapter 1. Overview

+

Revision History
Revision 1.105 November 2012
Portable version
Revision 0.122 November 2010
Initial content

Table of Contents

1. Overview
2. AltOS Porting Layer
1. Low-level CPU operations
1.1. ao_arch_block_interrupts/ao_arch_release_interrupts
1.2. ao_arch_save_regs, ao_arch_save_stack, + ao_arch_restore_stack
1.3. ao_arch_wait_interupt
2. GPIO operations
2.1. GPIO setup
2.2. Reading and writing GPIO pins
3. Programming the 8051 with SDCC
1. 8051 memory spaces
1.1. __data
1.2. __idata
1.3. __xdata
1.4. __pdata
1.5. __code
1.6. __bit
1.7. __sfr, __sfr16, __sfr32, __sbit
2. Function calls on the 8051
2.1. __reentrant functions
2.2. Non __reentrant functions
2.3. __interrupt functions
2.4. __critical functions and statements
4. Task functions
1. ao_add_task
2. ao_exit
3. ao_sleep
4. ao_wakeup
5. ao_alarm
6. ao_start_scheduler
7. ao_clock_init
5. Timer Functions
1. ao_time
2. ao_delay
3. ao_timer_set_adc_interval
4. ao_timer_init
6. AltOS Mutexes
1. ao_mutex_get
2. ao_mutex_put
7. DMA engine
1. CC1111 DMA Engine
1.1. ao_dma_alloc
1.2. ao_dma_set_transfer
1.3. ao_dma_start
1.4. ao_dma_trigger
1.5. ao_dma_abort
2. STM32L DMA Engine
2.1. ao_dma_alloc
2.2. ao_dma_set_transfer
2.3. ao_dma_set_isr
2.4. ao_dma_start
2.5. ao_dma_done_transfer
2.6. ao_dma_abort
8. Stdio interface
1. putchar
2. getchar
3. flush
4. ao_add_stdio
9. Command line interface
1. ao_cmd_register
2. ao_cmd_lex
3. ao_cmd_put16
4. ao_cmd_put8
5. ao_cmd_white
6. ao_cmd_hex
7. ao_cmd_decimal
8. ao_match_word
9. ao_cmd_init
10. USB target device
1. ao_usb_flush
2. ao_usb_putchar
3. ao_usb_pollchar
4. ao_usb_getchar
5. ao_usb_disable
6. ao_usb_enable
7. ao_usb_init
11. Serial peripherals
1. ao_serial_getchar
2. ao_serial_putchar
3. ao_serial_drain
4. ao_serial_set_speed
5. ao_serial_init
12. CC1111 Radio peripheral
1. Radio Introduction
2. ao_radio_set_telemetry
3. ao_radio_set_packet
4. ao_radio_set_rdf
5. ao_radio_idle
6. ao_radio_get
7. ao_radio_put
8. ao_radio_abort
9. Radio Telemetry
9.1. ao_radio_send
9.2. ao_radio_recv
10. Radio Direction Finding
10.1. ao_radio_rdf
11. Radio Packet Mode
11.1. ao_packet_putchar
11.2. ao_packet_pollchar
11.3. ao_packet_slave_start
11.4. ao_packet_slave_stop
11.5. ao_packet_slave_init
11.6. ao_packet_master_init

Chapter 1. Overview

AltOS is a operating system built for a variety of microcontrollers used in Altus Metrum devices. It has a simple porting layer for each CPU while providing a convenient @@ -85,8 +85,8 @@

As you can see, a long sequence of subsystems are initialized and then the scheduler is started. -

Chapter 2. AltOS Porting Layer

AltOS provides a CPU-independent interface to various common microcontroller subsystems, including GPIO pins, interrupts, SPI, I2C, USB and asynchronous serial interfaces. By making @@ -94,11 +94,11 @@ application code can all be written that work on any supported CPU. Many of the architecture abstraction interfaces are prefixed with ao_arch. -

1. Low-level CPU operations

+

1. Low-level CPU operations

These primitive operations provide the abstraction needed to run the multi-tasking framework while providing reliable interrupt delivery. -

1.1. ao_arch_block_interrupts/ao_arch_release_interrupts

+      

1.1. ao_arch_block_interrupts/ao_arch_release_interrupts

 	  static inline void
 	  ao_arch_block_interrupts(void);
 	  
@@ -109,7 +109,7 @@
 	  discard any interrupts. Use these for sections of code that
 	  must be atomic with respect to any code run from an
 	  interrupt handler.
-	

1.2. ao_arch_save_regs, ao_arch_save_stack, +

1.2. ao_arch_save_regs, ao_arch_save_stack, ao_arch_restore_stack

 	  static inline void
 	  ao_arch_save_regs(void);
@@ -127,7 +127,7 @@
 	  in the current ao_task structure. ao_arch_restore_stack
 	  switches back to the saved stack, restores all registers and
 	  branches to the saved return address.
-	

1.3. ao_arch_wait_interupt

+	

1.3. ao_arch_wait_interupt

 	  #define ao_arch_wait_interrupt()
 	

This stops the CPU, leaving clocks and interrupts @@ -139,10 +139,10 @@ disable interrupts again. If the CPU doesn't have any reduced power mode, this must at the least allow pending interrupts to be processed. -

2. GPIO operations

+

2. GPIO operations

These functions provide an abstract interface to configure and manipulate GPIO pins. -

2.1. GPIO setup

+

2.1. GPIO setup

These macros may be invoked at system initialization time to configure pins as needed for system operation. One tricky aspect is that some chips provide direct access to specific @@ -151,14 +151,14 @@ provide both port+bit and pin arguments. Simply define the arguments needed for the target platform and leave the others undefined. -

2.1.1. ao_enable_output

+	

2.1.1. ao_enable_output

 	    #define ao_enable_output(port, bit, pin, value)
 	  

Set the specified port+bit (also called 'pin') for output, initializing to the specified value. The macro must avoid driving the pin with the opposite value if at all possible. -

2.1.2. ao_enable_input

+	  

2.1.2. ao_enable_input

 	    #define ao_enable_input(port, bit, mode)
 	  

Sets the specified port/bit to be an input pin. 'mode' is @@ -176,18 +176,18 @@ 0. Don't apply either a pull-up or pull-down. A disconnected pin will read an undetermined value.

-

2.2. Reading and writing GPIO pins

+

2.2. Reading and writing GPIO pins

These macros read and write individual GPIO pins. -

2.2.1. ao_gpio_set

+	

2.2.1. ao_gpio_set

 	    #define ao_gpio_set(port, bit, pin, value)
 	  

Sets the specified port/bit or pin to the indicated value -

2.2.2. ao_gpio_get

+	  

2.2.2. ao_gpio_get

 	    #define ao_gpio_get(port, bit, pin)
 	  

Returns either 1 or 0 depending on whether the input to the pin is high or low. -

Chapter 3. Programming the 8051 with SDCC

The 8051 is a primitive 8-bit processor, designed in the mists of time in as few transistors as possible. The architecture is highly irregular and includes several separate memory @@ -198,7 +198,7 @@

When built on other architectures, the various SDCC-specific symbols are #defined as empty strings so they don't affect the compiler. -

1. 8051 memory spaces

+

1. 8051 memory spaces

The __data/__xdata/__code memory spaces below were completely separate in the original 8051 design. In the cc1111, this isn't true—they all live in a single unified 64kB address @@ -212,7 +212,7 @@ is decorated with a memory space identifier which clutters the code but makes the resulting code far smaller and more efficient. -

1.1. __data

+

1.1. __data

The 8051 can directly address these 128 bytes of memory. This makes them precious so they should be reserved for frequently addressed values. Oh, just to @@ -222,42 +222,42 @@ these registers located at 0x00 - 0x1F. AltOS uses only the first bank at 0x00 - 0x07, leaving the other 24 bytes available for other data. -

1.2. __idata

+

1.2. __idata

There are an additional 128 bytes of internal memory that share the same address space as __data but which cannot be directly addressed. The stack normally occupies this space and so AltOS doesn't place any static storage here. -

1.3. __xdata

+

1.3. __xdata

This is additional general memory accessed through a single 16-bit address register. The CC1111F32 has 32kB of memory available here. Most program data should live in this memory space. -

1.4. __pdata

+

1.4. __pdata

This is an alias for the first 256 bytes of __xdata memory, but uses a shorter addressing mode with single global 8-bit value for the high 8 bits of the address and any of several 8-bit registers for the low 8 bits. AltOS uses a few bits of this memory, it should probably use more. -

1.5. __code

+

1.5. __code

All executable code must live in this address space, but you can stick read-only data here too. It is addressed using the 16-bit address register and special 'code' access opcodes. Anything read-only should live in this space. -

1.6. __bit

+

1.6. __bit

The 8051 has 128 bits of bit-addressible memory that lives in the __data segment from 0x20 through 0x2f. Special instructions access these bits in a single atomic operation. This isn't so much a separate address space as a special addressing mode for a few bytes in the __data segment. -

1.7. __sfr, __sfr16, __sfr32, __sbit

+

1.7. __sfr, __sfr16, __sfr32, __sbit

Access to physical registers in the device use this mode which declares the variable name, its type and the address it lives at. No memory is allocated for these variables. -

2. Function calls on the 8051

+

2. Function calls on the 8051

Because stack addressing is expensive, and stack space limited, the default function call declaration in SDCC allocates all parameters and local variables in static global @@ -265,7 +265,7 @@ non-reentrant, and also consume space for parameters and locals even when they are not running. The benefit is smaller code and faster execution. -

2.1. __reentrant functions

+

2.1. __reentrant functions

All functions which are re-entrant, either due to recursion or due to a potential context switch while executing, should be marked as __reentrant so that their parameters and local @@ -278,7 +278,7 @@ invoked can also be marked as __reentrant. The resulting code will be larger, but the savings in memory are frequently worthwhile. -

2.2. Non __reentrant functions

+

2.2. Non __reentrant functions

All parameters and locals in non-reentrant functions can have data space decoration so that they are allocated in __xdata, __pdata or __data space as desired. This can avoid @@ -290,14 +290,14 @@ non-reentrant. Because of this, interrupt handlers must not invoke any library functions, including the multiply and divide code. -

2.3. __interrupt functions

+

2.3. __interrupt functions

Interrupt functions are declared with with an __interrupt decoration that includes the interrupt number. SDCC saves and restores all of the registers in these functions and uses the 'reti' instruction at the end so that they operate as stand-alone interrupt handlers. Interrupt functions may call the ao_wakeup function to wake AltOS tasks. -

2.4. __critical functions and statements

+

2.4. __critical functions and statements

SDCC has built-in support for suspending interrupts during critical code. Functions marked as __critical will have interrupts suspended for the whole period of @@ -308,9 +308,9 @@ quickly as possible. AltOS doesn't use this form in shared code as other compilers wouldn't know what to do. Use ao_arch_block_interrupts and ao_arch_release_interrupts instead. -

Chapter 4. Task functions

This chapter documents how to create, destroy and schedule AltOS tasks. -

1. ao_add_task

+    

1. ao_add_task

 	void
 	ao_add_task(__xdata struct ao_task * task,
 	            void (*start)(void),
@@ -321,12 +321,12 @@
 	display), and the start address. It does not switch to the
 	new task. 'start' must not ever return; there is no place
 	to return to.
-      

2. ao_exit

+      

2. ao_exit

 	void
 	ao_exit(void)
       

This terminates the current task. -

3. ao_sleep

+      

3. ao_sleep

 	void
 	ao_sleep(__xdata void *wchan)
       

@@ -348,7 +348,7 @@ ao_sleep(&ao_radio_done); ao_arch_release_interrupts();

-

4. ao_wakeup

+      

4. ao_wakeup

 	void
 	ao_wakeup(__xdata void *wchan)
       

@@ -365,7 +365,7 @@ Note that this need not block interrupts as the ao_sleep block can only be run from normal mode, and so this sequence can never be interrupted with execution of the other sequence. -

5. ao_alarm

+      

5. ao_alarm

 	void
 	ao_alarm(uint16_t delay);
 
@@ -390,18 +390,18 @@
 	incoming radio data. If no data is received before the
 	timeout fires, ao_sleep will return 1 and then this code
 	will abort the radio receive operation.
-      

6. ao_start_scheduler

+      

6. ao_start_scheduler

 	void
 	ao_start_scheduler(void);
       

This is called from 'main' when the system is all initialized and ready to run. It will not return. -

7. ao_clock_init

+      

7. ao_clock_init

 	void
 	ao_clock_init(void);
       

This initializes the main CPU clock and switches to it. -

Chapter 5. Timer Functions

+

Chapter 5. Timer Functions

AltOS sets up one of the CPU timers to run at 100Hz and exposes this tick as the fundemental unit of time. At each interrupt, AltOS increments the counter, and schedules any tasks @@ -409,51 +409,51 @@ collect current data readings. Doing this from the ISR ensures that the values are sampled at a regular rate, independent of any scheduling jitter. -

1. ao_time

+    

1. ao_time

 	uint16_t
 	ao_time(void)
       

Returns the current system tick count. Note that this is only a 16 bit value, and so it wraps every 655.36 seconds. -

2. ao_delay

+      

2. ao_delay

 	void
 	ao_delay(uint16_t ticks);
       

Suspend the current task for at least 'ticks' clock units. -

3. ao_timer_set_adc_interval

+      

3. ao_timer_set_adc_interval

 	void
 	ao_timer_set_adc_interval(uint8_t interval);
       

This sets the number of ticks between ADC samples. If set to 0, no ADC samples are generated. AltOS uses this to slow down the ADC sampling rate to save power. -

4. ao_timer_init

+      

4. ao_timer_init

 	void
 	ao_timer_init(void)
       

This turns on the 100Hz tick. It is required for any of the time-based functions to work. It should be called by 'main' before ao_start_scheduler. -

Chapter 6. AltOS Mutexes

+

Chapter 6. AltOS Mutexes

AltOS provides mutexes as a basic synchronization primitive. Each mutexes is simply a byte of memory which holds 0 when the mutex is free or the task id of the owning task when the mutex is owned. Mutex calls are checked—attempting to acquire a mutex already held by the current task or releasing a mutex not held by the current task will both cause a panic. -

1. ao_mutex_get

+    

1. ao_mutex_get

 	void
 	ao_mutex_get(__xdata uint8_t *mutex);
       

Acquires the specified mutex, blocking if the mutex is owned by another task. -

2. ao_mutex_put

+      

2. ao_mutex_put

 	void
 	ao_mutex_put(__xdata uint8_t *mutex);
       

Releases the specified mutex, waking up all tasks waiting for it. -

Chapter 7. DMA engine

The CC1111 and STM32L both contain a useful bit of extra hardware in the form of a number of programmable DMA engines. They can be configured to copy data in memory, or @@ -476,7 +476,7 @@ from hardware to memory, that trigger event is supplied by the hardware device. When copying data from memory to hardware, the transfer is usually initiated by software. -

1. CC1111 DMA Engine

1.1. ao_dma_alloc

+    

1. CC1111 DMA Engine

1.1. ao_dma_alloc

 	  uint8_t
 	  ao_dma_alloc(__xdata uint8_t *done)
 	

@@ -486,7 +486,7 @@ AO_DMA_ABORTED bit if ao_dma_abort was called. Note that it is possible to get both bits if the transfer was aborted after it had finished. -

1.2. ao_dma_set_transfer

+	

1.2. ao_dma_set_transfer

 	  void
 	  ao_dma_set_transfer(uint8_t id,
 	  void __xdata *srcaddr,
@@ -500,24 +500,24 @@
 	  cfg1 are values directly out of the CC1111 documentation
 	  and tell the DMA engine what the transfer unit size,
 	  direction and step are.
-	

1.3. ao_dma_start

+	

1.3. ao_dma_start

 	  void
 	  ao_dma_start(uint8_t id);
 	

Arm the specified DMA engine and await a signal from either hardware or software to start transferring data. -

1.4. ao_dma_trigger

+	

1.4. ao_dma_trigger

 	  void
 	  ao_dma_trigger(uint8_t id)
 	

Trigger the specified DMA engine to start copying data. -

1.5. ao_dma_abort

+	

1.5. ao_dma_abort

 	  void
 	  ao_dma_abort(uint8_t id)
 	

Terminate any in-progress DMA transaction, marking its 'done' variable with the AO_DMA_ABORTED bit. -

2. STM32L DMA Engine

2.1. ao_dma_alloc

+	

2. STM32L DMA Engine

2.1. ao_dma_alloc

 	  uint8_t ao_dma_done[];
 
 	  void
@@ -525,7 +525,7 @@
 	

Reserve a DMA engine for exclusive use by one driver. -

2.2. ao_dma_set_transfer

+	

2.2. ao_dma_set_transfer

 	  void
 	  ao_dma_set_transfer(uint8_t id,
 	  void *peripheral,
@@ -538,7 +538,7 @@
 	  value directly out of the STM32L documentation and tells the
 	  DMA engine what the transfer unit size, direction and step
 	  are.
-	

2.3. ao_dma_set_isr

+	

2.3. ao_dma_set_isr

 	  void
 	  ao_dma_set_isr(uint8_t index, void (*isr)(int))
 	

@@ -546,7 +546,7 @@ completes in lieu of setting the ao_dma_done bits. Use this when some work needs to be done when the DMA finishes that cannot wait until user space resumes. -

2.4. ao_dma_start

+	

2.4. ao_dma_start

 	  void
 	  ao_dma_start(uint8_t id);
 	

@@ -557,19 +557,19 @@ or the AO_DMA_ABORTED bit if ao_dma_abort was called. Note that it is possible to get both bits if the transfer was aborted after it had finished. -

2.5. ao_dma_done_transfer

+	

2.5. ao_dma_done_transfer

 	  void
 	  ao_dma_done_transfer(uint8_t id);
 	

Signals that a specific DMA engine is done being used. This allows multiple drivers to use the same DMA engine safely. -

2.6. ao_dma_abort

+	

2.6. ao_dma_abort

 	  void
 	  ao_dma_abort(uint8_t id)
 	

Terminate any in-progress DMA transaction, marking its 'done' variable with the AO_DMA_ABORTED bit. -

Chapter 8. Stdio interface

+

Chapter 8. Stdio interface

AltOS offers a stdio interface over USB, serial and the RF packet link. This provides for control of the device locally or remotely. This is hooked up to the stdio functions by providing @@ -577,13 +577,13 @@ automatically multiplex the available communication channels; output is always delivered to the channel which provided the most recent input. -

1. putchar

+    

1. putchar

 	void
 	putchar(char c)
       

Delivers a single character to the current console device. -

2. getchar

+      

2. getchar

 	char
 	getchar(void)
       

@@ -591,13 +591,13 @@ console devices. The current console device is set to that which delivered this character. This blocks until a character is available. -

3. flush

+      

3. flush

 	void
 	flush(void)
       

Flushes the current console device output buffer. Any pending characters will be delivered to the target device. -

4. ao_add_stdio

+      

4. ao_add_stdio

 	void
 	ao_add_stdio(char (*pollchar)(void),
 	                   void (*putchar)(char),
@@ -619,13 +619,13 @@
 	'flush' forces the output buffer to be flushed. It may
 	block until the buffer is delivered, but it is not
 	required to do so.
-      

Chapter 9. Command line interface

AltOS includes a simple command line parser which is hooked up to the stdio interfaces permitting remote control of the device over USB, serial or the RF link as desired. Each command uses a single character to invoke it, the remaining characters on the line are available as parameters to the command. -

1. ao_cmd_register

+    

1. ao_cmd_register

 	void
 	ao_cmd_register(__code struct ao_cmds *cmds)
       

@@ -656,38 +656,38 @@ The command line is invalid for some reason other than invalid tokens.

-

2. ao_cmd_lex

+      

2. ao_cmd_lex

 	void
 	ao_cmd_lex(void);
       

This gets the next character out of the command line buffer and sticks it into ao_cmd_lex_c. At the end of the line, ao_cmd_lex_c will get a newline ('\n') character. -

3. ao_cmd_put16

+      

3. ao_cmd_put16

 	void
 	ao_cmd_put16(uint16_t v);
       

Writes 'v' as four hexadecimal characters. -

4. ao_cmd_put8

+      

4. ao_cmd_put8

 	void
 	ao_cmd_put8(uint8_t v);
       

Writes 'v' as two hexadecimal characters. -

5. ao_cmd_white

+      

5. ao_cmd_white

 	void
 	ao_cmd_white(void)
       

This skips whitespace by calling ao_cmd_lex while ao_cmd_lex_c is either a space or tab. It does not skip any characters if ao_cmd_lex_c already non-white. -

6. ao_cmd_hex

+      

6. ao_cmd_hex

 	void
 	ao_cmd_hex(void)
       

This reads a 16-bit hexadecimal value from the command line with optional leading whitespace. The resulting value is stored in ao_cmd_lex_i; -

7. ao_cmd_decimal

+      

7. ao_cmd_decimal

 	void
 	ao_cmd_decimal(void)
       

@@ -695,7 +695,7 @@ line with optional leading whitespace. The resulting value is stored in ao_cmd_lex_u32 and the low 16 bits are stored in ao_cmd_lex_i; -

8. ao_match_word

+      

8. ao_match_word

 	uint8_t
 	ao_match_word(__code char *word)
       

@@ -703,14 +703,14 @@ line. It does not skip leading white space. If 'word' is found, then 1 is returned. Otherwise, ao_cmd_status is set to ao_cmd_syntax_error and 0 is returned. -

9. ao_cmd_init

+      

9. ao_cmd_init

 	void
 	ao_cmd_init(void
       

Initializes the command system, setting up the built-in commands and adding a task to run the command processing loop. It should be called by 'main' before ao_start_scheduler. -

Chapter 10. USB target device

AltOS contains a full-speed USB target device driver. It can be programmed to offer any kind of USB target, but to simplify interactions with a variety of operating systems, AltOS provides @@ -724,7 +724,7 @@ interface if desired, offering control of the device over the USB link. Alternatively, the functions can be accessed directly to provide for USB-specific I/O. -

1. ao_usb_flush

+    

1. ao_usb_flush

 	void
 	ao_usb_flush(void);
       

@@ -732,7 +732,7 @@ to be delivered to the USB host if there is pending data, or if the last IN packet was full to indicate to the host that there isn't any more pending data available. -

2. ao_usb_putchar

+      

2. ao_usb_putchar

 	void
 	ao_usb_putchar(char c);
       

@@ -741,7 +741,7 @@ adds a byte to the pending IN packet for delivery to the USB host. If the USB packet is full, this queues the 'IN' packet for delivery. -

3. ao_usb_pollchar

+      

3. ao_usb_pollchar

 	char
 	ao_usb_pollchar(void);
       

@@ -749,13 +749,13 @@ packet received, this returns AO_READ_AGAIN. Otherwise, it returns the next character, reporting to the host that it is ready for more data when the last character is gone. -

4. ao_usb_getchar

+      

4. ao_usb_getchar

 	char
 	ao_usb_getchar(void);
       

This uses ao_pollchar to receive the next character, blocking while ao_pollchar returns AO_READ_AGAIN. -

5. ao_usb_disable

+      

5. ao_usb_disable

 	void
 	ao_usb_disable(void);
       

@@ -770,7 +770,7 @@ after disabling the USB device, it's likely that the cable will need to be disconnected and reconnected before it will work again. -

6. ao_usb_enable

+      

6. ao_usb_enable

 	void
 	ao_usb_enable(void);
       

@@ -778,7 +778,7 @@ disabled. See the note above about needing to physically remove and re-insert the cable to get the host to re-initialize the USB link. -

7. ao_usb_init

+      

7. ao_usb_init

 	void
 	ao_usb_init(void);
       

@@ -786,7 +786,7 @@ the control end point and adds the usb I/O functions to the stdio system. Call this from main before ao_start_scheduler. -

Chapter 11. Serial peripherals

The CC1111 provides two USART peripherals. AltOS uses one for asynch serial data, generally to communicate with a GPS device, and the other for a SPI bus. The UART is configured to operate @@ -797,25 +797,25 @@

To prevent loss of data, AltOS provides receive and transmit fifos of 32 characters each. -

1. ao_serial_getchar

+    

1. ao_serial_getchar

 	char
 	ao_serial_getchar(void);
       

Returns the next character from the receive fifo, blocking until a character is received if the fifo is empty. -

2. ao_serial_putchar

+      

2. ao_serial_putchar

 	void
 	ao_serial_putchar(char c);
       

Adds a character to the transmit fifo, blocking if the fifo is full. Starts transmitting characters. -

3. ao_serial_drain

+      

3. ao_serial_drain

 	void
 	ao_serial_drain(void);
       

Blocks until the transmit fifo is empty. Used internally when changing serial speeds. -

4. ao_serial_set_speed

+      

4. ao_serial_set_speed

 	void
 	ao_serial_set_speed(uint8_t speed);
       

@@ -823,14 +823,14 @@ AO_SERIAL_SPEED_4800, AO_SERIAL_SPEED_9600 or AO_SERIAL_SPEED_57600. This first flushes the transmit fifo using ao_serial_drain. -

5. ao_serial_init

+      

5. ao_serial_init

 	void
 	ao_serial_init(void)
       

Initializes the serial peripheral. Call this from 'main' before jumping to ao_start_scheduler. The default speed setting is AO_SERIAL_SPEED_4800. -

Chapter 12. CC1111 Radio peripheral

1. Radio Introduction

The CC1111 radio transceiver sends and receives digital packets with forward error correction and detection. The AltOS driver is fairly specific to the needs of the TeleMetrum and TeleDongle @@ -868,7 +868,7 @@ receiver. This is designed to provide a beacon to track the device when other location mechanisms fail.

-

2. ao_radio_set_telemetry

+      

2. ao_radio_set_telemetry

 	  void
 	  ao_radio_set_telemetry(void);
 	

@@ -877,7 +877,7 @@ other RF parameters. It does not include the base frequency or channel though. Those are set at the time of transmission or reception, in case the values are changed by the user. -

3. ao_radio_set_packet

+	

3. ao_radio_set_packet

 	  void
 	  ao_radio_set_packet(void);
 	

@@ -886,7 +886,7 @@ parameters. It does not include the base frequency or channel though. Those are set at the time of transmission or reception, in case the values are changed by the user. -

4. ao_radio_set_rdf

+	

4. ao_radio_set_rdf

 	  void
 	  ao_radio_set_rdf(void);
 	

@@ -896,38 +896,38 @@ and data whitening logic is turned off so that the resulting modulation is received as a 1kHz tone by a conventional 70cm FM audio receiver. -

5. ao_radio_idle

+	

5. ao_radio_idle

 	  void
 	  ao_radio_idle(void);
 	

Sets the radio device to idle mode, waiting until it reaches that state. This will terminate any in-progress transmit or receive operation. -

6. ao_radio_get

+	

6. ao_radio_get

 	  void
 	  ao_radio_get(void);
 	

Acquires the radio mutex and then configures the radio frequency using the global radio calibration and channel values. -

7. ao_radio_put

+	

7. ao_radio_put

 	  void
 	  ao_radio_put(void);
 	

Releases the radio mutex. -

8. ao_radio_abort

+	

8. ao_radio_abort

 	  void
 	  ao_radio_abort(void);
 	

Aborts any transmission or reception process by aborting the associated DMA object and calling ao_radio_idle to terminate the radio operation. -

9. Radio Telemetry

+

9. Radio Telemetry

In telemetry mode, you can send or receive a telemetry packet. The data from receiving a packet also includes the RSSI and status values supplied by the receiver. These are added after the telemetry data. -

9.1. ao_radio_send

+      

9.1. ao_radio_send

 	  void
 	  ao_radio_send(__xdata struct ao_telemetry *telemetry);
 	

@@ -936,7 +936,7 @@ telemetry mode. This function calls ao_radio_get() before sending, and ao_radio_put() afterwards, to correctly serialize access to the radio device. -

9.2. ao_radio_recv

+	

9.2. ao_radio_recv

 	  void
 	  ao_radio_recv(__xdata struct ao_radio_recv *radio);
 	

@@ -947,21 +947,21 @@ to the radio device. This returns non-zero if a packet was received, or zero if the operation was aborted (from some other task calling ao_radio_abort()). -

10. Radio Direction Finding

+

10. Radio Direction Finding

In radio direction finding mode, there's just one function to use -

10.1. ao_radio_rdf

+      

10.1. ao_radio_rdf

 	  void
 	  ao_radio_rdf(int ms);
 	

This sends an RDF packet lasting for the specified amount of time. The maximum length is 1020 ms. -

11. Radio Packet Mode

+

11. Radio Packet Mode

Packet mode is asymmetrical and is configured at compile time for either master or slave mode (but not both). The basic I/O functions look the same at both ends, but the internals are different, along with the initialization steps. -

11.1. ao_packet_putchar

+      

11.1. ao_packet_putchar

 	  void
 	  ao_packet_putchar(char c);
 	

@@ -971,32 +971,32 @@ transmit a packet if the output buffer is full. On the slave side, any pending data will be sent the next time the master polls for data. -

11.2. ao_packet_pollchar

+	

11.2. ao_packet_pollchar

 	  char
 	  ao_packet_pollchar(void);
 	

This returns a pending input character if available, otherwise returns AO_READ_AGAIN. On the master side, if this empties the buffer, it triggers a poll for more data. -

11.3. ao_packet_slave_start

+	

11.3. ao_packet_slave_start

 	  void
 	  ao_packet_slave_start(void);
 	

This is available only on the slave side and starts a task to listen for packet data. -

11.4. ao_packet_slave_stop

+	

11.4. ao_packet_slave_stop

 	  void
 	  ao_packet_slave_stop(void);
 	

Disables the packet slave task, stopping the radio receiver. -

11.5. ao_packet_slave_init

+	

11.5. ao_packet_slave_init

 	  void
 	  ao_packet_slave_init(void);
 	

Adds the packet stdio functions to the stdio package so that when packet slave mode is enabled, characters will get send and received through the stdio functions. -

11.6. ao_packet_master_init

+	

11.6. ao_packet_master_init

 	  void
 	  ao_packet_master_init(void);
 	

diff --git a/AltOS/doc/altos.pdf b/AltOS/doc/altos.pdf index 08c5344b9b7a77572310011ece6efd0578a20e42..e2d4aed1426df972ad2812831f42c1b4c86e9583 100644 GIT binary patch delta 6883 zcmai(-HV?`701a#T}|5+@?`F?&g zbLPyMd1l|<-T(IP{u{sDpS0CRx60rC!*}mLkWOm*S#3_~_LTC!yn3MBx3}qgzxwdC zy)EB5d+^(55AM5j_F!}0obfuD)_Su(S^LscU+&fA$@XJUUU~Yflh5sGo;c(4&H3g~ z{?6fMQMbWb<#fw%ulB-yGvNH>BG`W(Zk7t`qaU$FNtR8i_WOzXW>L{kw#mey-=ZYT zCYN71(L9iUGT$tnBs7M0gcc=HYR)fDnuS{n%@XzKv{tU~k(I!zDdpQIFwx6EX`;>= zr3SPpiLyzn{Ii8-vtVA^AwI4siLnXTJ&P3!NRXkoq9n#9U|5n(3X6-OOM_lXj7<6Z z@n#|4UF6Amg=FlzVwO#|!%DJb%Bv4!hF3cd zt3K+pD9KTCevY``f!jo6+8EQY7g$LSrhFHbDQ~QlfO@4y-BmS6!2JM56-BR{ymLpT%S!!zgcglw3;5b(_xRYk{p@xd)ru*u)(Y8 zlkP4l^eaV4j+*n10{4AzG|pC!$H_`?)nru4f8D^ffjA7hE76^j9Ggtu4aoM#rp?j@ zp{Tthv?z(<5~gutz6glo(zdF*6!l6%WXi8=%LIE^U1g-%iWk~KJl`slKf98CFNr&0P`%lU^x zc&How2w-IlY+;*L0ii;^&#tal85I`HaX>yAdv zO2E~G@7C28JN)NhaSA7g#T<$QE6I{6?@kfm4@90VzRQNwG_jH#n-H12dI~A=`N#vt z2ljB)NUQ{0O|~Azuhx!n4I7mfR+43tO||2dR68Djq$OXJgxN%?NO}DA#549W_TQo= zv63vCY)U-ix6m<#8Sxuc3049w&H30C!fa1*Lbk(O4*g0|l4BDpMLAG!bS&Px`+G-f zi;^sxz?OpeZ?KfiZ9BRHR3%w9;n|oc`zdUt0!KZ3(k9%{pd`#Dr(OQRX)cL)(-^*c z5-Z7(DNi;KqY}0q77fU+;)BFI5;B)gEuNM7(8{z!QiPybP|#i zZMZS*X?p@Q4tS{D(}=dHf|yCfE4T0&UuQB*1mEH&f95OABbUTD@%4vvcQ_x{#8=L&o_F%Cr|AJ&$aE)CIiC V*my3s=RY<%^ZzXQjc1$n{{kS0l*#}A delta 6942 zcmai(O{iW+8OO;%qp^(v)7;#9n~(S2rpe8H-LMe0XH z5JQ^=7m6E`7MzU>>qezS8>B>6whAJG1UIetfr<+kMdRJMsrsLJX6C&2Jc8Yn|C9gk zotfu6^PHJ;-`v{u=GLy8zusk)QA+m8+A!d^mn_Uni6? zwl~39LYmr+wD3e48{gR1O*3b`oa3_M9GRpEQ7?4UDSpa|UaB@8DaIijw;t)1;&&Fh zrHw>sE5tx$#iHh^?r`aigPI(Zzt~Z{%$F)4iV#r@v`C^nWU9bE_Zw5 zPxg0dEgF>{F_ z#o1(vD@U=wdzC}&4T*7CaV~}9vx%E6QDU4|er~Q=agI#VSz74Vm%7E2RWHok(;&s* zVv;Tp{5QZUOJ3=IC>&B8CX@70EO)a!rjcO|%Zg)UlD?-gUtI1MQ`vbd?T{r>98RYA zI;CF}RpyFa-Y?aLQ7^nuq5@io;}* zA=T0hyV4=MLpc;R#!@(b_8@lU)dSt4NK`<<)m>5)r^tkDaG-lA-UEtxIw$7ZPEiak zCTz}}pxME~YILqPtjmhCWb&HWuYpYqb-kHqv*K)T;-3z6i}9~mZJwyszz7|$CC@)LVR$N@@th8wy!y= zigCq+sopt)96eQ8Wx^br6=%r=_OZjL!e3z0B8_Xju3N1t&XOt6u&XPn@xqL)RySHz z98IS9;(oM->y`7v%K=8$27Ta2S!wXC@dD0@!(@`GC-^DA>G^1>TQ97N!NnwV z3C}X7`?(40tT;v{B=^s&sNU5_DM`A=8@2R744D;YQ#gM6VI=9m# z@vX%D9$ZSU4!RxPs^T1(Bn}RD)=);_C?(g3;gFM#6-hC;n55AJe-kh^o5nGDsKKJf zFook!1NzF=(QbLeIMgyaa9L?pBd&zwEeG!6v2Ixz9JR2}n%SzxTs7%nX|lJErAlxr z;80x~QdJBtChcjb?pjMJcDfIuEwrjJTTMEY6n}CprP%e-51p{8FR5fC2c%pk5KYcuP2kcudM6JQ9##}X_?&2@OrEYD4 zZ*8zD#uby1@sdCZy7g4|-t|JXD@#>lmQ3*n6I8#2%-z&W;^=c^iXWQsRWVZUr) zJY0E%^P;_7sv2=MJi&HZv6$<{X=c$#hdmmK8ne};9kDNg-7rB~J-mghVr(|We>lwd zowM}P$G$}?s#Rarn9HWPvI^|VtXsx15%KL&R`oxyY|=K~SV#H%e3r^5q`uZ3NmYz3 zCL?9MaRND-Y-AYsX49TaC~6E>lM$ZaX8>c?w(o~SWL0ChnvmeO5|cw&^GBwaj-$@b{c&ee|J)EKTNg)3%$JTC#>NcPa4ZBrahrZ`zgJ-tJqeBpGm z9UPisTsFmL5_bh$nykYcpfvlYI7cR&RO1gtHxl8HkQX%CNiyS( zRLD{-OAqp{*5MYqsf^vf?b6aQI1M?v01~0(<SVg$!Q< zjQwSVYnRHV#xR-UKTo2L-sp4P8iAKpTWwLCOQ!gK0nXT5e@2S-Ee+$5Vq7t4e7`fu z((^Vi)JS~NYYI05x$JA;B#br z)l-hr8Lm|l`e#xcCKJ*-LyiuFGOnF}uDGM2J8_guIL*+wUk+4+3J0m7m`HIrnc{to zM7>@H)gsgrJ(f<2amA!jO<3$SB}uFK$&%t6nY7k4*;|`9D1bv+U3zsYAN?@Is2w=Zuk zi-kUnV@~vn#jv4S44)@h4A(b`T^|N^C~ju#rDHKG1&cYs7Lq;!GN1R`7xEFT*agp4 z;)P=?!OmkV@yeE!3=8o%G{+BqzB_h_&D~qIeS8d$Pa6CuykzU~0e^G(6@GRfvj>T< zs5`IXpV$O(jg@!LUG2{7eBb%A{o{{od)7W7tvh$Vcju%%7tX6E@Z5vf{=Jja|IZSC J_NDIle*qovovQ!< diff --git a/AltOS/doc/altusmetrum.html b/AltOS/doc/altusmetrum.html index 47b4882..f104894 100644 --- a/AltOS/doc/altusmetrum.html +++ b/AltOS/doc/altusmetrum.html @@ -1,10 +1,12 @@ -The Altus Metrum System

The Altus Metrum System

An Owner's Manual for Altus Metrum Rocketry Electronics

Bdale Garbee

Keith Packard

Bob Finch

Anthony Towns

+The Altus Metrum System

The Altus Metrum System

An Owner's Manual for Altus Metrum Rocketry Electronics

Bdale Garbee

Keith Packard

Bob Finch

Anthony Towns

This document is released under the terms of the Creative Commons ShareAlike 3.0 license. -

Revision History
Revision 1.4.124 June 2014
+

Revision History
Revision 1.56 September 2014
+ Major release adding EasyMega support. +
Revision 1.4.120 June 2014
Minor release fixing some installation bugs.
Revision 1.415 June 2014
Major release adding TeleGPS support. @@ -39,7 +41,7 @@ Updated for software version 0.9. Note that 0.9 represents a telemetry format change, meaning both ends of a link (TeleMetrum and TeleDongle) must be updated or communications will fail. -
Revision 0.824 November 2010
Updated for software version 0.8

Acknowledgments

+

Revision 0.824 November 2010
Updated for software version 0.8

Acknowledgments

Thanks to Bob Finch, W9YA, NAR 12965, TRA 12350 for writing “The Mere-Mortals Quick Start/Usage Guide to the Altus Metrum Starter Kit” which formed the basis of the original Getting Started chapter @@ -62,19 +64,21 @@ NAR Keith Packard, KD7SQG
NAR #88757, TRA #12200
      

-

Table of Contents

1. Introduction and Overview
2. Getting Started
3. Handling Precautions
4. Altus Metrum Hardware
1. General Usage Instructions
1.1. Hooking Up Lithium Polymer Batteries
1.2. Hooking Up Pyro Charges
1.3. Hooking Up a Power Switch
1.4. Using a Separate Pyro Battery
1.5. Using a Different Kind of Battery
2. Specifications
3. TeleMetrum
3.1. TeleMetrum Screw Terminals
3.2. Using a Separate Pyro Battery with TeleMetrum
3.3. Using an Active Switch with TeleMetrum
4. TeleMini v1.0
4.1. TeleMini v1.0 Screw Terminals
4.2. Using a Separate Pyro Battery with TeleMini v1.0
4.3. Using an Active Switch with TeleMini v1.0
5. TeleMini v2.0
5.1. TeleMini v2.0 Screw Terminals
5.2. Using a Separate Pyro Battery with TeleMini v2.0
5.3. Using an Active Switch with TeleMini v2.0
6. EasyMini
6.1. EasyMini Screw Terminals
6.2. Using a Separate Pyro Battery with EasyMini
6.3. Using an Active Switch with EasyMini
7. TeleMega
7.1. TeleMega Screw Terminals
7.2. Using a Separate Pyro Battery with TeleMega
7.3. Using Only One Battery With TeleMega
7.4. Using an Active Switch with TeleMega
8. Flight Data Recording
9. Installation
5. System Operation
1. Firmware Modes
2. GPS
3. Controlling An Altimeter Over The Radio Link
4. Ground Testing
5. Radio Link
6. APRS
7. Configurable Parameters
7.1. Radio Frequency
7.2. Callsign
7.3. Telemetry/RDF/APRS Enable
7.4. APRS Interval
7.5. Apogee Delay
7.6. Apogee Lockout
7.7. Main Deployment Altitude
7.8. Maximum Flight Log
7.9. Ignite Mode
7.10. Pad Orientation
7.11. Configurable Pyro Channels
6. AltosUI
1. Monitor Flight
1.1. Launch Pad
1.2. Ascent
1.3. Descent
1.4. Landed
1.5. Table
1.6. Site Map
1.7. Ignitor
2. Save Flight Data
3. Replay Flight
4. Graph Data
4.1. Flight Graph
4.2. Configure Graph
4.3. Flight Statistics
4.4. Map
5. Export Data
5.1. Comma Separated Value Format
5.2. Keyhole Markup Language (for Google Earth)
6. Configure Altimeter
6.1. Main Deploy Altitude
6.2. Apogee Delay
6.3. Apogee Lockoug
6.4. Frequency
6.5. RF Calibration
6.6. Telemetry/RDF/APRS Enable
6.7. APRS Interval
6.8. Callsign
6.9. Maximum Flight Log Size
6.10. Ignitor Firing Mode
6.11. Pad Orientation
6.12. Beeper Frequency
6.13. Configure Pyro Channels
7. Configure AltosUI
7.1. Voice Settings
7.2. Log Directory
7.3. Callsign
7.4. Imperial Units
7.5. Font Size
7.6. Serial Debug
7.7. Manage Frequencies
8. Configure Groundstation
8.1. Frequency
8.2. Radio Calibration
9. Flash Image
10. Fire Igniter
11. Scan Channels
12. Load Maps
13. Monitor Idle
7. AltosDroid
1. Installing AltosDroid
2. Connecting to TeleBT
3. Configuring AltosDroid
4. AltosDroid Flight Monitoring
4.1. Pad
5. Downloading Flight Logs
8. Using Altus Metrum Products
1. Being Legal
2. In the Rocket
3. On the Ground
4. Data Analysis
5. Future Plans
9. Altimeter Installation Recommendations
1. Mounting the Altimeter
2. Dealing with the Antenna
3. Preserving GPS Reception
4. Radio Frequency Interference
5. The Barometric Sensor
6. Ground Testing
10. Updating Device Firmware
1. - Updating TeleMega, TeleMetrum v2 or EasyMini Firmware -
1.1. Recovering From Self-Flashing Failure
2. Pair Programming
3. Updating TeleMetrum v1.x Firmware
4. Updating TeleMini Firmware
5. Updating TeleDongle Firmware
11. Hardware Specifications
1. +

Table of Contents

1. Introduction and Overview
2. Getting Started
3. Handling Precautions
4. Altus Metrum Hardware
1. General Usage Instructions
1.1. Hooking Up Lithium Polymer Batteries
1.2. Hooking Up Pyro Charges
1.3. Hooking Up a Power Switch
1.4. Using a Separate Pyro Battery
1.5. Using a Different Kind of Battery
2. Specifications
3. TeleMetrum
3.1. TeleMetrum Screw Terminals
3.2. Using a Separate Pyro Battery with TeleMetrum
3.3. Using an Active Switch with TeleMetrum
4. TeleMini v1.0
4.1. TeleMini v1.0 Screw Terminals
4.2. Using a Separate Pyro Battery with TeleMini v1.0
4.3. Using an Active Switch with TeleMini v1.0
5. TeleMini v2.0
5.1. TeleMini v2.0 Screw Terminals
5.2. Using a Separate Pyro Battery with TeleMini v2.0
5.3. Using an Active Switch with TeleMini v2.0
6. EasyMini
6.1. EasyMini Screw Terminals
6.2. Using a Separate Pyro Battery with EasyMini
6.3. Using an Active Switch with EasyMini
7. TeleMega
7.1. TeleMega Screw Terminals
7.2. Using a Separate Pyro Battery with TeleMega
7.3. Using Only One Battery With TeleMega
7.4. Using an Active Switch with TeleMega
8. EasyMega
8.1. EasyMega Screw Terminals
8.2. Using a Separate Pyro Battery with EasyMega
8.3. Using Only One Battery With EasyMega
8.4. Using an Active Switch with EasyMega
9. Flight Data Recording
10. Installation
5. System Operation
1. Firmware Modes
2. GPS
3. Controlling An Altimeter Over The Radio Link
4. Ground Testing
5. Radio Link
6. APRS
7. Configurable Parameters
7.1. Radio Frequency
7.2. Callsign
7.3. Telemetry/RDF/APRS Enable
7.4. Telemetry baud rate
7.5. APRS Interval
7.6. APRS SSID
7.7. Apogee Delay
7.8. Apogee Lockout
7.9. Main Deployment Altitude
7.10. Maximum Flight Log
7.11. Ignite Mode
7.12. Pad Orientation
7.13. Configurable Pyro Channels
6. AltosUI
1. Monitor Flight
1.1. Launch Pad
1.2. Ascent
1.3. Descent
1.4. Landed
1.5. Table
1.6. Site Map
1.7. Ignitor
2. Save Flight Data
3. Replay Flight
4. Graph Data
4.1. Flight Graph
4.2. Configure Graph
4.3. Flight Statistics
4.4. Map
5. Export Data
5.1. Comma Separated Value Format
5.2. Keyhole Markup Language (for Google Earth)
6. Configure Altimeter
6.1. Main Deploy Altitude
6.2. Apogee Delay
6.3. Apogee Lockoug
6.4. Frequency
6.5. RF Calibration
6.6. Telemetry/RDF/APRS Enable
6.7. Telemetry baud rate
6.8. APRS Interval
6.9. APRS SSID
6.10. Callsign
6.11. Maximum Flight Log Size
6.12. Ignitor Firing Mode
6.13. Pad Orientation
6.14. Beeper Frequency
6.15. Configure Pyro Channels
7. Configure AltosUI
7.1. Voice Settings
7.2. Log Directory
7.3. Callsign
7.4. Imperial Units
7.5. Font Size
7.6. Serial Debug
7.7. Manage Frequencies
8. Configure Groundstation
8.1. Frequency
8.2. RF Calibration
8.3. Telemetry Rate
9. Flash Image
10. Fire Igniter
11. Scan Channels
12. Load Maps
13. Monitor Idle
7. AltosDroid
1. Installing AltosDroid
2. Connecting to TeleBT
3. Configuring AltosDroid
4. AltosDroid Flight Monitoring
4.1. Pad
5. Downloading Flight Logs
8. Using Altus Metrum Products
1. Being Legal
2. In the Rocket
3. On the Ground
4. Data Analysis
5. Future Plans
9. Altimeter Installation Recommendations
1. Mounting the Altimeter
2. Dealing with the Antenna
3. Preserving GPS Reception
4. Radio Frequency Interference
5. The Barometric Sensor
6. Ground Testing
10. Updating Device Firmware
1. + Updating TeleMega, TeleMetrum v2, EasyMega or EasyMini Firmware +
1.1. Recovering From Self-Flashing Failure
2. Pair Programming
3. Updating TeleMetrum v1.x Firmware
4. Updating TeleMini Firmware
5. Updating TeleDongle Firmware
11. Hardware Specifications
1. TeleMega Specifications -
2. +
2. + EasyMega Specifications +
3. TeleMetrum v2 Specifications -
3. TeleMetrum v1 Specifications
4. +
4. TeleMetrum v1 Specifications
5. TeleMini v2.0 Specifications -
5. +
6. TeleMini v1.0 Specifications -
6. +
7. EasyMini Specifications -
12. FAQ
A. Notes for Older Software
B. Drill Templates
1. TeleMega template
2. TeleMetrum template
3. TeleMini v2/EasyMini template
4. TeleMini v1 template
C. Calibration
1. Radio Frequency
2. TeleMetrum and TeleMega Accelerometers
D. Release Notes

Chapter 1. Introduction and Overview

Welcome to the Altus Metrum community! Our circuits and software reflect our passion for both hobby rocketry and Free Software. We hope their capabilities and performance will delight you in every way, but by @@ -103,6 +107,10 @@ NAR

EasyMini is a dual-deploy altimeter with logging and built-in USB data download. +

+ EasyMega is essentially a TeleMega board with the GPS receiver + and telemetry transmitter removed. It offers the same 6 pyro + channels and integrated gyroscopes for staging/air-start inhibit.

TeleDongle was our first ground station, providing a USB to RF interfaces for communicating with the altimeters. Combined with @@ -121,11 +129,11 @@ NAR More products will be added to the Altus Metrum family over time, and we currently envision that this will be a single, comprehensive manual for the entire product family. -

Chapter 2. Getting Started

+

Chapter 2. Getting Started

The first thing to do after you check the inventory of parts in your “starter kit” is to charge the battery.

- For TeleMetrum and TeleMega, the battery can be charged by plugging it into the + For TeleMetrum, TeleMega and EasyMega, the battery can be charged by plugging it into the corresponding socket of the device and then using the USB cable to plug the flight computer into your computer's USB socket. The on-board circuitry will charge the battery whenever it is plugged @@ -144,7 +152,7 @@ NAR to trickle charge. It can take several hours to fully recharge a deeply discharged battery.

- TeleMetrum v2.0 and TeleMega use a higher power battery charger, + TeleMetrum v2.0, TeleMega and EasyMega use a higher power battery charger, allowing them to charge the battery while running the board at maximum power. When the battery is charging, or when the board is consuming a lot of power, the red LED will be lit. When the @@ -191,7 +199,7 @@ NAR over USB with your laptop computer; it acts exactly like a TeleDongle. Anywhere this manual talks about TeleDongle, you can also read that as 'and TeleBT when connected via USB'. -

Chapter 3. Handling Precautions

+

Chapter 3. Handling Precautions

All Altus Metrum products are sophisticated electronic devices. When handled gently and properly installed in an air-frame, they will deliver impressive results. However, as with all electronic @@ -230,7 +238,7 @@ NAR As with all other rocketry electronics, Altus Metrum altimeters must be protected from exposure to corrosive motor exhaust and ejection charge gasses. -

Chapter 4. Altus Metrum Hardware

1. General Usage Instructions

+

Chapter 4. Altus Metrum Hardware

1. General Usage Instructions

Here are general instructions for hooking up an Altus Metrum flight computer. Instructions specific to each model will be found in the section devoted to that model below. @@ -240,7 +248,7 @@ NAR twist pairs of wires connected to the board. Twist the switch leads, the pyro leads and the battery leads. This reduces interference through a mechanism called common mode rejection. -

1.1. Hooking Up Lithium Polymer Batteries

+

1.1. Hooking Up Lithium Polymer Batteries

All Altus Metrum flight computers have a two pin JST PH series connector to connect up a single-cell Lithium Polymer cell (3.7V nominal). You can purchase matching batteries @@ -254,7 +262,7 @@ NAR this same connector. All that we have found use the opposite polarity, and if you use them that way, you will damage or destroy the flight computer. -

1.2. Hooking Up Pyro Charges

+

1.2. Hooking Up Pyro Charges

Altus Metrum flight computers always have two screws for each pyro charge. This means you shouldn't need to put two wires into a screw terminal or connect leads from pyro @@ -265,13 +273,13 @@ NAR The other lead is connected through the pyro circuit, which is connected to the negative battery terminal when the pyro circuit is fired. -

1.3. Hooking Up a Power Switch

+

1.3. Hooking Up a Power Switch

Altus Metrum flight computers need an external power switch to turn them on. This disconnects both the computer and the pyro charges from the battery, preventing the charges from firing when in the Off position. The switch is in-line with the positive battery terminal. -

1.3.1. Using an External Active Switch Circuit

+

1.3.1. Using an External Active Switch Circuit

You can use an active switch circuit, such as the Featherweight Magnetic Switch, with any Altus Metrum flight computer. These require three connections, one to @@ -280,7 +288,7 @@ NAR hook these up for each flight computer below. The follow the instructions that come with your active switch to connect it up. -

1.4. Using a Separate Pyro Battery

+

1.4. Using a Separate Pyro Battery

As mentioned above in the section on hooking up pyro charges, one lead for each of the pyro charges is connected through the power switch directly to the positive battery @@ -297,18 +305,18 @@ NAR circuit between the negative pyro terminal and the ground terminal, firing the igniter. Specific instructions on how to hook this up will be found in each section below. -

1.5. Using a Different Kind of Battery

+

1.5. Using a Different Kind of Battery

EasyMini and TeleMini v2 are designed to use either a lithium polymer battery or any other battery producing between 4 and 12 volts, such as a rectangular 9V - battery. TeleMega and TeleMetrum are not designed for this, + battery. TeleMega, EasyMega and TeleMetrum are not designed for this, and must only be powered by a lithium polymer battery. Find instructions on how to use other batteries in the EasyMini and TeleMini sections below. -

2. Specifications

+

2. Specifications

Here's the full set of Altus Metrum products, both in production and retired. -

Table 4.1. Altus Metrum Electronics

DeviceBarometerZ-axis accelerometerGPS3D sensorsStorageRF OutputBattery
TeleMetrum v1.0

MP3H6115 10km (33k')

MMA2202 50g

SkyTraq-1MB10mW3.7V
TeleMetrum v1.1

MP3H6115 10km (33k')

MMA2202 50g

SkyTraq-2MB10mW3.7V
TeleMetrum v1.2

MP3H6115 10km (33k')

ADXL78 70g

SkyTraq-2MB10mW3.7V
TeleMetrum v2.0

MS5607 30km (100k')

MMA6555 102g

uBlox Max-7Q-8MB40mW3.7V

TeleMini v1.0

MP3H6115 10km (33k')

---5kB10mW3.7V
TeleMini v2.0

MS5607 30km (100k')

---1MB10mW3.7-12V
EasyMini v1.0

MS5607 30km (100k')

---1MB-3.7-12V
TeleMega v1.0

MS5607 30km (100k')

MMA6555 102g

uBlox Max-7Q

MPU6000 HMC5883

8MB40mW3.7V

Table 4.2. Altus Metrum Boards

DeviceConnectorsScrew TerminalsWidthLengthTube Size
TeleMetrum

+

Table 4.1. Altus Metrum Electronics

DeviceBarometerZ-axis accelerometerGPS3D sensorsStorageRF OutputBattery
TeleMetrum v1.0

MP3H6115 10km (33k')

MMA2202 50g

SkyTraq-1MB10mW3.7V
TeleMetrum v1.1

MP3H6115 10km (33k')

MMA2202 50g

SkyTraq-2MB10mW3.7V
TeleMetrum v1.2

MP3H6115 10km (33k')

ADXL78 70g

SkyTraq-2MB10mW3.7V
TeleMetrum v2.0

MS5607 30km (100k')

MMA6555 102g

uBlox Max-7Q-8MB40mW3.7V

TeleMini v1.0

MP3H6115 10km (33k')

---5kB10mW3.7V
TeleMini v2.0

MS5607 30km (100k')

---1MB10mW3.7-12V
EasyMini v1.0

MS5607 30km (100k')

---1MB-3.7-12V
TeleMega v1.0

MS5607 30km (100k')

MMA6555 102g

uBlox Max-7Q

MPU6000 HMC5883

8MB40mW3.7V
EasyMega v1.0

MS5607 30km (100k')

MMA6555 102g

-

MPU6000 HMC5883

8MB-3.7V

Table 4.2. Altus Metrum Boards

DeviceConnectorsScrew TerminalsWidthLengthTube Size
TeleMetrum

Antenna Debug Companion @@ -352,7 +360,18 @@ NAR Pyro A-D Switch Pyro battery -

1¼ inch (3.18cm)3¼ inch (8.26cm)38mm coupler

3. TeleMetrum

+

1¼ inch (3.18cm)3¼ inch (8.26cm)38mm coupler
EasyMega

+ Debug + Companion + USB + Battery +

+ Apogee pyro + Main pyro + Pyro A-D + Switch + Pyro battery +

1¼ inch (3.18cm)2¼ inch (5.62cm)38mm coupler

3. TeleMetrum

TeleMetrum is a 1 inch by 2¾ inch circuit board. It was designed to fit inside coupler for 29mm air-frame tubing, but using it in a tube that small in diameter may require some creativity in mounting and wiring @@ -363,13 +382,13 @@ NAR the e-matches for apogee and main ejection charges depart from the fin can end of the board, meaning an ideal “simple” avionics bay for TeleMetrum should have at least 10 inches of interior length. -

3.1. TeleMetrum Screw Terminals

+

3.1. TeleMetrum Screw Terminals

TeleMetrum has six screw terminals on the end of the board opposite the telemetry antenna. Two are for the power switch, and two each for the apogee and main igniter circuits. Using the picture above and starting from the top, the terminals are as follows: -

Table 4.3. TeleMetrum Screw Terminals

Terminal #Terminal NameDescription
1Switch OutputSwitch connection to flight computer
2Switch InputSwitch connection to positive battery terminal
3Main +Main pyro channel common connection to battery +
4Main -Main pyro channel connection to pyro circuit
5Apogee +Apogee pyro channel common connection to battery +
6Apogee -Apogee pyro channel connection to pyro circuit

3.2. Using a Separate Pyro Battery with TeleMetrum

+

Table 4.3. TeleMetrum Screw Terminals

Terminal #Terminal NameDescription
1Switch OutputSwitch connection to flight computer
2Switch InputSwitch connection to positive battery terminal
3Main +Main pyro channel common connection to battery +
4Main -Main pyro channel connection to pyro circuit
5Apogee +Apogee pyro channel common connection to battery +
6Apogee -Apogee pyro channel connection to pyro circuit

3.2. Using a Separate Pyro Battery with TeleMetrum

As described above, using an external pyro battery involves connecting the negative battery terminal to the flight computer ground, connecting the positive battery terminal to @@ -388,7 +407,7 @@ NAR The other lead from each pyro charge is then inserted into the appropriate per-pyro channel screw terminal (terminal 4 for the Main charge, terminal 6 for the Apogee charge). -

3.3. Using an Active Switch with TeleMetrum

+

3.3. Using an Active Switch with TeleMetrum

As explained above, an external active switch requires three connections, one to the positive battery terminal, one to the flight computer positive input and one to ground. @@ -397,7 +416,7 @@ NAR 2, the positive flight computer input is on terminal 1. To hook a lead to ground, solder a piece of wire, 24 to 28 gauge stranded, to the GND hole just above terminal 1. -

4. TeleMini v1.0

+

4. TeleMini v1.0

TeleMini v1.0 is ½ inches by 1½ inches. It was designed to fit inside an 18mm air-frame tube, but using it in a tube that small in diameter may require some creativity in @@ -410,7 +429,7 @@ NAR apogee and main ejection charges depart from the other end of the board, meaning an ideal “simple” avionics bay for TeleMini should have at least 9 inches of interior length. -

4.1. TeleMini v1.0 Screw Terminals

+

4.1. TeleMini v1.0 Screw Terminals

TeleMini v1.0 has four screw terminals on the end of the board opposite the telemetry antenna. Two are for the apogee and two are for main igniter circuits. There are also wires @@ -418,7 +437,7 @@ NAR picture above and starting from the top for the terminals and from the left for the power switch wires, the connections are as follows: -

Table 4.4. TeleMini v1.0 Connections

Terminal #Terminal NameDescription
1Apogee -Apogee pyro channel connection to pyro circuit
2Apogee +Apogee pyro channel common connection to battery +
3Main -Main pyro channel connection to pyro circuit
4Main +Main pyro channel common connection to battery +
LeftSwitch OutputSwitch connection to flight computer
RightSwitch InputSwitch connection to positive battery terminal

4.2. Using a Separate Pyro Battery with TeleMini v1.0

+

Table 4.4. TeleMini v1.0 Connections

Terminal #Terminal NameDescription
1Apogee -Apogee pyro channel connection to pyro circuit
2Apogee +Apogee pyro channel common connection to battery +
3Main -Main pyro channel connection to pyro circuit
4Main +Main pyro channel common connection to battery +
LeftSwitch OutputSwitch connection to flight computer
RightSwitch InputSwitch connection to positive battery terminal

4.2. Using a Separate Pyro Battery with TeleMini v1.0

As described above, using an external pyro battery involves connecting the negative battery terminal to the flight computer ground, connecting the positive battery terminal to @@ -439,7 +458,7 @@ NAR The other lead from each pyro charge is then inserted into the appropriate per-pyro channel screw terminal (terminal 3 for the Main charge, terminal 1 for the Apogee charge). -

4.3. Using an Active Switch with TeleMini v1.0

+

4.3. Using an Active Switch with TeleMini v1.0

As explained above, an external active switch requires three connections, one to the positive battery terminal, one to the flight computer positive input and one to ground. Again, @@ -450,21 +469,21 @@ NAR power switch wire, the positive flight computer input is on the left power switch wire. Hook a lead to either of the mounting holes for a ground connection. -

5. TeleMini v2.0

+

5. TeleMini v2.0

TeleMini v2.0 is 0.8 inches by 1½ inches. It adds more on-board data logging memory, a built-in USB connector and screw terminals for the battery and power switch. The larger board fits in a 24mm coupler. There's also a battery connector for a LiPo battery if you want to use one of those. -

5.1. TeleMini v2.0 Screw Terminals

+

5.1. TeleMini v2.0 Screw Terminals

TeleMini v2.0 has two sets of four screw terminals on the end of the board opposite the telemetry antenna. Using the picture above, the top four have connections for the main pyro circuit and an external battery and the bottom four have connections for the apogee pyro circuit and the power switch. Counting from the left, the connections are as follows: -

Table 4.5. TeleMini v2.0 Connections

Terminal #Terminal NameDescription
Top 1Main -Main pyro channel connection to pyro circuit
Top 2Main +Main pyro channel common connection to battery +
Top 3Battery +Positive external battery terminal
Top 4Battery -Negative external battery terminal
Bottom 1Apogee -Apogee pyro channel connection to pyro circuit
Bottom 2Apogee +Apogee pyro channel common connection to - battery +
Bottom 3Switch OutputSwitch connection to flight computer
Bottom 4Switch InputSwitch connection to positive battery terminal

5.2. Using a Separate Pyro Battery with TeleMini v2.0

+

Table 4.5. TeleMini v2.0 Connections

Terminal #Terminal NameDescription
Top 1Main -Main pyro channel connection to pyro circuit
Top 2Main +Main pyro channel common connection to battery +
Top 3Battery +Positive external battery terminal
Top 4Battery -Negative external battery terminal
Bottom 1Apogee -Apogee pyro channel connection to pyro circuit
Bottom 2Apogee +Apogee pyro channel common connection to + battery +
Bottom 3Switch OutputSwitch connection to flight computer
Bottom 4Switch InputSwitch connection to positive battery terminal

5.2. Using a Separate Pyro Battery with TeleMini v2.0

As described above, using an external pyro battery involves connecting the negative battery terminal to the flight computer ground, connecting the positive battery terminal to @@ -483,7 +502,7 @@ NAR the appropriate per-pyro channel screw terminal (top terminal 1 for the Main charge, bottom terminal 1 for the Apogee charge). -

5.3. Using an Active Switch with TeleMini v2.0

+

5.3. Using an Active Switch with TeleMini v2.0

As explained above, an external active switch requires three connections, one to the positive battery terminal, one to the flight computer positive input and one to ground. Use @@ -493,20 +512,20 @@ NAR The positive battery terminal is available on bottom terminal 4, the positive flight computer input is on the bottom terminal 3. -

6. EasyMini

+

6. EasyMini

EasyMini is built on a 0.8 inch by 1½ inch circuit board. It's designed to fit in a 24mm coupler tube. The connectors and screw terminals match TeleMini v2.0, so you can easily swap between EasyMini and TeleMini. -

6.1. EasyMini Screw Terminals

+

6.1. EasyMini Screw Terminals

EasyMini has two sets of four screw terminals on the end of the board opposite the telemetry antenna. Using the picture above, the top four have connections for the main pyro circuit and an external battery and the bottom four have connections for the apogee pyro circuit and the power switch. Counting from the left, the connections are as follows: -

Table 4.6. EasyMini Connections

Terminal #Terminal NameDescription
Top 1Main -Main pyro channel connection to pyro circuit
Top 2Main +Main pyro channel common connection to battery +
Top 3Battery +Positive external battery terminal
Top 4Battery -Negative external battery terminal
Bottom 1Apogee -Apogee pyro channel connection to pyro circuit
Bottom 2Apogee +Apogee pyro channel common connection to - battery +
Bottom 3Switch OutputSwitch connection to flight computer
Bottom 4Switch InputSwitch connection to positive battery terminal

6.2. Using a Separate Pyro Battery with EasyMini

+

Table 4.6. EasyMini Connections

Terminal #Terminal NameDescription
Top 1Main -Main pyro channel connection to pyro circuit
Top 2Main +Main pyro channel common connection to battery +
Top 3Battery +Positive external battery terminal
Top 4Battery -Negative external battery terminal
Bottom 1Apogee -Apogee pyro channel connection to pyro circuit
Bottom 2Apogee +Apogee pyro channel common connection to + battery +
Bottom 3Switch OutputSwitch connection to flight computer
Bottom 4Switch InputSwitch connection to positive battery terminal

6.2. Using a Separate Pyro Battery with EasyMini

As described above, using an external pyro battery involves connecting the negative battery terminal to the flight computer ground, connecting the positive battery terminal to @@ -525,7 +544,7 @@ NAR the appropriate per-pyro channel screw terminal (top terminal 1 for the Main charge, bottom terminal 1 for the Apogee charge). -

6.3. Using an Active Switch with EasyMini

+

6.3. Using an Active Switch with EasyMini

As explained above, an external active switch requires three connections, one to the positive battery terminal, one to the flight computer positive input and one to ground. Use @@ -535,19 +554,19 @@ NAR The positive battery terminal is available on bottom terminal 4, the positive flight computer input is on the bottom terminal 3. -

7. TeleMega

+

7. TeleMega

TeleMega is a 1¼ inch by 3¼ inch circuit board. It was designed to easily fit in a 38mm coupler. Like TeleMetrum, TeleMega has an accelerometer and so it must be mounted so that the board is aligned with the flight axis. It can be mounted either antenna up or down. -

7.1. TeleMega Screw Terminals

+

7.1. TeleMega Screw Terminals

TeleMega has two sets of nine screw terminals on the end of the board opposite the telemetry antenna. They are as follows: -

Table 4.7. TeleMega Screw Terminals

Terminal #Terminal NameDescription
Top 1Switch InputSwitch connection to positive battery terminal
Top 2Switch OutputSwitch connection to flight computer
Top 3GNDGround connection for use with external active switch
Top 4Main -Main pyro channel connection to pyro circuit
Top 5Main +Main pyro channel common connection to battery +
Top 6Apogee -Apogee pyro channel connection to pyro circuit
Top 7Apogee +Apogee pyro channel common connection to battery +
Top 8D -D pyro channel connection to pyro circuit
Top 9D +D pyro channel common connection to battery +
Bottom 1GNDGround connection for negative pyro battery terminal
Bottom 2PyroPositive pyro battery terminal
Bottom 3Lipo +

Table 4.7. TeleMega Screw Terminals

Terminal #Terminal NameDescription
Top 1Switch InputSwitch connection to positive battery terminal
Top 2Switch OutputSwitch connection to flight computer
Top 3GNDGround connection for use with external active switch
Top 4Main -Main pyro channel connection to pyro circuit
Top 5Main +Main pyro channel common connection to battery +
Top 6Apogee -Apogee pyro channel connection to pyro circuit
Top 7Apogee +Apogee pyro channel common connection to battery +
Top 8D -D pyro channel connection to pyro circuit
Top 9D +D pyro channel common connection to battery +
Bottom 1GNDGround connection for negative pyro battery terminal
Bottom 2PyroPositive pyro battery terminal
Bottom 3Lipo Power switch output. Use to connect main battery to pyro battery input -
Bottom 4A -A pyro channel connection to pyro circuit
Bottom 5A +A pyro channel common connection to battery +
Bottom 6B -B pyro channel connection to pyro circuit
Bottom 7B +B pyro channel common connection to battery +
Bottom 8C -C pyro channel connection to pyro circuit
Bottom 9C +C pyro channel common connection to battery +

7.2. Using a Separate Pyro Battery with TeleMega

+

Bottom 4A -A pyro channel connection to pyro circuit
Bottom 5A +A pyro channel common connection to battery +
Bottom 6B -B pyro channel connection to pyro circuit
Bottom 7B +B pyro channel common connection to battery +
Bottom 8C -C pyro channel connection to pyro circuit
Bottom 9C +C pyro channel common connection to battery +

7.2. Using a Separate Pyro Battery with TeleMega

TeleMega provides explicit support for an external pyro battery. All that is required is to remove the jumper between the lipo terminal (Bottom 3) and the pyro terminal @@ -555,7 +574,7 @@ NAR (Bottom 1) and the positive pyro battery to the pyro battery input (Bottom 2). You can then use the existing pyro screw terminals to hook up all of the pyro charges. -

7.3. Using Only One Battery With TeleMega

+

7.3. Using Only One Battery With TeleMega

Because TeleMega has built-in support for a separate pyro battery, if you want to fly with just one battery running both the computer and firing the charges, you need to @@ -563,7 +582,7 @@ NAR circuit. TeleMega has two screw terminals for this—hook a wire from the Lipo terminal (Bottom 3) to the Pyro terminal (Bottom 2). -

7.4. Using an Active Switch with TeleMega

+

7.4. Using an Active Switch with TeleMega

As explained above, an external active switch requires three connections, one to the positive battery terminal, one to the flight computer positive input and one to ground. @@ -571,14 +590,50 @@ NAR The positive battery terminal is available on Top terminal 1, the positive flight computer input is on Top terminal 2. Ground is on Top terminal 3. -

8. Flight Data Recording

+

8. EasyMega

+ EasyMega is a 1¼ inch by 2¼ inch circuit board. It was + designed to easily fit in a 38mm coupler. Like TeleMetrum, + EasyMega has an accelerometer and so it must be mounted so that + the board is aligned with the flight axis. It can be mounted + either antenna up or down. +

8.1. EasyMega Screw Terminals

+ EasyMega has two sets of nine screw terminals on the end of + the board opposite the telemetry antenna. They are as follows: +

Table 4.8. EasyMega Screw Terminals

Terminal #Terminal NameDescription
Top 1Switch InputSwitch connection to positive battery terminal
Top 2Switch OutputSwitch connection to flight computer
Top 3GNDGround connection for use with external active switch
Top 4Main -Main pyro channel connection to pyro circuit
Top 5Main +Main pyro channel common connection to battery +
Top 6Apogee -Apogee pyro channel connection to pyro circuit
Top 7Apogee +Apogee pyro channel common connection to battery +
Top 8D -D pyro channel connection to pyro circuit
Top 9D +D pyro channel common connection to battery +
Bottom 1GNDGround connection for negative pyro battery terminal
Bottom 2PyroPositive pyro battery terminal
Bottom 3Lipo + Power switch output. Use to connect main battery to + pyro battery input +
Bottom 4A -A pyro channel connection to pyro circuit
Bottom 5A +A pyro channel common connection to battery +
Bottom 6B -B pyro channel connection to pyro circuit
Bottom 7B +B pyro channel common connection to battery +
Bottom 8C -C pyro channel connection to pyro circuit
Bottom 9C +C pyro channel common connection to battery +

8.2. Using a Separate Pyro Battery with EasyMega

+ EasyMega provides explicit support for an external pyro + battery. All that is required is to remove the jumper + between the lipo terminal (Bottom 3) and the pyro terminal + (Bottom 2). Then hook the negative pyro battery terminal to ground + (Bottom 1) and the positive pyro battery to the pyro battery + input (Bottom 2). You can then use the existing pyro screw + terminals to hook up all of the pyro charges. +

8.3. Using Only One Battery With EasyMega

+ Because EasyMega has built-in support for a separate pyro + battery, if you want to fly with just one battery running + both the computer and firing the charges, you need to + connect the flight computer battery to the pyro + circuit. EasyMega has two screw terminals for this—hook a + wire from the Lipo terminal (Bottom 3) to the Pyro terminal + (Bottom 2). +

8.4. Using an Active Switch with EasyMega

+ As explained above, an external active switch requires three + connections, one to the positive battery terminal, one to + the flight computer positive input and one to ground. +

+ The positive battery terminal is available on Top terminal + 1, the positive flight computer input is on Top terminal + 2. Ground is on Top terminal 3. +

9. Flight Data Recording

Each flight computer logs data at 100 samples per second during ascent and 10 samples per second during descent, except for TeleMini v1.0, which records ascent at 10 samples per second and descent at 1 sample per second. Data are logged to an on-board flash memory part, which can be partitioned into several equal-sized blocks, one for each flight. -

Table 4.8. Data Storage on Altus Metrum altimeters

DeviceBytes per SampleTotal StorageMinutes at Full Rate
TeleMetrum v1.081MB20
TeleMetrum v1.1 v1.282MB40
TeleMetrum v2.0168MB80
TeleMini v1.025kB4
TeleMini v2.0161MB10
EasyMini161MB10
TeleMega328MB40

+

Table 4.9. Data Storage on Altus Metrum altimeters

DeviceBytes per SampleTotal StorageMinutes at Full Rate
TeleMetrum v1.081MB20
TeleMetrum v1.1 v1.282MB40
TeleMetrum v2.0168MB80
TeleMini v1.025kB4
TeleMini v2.0161MB10
EasyMini161MB10
TeleMega328MB40
EasyMega328MB40

The on-board flash is partitioned into separate flight logs, each of a fixed maximum size. Increase the maximum size of each log and you reduce the number of flights that can be @@ -587,7 +642,7 @@ NAR 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 + for storing flight log data. TeleMetrum v2.0, TeleMega and EasyMega store configuration data in a bit of eeprom available within the processor chip, leaving that space available in flash for more flight data. @@ -611,7 +666,7 @@ NAR 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. -

9. Installation

+

10. Installation

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 @@ -658,11 +713,11 @@ NAR 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. -

Chapter 5. System Operation

1. Firmware Modes

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 + TeleMetrum, TeleMega and EasyMega, 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 @@ -689,7 +744,7 @@ NAR 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 5.1. AltOS Modes

Mode NameAbbreviationBeepsDescription
StartupSbattery voltage in decivolts +

Table 5.1. AltOS Modes

Mode NameAbbreviationBeepsDescription
StartupSbattery voltage in decivolts

Calibrating sensors, detecting orientation.

@@ -763,7 +818,7 @@ NAR slower than the “no continuity tone”)

Here's a summary of all of the “pad” and “idle” mode indications. -

Table 5.2. Pad/Idle Indications

NameBeepsDescription
Neitherbrap +

Table 5.2. Pad/Idle Indications

NameBeepsDescription
Neitherbrap

No continuity detected on either apogee or main igniters. @@ -798,7 +853,8 @@ NAR beep. The flight computer will continue to report landed mode and beep out the maximum height until turned off.

- One “neat trick” of particular value when TeleMetrum or TeleMega are used with + One “neat trick” of particular value when TeleMetrum, TeleMega + or EasyMega 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 @@ -830,7 +886,7 @@ NAR 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. -

2. GPS

+

2. GPS

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 @@ -848,7 +904,7 @@ NAR is turned back on, the GPS system should lock very quickly, typically long before igniter installation and return to the flight line are complete. -

3. Controlling An Altimeter Over The Radio Link

+

3. Controlling An Altimeter Over The Radio Link

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 @@ -919,7 +975,7 @@ NAR 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. -

4. Ground Testing

+

4. Ground Testing

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, @@ -935,7 +991,7 @@ NAR 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. -

5. Radio Link

+

5. Radio Link

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 @@ -968,7 +1024,7 @@ NAR 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! -

6. APRS

+

6. APRS

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 @@ -986,17 +1042,25 @@ NAR have an older device that can receive the raw packets but isn't displaying position information, it's possible that this is the cause. +

+ APRS packets include an SSID (Secondary Station Identifier) + field that allows one operator to have multiple + transmitters. AltOS allows you to set this to a single digit + from 0 to 9, allowing you to fly multiple transmitters at the + same time while keeping the identify of each one separate in + the receiver. By default, the SSID is set to the last digit of + the device serial number.

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. -

Table 5.3. Altus Metrum APRS Comments

FieldExampleDescription
1LGPS Status U for unlocked, L for locked
26Number of Satellites in View
3B4.0Altimeter Battery Voltage
4A3.7Apogee Igniter Voltage
5M3.7Main Igniter Voltage

+

Table 5.3. Altus Metrum APRS Comments

FieldExampleDescription
1LGPS Status U for unlocked, L for locked
26Number of Satellites in View
3B4.0Altimeter Battery Voltage
4A3.7Apogee Igniter Voltage
5M3.7Main Igniter Voltage
61286Device Serial Number

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. + apogee and main igniters both at 3.7V from device 1286.

-	  L6 B4.0 A3.7 M3.7
+	  L6 B4.0 A3.7 M3.7 1286
 	

Make sure your primary battery is above 3.8V, any connected @@ -1011,7 +1075,7 @@ NAR that the GPS status character switches from 'L' to 'U'. Before GPS has locked, APRS will transmit zero for latitude, longitude and altitude. -

7. Configurable Parameters

+

7. Configurable Parameters

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 @@ -1019,7 +1083,7 @@ NAR using AltosUI over USB or or radio link via TeleDongle. Read the Configure Altimeter section in the AltosUI chapter below for more information. -

7.1. Radio Frequency

+

7.1. Radio Frequency

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 @@ -1029,24 +1093,36 @@ NAR 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. -

7.2. Callsign

+

7.2. Callsign

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. -

7.3. Telemetry/RDF/APRS Enable

+

7.3. Telemetry/RDF/APRS Enable

You can completely disable the radio while in flight, if necessary. This doesn't disable the packet link in idle mode. -

7.4. APRS Interval

+

7.4. Telemetry baud rate

+ This sets the modulation bit rate for data transmission for + both telemetry and packet link mode. Lower bit + rates will increase range while reducing the amount of data + that can be sent and increasing battery consumption. All + telemetry is done using a rate 1/2 constraint 4 convolution + code, so the actual data transmission rate is 1/2 of the + modulation bit rate specified here. +

7.5. APRS Interval

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. -

7.5. Apogee Delay

+

7.6. APRS SSID

+ This selects the SSID reported in APRS packets. By default, + it is set to the last digit of the serial number, but you + can change this to any value from 0 to 9. +

7.7. Apogee Delay

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 @@ -1062,7 +1138,7 @@ NAR 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. -

7.6. Apogee Lockout

+

7.8. Apogee Lockout

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 @@ -1072,7 +1148,7 @@ NAR 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. -

7.7. Main Deployment Altitude

+

7.9. Main Deployment Altitude

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 @@ -1081,7 +1157,7 @@ NAR deployment elevation for the backup altimeter to be something lower than the primary so that both pyrotechnic charges don't fire simultaneously. -

7.8. Maximum Flight Log

+

7.10. Maximum Flight Log

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 @@ -1093,7 +1169,7 @@ NAR Even though our flight computers (except TeleMini v1.0) can store multiple flights, we strongly recommend downloading and saving flight data after each flight. -

7.9. Ignite Mode

+

7.11. Ignite Mode

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 @@ -1104,8 +1180,8 @@ NAR 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. -

7.10. Pad Orientation

- TeleMetrum and TeleMega measure acceleration along the axis +

7.12. Pad Orientation

+ TeleMetrum, TeleMega and EasyMega 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 @@ -1114,9 +1190,9 @@ NAR 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. -

7.11. Configurable Pyro Channels

+

7.13. Configurable Pyro Channels

In addition to the usual Apogee and Main pyro channels, - TeleMega has four additional channels that can be configured + TeleMega and EasyMega have 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 @@ -1141,7 +1217,7 @@ NAR height above the launch pad should be above or below that value.

  • - Orientation. TeleMega contains a 3-axis gyroscope and + Orientation. TeleMega and EasyMega contain 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 @@ -1214,7 +1290,7 @@ NAR Coast state (depending on how fast it is moving). If the computer detects upwards acceleration again, it will move back to Boost state. -

  • Chapter 6. AltosUI

    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 @@ -1222,7 +1298,7 @@ NAR 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. -

    1. Monitor Flight

    Receive, Record and Display Telemetry Data

    +

    1. Monitor Flight

    Receive, Record and Display Telemetry Data

    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 @@ -1269,7 +1345,7 @@ NAR data relevant to the current state of the flight. You can select other tabs at any time. The final 'table' tab displays all of the raw telemetry values in one place in a spreadsheet-like format. -

    1.1. Launch Pad

    +

    1.1. Launch Pad

    The 'Launch Pad' tab shows information used to decide when the rocket is ready for flight. The first elements include red/green indicators, if any of these is red, you'll want to evaluate @@ -1319,7 +1395,7 @@ NAR The Launchpad tab also shows the computed launch pad position and altitude, averaging many reported positions to improve the accuracy of the fix. -

    1.2. Ascent

    +

    1.2. Ascent

    This tab is shown during Boost, Fast and Coast phases. The information displayed here helps monitor the rocket as it heads towards apogee. @@ -1338,7 +1414,7 @@ NAR Finally, the current igniter voltages are reported as in the Launch Pad tab. This can help diagnose deployment failures caused by wiring which comes loose under high acceleration. -

    1.3. Descent

    +

    1.3. Descent

    Once the rocket has reached apogee and (we hope) activated the apogee charge, attention switches to tracking the rocket on the way back to the ground, and for dual-deploy flights, @@ -1367,7 +1443,7 @@ NAR e-matches are designed to retain continuity even after being fired, and will continue to show as green or return from red to green after firing. -

    1.4. Landed

    +

    1.4. Landed

    Once the rocket is on the ground, attention switches to recovery. While the radio signal is often lost once the rocket is on the ground, the last reported GPS position is @@ -1396,13 +1472,13 @@ NAR To get more detailed information about the flight, you can click on the 'Graph Flight' button which will bring up a graph window for the current flight. -

    1.5. Table

    +

    1.5. Table

    The table view shows all of the data available from the flight computer. Probably the most useful data on this tab is the detailed GPS information, which includes horizontal dilution of precision information, and information about the signal being received from the satellites. -

    1.6. Site Map

    +

    1.6. Site Map

    When the TeleMetrum has a GPS fix, the Site Map tab will map the rocket's position to make it easier for you to locate the rocket, both while it is in the air, and when it has landed. The @@ -1429,14 +1505,14 @@ NAR

    You can pre-load images for your favorite launch sites before you leave home; check out the 'Preload Maps' section below. -

    1.7. Ignitor

    +

    1.7. Ignitor

    TeleMega includes four additional programmable pyro channels. The Ignitor tab shows whether each of them has continuity. If an ignitor has a low resistance, then the voltage measured here will be close to the pyro battery voltage. A value greater than 3.2V is required for a 'GO' status. -

    2. Save Flight Data

    +

    2. Save Flight Data

    The altimeter records flight data to its internal flash memory. TeleMetrum data is recorded at a much higher rate than the telemetry system can handle, and is not subject to radio drop-outs. As @@ -1465,7 +1541,7 @@ NAR The file name for each flight log is computed automatically from the recorded flight date, altimeter serial number and flight number information. -

    3. Replay Flight

    +

    3. Replay Flight

    Select this button and you are prompted to select a flight record file, either a .telem file recording telemetry data or a .eeprom file containing flight data saved from the altimeter @@ -1474,7 +1550,7 @@ NAR Once a flight record is selected, the flight monitor interface is displayed and the flight is re-enacted in real time. Check the Monitor Flight chapter above to learn how this window operates. -

    4. Graph Data

    +

    4. Graph Data

    Select this button and you are prompted to select a flight record file, either a .telem file recording telemetry data or a .eeprom file containing flight data saved from @@ -1486,7 +1562,7 @@ NAR

    Once a flight record is selected, a window with multiple tabs is opened. -

    4.1. Flight Graph

    +

    4.1. Flight Graph

    By default, the graph contains acceleration (blue), velocity (green) and altitude (red).

    @@ -1496,18 +1572,18 @@ NAR control and clicking and dragging allows the graph to be panned. The right mouse button causes a pop-up menu to be displayed, giving you the option save or print the plot. -

    4.2. Configure Graph

    +

    4.2. Configure Graph

    This selects which graph elements to show, and, at the very bottom, lets you switch between metric and imperial units -

    4.3. Flight Statistics

    +

    4.3. Flight Statistics

    Shows overall data computed from the flight. -

    4.4. Map

    +

    4.4. Map

    Shows a satellite image of the flight area overlaid with the path of the flight. The red concentric circles mark the launch pad, the black concentric circles mark the landing location. -

    5. Export Data

    +

    5. Export Data

    This tool takes the raw data files and makes them available for external analysis. When you select this button, you are prompted to select a flight data file, which can be either a .eeprom or .telem. @@ -1516,7 +1592,7 @@ NAR Next, a second dialog appears which is used to select where to write the resulting file. It has a selector to choose between CSV and KML file formats. -

    5.1. Comma Separated Value Format

    +

    5.1. Comma Separated Value Format

    This is a text file containing the data in a form suitable for import into a spreadsheet or other external data analysis tool. The first few lines of the file contain the version and @@ -1530,11 +1606,11 @@ NAR the sensor values are converted to standard units, with the barometric data reported in both pressure, altitude and height above pad units. -

    5.2. Keyhole Markup Language (for Google Earth)

    +

    5.2. Keyhole Markup Language (for Google Earth)

    This is the format used by Google Earth to provide an overlay within that application. With this, you can use Google Earth to see the whole flight path in 3D. -

    6. Configure Altimeter

    +

    6. Configure Altimeter

    Select this button and then select either an altimeter or TeleDongle Device from the list provided. Selecting a TeleDongle device will use the radio link to configure a remote altimeter. @@ -1562,14 +1638,14 @@ NAR lost.

    The rest of the dialog contains the parameters to be configured. -

    6.1. Main Deploy Altitude

    +

    6.1. Main Deploy Altitude

    This sets the altitude (above the recorded pad altitude) at which the 'main' igniter will fire. The drop-down menu shows some common values, but you can edit the text directly and choose whatever you like. If the apogee charge fires below this altitude, then the main charge will fire two seconds after the apogee charge fires. -

    6.2. Apogee Delay

    +

    6.2. Apogee Delay

    When flying redundant electronics, it's often important to ensure that multiple apogee charges don't fire at precisely the same time, as that can over pressurize the apogee deployment @@ -1577,7 +1653,7 @@ NAR Delay parameter tells the flight computer to fire the apogee charge a certain number of seconds after apogee has been detected. -

    6.3. Apogee Lockoug

    +

    6.3. Apogee Lockoug

    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 @@ -1587,13 +1663,13 @@ NAR 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. -

    6.4. Frequency

    +

    6.4. Frequency

    This configures which of the frequencies to use for both telemetry and packet command mode. Note that if you set this value via packet command mode, the TeleDongle frequency will also be automatically reconfigured to match so that communication will continue afterwards. -

    6.5. RF Calibration

    +

    6.5. RF Calibration

    The radios in every Altus Metrum device are calibrated at the factory to ensure that they transmit and receive on the specified frequency. If you need to you can adjust the calibration @@ -1601,11 +1677,19 @@ NAR the value means, read the appendix on calibration and/or the source code for more information. To change a TeleDongle's calibration, you must reprogram the unit completely. -

    6.6. Telemetry/RDF/APRS Enable

    +

    6.6. Telemetry/RDF/APRS Enable

    Enables the radio for transmission during flight. When disabled, the radio will not transmit anything during flight at all. -

    6.7. APRS Interval

    +

    6.7. Telemetry baud rate

    + This sets the modulation bit rate for data transmission for + both telemetry and packet link mode. Lower bit + rates will increase range while reducing the amount of data + that can be sent and increasing battery consumption. All + telemetry is done using a rate 1/2 constraint 4 convolution + code, so the actual data transmission rate is 1/2 of the + modulation bit rate specified here. +

    6.8. APRS Interval

    How often to transmit GPS information via APRS (in seconds). When set to zero, APRS transmission is disabled. This option is available on TeleMetrum v2 and @@ -1613,15 +1697,19 @@ NAR packets. Note that a single APRS packet takes nearly a full second to transmit, so enabling this option will prevent sending any other telemetry during that time. -

    6.8. Callsign

    +

    6.9. APRS SSID

    + Which SSID to report in APRS packets. By default, this is + set to the last digit of the serial number, but can be + configured to any value from 0 to 9. +

    6.10. Callsign

    This sets the call sign included in each telemetry packet. Set this as needed to conform to your local radio regulations. -

    6.9. Maximum Flight Log Size

    +

    6.11. Maximum Flight Log Size

    This sets the space (in kilobytes) allocated for each flight log. The available space will be divided into chunks of this size. A smaller value will allow more flights to be stored, a larger value will record data from longer flights. -

    6.10. Ignitor Firing Mode

    +

    6.12. Ignitor Firing Mode

    This configuration parameter allows the two standard ignitor channels (Apogee and Main) to be used in different configurations. @@ -1640,9 +1728,9 @@ NAR Altitude setting during descent. The 'apogee' channel is fired first, followed after a two second delay by the 'main' channel. -

    6.11. Pad Orientation

    - Because they include accelerometers, TeleMetrum and - TeleMega are sensitive to the orientation of the board. By +

    6.13. Pad Orientation

    + Because they include accelerometers, TeleMetrum, + TeleMega and EasyMega are sensitive to the orientation of the board. By default, they expect the antenna end to point forward. This parameter allows that default to be changed, permitting the board to be mounted with the antenna pointing aft instead. @@ -1654,15 +1742,15 @@ NAR In this mode, the antenna end of the flight computer must point aft, in line with the expected flight path. -

    6.12. Beeper Frequency

    +

    6.14. Beeper Frequency

    The beeper on all Altus Metrum flight computers works best at 4000Hz, however if you have more than one flight computer in a single airframe, having all of them sound at the same frequency can be confusing. This parameter lets you adjust the base beeper frequency value. -

    6.13. Configure Pyro Channels

    +

    6.15. Configure Pyro Channels

    This opens a separate window to configure the additional - pyro channels available on TeleMega. One column is + pyro channels available on TeleMega and EasyMega. One column is presented for each channel. Each row represents a single parameter, if enabled the parameter must meet the specified test for the pyro channel to be fired. See the Pyro Channels @@ -1684,9 +1772,9 @@ NAR configuration along with the rest of the flight computer configuration by pressing the 'Save' button in the main Configure Flight Computer window. -

    7. Configure AltosUI

    +

    7. Configure AltosUI

    This button presents a dialog so that you can configure the AltosUI global settings. -

    7.1. Voice Settings

    +

    7.1. Voice Settings

    AltosUI provides voice announcements during flight so that you can keep your eyes on the sky and still get information about the current flight status. However, sometimes you don't want @@ -1695,7 +1783,7 @@ NAR Plays a short message allowing you to verify that the audio system is working and the volume settings are reasonable -

    7.2. Log Directory

    +

    7.2. Log Directory

    AltosUI logs all telemetry data and saves all TeleMetrum flash data to this directory. This directory is also used as the staring point when selecting data files for display or export. @@ -1703,7 +1791,7 @@ NAR Click on the directory name to bring up a directory choosing dialog, select a new directory and click 'Select Directory' to change where AltosUI reads and writes data files. -

    7.3. Callsign

    +

    7.3. Callsign

    This value is transmitted in each command packet sent from TeleDongle and received from an altimeter. It is not used in telemetry mode, as the callsign configured in the altimeter board @@ -1716,40 +1804,40 @@ NAR the callsign configured here must exactly match the callsign configured in the flight computer. This matching is case sensitive. -

    7.4. Imperial Units

    +

    7.4. Imperial Units

    This switches between metric units (meters) and imperial units (feet and miles). This affects the display of values use during flight monitoring, configuration, data graphing and all of the voice announcements. It does not change the units used when exporting to CSV files, those are always produced in metric units. -

    7.5. Font Size

    +

    7.5. Font Size

    Selects the set of fonts used in the flight monitor window. Choose between the small, medium and large sets. -

    7.6. Serial Debug

    +

    7.6. Serial Debug

    This causes all communication with a connected device to be dumped to the console from which AltosUI was started. If you've started it from an icon or menu entry, the output will simply be discarded. This mode can be useful to debug various serial communication issues. -

    7.7. Manage Frequencies

    +

    7.7. Manage Frequencies

    This brings up a dialog where you can configure the set of frequencies shown in the various frequency menus. You can add as many as you like, or even reconfigure the default set. Changing this list does not affect the frequency settings of any devices, it only changes the set of frequencies shown in the menus. -

    8. Configure Groundstation

    - Select this button and then select a TeleDongle Device from the list provided. +

    8. Configure Groundstation

    + Select this button and then select a TeleDongle or TeleBT Device from the list provided.

    The first few lines of the dialog provide information about the connected device, including the product name, software version and hardware serial number. Below that are the individual configuration entries.

    - Note that the TeleDongle itself doesn't save any configuration + Note that TeleDongle and TeleBT don't save any configuration data, the settings here are recorded on the local machine in - the Java preferences database. Moving the TeleDongle to + the Java preferences database. Moving the device to another machine, or using a different user account on the same machine will cause settings made here to have no effect.

    @@ -1766,28 +1854,32 @@ NAR lost.

    The rest of the dialog contains the parameters to be configured. -

    8.1. Frequency

    +

    8.1. Frequency

    This configures the frequency to use for both telemetry and packet command mode. Set this before starting any operation involving packet command mode so that it will use the right frequency. Telemetry monitoring mode also provides a menu to change the frequency, and that menu also sets the same Java preference value used here. -

    8.2. Radio Calibration

    +

    8.2. RF Calibration

    The radios in every Altus Metrum device are calibrated at the factory to ensure that they transmit and receive on the - specified frequency. To change a TeleDongle's calibration, + specified frequency. To change a TeleDongle or TeleBT's calibration, you must reprogram the unit completely, so this entry simply shows the current value and doesn't allow any changes. -

    9. Flash Image

    +

    8.3. Telemetry Rate

    + This lets you match the telemetry and packet link rate from + the transmitter. If they don't match, the device won't + receive any data. +

    9. Flash Image

    This reprograms Altus Metrum devices with new firmware. TeleMetrum v1.x, TeleDongle, TeleMini and TeleBT are all reprogrammed by using another similar unit as a - programming dongle (pair programming). TeleMega, TeleMetrum v2 + programming dongle (pair programming). TeleMega, EasyMega, TeleMetrum v2 and EasyMini are all programmed directly over their USB ports (self programming). Please read the directions for flashing devices in the Updating Device Firmware chapter below. -

    10. Fire Igniter

    +

    10. Fire Igniter

    This activates the igniter circuits in the flight computer to help test recovery systems deployment. Because this command can operate over the Packet Command Link, you can prepare the rocket as @@ -1807,14 +1899,14 @@ NAR you have 10 seconds to press the 'Fire' button or the system will deactivate, at which point you start over again at selecting the desired igniter. -

    11. Scan Channels

    +

    11. Scan Channels

    This listens for telemetry packets on all of the configured frequencies, displaying information about each device it - receives a packet from. You can select which of the three - telemetry formats should be tried; by default, it only listens - for the standard telemetry packets used in v1.0 and later + receives a packet from. You can select which of the baud rates + and telemetry formats should be tried; by default, it only listens + at 38400 baud with the standard telemetry format used in v1.0 and later firmware. -

    12. Load Maps

    +

    12. Load Maps

    Before heading out to a new launch site, you can use this to load satellite images in case you don't have internet connectivity at the site. This loads a fairly large area @@ -1859,7 +1951,7 @@ NAR once, so if you load more than one launch site, you may get some gray areas in the map which indicate that Google is tired of sending data to you. Try again later. -

    13. Monitor Idle

    +

    13. Monitor Idle

    This brings up a dialog similar to the Monitor Flight UI, except it works with the altimeter in “idle” mode by sending query commands to discover the current state rather than @@ -1868,7 +1960,7 @@ NAR callsigns match exactly. If you can receive telemetry, but cannot manage to run Monitor Idle, then it's very likely that your callsigns are different in some way. -

    Chapter 7. AltosDroid

    AltosDroid provides the same flight monitoring capabilities as AltosUI, but runs on Android devices and is designed to connect to a TeleBT receiver over Bluetooth™. AltosDroid monitors @@ -1879,14 +1971,14 @@ NAR This manual will explain how to configure AltosDroid, connect to TeleBT, operate the flight monitoring interface and describe what the displayed data means. -

    1. Installing AltosDroid

    +

    1. Installing AltosDroid

    AltosDroid is available from the Google Play store. To install it on your Android device, open the Google Play Store application and search for “altosdroid”. Make sure you don't have a space between “altos” and “droid” or you probably won't find what you want. That should bring you to the right page from which you can download and install the application. -

    2. Connecting to TeleBT

    +

    2. Connecting to TeleBT

    Press the Android 'Menu' button or soft-key to see the configuration options available. Select the 'Connect a device' option and then the 'Scan for devices' entry at the bottom to @@ -1896,19 +1988,19 @@ NAR Subsequent connections will not require you to enter that code, and your 'paired' device will appear in the list without scanning. -

    3. Configuring AltosDroid

    +

    3. Configuring AltosDroid

    The only configuration option available for AltosDroid is which frequency to listen on. Press the Android 'Menu' button or soft-key and pick the 'Select radio frequency' entry. That brings up a menu of pre-set radio frequencies; pick the one which matches your altimeter. -

    4. AltosDroid Flight Monitoring

    +

    4. AltosDroid Flight Monitoring

    AltosDroid is designed to mimic the AltosUI flight monitoring display, providing separate tabs for each stage of your rocket flight along with a tab containing a map of the local area with icons marking the current location of the altimeter and the Android device. -

    4.1. Pad

    +

    4.1. Pad

    The 'Launch Pad' tab shows information used to decide when the rocket is ready for flight. The first elements include red/green indicators, if any of these is red, you'll want to evaluate @@ -1956,26 +2048,26 @@ NAR The Launchpad tab also shows the computed launch pad position and altitude, averaging many reported positions to improve the accuracy of the fix. -

    5. Downloading Flight Logs

    +

    5. Downloading Flight Logs

    AltosDroid always saves every bit of telemetry data it receives. To download that to a computer for use with AltosUI, simply remove the SD card from your Android device, or connect your device to your computer's USB port and browse the files on that device. You will find '.telem' files in the TeleMetrum directory that will work with AltosUI directly. -

    Chapter 8. Using Altus Metrum Products

    1. Being Legal

    +

    Chapter 8. Using Altus Metrum Products

    1. Being Legal

    First off, in the US, you need an amateur radio license or other authorization to legally operate the radio transmitters that are part of our products. -

    2. In the Rocket

    +

    2. In the Rocket

    In the rocket itself, you just need a flight computer and a single-cell, 3.7 volt nominal Li-Po rechargeable battery. An 850mAh battery weighs less than a 9V alkaline battery, and will - run a TeleMetrum or TeleMega for hours. + run a TeleMetrum, TeleMega or EasyMega for hours. A 110mAh battery weighs less than a triple A battery and is a good - choice for use with TeleMini. + choice for use with TeleMini or EasyMini.

    - By default, we ship flight computers with a simple wire antenna. + By default, we ship TeleMini, TeleMetrum and TeleMega flight computers with a simple wire antenna. If your electronics bay or the air-frame it resides within is made of carbon fiber, which is opaque to RF signals, you may prefer to install an SMA connector so that you can run a coaxial cable to an @@ -1983,7 +2075,7 @@ NAR GPS antenna is fixed on all current products, so you really want to install the flight computer in a bay made of RF-transparent materials if at all possible. -

    3. On the Ground

    +

    3. On the Ground

    To receive the data stream from the rocket, you need an antenna and short feed-line connected to one of our TeleDongle units. If possible, use an SMA to BNC adapter instead of feedline between the antenna feedpoint and @@ -2020,8 +2112,8 @@ NAR if the rocket is hiding in sage brush or a tree, or if the last GPS position doesn't get you close enough because the rocket dropped into a canyon, or the wind is blowing it across a dry lake bed, or something like that... Keith - currently uses a Yaesu VX-7R, Bdale has a Baofung UV-5R - which isn't as nice, but was a whole lot cheaper. + currently uses a Yaesu FT1D, Bdale has a Yaesu VX-7R, which + is a nicer radio in most ways but doesn't support APRS.

    So, to recap, on the ground the hardware you'll need includes:

    1. @@ -2045,7 +2137,7 @@ NAR TeleMetrum- or TeleMini- equipped rocket when used with a suitable 70cm HT. TeleDongle and an SMA to BNC adapter fit perfectly between the driven element and reflector of Arrow antennas. -

    4. Data Analysis

    +

    4. Data Analysis

    Our software makes it easy to log the data from each flight, both the telemetry received during the flight itself, and the more complete data log recorded in the flash memory on the altimeter @@ -2060,13 +2152,10 @@ NAR Our ultimate goal is to emit a set of files for each flight that can be published as a web page per flight, or just viewed on your local disk with a web browser. -

    5. Future Plans

    - We've designed a simple GPS based radio tracker called TeleGPS. - If all goes well, we hope to introduce this in the first - half of 2014. -

    +

    5. Future Plans

    We have designed and prototyped several “companion boards” that - can attach to the companion connector on TeleMetrum and TeleMega + can attach to the companion connector on TeleMetrum, + TeleMega and EasyMega flight computers to collect more data, provide more pyro channels, and so forth. We do not yet know if or when any of these boards will be produced in enough quantity to sell. If you have specific @@ -2083,14 +2172,14 @@ NAR Watch our web site for more news and information as our family of products evolves! -

    Chapter 9. Altimeter Installation Recommendations

    Building high-power rockets that fly safely is hard enough. Mix in some sophisticated electronics and a bunch of radio energy and some creativity and/or compromise may be required. This chapter contains some suggestions about how to install Altus Metrum products into a rocket air-frame, including how to safely and reliably mix a variety of electronics into the same air-frame. -

    1. Mounting the Altimeter

    +

    1. Mounting the Altimeter

    The first consideration is to ensure that the altimeter is securely fastened to the air-frame. For most of our products, we prefer nylon standoffs and nylon screws; they're good to at least 50G @@ -2102,15 +2191,15 @@ NAR screw them through the TeleMini mounting holes, through the balsa and into the underlying material.

    1. - Make sure accelerometer-equipped products like TeleMetrum and - TeleMega are aligned precisely along the axis of + Make sure accelerometer-equipped products like TeleMetrum, + TeleMega and EasyMega are aligned precisely along the axis of acceleration so that the accelerometer can accurately capture data during the flight.

    2. Watch for any metal touching components on the board. Shorting out connections on the bottom of the board can cause the altimeter to fail during flight. -

    2. Dealing with the Antenna

    +

    2. Dealing with the Antenna

    The antenna supplied is just a piece of solid, insulated, wire. If it gets damaged or broken, it can be easily replaced. It should be kept straight and not cut; bending or @@ -2153,7 +2242,7 @@ NAR SMA connector, and then run 50Ω coax from the board to the antenna. Building a remote antenna is beyond the scope of this manual. -

    3. Preserving GPS Reception

    +

    3. Preserving GPS Reception

    The GPS antenna and receiver used in TeleMetrum and TeleMega is highly sensitive and normally have no trouble tracking enough satellites to provide accurate position information for @@ -2172,7 +2261,7 @@ NAR antenna as that's covered with a ground plane. But, keep wires and metal out from above the patch antenna.

    -

    4. Radio Frequency Interference

    +

    4. Radio Frequency Interference

    Any altimeter will generate RFI; the digital circuits use high-frequency clocks that spray radio interference across a wide band. Altus Metrum altimeters generate intentional radio @@ -2210,7 +2299,7 @@ NAR 70cm amateur band, so you should avoid lengths that are a simple ratio of that length; essentially any multiple of ¼ of the wavelength (17.5cm). -

    5. The Barometric Sensor

    +

    5. The Barometric Sensor

    Altusmetrum altimeters measure altitude with a barometric sensor, essentially measuring the amount of air above the rocket to figure out how high it is. A large number of @@ -2228,7 +2317,7 @@ NAR the products of APCP or BP combustion, so make sure the ebay is carefully sealed from any compartment which contains ejection charges or motors. -

    6. Ground Testing

    +

    6. Ground Testing

    The most important aspect of any installation is careful ground testing. Bringing an air-frame up to the LCO table which hasn't been ground tested can lead to delays or ejection @@ -2250,10 +2339,10 @@ NAR interface through a TeleDongle to command each charge to fire. Make sure the charge is sufficient to robustly separate the air-frame and deploy the recovery system. -

    Chapter 10. Updating Device Firmware

    + TeleMega, TeleMetrum v2, EasyMega and EasyMini are all programmed directly over their USB connectors (self programming). TeleMetrum v1, TeleMini and TeleDongle are all programmed by using another device as a programmer (pair programming). It's important to recognize which @@ -2273,10 +2362,10 @@ NAR 1.0.1 or later will work, version 1.2.1 may have improved receiver performance slightly.

    - Self-programmable devices (TeleMega, TeleMetrum v2 and EasyMini) + Self-programmable devices (TeleMega, TeleMetrum v2, EasyMega and EasyMini) are reprogrammed by connecting them to your computer over USB -

    1.  - Updating TeleMega, TeleMetrum v2 or EasyMini Firmware +

    1.  + Updating TeleMega, TeleMetrum v2, EasyMega or EasyMini Firmware

    1. Attach a battery and power switch to the target device. Power up the device. @@ -2302,7 +2391,7 @@ NAR

    2. Verify that the device is working by using the 'Configure Altimeter' item to check over the configuration. -

    1.1. Recovering From Self-Flashing Failure

    +

    1.1. Recovering From Self-Flashing Failure

    If the firmware loading fails, it can leave the device unable to boot. Not to worry, you can force the device to start the boot loader instead, which will let you try to @@ -2319,6 +2408,14 @@ NAR anything as that is connected directly to the battery. Pin 7 carries 3.3V and the board will crash if that is connected to pin 1, but shouldn't damage the board. +

    EasyMega

    + Connect pin 6 and pin 1 of the companion connector. Pin 1 + can be identified by the square pad around it, and then + the pins could sequentially across the board. Be very + careful to not short pin 8 to + anything as that is connected directly to the battery. Pin + 7 carries 3.3V and the board will crash if that is + connected to pin 1, but shouldn't damage the board.

    TeleMetrum v2

    Connect pin 6 and pin 1 of the companion connector. Pin 1 can be identified by the square pad around it, and then @@ -2333,13 +2430,33 @@ NAR by the square pad around it, and then the pins could sequentially across the board, making Pin 6 the one on the other end of the row. -

    2. Pair Programming

    +

    + Once you've located the right pins: +

    1. + Turn the altimeter power off. +

    2. + Connect a battery. +

    3. + Connect the indicated terminals together with a short + piece of wire. Take care not to accidentally connect + anything else. +

    4. + Connect USB +

    5. + Turn the board power on. +

    6. + The board should now be visible over USB as 'AltosFlash' + and be ready to receive firmware. +

    7. + Once the board has been powered up, you can remove the + piece of wire. +

    2. Pair Programming

    The big concept to understand is that you have to use a TeleMega, TeleMetrum or TeleDongle as a programmer to update a pair programmed device. Due to limited memory resources in the cc1111, we don't support programming directly over USB for these devices. -

    3. Updating TeleMetrum v1.x Firmware

    1. +

    3. Updating TeleMetrum v1.x Firmware

    1. Find the 'programming cable' that you got as part of the starter kit, that has a red 8-pin MicroMaTch connector on one end and a red 4-pin MicroMaTch connector on the other end. @@ -2382,7 +2499,7 @@ NAR the version, etc.

    2. If something goes wrong, give it another try. -

    4. Updating TeleMini Firmware

    1. +

    4. Updating TeleMini Firmware

    1. You'll need a special 'programming cable' to reprogram the TeleMini. You can make your own using an 8-pin MicroMaTch connector on one end and a set of four pins on the other. @@ -2425,7 +2542,7 @@ NAR letting it come up in “flight” mode and listening for telemetry.

    2. If something goes wrong, give it another try. -

    5. Updating TeleDongle Firmware

    +

    5. Updating TeleDongle Firmware

    Updating TeleDongle's firmware is just like updating TeleMetrum or TeleMini firmware, but you use either a TeleMetrum or another TeleDongle as the programmer.

    1. @@ -2485,17 +2602,19 @@ NAR slightly to extract the connector. We used a locking connector on TeleMetrum to help ensure that the cabling to companion boards used in a rocket don't ever come loose accidentally in flight. -

    Chapter 11. Hardware Specifications

    Table of Contents

    1. +

    Chapter 11. Hardware Specifications

    1.  +

    1.  TeleMega Specifications

    • Recording altimeter for model rocketry. @@ -2525,7 +2644,33 @@ NAR to fire e-matches.

    • 3.25 x 1.25 inch board designed to fit inside 38mm air-frame coupler tube. -

    2.  +

    2.  + EasyMega Specifications +

    • + Recording altimeter for model rocketry. +

    • + Supports dual deployment and four auxiliary pyro channels + (a total of 6 events). +

    • + Barometric pressure sensor good to 100k feet MSL. +

    • + 1-axis high-g accelerometer for motor characterization, capable of + +/- 102g. +

    • + 9-axis IMU including integrated 3-axis accelerometer, + 3-axis gyroscope and 3-axis magnetometer. +

    • + On-board 8 Megabyte non-volatile memory for flight data storage. +

    • + USB interface for battery charging, configuration, and data recovery. +

    • + Fully integrated support for Li-Po rechargeable batteries. +

    • + Can use either main system Li-Po or optional separate pyro battery + to fire e-matches. +

    • + 1.25 x 1.25 inch board designed to fit inside 38mm air-frame coupler tube. +

    3.  TeleMetrum v2 Specifications

    • Recording altimeter for model rocketry. @@ -2551,7 +2696,7 @@ NAR optional separate pyro battery if needed.

    • 2.75 x 1 inch board designed to fit inside 29mm air-frame coupler tube. -

    3. TeleMetrum v1 Specifications

    • +

    4. TeleMetrum v1 Specifications

    • Recording altimeter for model rocketry.

    • Supports dual deployment (can fire 2 ejection charges). @@ -2575,7 +2720,7 @@ NAR optional separate pyro battery if needed.

    • 2.75 x 1 inch board designed to fit inside 29mm air-frame coupler tube. -

    4.  +

    5.  TeleMini v2.0 Specifications

    • Recording altimeter for model rocketry. @@ -2597,7 +2742,7 @@ NAR optional separate pyro battery if needed.

    • 1.5 x .8 inch board designed to fit inside 24mm air-frame coupler tube. -

    5.  +

    6.  TeleMini v1.0 Specifications

    • Recording altimeter for model rocketry. @@ -2618,7 +2763,7 @@ NAR optional separate pyro battery if needed.

    • 1.5 x .5 inch board designed to fit inside 18mm air-frame coupler tube. -

    6.  +

    7.  EasyMini Specifications

    • Recording altimeter for model rocketry. @@ -2638,7 +2783,7 @@ NAR optional separate pyro battery if needed.

    • 1.5 x .8 inch board designed to fit inside 24mm air-frame coupler tube. -

    Chapter 12. FAQ

    +

    Chapter 12. FAQ

    TeleMetrum seems to shut off when disconnected from the computer. Make sure the battery is adequately charged. Remember the @@ -2683,7 +2828,7 @@ NAR data after physically retrieving your altimeter. Make sure to save the on-board data after each flight; while the TeleMetrum can store multiple flights, you never know when you'll lose the altimeter... -

    Appendix A. Notes for Older Software

    +

    Appendix A. Notes for Older Software

    Before AltosUI was written, using Altus Metrum devices required some finesse with the Linux command line. There was a limited @@ -2860,31 +3005,34 @@ NAR the Log and Device menus. It has a wonderful display of the incoming flight data and I am sure you will enjoy what it has to say to you once you enable the voice output! -

    Appendix B. Drill Templates

    These images, when printed, provide precise templates for the mounting holes in Altus Metrum flight computers -

    1. TeleMega template

    +

    1. TeleMega template

    TeleMega has overall dimensions of 1.250 x 3.250 inches, and the mounting holes are sized for use with 4-40 or M3 screws. -

    2. TeleMetrum template

    +

    2. EasyMega template

    + EasyMega has overall dimensions of 1.250 x 2.250 inches, and + the mounting holes are sized for use with 4-40 or M3 screws. +

    3. TeleMetrum template

    TeleMetrum has overall dimensions of 1.000 x 2.750 inches, and the mounting holes are sized for use with 4-40 or M3 screws. -

    3. TeleMini v2/EasyMini template

    +

    4. TeleMini v2/EasyMini template

    TeleMini v2 and EasyMini have overall dimensions of 0.800 x 1.500 inches, and the mounting holes are sized for use with 4-40 or M3 screws. -

    4. TeleMini v1 template

    +

    5. TeleMini v1 template

    TeleMini has overall dimensions of 0.500 x 1.500 inches, and the mounting holes are sized for use with 2-56 or M2 screws. -

    Appendix C. Calibration

    +

    Appendix C. Calibration

    There are only two calibrations required for TeleMetrum and - TeleMega, and only one for TeleDongle, TeleMini and EasyMini. + TeleMega, and only one for EasyMega, TeleDongle, TeleMini and EasyMini. All boards are shipped from the factory pre-calibrated, but the procedures are documented here in case they are ever needed. Re-calibration is not supported by AltosUI, you must connect to the board with a serial terminal program and interact directly with the on-board command interpreter to effect calibration. -

    1. Radio Frequency

    +

    1. Radio Frequency

    The radio frequency is synthesized from a clock based on the crystal on the board. The actual frequency of this oscillator must be measured to generate a calibration constant. While our @@ -2920,7 +3068,7 @@ NAR radio frequency is reset to the default 434.550 Mhz. If you want to use another frequency, you will have to set that again after calibration is completed. -

    2. TeleMetrum and TeleMega Accelerometers

    +

    2. TeleMetrum, TeleMega and EasyMega Accelerometers

    While barometric sensors are factory-calibrated, accelerometers are not, and so each must be calibrated once installed in a flight computer. Explicitly calibrating the @@ -2943,7 +3091,7 @@ NAR “damaged” if the calibration is poor.

    In the unlikely event an accel cal goes badly, it is possible - that TeleMetrum or TeleMega may always come up in 'pad mode' + that TeleMetrum, TeleMega or EasyMega may always come up in 'pad mode' and as such not be listening to either the USB or radio link. If that happens, there is a special hook in the firmware to force the board back in to 'idle mode' so you can re-do the @@ -2957,7 +3105,7 @@ NAR to the index post on the 4-pin end of the programming cable, and power up the board. It should come up in 'idle mode' (two beeps), allowing a re-cal. -

    Appendix D. Release Notes

    Version 1.41

    +

    Appendix D. Release Notes

    Version 1.4.1

    Version 1.4.1 is a minor release. It fixes install issues on Windows and provides the missing TeleMetrum V2.0 firmware. There aren't any changes to the firmware or host applications at @@ -2988,7 +3136,74 @@ NAR release didn't have this key in the released version of the software, making map downloading fail for most people.

    -

    Version 1.4

    +

    Version 1.5

    + Version 1.5 is a major release. It includes support for our new + EasyMega product, new features and bug fixes in in the flight + software for all our boards and the AltosUI ground station +

    + AltOS New Features +

    • + Add support for EasyMega boards. +

    • + Make the APRS SSID be configurable. This lets you track + different rockets on the same receiver without getting + things mixed up. +

    • + Report extra pyro channel continuity state on EasyMega and + TeleMega via the beeper. This lets you easily verify flight + readiness on these boards after powering up the electronics + on the rail. +

    • + Add lower telemetry data rates (2400 and 9600 bps) to + increase telemetry radio range. This reduces the amount of + data received as well as increasing battery consumption in + the transmitter. +

    • + Change TeleGPS to have only a single log, and append new + data to it rather than using seperate per-flight logs. This + avoids accidentally filling up log storage by turning + TeleGPS on/off several times. +

    +

    + AltOS Fixes +

    • + Increase the maximum range for altitude values from +/-32767m + to +/-2147483647m, allowing the flight computers to function + correctly above the 32km level. +

    • + Continuously test pyro firing conditions during delay stage, + inhibiting the pyro channel if the test fails. This prevents + firing pyro charges where the conditions were good before + the delay, but become bad before the delay expires. +

    • + Allow negative numbers in pyro configuration values. This + lets you specify things like descending speed or + deceleration. +

    +

    + AltosUI and TeleGPS New Features +

    • + Support telemetry baud rate selection. Adds menus to + the flight monitoring and configuration for baud rate + selection. +

    • + Support APRS SSID configuration. +

    • + Integrate with file managers. This provides icons for all of + our file types and associates our application with the files + so that using a file manager to open a AltOS data file + results in launching our application. +

    +

    + AltosUI Fixes +

    • + Make the 'Graph' button on the landed tab work again. +

    • + Make tests for Java on Windows a bit smarter, and also + provide the user with the option to skip installing Java for + cases where we just can't figure out what version is installed. +

    +

    Version 1.4

    Version 1.4 is a major release. It includes support for our new TeleGPS product, new features and bug fixes in in the flight software for all our boards and the AltosUI ground station @@ -3101,7 +3316,7 @@ NAR prevents the apogee charge from firing for a configurable amount of time after boost.

    -

    Version 1.3.2

    +

    Version 1.3.2

    Version 1.3.2 is a minor release. It includes small bug fixes for the TeleMega flight software and AltosUI ground station

    @@ -3129,7 +3344,7 @@ NAR Use letters (A, B, C, D) for alternate pyro channel names instead of numbers (0, 1, 2, 3) in the Fire Igniter dialog.

    -

    Version 1.3.1

    +

    Version 1.3.1

    Version 1.3.1 is a minor release. It improves support for TeleMega, TeleMetrum v2.0, TeleMini v2.0 and EasyMini.

    @@ -3171,7 +3386,7 @@ NAR Google to make sure we stay within their limits so that all of the map tiles download successfully.

    -

    Version 1.3

    +

    Version 1.3

    Version 1.3 is a major release. It adds support for TeleMega, TeleMetrum v2.0, TeleMini v2.0 and EasyMini.

    @@ -3212,7 +3427,7 @@ NAR

  • Save the last log directory and offer that as the default for new downloads

  • -

    Version 1.2.1

    +

    Version 1.2.1

    Version 1.2.1 is a minor release. It adds support for TeleBT and the AltosDroid application, provides several new features in AltosUI and fixes some bugs in the AltOS firmware. @@ -3272,7 +3487,7 @@ NAR a complete summary of the flight without needing to 'replay' the whole thing.

    -

    Version 1.2

    +

    Version 1.2

    Version 1.2 is a major release. It adds support for MicroPeak and the MicroPeak USB adapter.

    @@ -3298,7 +3513,7 @@ NAR Altus Metrum software packages to be installed in the same directory at the same time.

    -

    Version 1.1.1

    +

    Version 1.1.1

    Version 1.1.1 is a bug-fix release. It fixes a couple of bugs in AltosUI and one firmware bug that affects TeleMetrum version 1.0 boards. Thanks to Bob Brown for help diagnosing the Google Earth @@ -3343,7 +3558,7 @@ NAR from the flight computer was missing a check for TeleMini when deciding whether to fetch the analog sensor data.

    -

    Version 1.1

    +

    Version 1.1

    Version 1.1 is a minor release. It provides a few new features in AltosUI and the AltOS firmware and fixes bugs.

    @@ -3415,7 +3630,7 @@ NAR Add Imperial units mode to present data in feet instead of meters.

    -

    Version 1.0.1

    +

    Version 1.0.1

    Version 1.0.1 is a major release, adding support for the TeleMini device and lots of new AltosUI features

    @@ -3495,7 +3710,7 @@ NAR Flight window so you can immediately see the results of a flight.

    -

    Version 0.9.2

    +

    Version 0.9.2

    Version 0.9.2 is an AltosUI bug-fix release, with no firmware changes.

    • Fix plotting problems due to missing file in the Mac OS install image. @@ -3503,7 +3718,7 @@ NAR Always read whole eeprom blocks, mark empty records invalid, display parsing errors to user.

    • Add software version to Configure AltosUI dialog -

    Version 0.9

    +

    Version 0.9

    Version 0.9 adds a few new firmware features and accompanying AltosUI changes, along with new hardware support.

    • @@ -3522,7 +3737,7 @@ NAR provided only 8 bits for the device serial number. This change requires that both ends of the telemetry link be running the 0.9 firmware or they will not communicate. -

    Version 0.8

    +

    Version 0.8

    Version 0.8 offers a major upgrade in the AltosUI interface. Significant new features include:

    • @@ -3562,7 +3777,7 @@ NAR Exports Google Earth flight tracks. Using the Keyhole Markup Language (.kml) file format, this provides a 3D view of your rocket flight through the Google Earth program. -

    Version 0.7.1

    +

    Version 0.7.1

    Version 0.7.1 is the first release containing our new cross-platform Java-based user interface. AltosUI can:

    xL%K44c2S8n+_5NnMOZ_KjDXe7kM$-mWo5ndN@5 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

    j30WPG4LxUpy!WKNkrr7jRba<2u-Skd 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 UXNtIjU3dK(-th3dAG!Yj0F(R-?f?J) diff --git a/AltOS/doc/companion.html b/AltOS/doc/companion.html index c85b78e..cdbe2ac 100644 --- a/AltOS/doc/companion.html +++ b/AltOS/doc/companion.html @@ -1,10 +1,10 @@ -AltOS Companion Port

    AltOS Companion Port

    Protocol Definitions

    Keith Packard

    +AltOS Companion Port

    AltOS Companion Port

    Protocol Definitions

    Keith Packard

    This document is released under the terms of the Creative Commons ShareAlike 3.0 license. -

    Revision History
    Revision 0.113 January 2012
    Initial content

    1. Companion Port

    +

    Revision History
    Revision 0.113 January 2012
    Initial content

    1. Companion Port

    Many Altus Metrum products come with an eight pin Micro MaTch connector, called the Companion Port. This is often used to program devices using a programming cable. However, it can also @@ -25,7 +25,7 @@ provide a matching SPI slave implementation which supplies telemetry information for the radio downlink during flight

    -

    2. Companion SPI Protocol

    +

    2. Companion SPI Protocol

    The flight computer implements a SPI master communications channel over the companion port, and uses this to get information about a connected companion board and then to get @@ -42,11 +42,11 @@

    Because of the limits of the AVR processors used in the first two companion boards, the SPI data rate is set to 187.5kbaud. -

    3. SPI Message Formats

    +

    3. SPI Message Formats

    This section first defines the command message format sent from the flight computer to the companion board, and then the various reply message formats for each type of command message. -

    3.1. Command Message

    Table 1. Companion Command Message

    OffsetData TypeNameDescription
    0uint8_tcommandCommand identifier
    1uint8_tflight_stateCurrent flight computer state
    2uint16_ttickFlight computer clock (100 ticks/second)
    4uint16_tserialFlight computer serial number
    6uint16_tflightFlight number
    8   

    Table 2. Companion Command Identifiers

    ValueNameDescription
    1SETUPSupply the flight computer with companion +

    3.1. Command Message

    Table 1. Companion Command Message

    OffsetData TypeNameDescription
    0uint8_tcommandCommand identifier
    1uint8_tflight_stateCurrent flight computer state
    2uint16_ttickFlight computer clock (100 ticks/second)
    4uint16_tserialFlight computer serial number
    6uint16_tflightFlight number
    8   

    Table 2. Companion Command Identifiers

    ValueNameDescription
    1SETUPSupply the flight computer with companion information
    2FETCHReturn telemetry information
    3NOTIFYTell companion board when flight state changes

    The flight computer will send a SETUP message shortly after @@ -74,7 +74,7 @@ use this to change data collection parameters, disabling data logging until the flight starts and terminating it when the flight ends. -

    3.2. SETUP reply message

    Table 3. SETUP reply contents

    OffsetData TypeNameDescription
    0uint16_tboard_idBoard identifier
    2uint16_tboard_id_inverse~board_id—used to tell if a board is present
    4uint8_tupdate_periodMinimum time (in 100Hz ticks) between FETCH commands
    5uint8_tchannelsNumber of data channels to retrieve in FETCH command
    6   

    +

    3.2. SETUP reply message

    Table 3. SETUP reply contents

    OffsetData TypeNameDescription
    0uint16_tboard_idBoard identifier
    2uint16_tboard_id_inverse~board_id—used to tell if a board is present
    4uint8_tupdate_periodMinimum time (in 100Hz ticks) between FETCH commands
    5uint8_tchannelsNumber of data channels to retrieve in FETCH command
    6   

    The SETUP reply contains enough information to uniquely identify the companion board to the end user as well as for the flight computer to know how many data values to expect in @@ -85,12 +85,12 @@ bit-wise inverse of board_id. Current companion boards use USB product ID as the board_id, but the flight computer does not interpret this data and so it can be any value. -

    3.3. FETCH reply message

    Table 4. FETCH reply contents

    OffsetData TypeNameDescription
    0uint16_tdata00th data item
    2uint16_tdata11st data item
    ...   

    +

    3.3. FETCH reply message

    Table 4. FETCH reply contents

    OffsetData TypeNameDescription
    0uint16_tdata00th data item
    2uint16_tdata11st data item
    ...   

    The FETCH reply contains arbitrary data to be reported over the flight computer telemetry link. The number of 16-bit data items must match the 'channels' value provided in the SETUP reply message. -

    4. History and Motivation

    +

    4. History and Motivation

    To allow cross-programming, the original TeleMetrum and TeleDongle designs needed to include some kind of connector. With that in place, adding the ability to connect diff --git a/AltOS/doc/companion.pdf b/AltOS/doc/companion.pdf index cd7af1b546346ad88e2686e7a671e5630e37e262..c19a0fdd356a5618357fa7f703dd043bfebf29c1 100644 GIT binary patch delta 572 zcmX@JpYhCo#tD}>Ee(wgjSS5U%{Jbd%EN1^YiJx|Xk=w*21J|dc+D75g(e^5t40;s z?8z_SqHAhwZeVU`W}&H|k(p8e=fx`M`z7Y47Ar&}3r}tf*4F{rYhq~x)nEqWp=y8$ zPksp2U}|P!W&*JRC&5TTpj0{bUO*Y<{%EN1>Yh)5)WMpM%YGrJ)xsKP25mjjNLB48K zkcRbIuhaFDr%wj|UF`0FWfaMHB%5uucE~ydD-DG;^IkE(-buXD6=V z2mm1e{__KtK!c1AnuKwZkP(GhgM)!Wp{5^C?FCJJa1vE_61KIrHnDL62s@YL)Mwg*ZYyQ&|OZc`|A=~Vsb7W z&#QQ!$?%(WEkQE?;uf-8GPIqtkY=w9%LJwT9(obYPKc-a-MoDACiCxG^3H`H0|tiZ zI<7W^Z-#3bDn$CL)27n;6SV@Uuj))-RbF2SjNdMHj?aJ|3C23=lMhl+J*`z!=!`vKelGjBDpRq~nk$?&-ZSTv)F#;HnpX%*6 z(-$6w`-193BDSV9RFeZbEjOJ`*4fNkS0)|jQPyQC=?2c%EEh&vjNC(PspDt5iU}Q& zD)?;PJ}v@H_}Tyf%)Ra(G7~po*~OD(#Lwf8>}}t%@nlpCUf-ReIX}HGZNC-7fNh<8im>t1rPnJ%#*|a=qEp zm{IxO>80^-7R?1yUj1pNsCfB}2?YsbnkLq5%a#kr67Lf}Y5()6Y z8@c(j3D9jr(I%_r-i(*WSaowS`*KSz85FE2PIY)tVBrrA5M)lCY&;5rS)Y<9xgKWg z@MXvpkXKFk$%O17Cn+(Czb+&eSJGElWP%OVXTncc@Y^NlSv+v0%NIt&@ogY0u+QhU zU_Fq0nmdKm<^w;?hKx5ITKq_8?xKwbV`CLb+6LLGoWMnOxU8g(_AC})EIk6+Zx=?d zV_$K7i>V(!OZByUA_UHrFrUanbe*%KXXEbXolo4gP45eHexCI#J2}=8qS8TuNFrt; zQIwq2$fm?atokyudH9lU>8W)1-QGAyk8CEm-!NPVpn7ucY;f9ad3ELb`WkHGH^XM0 zSj5!PB1GMo>R@(B#L+%s-(J}Ko@%a;#ZPyfM+0%oI zP&iE|FX!876o|D|*9QCdU3~U%kwe2{9}2prdWn5qP&3Ah(TtWdJYIZGsPuqA=G8KB z)9~JzLT@vfO0kk{opE{F>Sj`sL3HWlMFos4wuah@2j7-YRf37u3c3WYqL@{j<4{XJ zV?=6MH&YZ>YcI#-PIgWivHl``PLgSpTxvSTIABd7%RqO!@#v-SScnA9OzMUFj5}a8 zBy+cv)BpO^g%T{IamJd4bN(pN`rOUkp>1AX0@_wMyG;o2ej5*e4u z!dza0#t+DEFE(?8`IT{$EJV82uly?51)q9_0vDHd$p$0e6nJOhX1Zq=9YO^e2jZ{c zjS3T!D3lcQifhQH@Cc-a&;4fnHtU|^U*GNv2K0(M=i(iT5K^2Xl4^+gDu?ZQPt5lH z*c4C+LkSXw`B%Y9z(Vn;O?s<7LX2OrA{p$Q_;_?+628^Z7!%EEWZ^CCpTR7VH!w{x zpj?WL7N51CvqETaFLMk?65ADs)(KBZ1UaE-_Flgj_EsM4igqc4zuh*7G$bY4uvE%2NDRB8S}zN( zR$igJbEytX!Phm2W(+39#`f9S>caXjnA=i}aA&<=+wP*qP-rKwA4PR&TMi5$OBdeo(g{HNa1aR;nZ( zy8r;tLUPdKg;uO6XAI`6H#)oS#}szX|{u#KocHJxfg=0wz4& z_S4_rpju7)bw{FN7Df7jQ}6_U>}mOe6*Yse_`__cvv&ecc7(Vx>n0t5DipnXg6x$p1wMDCmWOBN7A;)TmHD4Sd zi}3hdi=v;Wj&ZgSN@j)NuY1E*2bT17RRBPTn9G>QBd+-9Q#F4k7UmaKUT`hv~*s9`Vd(}~m_h9hv_I;>$*09B<;3@T6lCIysidW8#Z-Y<9 z2DTYfxC3|=Q7Y|L9FnUTYZ=nqZkU59loWK6Apm^!tzGbMX;szDLMAya%JNt*uhtgP`BSZU6wD}m>Jk>_xz)un5Y0RztA|IAYe5c$c zvAh?5Zzpl_eyGg83L|Q>WhK~t_Sp%B|DqAXXYiv>ph=IPu1KUR!S!gF?(u{`(xuou z-}!LzwW~*t@^LZ&tMTPi>59=Q6Zw(kMz##iP7mZdI4y zIe;Bel(R; zj)J#8X0i}b!+)(r;RAKP-o&NlLL}`j7cjY$XKdbf9Tp;sH#H>2k}0rf0>@bB@BAB_7{nD?O~l%T_1vBfet3j!JjRlx^TWd?fNRtFrW$ z1ipg-1czmf3;D?(Sozy9)P$3~oSVIhAw=^+RKWp|90`|u(636^KPetgWO*BE8qPC} z`7bt+bwU5ZGQE!IK^d`fvh+!lgqEt22O#L{8kBO4{2(%D2ZJhu+WFIH3dM^vVE+2h z>1QMNa@LYKPs<%3c$!~{`WWgb#Us2o=PEgzYWcX7q4j4sptFa>NQ(Hh#qKTyiV=h; zoqrm)=lxNGZWAvca09;1=5?iSA z#m^!X-lgUo>fvYq+ftL>R7-lfhxcdLWTT44nU2mk}@;Dv#*Sd(T!k>(aDL1&IioKTfA*h zM#dp~0+p4${afcVO9dBNJ|a4N5J**06wu23gb8h)L;h{C$1n6TaqpyWH!Z_zMC~*Q zhn#|9zL(UmSqEFeh@$pHVr~!pFA30i0{9gRrjuE+8+8)aQrv-P<8*`G-or+-FOd>V zag!$E!iI(Ry;3Gd>W?Ot>q-EpA~8|DIB^SHmczU&X*Y0vE-?SGnn?FB-)c(c)pNwr19q96Ce*O6vEo zKd!$h^#BVSWj{4tmFWUx6$0lW2hlv8r)v+0p%!l6Rtps@*Of3CVeotolb()SKfKch&$c2H0W2(*xQKry>{dQ#M&|u|Aem_Wd9;K+*&Ma*3m3248 zDJXr3(UEB2qUtobD}B1}ENe|Ck<_H^=yYCU@e0-`Z&Z?^iuK;apN0_!fi7(Qh!Z-f zUoQm0?@HdXsr=A}B6nNXDlO)akE32&J_y5fHGtLB<5Z8w0;#1!#KnuJ19~+5y12!`D`GdQk<; zg!&gbPng7=1`DxB^$AIR2;au@l7r%ka`AqZWA{E?iaZkbnqO+O>S4rtR-ZnvN|o(N zb^MZmk*e`=)npu?uh4mi<6nT)8~tp8)UJe!Z!OOawQtQgeCzps()FtBY`bci&=@3b zV)ibm9GEwpEXzzvmB;0C+!|U;{Oxrk1)d^lGF9bnoPBpABo>K>;!d6vD4p=r@ow98 zx{vdtcJ-i%m#cd$c^>b`5`N_)M>{|$9BGDgFB&z>e~--@5UwW09A0$QBNA? z!;>{+NIH}AlPt`X{1*U>ABJHsxqG!Ok4onxU;klddjEGkAkb#3kc^5ZDxy;7-4YO! zlw1nl-n(EP!D?P!$DSL&;tH5k9gl$Eq)u*ysxA#$)w^o60jIUS;KZ9c5{LYe0^E^O z!0g?>E?KIfXc5HeVv^e>M?}O=A#4WFL8FX#jMX*q5@M=7JBx_QW7o zAd^+OT=6%|a@5zLlNEvQD(bq4a^AU=EkmE)=f6Bd`W*v247IkDyh3v~$p+@eMF1I6 zOiQ=#@mW;eE}FVb(`|+dx!OH*rC40KLRxyLKG>6S_iOwu2xnhD?#9pWtM8W%Nxk71 z)}3bbD!gmpIiLT)Li)m09iYKg3RUk8x}eoPYp8R$acefNN>Xm^vGvQ9&x4CJkax4D z`9=G$Gw6g>q_>gJ{05KCiq(%Uns8BD*qv>j6GG;CCcR5_+kI(Y=v6Xb55hCLIdL~+ zfe~PkFQb}NG-{MQ?yGJoT73o7p;K8p$l7bUN98PYdBSg*8tX7EBAS-l8q z6j4q!8l?GqvC~})g6)25MJ`HG^+}SnxV#(%vpL@Pz#O!QU_trjnZU&N$!b)ua?ErM z3bDZ_ZXZ&(UB*O-R<=3o;!=C-J+X?*J*F<(bJvi~xS?Q^9+{}^sDj|Bd;;*6gW4ax z|6$jvLSZkgy|ca>M}>yV;RxXuL%^;%d{B;lJh2Y2dgUG;(5$g$S4NFa=qe#f`rXtO=06oe4Eui`vYkj^{r}rQOql`e z|1X0;q0^NQPqj;C%$bw76OBKyHNJ#xNKvy~9!h#>$2&=fbnA7u{gWwnUjQaqyg>E# z(04uhhb9UzLACMhhOYSzq?2E+P8s@N{2_Wf6Z|W`E=4-6=^Z$&PW3N0s=<&`?4S1F z@6YvQ=b;bjf&Ea*ZTc|3@$)63^7$ks4)Oisw}J!`6CpHHhq0br`UF|HUD1lCmM%r13Yeo*Nx zO?5K8x?!|Qh{+(XF4D6Cow9*r=|ly#EFdZ%hu&MVC@m zWNT&6#K4~P%k2wlysUa2>==`8#~|JA{7lJzQR8GG?XW1U7q}uY{hy?;ZV&(f!>Zd+ zyS2YuQz!hlL2Q8jkwaC-;#^ORf?6H~$4ysjACp>hPOq)=M~I&7s^4IMzsqw7d&obe zHc(HH_7ZZVQp5YO%S@!p2vt7(gx9CQajBU9G>G776CWB3U5`-tqvRwX$AB#L4 z2r)>j$TVAM1?^=`$0(4MYL*v7!3^1?7S;o3zB8b&3lWGT`o*Bgsjo41!FQ+8_A@MCp@~<1a$j6t&V-9x;xlv6 z0Rz@ykeY9|2Z`TU0j_n8oaX#No$J~%h3ik9A9?9lPalt^QDf)PE7A}0Ew_u?lDDu( z#nQ@M>N;zM>x~2Ma31G4%LN&Tt@C?qb}_v7on7FPwi5R`rR|_x3W_V3$U9cg3KK8f z$bd~c_i=S}v)+!1*r&uiD%>D{1^=6*a;OcS9bv!YEzkD^nj2h$?K%}Jpzs|| zi4qAEhI6F;1M)D+rRLd1?T?ZrqX&_qIt1?Q_2@a)IaYbk-+2PQGVfm-PLAf=5UvatWfE|Gl z0q?V`S(tN46K>>*NxgQ-cM5JWfbwKVbq5+8%G$0_n@tZnU3C-QXQ>(f7DLWY6~f%- z3{I^!huhZ6We{<3*LRx{j>iTQlR;_`-`;vi9u6(=JyVjnudvZuSzFuiW7za0-nuKUFmJbW-5(-aHjoOZdkt9G0;3*C=vO zmA)7>_e&xe=?IrKcy6;$N+w(WQ|TEzcI>VQGgdpsrWV9q6ALOVe_xkg4McryuIt_L zNxhQh7M8V6Zb31AKsYhjt+teO6(!FYQ$FD`p@|R9tBO{o&9KD$$+cI-(Nge|YSFZ9j6~JAHC6 zKyUy8yAI)c1~DK$Si`di(bvunyL<~IssY5mk6Lh>b1f8Wl44LGVE|TQ^X~)lEg@-% z`Q_ms>5@;k&nAIm7Snu?0QuV1PBS0$(+Z{bP`SnTHAENILFA|g6~XgQbUNH{C7mqR z&tvsarKH;uu|=<6X7i_w0K{m-riC#Kpfy0&c##Or2jzYHEB3K>@t0RKAkk2Zvkhi{ zoe$;1;G|2LO(Z-#YfKsM@LP?s)KKiJ!giZVq%*yHG-jy|L9kO$`;%YFa>w1c9gLQ( z6Y!hSF`sD>79Tj078liijLSz$QMyUWUH4U& z{1*nD&Dn~B&QbE9M1}M-9H-LyX$vLjrcH39hoc zGQK^5CO)IxrhSBNTM5XW_=3IIrkV4opE4#^aj*u zPAj$n?^dK*NWIbH4<6s&q0n=LDiH;L-VzRxV+p0E)YUjEBh?c#{AGIcX$rnp_Ps>0 z=$Ffhce)~V!IIGeX;T~qq|4tqkkqzkbk%7&GofE;SpBGjBKZMAe{Qi4EfWC>;}_V6 zVec+5zqDPXrqb9=`y^#p!y^V+Tkm_?OW!0Ec)lRnrMs|7{gU(Q7u2dU)(GQk5_*NX$;f<%E5p83s#Z>dH<`ik{u-;t<4O-Q0)iE<> zAgiY2*V6CIlo{gN!l;l^UkmH&F?GKEnCkwtQT3y#uOeEuXt;VYwoLR;Boz`bVvZUa zUAfqlzo;<<@bysSf>UU`$xwy@HaFxh2{6KqHsT>KysYh+$~yu(!X0DE|HZGn90Qoi z!fKi!zWhz@(jGON%=p!MS!cb;aoQzcNo{;X)5}V$w2^m8H`v(^m$N{6g2shz|E>hLv)Yy2*`u!1VD;!`yB{ zOL3vvd|G>lJp`NWxK=&c*f&$3Khv^p6IIzuU+olzm2N%HS?iCa3|A_DwK3b2-) zPuPraZn#XhXS~2r|;A?Jg?O{=48U zF{Tizf$Sc}vjw$yoT7t;u*}LQ7WrfV3O)CDNjCZL(s<{>|*s{{5dTjWSHtXmNOQ zW{iOJ#F5!)j>hU`oHVJ~bNSek;z_eynPPknV{6R>#Uug5dv%~exuto7i>+6X_-hGM zXBnMzAs$^lO1p;qG4EG}M~*M)IH`EDEDg@^EeUc8n74B-t)pc}j)EbtH!b6q73z)8 z%-(s2A7P#fR(G9E`&&Jrb3G}3(l?R-~v%Hg1VcJVqbM4kXI(&kMR0emddoc2%D$QjZXrV z*80xx=v!YO7oBUt3I&+-T3>scj&uwZ*B;3HsxhwP z_q66TP(5p@^ZGTe!&$qz-`_Z!V#C+=p)Zi^29M2ZWBiT}i=ZI^>#*5^Z+zj{Sot@( z>O(2#q#gpNfitxmLI{wW19&`i-}o~Rvd(@#4~3A2!1K;LJI}sIj6P8e0qTweP)fo_ zA?|H37hUeSC%t`l8V`RZ@HHc9WO$el2O}ZrSxBg6l@>yHFywSzisC=qD{<$) zEvd>oo_=EGwGObDlWIAx&~JRS@Z+clykSWbAk#1GFn6}`O2jD;nw}!fzXS%RYk##I ziq4nruc3F@EeiNu%89D7dB9v4hbS>*9=YCHNkR<^P`6AUczu?ngaRLDpshQM z?e&N1_Q3fQ*S}(B*^B^pvK}{5LQ738L9dZDud?OH0(Yv^=+V7i3zg<>Yl0AxTI6}A z5GAJ)=my*PE{-OXbFWF<{%*)lA4#;+H7;JccRYEZcy;u8o1r7c;DJE93RYX1WCr2% znA4g&faAP?4<6Rb%#@NhQ>pXT->$St;o#taiMcasnpS7BpvPzY@Cc1yohnEm|o}x5UJt5nW&J8t;xu z?+pzOdJoUx+c}~y1KoS2&qGB+*f{EK-LrGYW3n@c9He8v8p}@VEx~?x(Cf_JBumbO z&32^v+D2cr0`mX3+;Q~d7p5iw9AJeiNv|yq?LD4%me)L}uax#b(&F4~Ut4t8F&D>X zuu>n=G8NEXMZzwr_(dlznu-c_{$Jm)Zp%`k1`~K!^~KY>4JZ@bqkZv`dk?ga0te2L z7^Y^2NSfWvuCfOgaAYoU$>#LgEJ5pOaabBNs9-a^cX{@whu91Gs|20NySg+#jY&0O zb>+GgK=@>>H_V*^q#=>`DsP&?o90F_O<|C3?OtedLDPI?NyG?#w zWoF+0!+~te^g*oKHEj6Df)yTq#bs4)Ojn`hvm!g8VrFopHepkTYU0~-qMWcSLJ%#K zZ&JO0^-IUsn4bXGBM*$|WbX`2tIiD7UwO@e=VydYs7q>TF)E|79owC9f4=+ARt7JJ zw$XEd(_y{q!t~bojZ_0>)8JVj3*uV zBPF@29AqX{FmcveE4C<*{FcMe)GiMyZ)9ER-3+@8>^;HwHTSZ6WVNT$Eq~16F3b3P z88%dcj=z(u+xk^IibSKre(#f=?V_2BQh!rg*{U$Ln_UlhWG-Pv^E6p^i^)yCg~k3Z z!u~PsoK5p$-=-=4F(>W;1YL$OE&iuTK~3k(h4cn*;G6{F4B_R$`1+A@n@y(jpo%gL3tR0)j(j3`pVJgl|(JtoMg_Q5~jIXFiaw zY=;DSAo{HPWy~BF8ft7}GKrPE(x7;Sa7DI${T=jNe#z5#=33?%A%a;9V1$O5kB^Uo zLv3j(HHd`E5%E|LF1P!mi1_ID<9)ky%MM7%T8y+j6P`j9Zo9(jzglCm<|mt5=ejV_ z725*xzcOuw#mU!L9AgpZ3O!m)M@-EGe-(=ejv`_g9i;^(mWGzb=AuXS3xjZ%=~!8D zYIfFy5qH5+M05K9GHZO_p#=*IE7_T36e(%A7ltW@9T7>#@Bg0#T@QPa=$3!EdHtxt zrEz$8Xp+thg7PDM=9E;t)KUUvGTzd^P8akj@DLbk#f2qG26{q1<3JxyjiRi(rY0Vs zxTH7-1omPc9<8-s+WyJ^6;A9z;r2At;?SSj_^?2W3DqG^69Q#rcdyRxIOD_vO~hVV zpOS`6YSbgNxUvTGC(Wrol%NlRobd=0AynEADN`VG3W`J$!@IO@QZG}aXxe1K3S_Zg z5oAxAS8Ndr1zPMmTBO10$IIr!MWPbR@5$$+icMdJC5xv`$wIQ#&${AW@SMPcARnKf zPk%0i*qX-raqZR6Np1QPg6{_?S-rrrOb|mf$m(`mDs%mr7=4#1?USg16r`jl5R z&V*mJ_Ar`PtVZ)?`B~?TDo6T%*_?uK;r7;vuwvQCb?zszn2dNwqx)+qzk(11)A0+M z<2APD;X4iYN!Bp8J4{cv2h~e$*Y4_)7ajlIQsDIFb4EF|H@udy&;>bSK>J&XkdUajHnPwz^^0AbBAaj0#IpK3; zZ*R_5H>aYbE$=LEwkJM9gbXZa`r77ZT)@zfWS&uOEi;Sq>`WTzasIy{ zW{03i05<=J7OER*ujXL;%BWuZ$ZmB)i_=85)l(6tl@Mzd=8pX!)l$0s;s&#j%ghT$ zoJh`a_nLCe5JPNh@i}|gNa^s4Iz?V?U%43Lw)~8bjcCk~tai>yNuH;pjf9cmt#|~@ zIq$Pw6>$>3XL<73NYqfb_@3Sy>+DpQRU%J9bqY9)|*C3kbps zqHMx#SHDjFh_eaK>@>4XV^}uilU8@67PQ@jrIjpF-x__09* z?>_%_(a?&0dB(}c*!XwX{3b!y+%o*dh(C~GrHXjm^f`0_}e(7p>I z6)9_;gNLI_M?g2jF(Q5Uf2@<&J_krw)~{pCai9tAD~7vNtX7WG1Fbe0^d>GWHjbVX zVW^)z!X1^+_LBld_Ap-y5+F#{>h#jqza5B$2(P4rHUg9%+9e}osxUN=a33yl9?=)N zK@Colm#vmpofK<#^TFq1LDwu0$1r9G|2OOd`YbS8u_%Q-&?FVgq?sq-}UufRBi*X)4}Pzt4@ z6WzxtT;b8qpv3qW6l9J#uM4~^QoB9&#U_ySO4RrT5t=rfd@r zdpQl*aLe*+v-Z-BAGlAe-MrZvDl7VXKmp~lH^o>4L3ro561KqCKgK1vYKOLPSoa0u zA^6Kj;Y_pmx`wYQ3|FyMIKpbNOjyp zV)*(M{1W{q-Ep>VERW8feZt~RCI)o74g>?{d+*<9)DD<_^_f{FcnN6Q7fJcC9GP?! zS^8(A)H@;9SiLAH=c}OjH&rrX>v8`xudsBB067kNe7Rx@_N^?;ag_`8(q;<2iwAGs zoP&kj9~h!oC!gn8fMu%QW$kvedh5^H=^rpq5I><1^5e3*;U*1>su9aTYTW7|#gdvB z8>bp#aM-Ma9#OaU{72!+)Fa4yH$^PX>_(}`WMvs&9JjAtel>sUr3qCx$uiv{*>q9@ zef|k(sr?a}+4RRiRN?AqT}p++Jm0C#`(WHLi;wfeRpP@K+8yj`6b`LlhnhV;wz; zIQfcLz)2j$3>Am4LR@dTJ7;2cYH@2!p&&-1p~WsME*5_%u!4+hQx)?O>fG_nl;@7= z6O$38`%EKDFr&a1GneeVx4%z8K~Yv(`p2FOjg3VIfUL^IgoGT9=(&08SkscyVrnYt zOE+E+XgqFQx}7dJsVOP-WPYAP)G*7NAKbrg(Y6s4g#v+wW6!R`rI2(!lCUri2*CbZ z%Kz8gzoh(h;O%6DK(7ZcA5~dZ4-bzIFhsvaG>N3im6U{)8UjkcizWOyW(pb#8ah6i z7`md|;_qvMshH4<4M5CAqTwm-)vE+?m^YCf;q0x_tc%@JLgF!mqbtK^5G z@__p7!YgcTNlu+x9NqSS#bMIz%V)ABBtgpU5UpHR#uT>y45J@ z3ADbz99Cnf04}mJZ?%DJ^8-U`uP2V31Gx-PQR?|)<#kliD+Wd0cQ?)st#3Prn{=nC zIvBw9ruuKWx)re2=lfGizoU$S+uJh%;u8|S z_KTR9m=>3oa7fHaCzoxRpWpGV5d-D|dzeFkQf4;tQ81EI? z-Sv@|x8fM?z9?(sM6Vl5AC1E52*Q9AGJmGxUrko(_&sP+UkI||oIV~Ks`+q>>+}An zJy$wKh^kTJzFiy%D#lIQ*H1$mko}1STf)!j<))1P$^_Yb2VDkdnr;IqB-u~W7ldQ- znN*<17xg+ECHVWs-aiCGFCrRBR_1);g*u>Rra_QTk4w1@=}|smcTw;gK$r3JUG`!P z8*_mfD9s#(KJeF3$mas>f1ynb8T?q_a(X4OmjN#Ts`=+-6Wg*cr_=S=xZ#FvOi?v{hwZA{R31PKsThFBkFf#C`oR{Rn^64I4b?p;4?N^LdZYvFkPVdL-L1 zD1v!}6;@j73hqyCxIu0HA_V|Ay8zb6k(wkCo>Na&Ozdga7Tg@n%v(l2o$2N6DTCTv zTrIYX^cuc@bH8A}WCtlxSGa!kAWu+^CTy5zb?l|oq-rAhayjha8 zw^kOwjzF+V^^t9p@a7RAJ-NT*CZ24bc({mPA^zi^+G+@*($yb3t#s)hzFD~k1oouF ze4m0VQ!kBpB)i6`ske#PF8G-OafQ$K8d(EDl+~QG6T91tBpV8G8K);1$0Q8U0{^Aj zWWlr$`%;ZwCXHEGR<`q-!OJee-FlN3o`WW1BE>^n{wr|%JOP1^@4V=*K87pbE3RpR z#wwoC)beR%x6iV(0GDTAcc%yY;pVlLCRLPLtk1k>lpVs~dv)ZC^eIn`okO7wX8jQy zf!d|K&yye8EV`ltR5Pzmo`!!R)hxzZs#8Fv*%l>SP}*#^wZRa4XG4T;{(NPV&98;) z>!C8vz#acUTlXCXQz$Qte@f-(mZPUd4WH;36QSiN*c$iywK{XZUC205o=yPFTlQz0 z0oVKX^78VQl0bj|t)}&P4cj?)ceTJX_eH#IsAcj5e6lYutN_ln{WTl>EF7|{*Fr1K zj^?YQl6vcfLgFkL1TP0c_w34^!-52(A0q_@vM{_S`^`8to{<@jeyy7%)zg1#Zjdd~ z2Nj=z`dAgV$N9Z*_Za+{QZMUQY!nO*grrAK4&7JV{5fGb6}tqN9LiNyL2w3^Zw}7v z*Yx_uw`sf-xLekcE;wbM%IJ_>?H>|eZ3xzFDqT=YHhw~a0Xl{GA)Dzt@AX=~M4_?s zYn3@XiqV`o!P(gydl#n)iJ{(nOC0-@7$FcET7M*TF^AQ+B?V&<<#w}w4%(B7RHXn) z1j}F!DXC>$znV^ArLlkbup2|}@$NxxJzHAUjiB~=+X0FOnU?R+t~NFU3<84fTeL9| z@8KZ-azmvw`M5Tbg$ zmtS>IQFgp|K3~_L{AOQ|VS&UGxpcq|h0rT2H!@6WJ>yaOl%=pbjylKYE% zWEW-2Gup~*zH9hj!E9JBH8nN54;B8;oyyr5y=aEVOo~4&prE8MJTN2=ir+A!gGrU&R36K^hsI@3g0v+rdI4)w7pP4bTBaiDv$mP6#Yj6{=d1mco+Z#Ab3Rl zSy>5j37MI?eLq2l*BngT;LOZ~@@Y2prUKcYV;&qD92y!sDlY9a9R#5ec|mh=@#Hb> zzbDrDMMbWM#U+K6Ld>|Jqn9vX`{v~EABGhk0o(r?Rv=7Frlh7e{O^_(vz3d41Y9dP zT0sc^?BW4~T<-KCvlV+M8Q~-Hgn7NHeRTF0wrj42QAkFRh(L1EyIBGk5KB)kT3*%^!wsn2J5h%E4ol8+B{X|}me7BExcC+FBMi>BAb!y4M4(Uq zk~{9F;`i@Yxxo0b?-IEQ>uv5jwHdk1C~{W!AulXg+(*e3j!k$XRb;=pG02@)k}$c{ z^O1;LBH260ibc$Rks4V4x-v}Urh2FOb*(;L)@ug4`(P@?o@kZoRf33Z>< zhI_@Mr#XkfC0=Srt9A^pPs~NjEe-Aha|uUmmo8(Q*VfF8%wuqQnP)Gpsms?O_WPCL z4272SG7+t=`|64E@3FCH^sXh-H@{;v;bY2z#yh*kih?P~PZMWlbMM||>N`YC)t+_S zl-(t2JV!=Xs|PZShX?lr>%~0}`jNAOhkW!U3HZreBVxrxjSaKM0hvW}6&eg&;rJCjm1Snp*lp`$OWL-r{GibGvBxed0lTj? zNY(Pb&rCT(g|hU*BRenfFY~J^nbiQCCUFqn?6^!!ZJd~eX#hB=&F5`|(B@s!^6N?J zjq|Y4s`65KdbZ7In(Ck?D;gYfv71XncAXj!@wwe zRY~+~s4?~3gmYljx7gvZ+m)_?H-X@L43zN`s`2R9a|1WGm1QK~`IgEo(ciT@rH?D8 z%VJQWgz3(aga^{eq)!y8;N4rwcHHIbD#6 zGfhT_;A`V1!1O!2h*o0AB@2uB?DVN?NnOyQxWvrFOf(~mmYyEkueNsTAi21F1W|?U zwrY&K%e36_Qj4I!`{IGd9?<=_=2pUZoWrm36-TqjKeTAvGah9vpk?NL3;0`07W^}Z z;pUziccf5^n$IG8-a;60>)G_Mwqt<>LFB%X$#^H^r^1s(}*YMyvZ)?tg)it&4E1M2^;M>w@ zHD|RtJ?eTb6#l%Fn)8X)?&RlTnDUw(wjZOQU+u6n4^f=3LXkl6;F#d5aQ*)bo_neY z)hPthjONbTJu9Z>ic9Z7P2Ixb?KTWZzduFY*uBpo0kYlFe~tLYg3le9 zX^U&-5&wLH7bN{D58{DC-V+hc8hcK5rG9}FRe*=TGOZh3WIm}P z)O|>;851Iz{@1E7S@{Kacj=MhHh}+g#_cR<|7NKRXuk)n=I-D%dAGym>&O4_2>UIx zLj5wE!q;)VgCss5g%7OTtnYyOg0@y^whoRD*{Q@bmgOuL z>;{(Ldn;a*%I9hUl}z@v-w)8b&96J&vQ%m(uoZP)-gj<(br{Y%$K2UR=5T`0g8M@) z(tc+Z^v5s%jjcBkL^_eLw2tu@^aGDhCI~f;2-D@{?^#MCPnG6e9DQT%|&xYgK9XX;fV#h%a>lXCurT* zP4*0OQ`aj6+`gkJ@bUY$d}TZaHmDuy{~pZZ9$@*vN@BFb8TQmjzsQfJKQfvhgVZKH zBe-Ah@^`b+W~4?|LA6re<*N0PxhY&q1+ze)?PIgFzMl2h|FJ9;&zsLN67~Kallise zyvu71PZ#aCWj-ZQkNY?k)uk! z97jsRBF58maZh>2SZ$E)xE<&`wutjiS@A>oa)`gZd8;usxmKyx`@3Gzu@pTS&ZV2^ zAWq`SQLU@`YYN!t)%>#Wi^XI&zLV}*hPTn-VXsB~|3lqd2F3BGZKH#`BoN$!y9Rd> z+#y(k6Ck*|1`Y1c;O_2DaCdiihv294-*@*pE6<+y>#3TWqNbakre~Pnbze3-eM3CN zTIUn4X3Oo3JMP*GfeCXyrAICM z&YwjU7h|L!ccmLbZ?9J6<`RBUVqZD;STQm-&KRaUDzDJogL`@W0i#`V$`@*CYK{{R zFv<@Bx)0u7)W2A^UBtM*n#JCemJe3$_VjVWHI$|wDUuhnkMcpEsz`14Rj_+C@}#(6 zGfzLrrePpoa6}&!)~{euEzAFQX1wqknoDiz*We0Z-dxXMK$?DQuGrec>8o-52AUpn%netHzS4LwA_ebk?lF%RcZDJ0kU>_Uc{8o4+c8ZF%RAH#mD-BjA2usIBH#rqy>x{o*@zsV_ylpJeWeAcyZdTyU2b&|Tsn)nr z+*ujl^-`YDpdX85M9=qbK<7*hhX|0IaS0$SY&W-m6-fQ&D=+CGPsHcWY&eO@m=IDX zlnftTBJ+rdgk<gS?jDx9ZXzNCib^ zgGgtJ{;yb0Izd4lMa4H-KL)huDB4MMF8Sr1U&$ta1HvrDYeH&zdIWIhR7d8Th=_>M zF)=DCDlA8zlHXBKP=K6Y&aSGe{%F1rO|p~pD(_S%L@9_O0s%&kn2)I3?R>_J8^@O@&TjFEiBE$C z9Tpt|^Tt(FT3T7jcv-70Ty&?96-g;7U@g7>AtNs@4rt?Xta2J~?^KA=nKpXZ;3xGn zK|BQoc{|^vr~%9V2LWi|if`Yfq@^d`NyH3kVz{6E6w9vs_U)YEqTflV>$mHc>4&DK z9Xds`&>v&4e?jyKWaz^$M<*;9vmpU2f0TWI)eNnB5ZiQ`e*@5&08WQCDQz8^op}|# ztFu3to?&aiBBopLscAxOKJQ>lwD_{MzU>qda)DI~xI*7DD5Qh4lr~Xe#n(JkI*$4D zXO+aaw0%%8`I_B#H8;b=O?FrhJv?V?E7OjdfY6j?%ZpDi zBGZf+a$#G1!I!+aZm(hu8^8yV{jqd zh7#WD@z)XYaR}ks5~o+{JdPFmJ_F7&Cl;@^Oz?r2tf=e2+QwK%E}NHxl9X}mXD_DnM@}FTmGy0-Q(ho zLeAydi=!S~sNj5L9Y<70rlsdvi8A@13xcD`sd1uy$RV$0&v9Brhtr-eyAMc#uxflu zaLO2+9|Q`wsw|-;T{BF@_+1KxLsz##cQm;?Cb7Zf`(;gC!`RodjVyQRCUF}wbqi%# ze{qow5w8B=HHTg{ntmq@!-Cc!CgyJc_|zf3SFEX;-a?BkZH`Cl=Wg{sdpK2;0Fch$ z*bc63T(y6GpvC;0RcuUBBFiQGuL`%4g^_;bRCJ^3Lob%&qrM$YXg?*l*50uIbH7vn zTrZCfePUyN57K$C(%GYkd~@##qmSNG+~fe=W1{=YJM|F!hJg(F`Q=vB=6|OcWc+G;*3zBD($!KqXdMMtMuI(_Wxs-myJgwWti4-DK}ZDcbZ1mCZ+ zRo8zoR9H9A9+WWKH&^ZB`i(Vw873_mam6u=mW-{;z_)#Fz8^epV3NP(ORw$E&^Dnk z7$u*keo@}UZ@W;iY=o2o+Z~Wj++MnQQM4)$x`uczbzM;DpIbPSW!St=B)nE<)doL# zh~Nfp?@h1Lhy5%k`u)E-PED;U>hkkHmf*fM!B8#^C# zl30!@!w@AWs54UT5KSJTb-C$Ne$>NxB!>1~iBa?(Yn{7eJ;1YX==$eJT&I^o7qt-! z4yQK<$dFkiy_sCD|Mm{f_oV&#u79j`pT*GlW6;mC16E!3 z9KY9Q)HBS1$`h=w%`VQ*cP0iq18)xsX_&ubl6nPH#z2#Cf{dokS0QoczB^e>lB93P zkmm|3Qh_v~5;YRK)sGm|rt^ZKi-b>^MZBu!>^wCI;jUdy%X1h4h0)?Vx^#*B6! zVu^g&}GZB6niCn4SrWq+y%h+0|lcVZ=Ep6n`uP;{5$V~Fz z?`@pQCl7o?@x(i9db|+#Z|lxiCxB0(RE`OItv^HcFKN0sgG)|6bu#cm7CiS@y6iz{ z{xJFDjLxJSj%CKTH-28rpKU66OwnZ`2rQZTI4Ao2RcZ!TPru#+=+XQApy6`%#pXkE za3TBmU_)qc^75={@6%{=*5~VdyV6p;^5frW)Z)qei&L3mc6TJ>nOV9D&cKNXmr+J9UfY0izv-sZQF{;8wKN=6F{jTAC-Blg9B`UHq zw=iRoXr33-_Oo0N`_U>G>6pMZq#kR8N{SD&@Na08~p-q(}^GiD+?VYz5m zBB9z6jmLB{y5FxK4mdC$TVpqB)*_YLrrmv>a=lSxxfd=xK=TmaXQjqO4D){Df$1$J z|8UZiSRU(EWYRk5vRXdYVf6UkN8-*8OkPY(eypiyrl)JvPDxKDzwLV$O@@P$)FO5H z)zm^@Xw+bh>{7Pql@;HPj5i{YUP(mc$C{q*H&S~cs;wXL^Q{+@1 zamY`*DYx9VCC}%vo>eUfeuGx76QCtpG4;KICq!&~d-|q#?1pQZR-W&*OJFSbDm0YA ze5GqD*c9)F*3-FPdokF*vD2K_IQ{ix<+U=u-w-ngbRvqxor1*1CotgL^bd!Nx{k<(e%x4PxQR#`@70jls!^ zp_(TxL2b>$XqXe^N-V7%e)m(3D?RCrWo-L{y9G7xdeoN=bRUv|c8_}~4#lH{qC=0_ zcf`7kCN)aG`cWdCBsO8PM=2%aE!rryI8k()IJai&0=6R6G_F5P!QpJW1jXsqvYJai zZ@DN^w9E4B{0nw?4_|ZHRBGCKqpNh;6T5%2rmcCRNFLh0e}RT?;5i^MZ=#54?iRb! zReeiS>=vi;P70CMtDTl8hvBs-@loeJXTD#;*FiVceh=kgeBi;mVtoqHxWS@e#;+cZ zC9OIW$LoGE`DmrYkNvnekS3m8tC(KHrWNQ$Ke}`;6t!2 zr(oW_i~N}q{*u=TBo2y+SI2tWU>nN;$b)vZR3pqS`td0Q!q&d0cc}LWAQCt6TGbj& zUkZt6LH6}nVT_qWv~&4vX>;~y2GeTmDYBgoW*-pFyP_70kM9W-$`c|76`mg+X_hwg zIX_T;2^g^HB-WP?C_{695O&%Bm4u`^j5|t_taXN=Es~|#d-EP1)KvC@dhP_7hzv5$ z(lRBZMPo(_c#Z-sK|iKxW7s1=3K>TyEXfBvc68RNRy zs_uP0O34J*kw&IU0bBA}$axdfD<2fwt@*|f-X6-W9v+$z{D}ThqsYSq%1KTRj3k!? zB$%p97=$;jZ=gZwevqL3Sxb!AV5~1#tRx<^~9!<;RU!Om=fFVDN+b>x9} zJmMK&Q@Q2yJ(sZI^*9^Cg@EZk*vT?b)tA0sP(+Bg;$XoQEF0~DZeZ+dC-TnWsBJoDPn7F+V@ABSZ1$6K=0u*T;V#G;L#9NU2My zogKrnUf<>0wQF^AawcgPwNb#dgQcQHl;*u2IqU5$Se>yW)o^Y-^+QE@lU{cJ%G0%@PG#fJIf z$AJF8wz~)wuMktx`X>6bGqb=1%S@)V?1k%xvY#VvDT1L~jOuRhp1_1Rdflz@b!p#m zkA0Ob1>C-NQZ)M1D#lOcr;kE{0+2td1`IN}c|5M;O?-raaH^tnZV68P3IV{n9R~9! zd5xpbYBRLu)Wk2fJ~ug@os}lb5u#)c)WB^yIBR|WLyF{cfLE!4wqjY?qNP($z1xkN z#*`_B(b_eVc&pIjse_Vn->1tvqI0fu^77;vuhfyvj#;tqrH222U9ux9y`NB)S`^rn zD}EB+;Fnxl+A_n1F;q4q8s{N=`a!;rSkwyZAvm$o|K3A&3N_*9h#fB%Z2q<=8f$C5 zN{WtmXcEJ_*hSV)Pt+L1&HTp`M^d<9o@Dv=L@AR+J#AtaH`SM`wVU4^-zl4oV-CT4 z^Kc9B{H|*^IB$O!yf&=vt*$gm{U8T4zF29{5eOWf>b46#hT%|%EbfO3~EiKu)zOXx>(PqK)oQ9t!2{+Q51AhtPKyJM_{GSlo|6sMh zegXTrtcpaDb-i|gEirNJI7~cXZ8z)KRlEEarr;f zP}5U8f6d6w9MB&G_8=VWyS#L)*BAhNg}JiXQs;zjd~@<_!b%%Q+ovzd5i%KM508l`N(+lX`sKNb^Kfhcjn``RwswXf}v9AKId>YOLzfJ;eCrR{LM^< z##wSly$o@38|N=?19&EdwexkYByB6FmKmwe|w(pRH@*4pDX;a)Y)N-U7?p2<>xu=}*N(yU?0*lLF(Y(*>xMyc(edF2*D@Ms} z(!4@oZZz`2Hf`rOF^!CNrQ>W170O@?7_Vw@_EP*x)GWI^ZkEUpTaa(#%+y%Vl6h%# zf$Abi;yu1Yt7O%&R83&%y}3bi?T&sF|F@G@mTr#2Anc4?lu8r-3k4Jq1wwAQX8M?T8 zQz?U4dJf5^WtNSpQno{DPY)Q#%cS!tcqnPuY3;^W_s4f*to0rHgk6bN-SK=&?!P4R zRu}kw!C@yY65>*=6Gjm*28{S3EWI7o7JO%VGirRBnVhCuvk{P7s`Ip9SI?%;i8`j< zw5!F&zmXAl*UarEXQ=(;GUX?TB_jUP6;dHKRP%hL@tjK8@p9m z>6B&ZSIG!=nyU0(=W{N8E9IR^j^g&T7!P!3?$3B}_-fpo;fyNSMvT}wJv&%hw(r4f zjZnX8$EzYc;<9UYzJoe60hy0bTR0ljfzq_bnAORK9Q)KP zGpB4Y@f}*r#oL9MFFacFs6dCS*3q8I%E6*emtibxr#Al9WwT*Gxlf+6c7d|mU=3cl zKT<2Rm6RaNNG6@xV6=#0|WXsOlg=8M9}& zgZg(bfQbpWTCR9R^j*&df{nkwzm!z)tev^KZ3zbxQ_aI}4icy^Z}&a9WVE|Ly7_lu z5kGA|U7~ytsHt`dIycKd-XFQRIOXL<_=j2b%I$&eN2?pO8&mSj?WPe)5DTabB-ADo z!4+$>SDxxLvm9U3?cg2f;PwD|6OA-`NuONgz^Sf-b>!k?rMXotT~+4FRMEn5HT(h8 z!0)v(6bHwOd>xx{-7c*ig7xIcv;ha=GEAs^zk?0yk6t}ROp;FGI(Li(x_(ChFgKwG z4j(OPJG6byL7+<)Q;F*X{D?J7)!9@^y)P_eJ}Y#fqr+nvD0s1iYC31|h?qg8x~l3G z;1pj=h^6kQ`|@=ZqfIEsqUH-vK4hq13Qy5N6$gIi48lEmIynvLMixUZ;fKAX5m^Zr zXFb1iV}qnsP@-bB3zBZCE}gqejqQ1+hpQ9ms@BXJdn@e zYFB8XXKkV9c)IP`+!1K~(~njHQg2~+qfsFZ(*CSMYnHM%etNRMQ9vHTsh~&ZxPo5> zP;RuW`a2{WU8z9r4KpE;&7-@*bY^7=7BkwyoDKvWS_}Vy&-ur4cV;ov)>beU2 z`XxUP|Bz(k^_hH870qbnw8y!|eZ$hQ@h?N&5SFSOTKu?uU{(k>H1O2gY{MBLx;0g^ zPhW9=<2!VzdTrF&G=zT;h#uBq%vHt6=1oz`on(!M<(8t2NZo%hISw3w>C+HizGeZ|kLjc+{`FR5Z%>fGgI4r-W{>@ptd2;tp;a%2IGm%-=2OpvvYb-gA=DS;ZjxdF(uWfYf&sNF)_?0U+rX_WcnWBSIlrf@^a&;Vg` zT|=UC91U_>-MMi?8>n?uUK2VY-jd$ae!qYP&8uBaQbc$4a|2@zmJ(^)KF z|6)UV;PFa(Pw43AVq%UW&l)saZ5+1G#f+Gfl9C`YHPirOWMo)UCL(7Tb}iDq#HMfSKghHhu)!Ns{B@ax*i3XaiWYpr8QM5#yEi z`7io(lG7sE(6qp;fV%knuQyL3$Vm!*}K=IUh5p7Il8nF3fOqbAvJp%Yp!8OVrrdXe!13dB$~e-yYbO_DKs#M@)T!9?6~(6002 z0(N}_I((Gn%Brf~rU2eZU%(rA3V0)x3T^4J{&*vi6{s-_aey!h*j@I7gYXZx?frkk zBzu2_Ne)#1gh`~Hb0FHg!vWlEzctite8F>JLi*{UH>fbzAzNq5l(vQD3%<@5bhENk zt-diBDPt4>>vf$Rk`EmSyh{FjI+O41rJ0%k9&OB%g=lDMVxiwUZkg0~TM)yE)Xx!u z&A~9aKU4E@`d*pxm|U_KKlxYJlk}dsKcQLy>p%0eas~yrxS4`u4g;SlAVCtR=`?Pe zQ>RZUUn!Q{3fd}bOM94i0tOvu$YiT(B*VwGBe%U6S&B0EuE~GluAdZ}Hk>Y`O7Ig5 zGo&2kfMqD}H62|xLg28w63X52i7ja4;k%aV)MsNu>r}Oya|yf@1u-0qI4%9{A(?2g z2vSKLImc#Y$;*U#8s3SHm7Qre3hmh*Ub}9noawAy>eMmY9VTgjtc|1g-Zih2>_PD3 z9(N_6m8EIIb)!11z&7u^ND0~`{u&iWC(EL0skujC?ah*ty5u=(g#Fx95`DWqfI5NL zp4_yjaWV%1GC&%-R;B@UJYIboj|zFctMbcw8Hun{*LdFl^ef8l?zLDKCHdP)n`s_k=mJT` zYYE~wZ(mNK+3LtAZUs{n;eU6P&LeBS^8@}#5)%^#s!c6($_om(VmzBjfGd8(GqBPS zhH*>#YB!CdYPV8o{EVNJKDqrFZgde*g=KT&?*wn>X&LFf$p>|?DA{-0L)Wc6SAzIs ztzDh@y+-@As7n9Rug+iI&|Dh>GnZdD!@mv`Co{tx{p3^@^(nq1B}u(g#yz%X06~t= zHpKOVe4z(T{&(}DMk4-jo!zaZ`{X+7ZzqsbsQ5}ZLW_8iKrwbw;xLEZ^`g^#DRXMA zjdSf98v(LKgQl`riT{&&rO+Bf-y=QR!~L&|-=M%wt0$NrS5C_+mGd|*^cTlt&06h^ zRjbA7IBWOiEJxYlxkRf1&0Nbb#&y5ny&hM|GW9lz5%6N*f6I3twz(4*=Hm4SCb3;FDq=FNgoIPfp@17;G-+nxaLt~m(VU%h6`(SX8Vj}6;wWmP~h4KB= z5n6A@;p>d+QD@F}2+hP%duzjDwgmm1IwO7V?1|;o&sS3w=gWg>jAnv%m)4Kl59{#9 z>Xq-1a}4((p2)C%LH<@(KR<;E%)FlY<*(<{kz<`-=vs7XPb(@`*nS}Q+pL}Wg=fsB ziJmqtm#x!|f=cpf(}OE-c*SmVF4(>(_3#eKeZ#bd#NCUvo+I-#N0#nF#vV<+?tTqQ zmf^EoL2P`Byg=M%O-*}N_Qr;NaI|g20;Q3Kwt51W9@Fx*1UGXi2}sPJ)@n%s9&TFr zGkpQ_OnG~H6@zC}!I(N(^HU*2J~H%D%$ASfuQX&W;@{W4m*YWf*d>W zLYaFO{@@gdbwD{UMcIMa?W_=dtD91=BM9Vdjt8OK>4%x7b#IkkTqidrqR5(1`UEGd zTo%~8JN1Q+$kci$C}4@)qZv5$N0r9>$qE2W&C||#`vh*c3n_*f>zdP=qMV@sgV2#G zM5Y%Fy+0H;Zu||fW8PlrK*Y~TNI zwwKCJ^Fc5^N~_;f|28(D^umIWF)Tf>v#!z~+qWkm&h2-+lHaUBfFhZu$WRTJ@9Flm z*y|^-eq*h(3$-t5jrp3PQ4w9OJnrGoQl}WE5Q-sg8ABmQFXK^XgjvSCE}<;8=?nfw zZ_Vc|NpJhP9oNQXc!Z_v)r$nWE#V$FFt*Q0OZGty6T!s!T7sU}B#J&|RtIFYF{(LW z)&pZP);RYcFpel%!lLIaT1JhsE7j@gid`fngU+O-Ft^{8GVIY%Q@cyG)#Mo;$uF;p zG*%b>VE);D!NhuzvMVL|FB*SPI5BtWnT(@QEKzQJzSUvO=n`gxo^I<8-Zxy| z*Q@Z`jx)+tFS~T$YH!^I-7$|JS8hqElfR9T16~I~OaZS*Tr3$Uo-!IrN4ZC)Qg(bn zA+TKTICM7z2od4~u1p?s7`>MrlS@p&NMz(1Y&lUW0*uq$r*V3(H`R5+8Z+PKZurBu z9%z;6u3noRI81k|s6p11IZ1Qm!|fPEG{f-sZ*>PMOG?ezM$^IE-3mZ=mj6n_jrLya z2(cJJ`>_ty@H_2Z)jN`{KrC&6+@1wvf~)>=anO;YCk?k25Qizm5kK}kU6ZVKkbhz8W6pBmIF;4W5tn&scJ!4=2%$@FoAEy2$;!!D)Kq1XHEM|az+%|nJQF(&*->SCgo3To>yJE9r`cd? zyZzrz5tcw?*&ePOLsaVjI4t)sNp$QJ00Ak-#4m%Oez5WJZE`VGtK1*s#K7N-6B`Lt zZ|qNV!lNhO4&3npjW;I|c}+&z!f9CFGhIn1_Z{M6V}Yh1lkeXF7s9{zCjL9{=jl8G z+;#v`^Z&9--X7&okkC6WppSW9S%ri|8!NNX>GXrze zmQz1~gQMcS7s?pU6mba8+rnmvvdjg;n-)yV|5fD!Q0JU&|3aNZ0rNsZ5^DI@Pes6t znOqS=j%)S(Ez%VexcXiESV#Y-iuc{e3&y{u?=6w21~IZWJ_MMizj?UQOps9_1$l43 zBvnxfoQ$?Ns#LWG9^!vp`hu*CHC7PBCF>7NlbVAP7)DZ)-{Rc%k#Sh`W;KrnzHsR` z|MJty!L}j(Wq~I7!jEs?`?c|55iPf_wmh3a+JVktA^n9{w`=r&yb~Bfbdd~}q7&6e zylRZ&jj24X+RihN3H47248y6eMp&R_jcu16My`GrA$i#5^Bvz}s=3aJZvFcY@A4^3 zm<)5G$P=_4Ztq`5VHg~T<%5%oy`f6zT)=mPYTC8o@=t}FEu-o?4c7Z{zs@e8J%aES z-|UzK%{98o7X&l~1O+AWNo%7kDJt4fKHCF8@aWLN;)*Aw(W!9omB7JwM$_p~iED%$2eDdYTeg^p$%w_*Ev$?Gb--L+9KIz{sw#d{H)#hVsH z@Pj|AalyQ0X0KH^$yEAsDRBQ;$;M`4V0wEq%SmdG-zX)q_P&eErc1lwAj(!3M;H`} zsIpp@iH=&}TR^LbTcqP9X!!NXUJo(zOVocwdDFMX9uH7YzR!iyBSSAx=#33# zkbHfGER#t!knD%{CxoweWq93apd5C)6fwdVa$?I8e^lx zqWK&LLXg_Zu-8iP0jI2YB(DA;->+%h{@|9r1gKfY$p&}#EN7aOpTMhfkfw`YIRj6%#>y2Q|fZ~v%qdjAdwXp*&$ zTI%n+e{LnPPWpKni+jvlm+vI_R4RJBs^4&eygjT3M~toL8pzcuI0kJ^aoP*H7$lKE z7`#( zK!Dv1pYAIK#ST_noyDC)+EOPA7ln>hYlqvH+IyJ(#Dy-}!vD6+GTSQKe2Jdz==b|4 zwHeFxgI3p3iNWXP)k5u*((X0yQRtMFK5@@UuFl;PSTioAg|MD*R6_RMjk7yILAYok zJ?VLdyEB$a>D;lcq=`iJ5i7QN1Q@05Z5|*=pk}2>$lVfkkod`kM**Y0L-09;~TXE3#rQfcDvcxPzg1i1UG zW@srYQdu(Sod%WBm4tCkLf1a(Ke{Kdi~*E2kkmCt1lFGwFX+&nu`$IZ zCBO27crEy z>|40X;=p!tl!haly@n~%T1Ep32S`Zi+dGvSSmfuQBlRo&e?S$PylQ1sPY z;dA@9)kmiC=uBRFpUlRv0|g3Ug4^!caRc1fyR0v_M;q1HC3U!?1=49=S9=Y1YDC7Z z21AF)cm}$rX52+^X{0#@RL94G1DSo3r%%cv6NHxL&9(>IX(t60{RtdX@2jU;HNA+5 z-$O&MXGo`ej)5P`X;?c51gbjh8r(^W;V56I6%!8{q#5_24mCS}=d>V3+*Z0qP zDi8;G%d{V?Hp}5y^;ZjKpn%Re&K@hsdMp!3#J`M{i;Zftza2v}ea?3SN1tj9YFvdV z#nxX4v1{Ok73OiyRElx_8zoe8ctu3X) z(OY?;%NmL-<_YPMFJY98wXVVeNuG|h(o3RwPQ#T>-*a7jui-{y1@r7D*{q0XiSzf& z*EGHNWTt(+wxaWnx1AwbQrgdqP9(&9*Pm`58-+Wgl0Rxx*ifgT=h(H5dcaf^T9Iu4 zx~tZl1%HFEMmW7!a-F4rU+7S$Y1o(f-8X{PPEWA>6r0_}YjP)`pC$Ep*7NT(y2u#y zLSZqN!>rrLl@tPvKi&oM+(sMhEnnKIyLWF7e@i`(X1^7l3*Ax{W23kh<@feFY)*YD zwv5mWr$PEi*>n74P0y}BRc5>+wHC@&;lM%MO9EP#_YS*}xqO)?tHRYmVQyN}~7}@?H)UfY{O-!}3i+6?tg2qfgPRZxG zYfq4)A7n1%f+QywGQ?+_pqQqd+)7gcGl1?l)^6uF9k0n%>n_#|&$ldVaU5c!y!vN$ zJ>h_=_qm=^`&vOzq=6t0NCdzv?b}L$y%F6qyU6dh(n8_k)`m&ZPm&#Mh>l?`#3v$o z%}$d8+-JVm=M9>9m>r`S!of6;;-RNf*m9Y17H}hQB;5SSpbA3{8e_+cV(L25EQ5ex z!bd>UAu8pXGt&`KGFn^+IefRppr{>K4F&fP46W(4G_!P59BVoJSQfIy)TJlX?8iii|8K0Nh z0LA^xS-RFW)U3X6gJZ!?;EgACT7s>lKqn<5}IR<#cHCxU~^5f{AKZ4 zdxQTf@uX6D^@tg`so6s6*wH9}DSc8th~CBJ&VD|YLJ_0@%6Q)$8JBrEq`k(!!PwdL z{~FGx1KQO}lRvVdw()+y!I7<6A5GI55oilE11sf#!$^5;MYGo4yJ61_o?C;MKU9+- zG`XX#2(Lwab=Ey2SJkR|{c30N%Tld!TMzcy&p==UZSC`5(NS1p6~B?KtYt8g*J>Ij z-T~Hgiyw+#l6+S7xww0tiA;{BjOKoDBxf$)eR)8r!z$L2!z@drd_L5g+T`vd55kTp zl_RD9sSfsy6^)9qU(m`e4G6S;WW3XA)-!QTn>U+56aNMzC#&(VQ}jFDLF?d~xJBcbU+{ zZ1cL%DhTgajwF}X+~%J@F>mOgjIE%I`RH_pyIkQM3@)-iiif%Uer(;`+#K^bklp}FTDwk3Z zKO;Rz!$6_c(EYm?;MOv4bOpcAZRTR{us2YD~ma*tRd@THGc!6L75KjOcTl1JdV-Nof;CW4yz+{-8m6Zhv0@NuW-#Cx=bNW3U zU2$$^ZdO*;*2N#h;M=!VSX2bW88?s7qQoSkx2?INi35R7T^?x0ghvgcU!NjJA?E%$ zbMU`9+9Jy!R^LX{2)YZj13-k6vpzTsO`mk~AC|TE8#Y`3Hv8jP>mL|VG@>b>E7k=Z zYlz_47gE*#V^~A50s+B?#q{N6P4--(B2#`7d!9Pj$;!zE2#?UAjq&~K<7M+d@?)XC z+Rf*=^^5zr+I+qw=|1Nc6`G7{mm%y+p!CiR1?uvvDvDo!4n^!kl4xri7Z(Ry8*0L9 z!c0dmVeB}mID^VRDMw>(kxYpmpg8w%+sw57paan6;6ndaoXaCVh2XQF@vsSu++!L4 zHgdaTm1Cq+isV?O!t17g(S7?n_4l{m?PqK2-_1<*MA7{K5e`YYme1(p%T;|9&j=+? zs8~vI%EdzSX2PZe-d|(1*;?YHs6%w_gdjvh{jHS+;p_8&^GZF{6a#K4_yGQ~et>{( z!quh-t}_cChBUUq9;%XXx9vyL?^5JdGIpH@woGS%3VGAL1|Zlmu!l_AUW?frD_-wHZ~&im}Ri) z-#S_+KM!a>HBe){9%{zk^q1+C=c;CLxiLNc0ApaUMt{VCEhf@+TS_wU%w{O>z6kcR zEB@w&Hp5w0SBsPP6x8?+RqxBR<%fIiHQA(g%cLK)5Fn@)4;7R-{uGSDxlPnX>%6Ig zWO&FPzjvVJ$ssI_l3I=Of$bKz)cdK$xW$9VfDoqmm4zo)k>iTRbYWoW0eJ&ax_N5S zg}FI~X1*S$mA0Eh*0^#jN^`2~>|a&QAZsaqMj7gPbR6@gL9J@CBoeVtPwQ;20yeH6 zCWK8V*$vBvUar>y5Zu_b^B)4{5A9Hqeb7HY77ZP7#AaN9xe&M=Jt8hgNyq3MJB3G~ zTv_M+nTR#{8&LxYU#6qiY`t>Rxk?(}Q1ttZ-A8(GT3=+b!I~KP*bwn=){v@)ZoXi=7#KWPA{@+xAGN3VVYei1P~~xJiqbhQC_7# zg~HDTyOLkqlYiEJ>F8XwJ2=9|hwJR+xh;lSP5w>V(0H!{-R%MVh%4^FXUfr~nn?wJ z=DLcKN)5BHyS<*Op(iJ>oou?8tHG_E?yfxk6cMpxWK*r(ZL zWQMmj*f}TFK7US?6x51L-)nN!S^^0BS)S+8=sCXf6`IQ{{8nk_pZ}WHAV&b9rH1*g z&T6XnZ+gHMzhXKV{})%`LP7WZrJu#Qq-52${&s-NZgtqnENto^)(Fo(2SX(EXn~|r zLk_CG`O;aX>D_gZ?xak-W-3xD;dpt^MTu;^}>!HH6&hB0d|8J z6#4DO*AGl*&VW38Jm+V)&F-l8%InSBoBby9{S}jWy2Xawg+;4?u-ZQR1V%%j|ND}# z?&9Y(kHH<+olTeCcqFWnn+3O9Nrz(1h~@5%FU!ooaj>!Kb!$yt+t*W@t-3c|@~%>6 z#dBJ}N7f3hPs-YP=F3nP*F*WPS%V}&(AEJ zF)FWaToNGUY_pNwhz3-qgoM|&*;dQn8ZIlUwX3eoH23;a*AG@qWw+Fj-g<5XWem@` zKID>Bv?c@PM0#sKaW%)%G2W&}x5OoFSK1Pek)EsDZi*Ro4PG13t?l~Bb_yJ$E9h0y z{V^1tV!Ucmy7q4@jK2dW9JxL?jTXeO?jQHVwSe4f=8+oV*7{fGAx=gL{?R37!SC8K z4%JDB8l}izm0q2-KMz>R=tCPe#6~%K9>FK;;egJSu*=8r&e{YIMDz<M-|H3_0Qk$$)Qs>|Gb6L?c;EDF+(`WSIP<}kmt4GTI|l6 z`^ePXZO8y#d#AP9v>A5wVuOOl4>4}?!(R~8Wk+fL^M(87=b8^upPK7VUETR3V0kSe zEM^eT9W;sfdPeI?J#1obC5lU{qHUbTX^r+FIThx-vSNJ&4)xW8}_G?yUxzC#}wk(0|!7zWl(Z;&OA?qvJYmAmJhqhbArCu@KlcmtqA{(!sSX3 zjCk)$l@uBX^^|F4pS`i1G>kN#WAZ&bqv(gwS1O^ihxh&oz6^CO6+ajDxI*90TCy1} zF)k`@I)96nu-EeT60p%0Q!vD=ZDU{ERCb{(pb&FrQsSf^z`=TBSvLN&_C08Ufq4>+ zMEAw%P=+?HP{92M(-ZFEqOuEyuKS91D|<+r!%+4mbgl^3>ZibTw`tSfm0ukWNDQhE zeS+&D1OqTQLL}fzB;J^Tnwr$&$!zg~$Iah<4P9L#6cnOI+#K}WswoNB$>~?u2;kq& zp1UxMRu~b^bNH?QFELYXIyUd?n#j>~>-p?Xs^&+tR?~<0zo&DILMDp*7%ot(KqW;> z_-G281rIYQ2!9k)*n<`X64qKEi@a=}=RhT6^t12^UD=p~?vh9cRlQka>+&M#=1bb^ z_}crSt7|a|AM~feC{t4+k!W(Dx^_Tp?4TZ04)GA=M}FE48xnzggpRTlwynCohNfMy zU8a>azA^-hGriceN$E;N=uPKXpf?;Ws2_jkY*Fo%5Tv@bGM9!Z?(D||j!ZouE!zKr zlPjrVWv-!G!SZIEQCOxBp=FNQhwHB(j$W$v6jo`vk^H5UPHL6Im5y_7F(uv|^*C0> z*gUrx7}TL(SyHkKSgqQaXcQyWYU)z+GcwL;?(5du2JrV!33gdBq)4V8H5vbOqYm?B=tpIX)}J zc1;`G0tCgxjhdoh4g=b$o%7bu#Ycxc$lqYu5g9?d_hcuN_t!&v@|+)bg#3M%ABG?i zcu~AG_LDBkqTEevlMR+Pp3|C0PW3Vt>K#j!_etn^t?wmY#2E+5J<}Z+%#kwB-tP+h z0j%YAFoBMN4G{XS5<~mdO$V^gn*firzj_!Q+L`d|qn` zB$S_;m$l-%OjgFY%2+E7#N=Qiw&Poy-tDYrPBxmNS{R?Nq)HK$lisP0mll@#zG?VQchDt34Bto?bk9%VzB8cNx$5tmV7;J6m^0r9QGD0k?@TJT;a}PRkn< zuSael>yK<9T>;po#E|VxCodHoEi}sKvIXVK_b1_3GXGC!XB`yRnr{6DLeK!g6P)1g z(pX3!1ZfEF8r zwkfZQZuOL6e&vHt>3VAYK6TiQf=#sVB0iefDHeIXKmrbOkg~3sp+3p^rqG}hBVByBS%t}d;)6-K9g(@+zUV0icIKF_LzZ?!h$9KJFOGl8e zfC;3HWwYx|K9TYv-lTPctd8Q-N_hwPS7g!6z0wlH}Jbc1wZ7c0;G^*8;umUFN7R=XEll zGM2iHn!2(B2<>{7KXl^5{A~DD{+0B`1=SJXFb!5x;N!0?^tT9cn z;(0wB-;jHJ8==>@fO0f&pJHG>0^@mRAd?UvMWA!=#*99l^6d5`Ug`OYsb7ZrP;sucx{k7g8g3CJP1%`dEg4Fmn)?f5=;tnQ$%3?$a@5RaTY(+(oIR3KwbO%t zOzTDJt49x(yD{n}?2KAAN8NbqR#Kxu-f*mYs?Rxs+H!)6E?Br&OT6(pWp z#Z&vfxsIqqXJP!ze(h~NPqTF>ZdioU_!aYcnjI^l@8nc_EItDdc90PfHTwQ%%=sVI z)M8>Oq>3+muZ_;Z;$mVz5I!3l8*mtw6bACjL1i}OK zW%y^#Ie>WmUl}hcyQ;gsh+lGf_(8sZ%=`b2@Cwyz7pjZ0C;gQsBVhFVsN@|Gn6Pkt z>Zw8LZOd4_VKWp|S_?*TMJxZv#Kh8qz%v3R5eshoh_pCz`4i<7%;Wv%DHQlmu7q&C zK$tU4qka``dO22(fjff2i+822Uj9?~krjLK*0xV`)<<0;?DJb$WnqWoZqd#&vm9V~ zulFm!H#mg_GTzh!U4K~_*5p)Q-!?iO!t=Ftv597ESVi`7j#l&HRq4bQKJE(=t{Fvj zjf}Td1ACY+=bP+(*KP8|k&+h#_6(|t8R@mXbX-u5oG;C`wyLV##)lbHlcNjl4i_=< z(u%ZobSQ?xaeU%Th zzByPw(~HuNo0<6khtZNy8Asp`mu1KZ-I_vex(-4Dy^<`}>$W8tr-8HCBvOIqk$Rzo z)m<<8pn`sV6>b;88jTN#^fBt+FH6`{%uK5}nAkNc6{D&RU#p(zBrP-1oewE^{89XNw8?=rTI@qF@U(8-ebJ3 zX7~VDW@bDB3ux>Gk5@_F|J{Cj5L=Y;uH@r;-;SbZYQ0wK-XU(A1emfb`Vflq5D@8} z(3qZt`0+0TzPU8kZgKSnev^i~$4sQ}X_vkJIQw}n*S0-(PcPdwPT@86(@m-PhZ#uIwyPWVg;Rb?oi%RkTow&m8w8-n# zJk_CM)~8+nBp&+pKR{A*`)A>%3j7mG=nj{YJB{MH22v4eic7P zx)Ut1YC6j#DH8fAVk~aC7MQ3<_SNtQ+9HNz z!6f0u1VH{O{6cCX+3TreLs6KwMThN$?$BOVAuZ`OIdhk(;zc;P} z(A7eZsycViopITn@7fN#U^Pbrx%{K|)^`}tqp5z>X31W^7vIJX+lTBft^Ci9Xp`~x zd;1~>)C-5K5UKByKlivhsi6nqkls1{8&CB;C1zMCH0CIBk?w8CgiHL=OG%vk?x@29+?68ww zWv>CML`+wjkXWu}tauVENQD-uuc2)XMLaRi>jNC4hqfZpYf(-1dX4_^k^@F4ZCBTB z;&2R`A-t>fZ{0DpAPdR-zqMN?0fg$J^&OewjrjG5XvNmVk*^e#AG#f7fMIN)Yw}xk zx7*G&PTwdsK@l^WCf&O&PT5UZa0J^vRyvD+w z&ZC^Uh?8--bJx#R2h=e zFFjtwIv$*&hLG2OLi1x^;RKy`>`Ot_NT5|>gqnabUaZvptda^T!ie+G4PLBF^1iwh z#rP}i8Cq)TcC=^ z_+RC6ZmB5*3BD#my=6`Q56Y>kcfqx=yp%yCykWO&UV!nST)oROC|5c8DiW%ic817_ zEN8#tf(b`^-4&$lMbQGs3`VI?-RdJh zKtZDY%RCXR>|9x*pmF(5VJ7ZC>kRfx_CJ^qd*0Oz zV7(^&OM22rG={$*OeSQf<%&0~&VZ#Oi7k!{H_*7T`3 zb3A7y6h#auDWcFM2;wiup-NTE3ab=M)$=~93&L6nLJ1b$$y`;E%Foq(qY5NFEUcV- zRY~QYJ_&oJa`#=qM7{t?Rfx${^fL?V5|NkZ`w!C}qR;sG>20hHHV5NuJZuh=cv$;7 zup#P=O|z(IO1$H^%*HEur92v9wG0QmFb*)mwcAcZozDd)&hxq`FJyyX<`P005mVZN>jr;Ej?Gu9 zc3JnCGWZOt-bjT)=8{=aUCr7VUopqQFfS&DdUad9;+W_eNXjm#bH`a4D6v2r**sbI zz2$v-o)D4PuqEs~#0n*n(C>v?WB=B1@@DHI-&qw2!y^M_Z59xRxX%HXdgFoL0hxs+ z;e=L>0W2x9Uhzs<4pCkIWy$(vB-aNfjtV6NTstT`noKL=`3W(H#v#&=}$W9Bt_bCHY-s zmoPA0NICud+%^s$Xz&R}rY$I# zWFbq#2qaR%fYLJ1vM@%7fCk2aggW@7L}hGjAdy~UW&E2h4HjawuduN*P%W9RsB0Z( zBa0KBUhxcF8Gj223E2(v_J&6Bm#xOjnKpg-?S$o>y!dm4&mmCZ)3+u{hHeWh6YYE} zXOPs)`@Kik+KCr9P>h0@cDHQmud(Z2%2Abr-Q=J1E@e>ZU%*Fl%TYc2fn70E9|(Q< z7}7N6xuh)uWYJ3i%2t`uJ62(KbojYM@j*HaRma)!F4be8woQX5g+^$KG)h0|0^L*y zk~P*gCvq|5a(!)-f2mIYD}hAgX5k&JLD=P+?JWV91F!m1u%ZTmBAp_#ZJ%sMATod_0HotW- zU7EEgKfQvZb7x_vp{XHPJl!9?jr)4piH~pa(QvkMaro@8pKOn=l8W=luV+kK@dfuK zUQk{F8bvGxcat>H#fWg^yJ{hLd{}<|j|EPXG(ke7+;2QSM8+{2Ou8OutL3Bc1nnJ< zc~(||M*QRa1Lx-3 z6r8KLANkWacUn#x_qe3o!MjmO;XwkNWj-yf8MYtUL5GA&tbE;5UjYjm9tMk;{npAs zgp<9?apwCYuO>ko&ZOS#36tD#J^IQ*rGoy$b{q$WH+!6!%}bHXNiiKN4*rI&lTr#gzUr)lGNyOht?0w6V#g{+Cg&LG#WRR(lgUneyFFw;TQl z9~5DRoDs!nXOTCMo=|E=M;^6~~ zzK}+@iy}NS>q9%xV@_v_-iS@WM<}bL1P@|~J6GD5me%)szb&^`AWOMJmNgTGp$P5b zZ9HPJV+Z%7SFaPA%!A#Sx=^beR2C#`d=xt|^Q{dPU!c^b1?MVTt}fT?O-ZI*+y-j1 zSFrkS7Q)a1wlL9WE{vza#jjnApRH7D-fix;1TfzdiC9p%>DtYYU5>qT=eE;%0x#j< zby4OXBkPR_o5yIC4f`Ey5UHgr;HrUfT67 zd6Se_yU~Saf6%SoP+=ghiv4Y_X067~(!KmPr*N!}y}DAX#F2qd!P8YW%Vk_n6=KSr zr&KZCsN5q>6>45QdH6%@RxjPj$+IzO+GqNqSGi}r2Q6jX*RhnDWF7W~G60j%E%*@=P zA}w1vu@hg-o2-@ZDShqps^!-`EKR&|{`Y)P`4V>^QRNW|oM?VRm|}nHKF8-$re_reC3j>M$<-aQLD9J* z-wDttyO$9rDj3DwEP~9fN|S7x2fwfhj|GRH#v7{^#l|0kVnDYzjO0+RUL(qDrIMi3 zojY0K9|Cy}Q==GcTm0>nlr(W1nhl>v*gS8?&tWW^&t0Z^p;J#M*rz{snN}=0AIF5n zPnXf-3VoU)6vSE^KqB@c_KTVw0y*XdsguGNuQo@3oV5fNYJltU=q`w0uzKs_JTpDL zi`!ZGc8|^<-qWn7s!UhLiLv;I1~Q_5TmIprMW)zinQ&)2yN#sc?4OTLHqj~WGzwo3 zt$J&Z^tZwSZAY8xcgEhr`K!Ao(#wtpdY{APWaI$GN2ukzirv|0+HC!3Mw5j+lU(%h z$V~FWVBJ><3LCL6U+Q(F(r(PoHw>Os7pW;c)laiqbh4Y7I6&9PZDxtvY_Z2R-tT8{ zvV=$DWG?d58rcreL?LK(RIMtNbvJA&rc)@W=szk+8Xm`aEOtk-QM;X4e6W0BFi&?; zy!2#w5#>WhUd-@R(y4Qfzh8paYL;&-|9f^8{F||RFjVu-DT%!YtXOz?XWn+6BCCg= z!_nwx@setAjgImjAHCApeK{U_57p(xzRzBiA$|)HPWi2t()u|)wTxswL!06ek&&wJ z$GC4-Leg{g46`>(839+?)t)EXvwe&NXEXgjKPq%n%PXqLn)PAHer4A?T0K|^YDOIL z?mXbbCXDa@L|&jgnM=wbv|=|{w_iM8`4D*9*@hJolQWI-1YO%J#*8$WEmUb}5d`boFDAd!Ff5F?ps zPz(@^IWbL0YBwdrRc*iZPR6EV?I!Kf<{evW!Zqg{cEero6aZc%SuwMy#^x&2fJiD! z#z+iq;!iPpy#5yc?-Z!3A3+Odn`;<+ZmoR=5*pu?ZLnfPurT=5rF_?gt<3R&XuytP z&d!FRhemUtQQ4d4=xrTDWy-)vX<7<^7#C#P5bOt&0p6Ui#w1i-6Jm$`E$SEG=V9mw zEk23}9roFct1T>r!>2$l#R9iM3>Y_`aqbTy+PxmsI;FVkUfYy=1*+CIHnK7@FQB3H zlL9nKtE=HW{lf@*b%7{!9oGd4+R)$9T0_;8qUg`Ej7${F#Rc#CVV|3{lM5^;9VwG5 zM}-MAZr^^&m5ZMSCZRIe_<+av1>nK?Uq1bplL#3m5j||24^#MinGm4&ShxYRH!cy- zBik_}JS>#D@kfEt;cLC`qoZTjym%r_e9kbrigZeLj5;z-($9t4@C3e8Ndb>Q-J^x+ zRCk&cMzk+1@EFaV0)Jdt8caH*pz(7#AjqJ&d%cVz6#8Fkv9i*xw4XW(A0@|}Q?hgh z`Q@74r@Uwuzy`DcAo~7&QDRx!h?#U3=edJm4=419p7m2lz*U|J1tbW38u|Ps?c5c@ z9tQ#@th;Hxf5cp65ka~bbx0}xfOJOw*|!~lp!r;0gf=Fo`nC>ed(0C6M$WgpJCP>U zY>&_`nJr;(8>6`8 zlJV}P`aN?u%#9qO0Wxz>)ub7BY3@hm2%gw5lMV~$wkcePDg<|YT!(>!95#?C^1a}B zbP`L<>ucoFO)RO*n9pRCYf=F$tegGun&kzuIXw=@ND2CfEvdY6qsW2(L-7@n#qR@f zcW&vP!OK@ioVNQ7+v2t0NGTpHZU;5bD^D+QcDi1lNs-2)@3yeuM>te`Zbmu|NYd}< zKHZ5RmAsgLSBnZ3nx|ci`PnaTFV7NcFXg}xffN?4)riqX@y%E8u7+}o3*ZK|<{AE{ z=9!;_(MQv$UzjG#bX%-3fB2i|i=Z8FAtebF3yXwxVPa!LdrDC7VY|ph#*v_bC%E>; zMZrdT?z16wzf-bR$o?wHhRxwTORwq~7Hzmze!pGXKTb{AkdIC|o;Q;|_wr#q0oP@l zIzbYmjtI)ZE|%9`Yn1kk*Q<+>G}XCT&TGk4DTF6|xfpj-H%-%A{Gxhtg!p);?PepF zv8>JRTk^P{(C9gw3@M1CeP#WX? zp|MUBs^ovCxkkzqun_d35Rw4VwY8jDO52X%aVw)YU-{1AWHg!HOc~jHEp%Zh$AC{H6|-dEYBkxF@!g8n9R5B_@Nc^Hoa&K~e z(z|7~_FM_-)U2b^EgZJbrFyj-*R%`e9VwJ2D{U-Rt>}j_P^y~4R^!FMK)Gi0@r7@k zv>P35yN)%s z6ON98Ii->+)IALt{LZZdKjG@3ek*%U3x1p$V}rgC_n?6I#5r%se-nCg&-T?T z*c6mMUyMd%ri=?@m8k1TVpI4}RvgX<%X_CqN2M8%>4x#zIrYfbQ~be7 z#u{HMce{faTw&hbb3{$U-J(bZ@S%V*aF5Hqm3k>ap!H_xuRg|6yR$$uLOxyR+R6Pr z^j95}CafT{0<#ByxY_CHas6g6M3PiVO*_W-*q-G*CusZCGB(a!?gu;e87N|e-{sds zCV3%-jG7A+(p3%F1DB3DZxzSwO#%mVj1pFN7^UpE6UBC5Euntb&lC66X-mNrwU(}z zrxYS`B-m@1i{0;FH0OGpzFp1NxW9+XAx9c&gg-NUnQQRPqOJg5p-@Jh$9o$(tncg! zNsJ3)YH6&mvs0mqsc1oolG@3Q5*oKnK4>h59R;QSnoBi16AN|+RZ>K10{G(|9>)7a zjHn}plpH_R^`2G=j_DiRmW$>6bhfJm!+CQ@qlHIOkQnJL2AQbhDAW=_`f=N4j@vp6 zoW$yY*1MJ3j>YQ4nobtmxx+EOrmb8!{C+_myY!Fa;A(*>iMPzUGS@^4iid`pvOM1fL!A(wzl5fkh_Kyzue&d7MJv2W;{3tuCdbXcO|O7 zubB?)LD#hh7nK-oPf^qEtF_C+FZyWurd~o4Die=wK9A?!c$pv;2<*Qu!6?EJ*Dh`> ze^jY$_fRkLJ&tI4XaBynJzhQxtHR=<>3CQ)Aw`zKt&34QjKp?k_x3=swVhgv-w>g$ z>8oXX?ly*m$Q%I#wXAo4Dr0j~Rq^z+)%c6UNm! zAM0UCDD3Ir)-C;wo8Zyl0uKR?Es$|Zh5ebYh32N{Wl+beb?rrIP>?7NkNvjNNOEi} z?%PrXqV@uVh0HMy4{@I)jxG{z`~V>d<@yoWi}>kL%=)obn52FQp#W!>J^bEMa~#vz zVDAB+r9|D>F{|@0v}bPmk?-T$+Lwe{fw%T{%ran|n(^m4Rjc<~tle{KbmurwgP0#R zANQ?(*RB(wq|z0+@FfKWy>5YRDj*>I{}d3<;~U_n`z9Tk((=QFP%!fzW>5z;H8r#s z=vi|-&zgS3C(}gq4C4iy*d-KjL5q0tEhUqQ0yklgA7ner%fy(7rCR~pBzpyCW-^#r za==gr=!*_$lBS8eCZ^D7W%|DsAO;Agnu+m3#?tAeo%QSFXeLyBx$r~Fhn0tgv|>@y z*#e}7#Wy$Kv*xs{iNqWaQzWI+jU;d?o2h!VSFi0Aj;^X%^_Cleh;1?7E{kI6eJ`^q zQ=h8^PxG*8u>)Td@wxkGu*k#3bH5@KsPpmX*pV2Lm?}4i1}%jy<>~c#5I&j2GAAX+ z9nKC;3{FZi#Bge{@0%XXR+vZJJFqzSkP#SevN_&wqZ7_%%F;ybDsxWk8kG?6<;oc^ zbvFTVNZR>;esX)~avq)w9_}|fz8)dxtq?VUL4kR*4}^{dB%Mb6`5MASP8Hiy7m^n`O5Z32!Gb8UTlMN%3`vMy*I6pzuJN9&jkuQm2K3SseC_aTw$`+Mvq(+Q^j*eMsti9Bi5>PeM7O&TyB0t6Px8hH^62`6B* zyZsHi(|Qrk{jmCzu-KJR?d9&c2p5jrHm+O-x&tR0;nBebF_VqSjB?f#h$Dn{uYs{R`vSx{A7w;C4Gl8bKjMV0#soj^l@K zrrbH#%}NlR=xe4zg81sA$!um`u#*h8p(W3!lLwa5$DS9HS}9fUo7}IrmKe*CBC)Gl z6_R)=D~f*L;$2f|bjW6vG0ogZH#Yko8?h}Afeh=m57Pn`tg4B`O=mChU$ad00YsH& zgM;P4VY}*6qaGqZ0UF!gUQ=j1q6-TC3lN}hK$Z;rMJivJI}d@jp$k>V>7NNkC<@I&x zx4q74x6%*dEA2HHpdYvnq|ApxwMpS*Mzb2wo>o`&uH|R%=NW0?42n_bX=P`!TsjM} zFH|4Lentq;zxnZoutFrS!#op(&0(j2&b=y#xCU1KwVj#~BJx6lYGrH2Z1Iz0v4>)e zH)W6FP)gv_!|8#CP_NF!+0NZe7sQOdo7Cv1_t^Za#l;oNfK5#%)R*28#*9HfN1IvLrfYn{08 zQJ*?=Uv4HNlp5Q|)?tMyE-_ovok!Nn)Zf1TCm0P5+;_tH9_baOvx-YqM>DHwYUpFtanrvK5^*|@vo*!Q^<;gyMT8ErBqSc3 zV)RykRHQ;FU!gO(+w<*W=E zcz%arvJ(KUcoK}2^)UBB(yW!!AtPR~b_&5MVNfzuc@VuE33(Y=kX&``4lW^k9J&-J z>xVd0?BqcGhf`r%^YRbhPbEhMOgY2cKkyX6CiL|4I5H7>3ZvO;&SI-Ow&1B@GFD$$ z>d44Yb3s+WBO2>hY*orgr&1w$mXw$=YuR-dw?*eXRY`nCs#anzw+|rRrA)%KqT$jjbZ@Tp z7W4zUq?Y$3IU{Bcf1SOGdh*_)Po2|K&(kjoK0FLv5(rw6*^DBCfT&wik|yzB&*xeP z@~RT1rGQQ_b>Qf@UaHaCfKa?eDUIWRY$NAUGJn0-F)6xzk&z9=4=poEi*}EK z`f1_Wo-JRB^K*}LKvQH<=d#EGdj(lBAYz@iLb>lU)S~sJB!L?|Y11zJ1tDouvPejE}f@P^LYEr_-Rv1T**jGP%*+4DV zCB>?}-{7X6oN3dPIUtKq>*CSmQq+tE)>AL7WGWYV6h<7KL{5DA&VME&7yr6gPv+}$ zca6*~F`t-m7`K)$jY?^n!QwcWMDjhjO9|7s3F-Zndz_wniA3?zuO~M`BrI|+!^i~z zR8`$ntL?mwkqenyWW5Tl`Z7b`B{DQuesd?9u;kg+)oAd*RfJg23?81(Dj&TrMVP%( z-;Z7(;gPXc{xJ0jMRItws6B-VnlLu6^M@O0l8srPtG2ebrg^jn_J-ArbqZzZW38jD z;T^hYY{D{Pz7n6Hp+IaA1Em#T;zWHTJE|12BG@41g=X~cHNFtb3QP}GtSdd&4-S*% ze)-%tfZXW5r{9G_@ai~ovDT%lGAW;=0V7~QpYkawSc63rkPd!m0xGTVn3G(M)phLps~gt6KpYUJ&CXv?I6V+09zf^1L)ywEq+z zzzv+gO(Q}Y*VS)9sX-TbYrI0KhiaEv2(#NYD{0db(f%CH=0oiTEc9X|CcHKo{&ClD zDlVspdG`?wwryw!Sq*Gujov9`*7`BQ_Ozzq{@xW2506g~EFh55wee>2&4wixdah5Q zdtJqfGaK*~kcu87G3uo+`K>FAVI>U$hW*ger&zpbGAWU=8<&#ubUH!n^+hX|a-ye) znvXBZqN`d*m0gQnSD3}BXnJPmO`~o&3Y*PaUUyprRI^c|q3Rq_@WzdYFw4ULx|V8b z5`Ge}gY*i&VT&6V-|BL3@nMZ--;GrvbfU;r8Ds#(;3?kBw@ z)r`?nQe*lD{`pAh4l`2U4_+(2{DO=mxB?qm%c39t^8kujL<#gGA|fI-HlXP}+KZ9b k>25g;+psSLe;A*5T>qvi7b(z80|6hR!jeKoAGEyxAIXY$!~g&Q literal 44924 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 literal 17329 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 x?{($ryi^dZXe+wYqbR~2Xv$(lZ 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 O5rslXO6r;FBmM{ci@hKK literal 0 HcmV?d00001 diff --git a/AltOS/doc/easymega.svg b/AltOS/doc/easymega.svg new file mode 100644 index 0000000..6d9d766 --- /dev/null +++ b/AltOS/doc/easymega.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + EasyMega + + UP + + + diff --git a/AltOS/doc/easymini-outline.pdf b/AltOS/doc/easymini-outline.pdf index 7a30878a83a509333626c2c3dc92db34530170d4..670c82203e558ed2b9124832af5a075355fc451e 100644 GIT binary patch delta 224 zcmZoSZ#SQ?k<-%9*wDz(%*1Hpt`r_#OI<_b5JMv?Lo+KAqs`j9W{jvplk@nhQAIX? zFA7(JtYPyXF(npfQv)+s qGZRx&69Wq;XA4UgV^=pFA7(JtYPyXF(npfV`mpf oLjz|^X9Ei-b2AqM3pW=R10x_dHZ?SIu{5+(upy*ma-y^v02l{1&j0`b diff --git a/AltOS/doc/micropeak.html b/AltOS/doc/micropeak.html index f443112..5fe70f9 100644 --- a/AltOS/doc/micropeak.html +++ b/AltOS/doc/micropeak.html @@ -1,4 +1,4 @@ -MicroPeak Owner's Manual

    MicroPeak Owner's Manual

    A recording altimeter for hobby rocketry

    Keith Packard

    +MicroPeak Owner's Manual

    MicroPeak Owner's Manual

    A recording altimeter for hobby rocketry

    Keith Packard


    Acknowledgements

    +


    Acknowledgements

    Thanks to John Lyngdal for suggesting that we build something like this.

    Have fun using these products, and we hope to meet all of you @@ -33,7 +33,7 @@ NAR Keith Packard, KD7SQG
    NAR #88757, TRA #12200
          

    -

    Chapter 1. Quick Start Guide

    +

    Chapter 1. Quick Start Guide

    MicroPeak is designed to be easy to use. Requiring no external components, flying takes just a few steps

    • @@ -84,7 +84,7 @@ NAR Recover the data. Turn MicroPeak off and then back on. MicroPeak will blink out the maximum height for the last flight. Turn MicroPeak back off to conserve battery power. -

    Chapter 2. Handling Precautions

    +

    Chapter 2. Handling Precautions

    All Altus Metrum products are sophisticated electronic devices. When handled gently and properly installed in an air-frame, they will deliver impressive results. However, as with all electronic @@ -114,12 +114,12 @@ NAR As with all other rocketry electronics, Altus Metrum altimeters must be protected from exposure to corrosive motor exhaust and ejection charge gasses. -

    Chapter 3. The MicroPeak USB adapter

    MicroPeak stores barometric pressure information for the first 48 seconds of the flight in on-board non-volatile memory. The contents of this memory can be downloaded to a computer using the MicroPeak USB adapter. -

    1. Installing the MicroPeak software

    +

    1. Installing the MicroPeak software

    The MicroPeak application runs on Linux, Mac OS X and Windows. You can download the latest version from http://altusmetrum.org/AltOS. @@ -128,7 +128,7 @@ NAR be installed. A compatible version of this driver is included with the MicroPeak application, but you may want to download a newer version from http://www.ftdichip.com/FTDrivers.htm. -

    2. Downloading Micro Peak data

    • +

    2. Downloading Micro Peak data

    • Plug the MicroPeak USB adapter in to your computer.

    • Start the MicroPeak application. @@ -161,7 +161,7 @@ NAR height, speed and acceleration values computed from the recorded barometric pressure data. See the next section for more details on that. -

    3. Analyzing MicroPeak Data

    +

    3. Analyzing MicroPeak Data

    The MicroPeak application can present flight data in the form of a graph, a collection of computed statistics or in tabular form. @@ -187,13 +187,13 @@ NAR Data tab) to a file, change the application Preferences, Close the current window or close all windows and Exit the application. -

    3.1. MicroPeak Graphs

    +

    3.1. MicroPeak Graphs

    Under the Graph tab, the height, speed and acceleration values are displayed together. You can zoom in on the graph by clicking and dragging to sweep out an area of interest. Right-click on the plot to bring up a menu that will let you save, copy or print the graph. -

    3.2. MicroPeak Flight Statistics

    +

    3.2. MicroPeak Flight Statistics

    The Statistics tab presents overall data from the flight. Note that the Maximum height value is taken from the minumum pressure captured in flight, and may be different from the @@ -201,13 +201,13 @@ NAR as fast as the recorded values, or because the true apogee occurred after the on-board memory was full. Each value is presented in several units as appropriate. -

    3.3. Raw Data

    +

    3.3. Raw Data

    A table consisting of the both the raw barometric pressure data and values computed from that for each recorded time. -

    3.4. Configuring the Graph

    +

    3.4. Configuring the Graph

    This selects which graph elements to show, and lets you switch between metric and imperial units -

    4. Setting MicroPeak Preferences

    +

    4. Setting MicroPeak Preferences

    The MicroPeak application has a few user settings which are configured through the Preferences dialog, which can be accessed from the File menu. @@ -241,7 +241,7 @@ NAR Note that MicroPeak shares a subset of the AltosUI preferences, so if you use both of these applications, change in one application will affect the other. -

    Chapter 4. Technical Information

    1. Barometric Sensor

    MicroPeak uses the Measurement Specialties MS5607 sensor. This has a range of 120kPa to 1kPa with an absolute accuracy of 150Pa and a resolution of 2.4Pa. @@ -257,7 +257,7 @@ NAR designed to smooth out any minor noise in the sensor values. The flight pressure recorded to non-volatile storage is unfiltered, coming directly from the pressure sensor. -

    2. Micro-controller

    +

    2. Micro-controller

    MicroPeak uses an Atmel ATtiny85 micro-controller. This tiny CPU contains 8kB of flash for the application, 512B of RAM for temporary data storage and 512B of EEPROM for non-volatile @@ -268,7 +268,7 @@ NAR this mode, the chip consumes only .1μA of power. MicroPeak uses this mode once the flight has ended to preserve battery power. -

    3. Lithium Battery

    +

    3. Lithium Battery

    The CR1025 battery used by MicroPeak holds 30mAh of power, which is sufficient to run for over 40 hours. Because MicroPeak powers down on landing, run time includes only time @@ -285,7 +285,7 @@ NAR battery with MicroPeak. If so, many stores carry CR1025 batteries as they are commonly used in small electronic devices such as flash lights. -

    4. Atmospheric Model

    +

    4. Atmospheric Model

    MicroPeak contains a fixed atmospheric model which is used to convert barometric pressure into altitude. The model was converted into a 469-element piece-wise linear approximation @@ -305,7 +305,7 @@ NAR Because the raw pressure data is recorded to non-volatile storage, you can use that, along with a more sophisticated atmospheric model, to compute your own altitude values. -

    5. Mechanical Considerations

    +

    5. Mechanical Considerations

    MicroPeak is designed to be rugged enough for typical rocketry applications. It contains two moving parts, the battery holder and the power switch, which were selected for their @@ -321,7 +321,7 @@ NAR any direction. Because it is a sliding switch, orienting the switch perpendicular to the direction of rocket travel will serve to further protect the switch from launch forces. -

    6. On-board data storage

    +

    6. On-board data storage

    The ATtiny85 has 512 bytes of non-volatile storage, separate from the code storage memory. The MicroPeak firmware uses this to store information about the last completed @@ -335,7 +335,7 @@ NAR information captured with the MicroPeak USB adapter. It can also be read from MicroPeak through any AVR programming tool. -

    Table 4.1. MicroPeak EEPROM Data Storage

    AddressSize (bytes)Description
    0x0004Average ground pressure (Pa)
    0x0044Minimum flight pressure (Pa)
    0x0082Number of in-flight samples
    0x00a … 0x1fe2Instantaneous flight pressure (Pa) low 16 bits

    +

    Table 4.1. MicroPeak EEPROM Data Storage

    AddressSize (bytes)Description
    0x0004Average ground pressure (Pa)
    0x0044Minimum flight pressure (Pa)
    0x0082Number of in-flight samples
    0x00a … 0x1fe2Instantaneous flight pressure (Pa) low 16 bits

    All EEPROM data are stored least-significant byte first. The instantaneous flight pressure data are stored without the upper 16 bits of data. The upper bits can be reconstructed @@ -355,7 +355,7 @@ NAR 25°C. So, you can count on the pressure data being accurate, but speed or acceleration data computed from this will be limited by the accuracy of this clock. -

    7. MicroPeak Programming Interface

    +

    7. MicroPeak Programming Interface

    MicroPeak exposes a standard 6-pin AVR programming interface, but not using the usual 2x3 array of pins on 0.1" centers. Instead, there is a single row of tiny 0.60mm × diff --git a/AltOS/doc/micropeak.pdf b/AltOS/doc/micropeak.pdf index 14b6c10a587e7914bc3dcda173f7095011a6283c..a8cba38ea33284225e14e2057b96248bde7b3f3f 100644 GIT binary patch delta 1488 zcmai!Id2m|7={(@kQ+l1hs#_chfU_2*_qjifDk)rsgP123M42f5+PAplnBuxQA~kS zpcGUfA&~MTX!r?S9Tg%Z#x%S;$0qg`6i@NK{vORG@5bxTJsaTpk6uH9I4Lskw%+s) zm>P*&#OF!PlX?GkK=pK1FMbX_?rfekhn_WudcZ!g9~=M&!69%M909%HDCh(IU;qq) z%pC?J;20=@0vrgC014D)b4XwNUgL(C(n3vFrXJjTn5R3Hxtn)a??0;C-do#mzci~Qi83jp zpya7jiM744GON?#6^mMJ224$ac1hlse@+9zUioCDe8e3Qr7^iU}T$A5)hS>k4sc zKW*#T8a&04{BdF`cy7opwDg!=*wGWSjI>GP4rNT8TBz;ImM+`%9bG0ysSt|!P2y*t z3RV~*$?dC_F4?wsjSwar5Ux)JHw=-K-d(}sSl1*>h5O80mx`_*BAI4xwTeNN#=FTh zmx@|e+u^nzwx2%KU&Kb!%~ml=cVw7~I70d`Zq+ zD!P7%H1qCM+pnutnm-C>E)`urL|Sj(`Beq#eXZ``&WuN;1 delta 1488 zcmai!Id2m|7={&&Kp=@@VuBs646i84YK?I_*C_$n{qL_wA zL@B61iYW3U@+TnBQ6X{|)9~&w>)0EK;wj!w-?KB{%KCZNiYIVfikFoQE(cZ0cXKEa2^EU0=Nh+fy>|u7z0JsCW7(D51(b}elUIK!P7@Cf_r<*?)z_IHO&;) z%-TfBQm5j}?)FxySWc#`#3`>tWw#8aga;@txyTeGx7MQJ-lXnY>4Oy}NVgw3amqb7 zF1y8TV%R!@+N;DVuOv-ex#w8bZERB|8eI!P?M)>q=f-7M+=)i#QV}=)w0!DP(z08E zQiW|ol^w88T}o1Rg%*|F<_=Ya7Q`7>Dm^iux;5X#4Y}GbRi~sSM#3MVPhDD4c28PV zam%|@;mV3o3BQ<6U6wBgTxhq_#4)zuGG(Q-%pZwQIX7+M!hL8`$t^aqtPV9%Hlt5n zsxJpzh0(IrDIFRvte?@RoE9~?Z`h(M{-H`$hs1^PGy0UX;wE>iiHlhBS}6U?9%)h9 zM?=}YkF*VF7>$(4Zr!K6mNaq0lM@}sl`wP@Q| zPEDJl?=!y0O}uv_+5aN`d+1bNANosU<+`!5F2dO`oS)Nro(W~}^+_Wa>ard#%+B2m MuK%yaHHPivKNZfQl>h($ diff --git a/AltOS/doc/release-notes-1.5.html b/AltOS/doc/release-notes-1.5.html new file mode 100644 index 0000000..b1ed4a9 --- /dev/null +++ b/AltOS/doc/release-notes-1.5.html @@ -0,0 +1,68 @@ +


    + Version 1.5 is a major release. It includes support for our new + EasyMega product, new features and bug fixes in in the flight + software for all our boards and the AltosUI ground station +

    + AltOS New Features +

    • + Add support for EasyMega boards. +

    • + Make the APRS SSID be configurable. This lets you track + different rockets on the same receiver without getting + things mixed up. +

    • + Report extra pyro channel continuity state on EasyMega and + TeleMega via the beeper. This lets you easily verify flight + readiness on these boards after powering up the electronics + on the rail. +

    • + Add lower telemetry data rates (2400 and 9600 bps) to + increase telemetry radio range. This reduces the amount of + data received as well as increasing battery consumption in + the transmitter. +

    • + Change TeleGPS to have only a single log, and append new + data to it rather than using seperate per-flight logs. This + avoids accidentally filling up log storage by turning + TeleGPS on/off several times. +

    +

    + AltOS Fixes +

    • + Increase the maximum range for altitude values from +/-32767m + to +/-2147483647m, allowing the flight computers to function + correctly above the 32km level. +

    • + Continuously test pyro firing conditions during delay stage, + inhibiting the pyro channel if the test fails. This prevents + firing pyro charges where the conditions were good before + the delay, but become bad before the delay expires. +

    • + Allow negative numbers in pyro configuration values. This + lets you specify things like descending speed or + deceleration. +

    +

    + AltosUI and TeleGPS New Features +

    • + Support telemetry baud rate selection. Adds menus to + the flight monitoring and configuration for baud rate + selection. +

    • + Support APRS SSID configuration. +

    • + Integrate with file managers. This provides icons for all of + our file types and associates our application with the files + so that using a file manager to open a AltOS data file + results in launching our application. +

    +

    + AltosUI Fixes +

    • + Make the 'Graph' button on the landed tab work again. +

    • + Make tests for Java on Windows a bit smarter, and also + provide the user with the option to skip installing Java for + cases where we just can't figure out what version is installed. +

    +

    diff --git a/AltOS/doc/scan-channels.png b/AltOS/doc/scan-channels.png index bf6b6e53ea8f1d3e30d58e42fa464f1017140434..e45880cd9f10ddae5040843f8a38b82ec4a952f6 100644 GIT binary patch literal 18400 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 literal 18787 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 Owner's Manual

    TeleGPS Owner's Manual

    A recording GPS tracker

    Keith Packard

    +TeleGPS Owner's Manual

    TeleGPS Owner's Manual

    A recording GPS tracker

    Keith Packard

    Revision 1.413 June 2014
    Initial release -

    Acknowledgements

    +


    Acknowledgements

    Have fun using these products, and we hope to meet all of you out on the rocket flight line somewhere.


    @@ -18,9 +18,9 @@ NAR Keith Packard, KD7SQG
    NAR #88757, TRA #12200
          

    -

    List of Tables

    4.1. Altus Metrum APRS Comments

    List of Tables

    4.1. Altus Metrum APRS Comments

    Chapter 1. Quick Start Guide

    TeleGPS is designed to be easy to use. Requiring no external components, flying takes just a few steps.

    @@ -42,7 +42,7 @@ NAR Connect TeleDongle to your computer and start TeleGPS or start AltosDroid on your android device and connect to TeleBT. Set the frequency to match the TeleGPS and you should be receiving telemetry. -

    Chapter 2. Handling Precautions

    +

    Chapter 2. Handling Precautions

    All Altus Metrum products are sophisticated electronic devices. When handled gently and properly installed in an air-frame, they will deliver impressive results. However, as with all electronic @@ -59,7 +59,7 @@ NAR As with all other rocketry electronics, Altus Metrum devices must be protected from exposure to corrosive motor exhaust and ejection charge gasses. -

    Chapter 3. TeleGPS Hardware

    1. Hooking Up Lithium Polymer Batteries

    +

    Chapter 3. TeleGPS Hardware

    1. Hooking Up Lithium Polymer Batteries

    TeleGPS has a two pin JST PH series connector to connect up a single-cell Lithium Polymer cell (3.7V nominal). You can purchase matching batteries from the Altus Metrum store, or @@ -72,7 +72,7 @@ NAR this same connector. All that we have found use the opposite polarity, and if you use them that way, you will damage or destroy TeleGPS. -

    2. On-board Data Recording

    +

    2. On-board Data Recording

    TeleGPS logs GPS data at a user-configurable rate. Data are logged to a 2MB on-board flash memory part, which can be partitioned into several equal-sized blocks, one for each @@ -101,7 +101,7 @@ NAR before it fills up. TeleGPS will still report telemetry even if memory is full, so the only thing you will lose is the on-board data log. -

    3. Installation

    +

    3. Installation

    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 @@ -120,7 +120,7 @@ NAR transmission with the system installed and all other electronics powered up to verify signal reception and make sure there isn't any interference from other systems. -

    Chapter 4. System Operation

    1. GFSK Telemetry

    TeleGPS's native telemetry system doesn't use a 'normal packet radio' mode like APRS because it's not very efficient. The GFSK modulation we use is FSK with the base-band pulses passed @@ -134,7 +134,7 @@ NAR 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. -

    2. APRS

    +

    2. APRS

    TeleGPS 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 @@ -157,7 +157,7 @@ NAR 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. -

    Table 4.1. Altus Metrum APRS Comments

    FieldExampleDescription
    1LGPS Status U for unlocked, L for locked
    26Number of Satellites in View
    3B4.0Battery Voltage

    +

    Table 4.1. Altus Metrum APRS Comments

    FieldExampleDescription
    1LGPS Status U for unlocked, L for locked
    26Number of Satellites in View
    3B4.0Battery Voltage

    Here's an example of an APRS comment showing GPS lock with 6 satellites in view and a battery at 4.0V.

    @@ -175,13 +175,13 @@ NAR
     	that the GPS status character switches from 'L' to 'U'. Before
     	GPS has locked, APRS will transmit zero for latitude,
     	longitude and altitude.
    -      

    3. Configurable Parameters

    +

    3. Configurable Parameters

    Configuring TeleGPS is very simple; the few configurable parameters can all be set using the TeleGPS application over USB. Read the Configure TeleGPS section in the TeleGPS Software chapter below for more information. -

    3.1. Radio Frequency

    +

    3.1. Radio Frequency

    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 @@ -191,19 +191,19 @@ NAR frequency will be used to avoid interference. And of course, both TeleGPS and the receiver must be configured to the same frequency to successfully communicate with each other. -

    3.2. Callsign

    +

    3.2. Callsign

    This sets the callsign used for telemetry and APRS to identify the device. -

    3.3. Telemetry/RDF/APRS Enable

    +

    3.3. Telemetry/RDF/APRS Enable

    You can completely disable the radio, if necessary, leaving TeleGPS only logging data to internal memory. -

    3.4. APRS Interval

    +

    3.4. APRS Interval

    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. -

    3.5. Maximum Flight Log

    +

    3.5. Maximum Flight Log

    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 @@ -211,14 +211,14 @@ NAR 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. -

    3.6. Logging Trigger Motion

    +

    3.6. Logging Trigger Motion

    If TeleGPS moves less than this distance over a long period of time, it will not log that location, saving storage space. -

    3.7. Position Reporting Interval

    +

    3.7. Position Reporting Interval

    This sets how often TeleGPS reports position information via telemetry and to the on-board log. Reducing this value will save power and logging memory consumption. -

    Chapter 5. TeleGPS Application

    The TeleGPS application provides a graphical user interface for interacting with the Altus Metrum product family. TeleGPS can monitor telemetry data, configure devices and many other @@ -227,7 +227,7 @@ NAR tasks available from the main window menu bar. This chapter is split into sections, each of which documents one of the tasks provided from the top-level toolbar. -

    1. Telemetry Monitoring

    +

    1. Telemetry Monitoring

    This is the window brought up when you start the application. If you have a TeleDongle device connected to the computer, it will automatically be selected for telemetry monitoring @@ -266,7 +266,7 @@ NAR tabs, each of which contain some information about the TeleGPS board. The final 'table' tab displays many of the raw telemetry values in one place in a spreadsheet-like format. -

    1.1. Map

    +

    1.1. Map

    The Map tab shows the TeleGPS track over time on top of map data making it easy to locate the device.

    @@ -289,16 +289,16 @@ NAR

    You can pre-load images for your favorite launch sites before you leave home; check out the 'Preload Maps' section below. -

    1.2. Location

    +

    1.2. Location

    The Location tab shows the raw GPS data received from TeleGPS. -

    1.3. Status

    +

    1.3. Status

    The Status tab shows data relative to the location of TeleGPS when the application first received telemetry from it. -

    1.4. Table

    +

    1.4. Table

    The Table tab shows detailed information about the GPS receiver -

    2. TeleGPS Menus

    +

    2. TeleGPS Menus

    TeleGPS has three or four menus at the top of the window:

    File

    New Window, Graph Data, Export Data, Load Maps, Preferences, Close and Exit @@ -314,26 +314,26 @@ NAR only shown when the TeleGPS application is connected to a TeleDongle or TeleBT device.

    -

    2.1. New Window

    +

    2.1. New Window

    This creates another telemetry monitoring window, in case you have multiple TeleDongle devices connected to the computer. -

    2.2. Graph Data

    +

    2.2. Graph Data

    This brings up a file dialog to load a saved log, either a .telem file of recorded telemetry or .eeprom of saved data from on-board memory. It looks a bit like the flight monitoring window, using a selection of tabs to show different views of the saved data. -

    2.2.1. Graph

    +

    2.2.1. Graph

    The Graph tab shows a plot of the the GPS data collected. The X axis is time in seconds; there are a variety of Y axes available for different kinds of data. -

    2.2.2. Configure Graph

    +

    2.2.2. Configure Graph

    This selects which graph elements to show, and, at the bottom, lets you switch between metric and imperial units -

    2.2.3. Statistics

    +

    2.2.3. Statistics

    Shows overall data computed from the flight. -

    2.2.4. Map

    +

    2.2.4. Map

    Shows a map of the area overlaid with the GPS track. As with the telemetry monitoring window, you can select the style of map and zoom level using buttons along the side; @@ -341,7 +341,7 @@ NAR the left button and you can draw a line to measure distances using either the left button with the shift key, or any other button. -

    2.3. Export Data

    +

    2.3. Export Data

    This tool takes the raw data files and makes them available for external analysis. When you select this button, you are prompted to select a data file, which can be either a .eeprom or .telem. @@ -350,7 +350,7 @@ NAR Next, a second dialog appears which is used to select where to write the resulting file. It has a selector to choose between CSV and KML file formats. -

    2.3.1. Comma Separated Value Format

    +

    2.3.1. Comma Separated Value Format

    This is a text file containing the data in a form suitable for import into a spreadsheet or other external data analysis tool. The first few lines of the file contain the version and @@ -364,11 +364,11 @@ NAR the sensor values are converted to standard units, with the barometric data reported in both pressure, altitude and height above pad units. -

    2.3.2. Keyhole Markup Language (for Google Earth)

    +

    2.3.2. Keyhole Markup Language (for Google Earth)

    This is the format used by Google Earth to provide an overlay within that application. With this, you can use Google Earth to see the whole flight path in 3D. -

    2.4. Load Maps

    +

    2.4. Load Maps

    Before using TeleGPS, you can use Load Maps to load map data in case you don't have access to the internet while receiving telemetry. @@ -413,7 +413,7 @@ NAR once, so if you load more than one launch site, you may get some gray areas in the map which indicate that Google is tired of sending data to you. Try again later. -

    2.5. Preferences

    2.5.1. Voice Settings

    +

    2.5. Preferences

    2.5.1. Voice Settings

    AltosUI provides voice announcements during flight so that you can keep your eyes on the sky and still get information about the current flight status. However, sometimes you don't want @@ -422,7 +422,7 @@ NAR Plays a short message allowing you to verify that the audio system is working and the volume settings are reasonable -

    2.5.2. Log Directory

    +

    2.5.2. Log Directory

    AltosUI logs all telemetry data and saves all TeleMetrum flash data to this directory. This directory is also used as the staring point when selecting data files for display or export. @@ -430,7 +430,7 @@ NAR Click on the directory name to bring up a directory choosing dialog, select a new directory and click 'Select Directory' to change where AltosUI reads and writes data files. -

    2.5.3. Callsign

    +

    2.5.3. Callsign

    This value is transmitted in each command packet sent from TeleDongle and received from an altimeter. It is not used in telemetry mode, as the callsign configured in the altimeter board @@ -443,51 +443,51 @@ NAR the callsign configured here must exactly match the callsign configured in the flight computer. This matching is case sensitive. -

    2.5.4. Imperial Units

    +

    2.5.4. Imperial Units

    This switches between metric units (meters) and imperial units (feet and miles). This affects the display of values use during flight monitoring, configuration, data graphing and all of the voice announcements. It does not change the units used when exporting to CSV files, those are always produced in metric units. -

    2.5.5. Serial Debug

    +

    2.5.5. Serial Debug

    This causes all communication with a connected device to be dumped to the console from which AltosUI was started. If you've started it from an icon or menu entry, the output will simply be discarded. This mode can be useful to debug various serial communication issues. -

    2.5.6. Font Size

    +

    2.5.6. Font Size

    Selects the set of fonts used in the flight monitor window. Choose between the small, medium and large sets. -

    2.5.7. Look & Feel

    +

    2.5.7. Look & Feel

    Adjust the style of the windows. By default, the TeleGPS application attempts to blend in with the native style. -

    2.5.8. Manage Frequencies

    +

    2.5.8. Manage Frequencies

    This brings up a dialog where you can configure the set of frequencies shown in the various frequency menus. You can add as many as you like, or even reconfigure the default set. Changing this list does not affect the frequency settings of any devices, it only changes the set of frequencies shown in the menus. -

    2.6. Close

    +

    2.6. Close

    This closes the current window, leaving any other windows open and the application running. -

    2.7. Exit

    +

    2.7. Exit

    This closes all TeleGPS windows and terminates the application. -

    2.8. Connect Device

    +

    2.8. Connect Device

    Selecting this item brings up a dialog box listing all of the connected TeleDongle devices. When you choose one of these, AltosUI will display telemetry data as received by the selected TeleDongle device. -

    2.9. Disconnect

    +

    2.9. Disconnect

    Disconnects the currently connected TeleDongle or TeleBT -

    2.10. Scan Channels

    +

    2.10. Scan Channels

    Scans the configured set of frequencies looking for telemetry signals. A list of all of the discovered signals is show; selecting one of those and clicking on 'Monitor' will select that frequency in the associated TeleGPS application window. -

    2.11. Download Data

    +

    2.11. Download Data

    TeleGPS records data to its internal flash memory. On-board data is recorded at the same rate as telemetry but is not subject to radio drop-outs. As @@ -508,7 +508,7 @@ NAR The file name for each data log is computed automatically from the recorded date, altimeter serial number and flight number information. -

    2.12. Configure Device

    +

    2.12. Configure Device

    Select this button and then select any connected TeleGPS device from the list provided.

    @@ -534,13 +534,13 @@ NAR lost.

    The rest of the dialog contains the parameters to be configured. -

    2.12.1. Frequency

    +

    2.12.1. Frequency

    This configures which of the frequencies to use for both telemetry and packet command mode. Note that if you set this value via packet command mode, the TeleDongle frequency will also be automatically reconfigured to match so that communication will continue afterwards. -

    2.12.2. RF Calibration

    +

    2.12.2. RF Calibration

    The radios in every Altus Metrum device are calibrated at the factory to ensure that they transmit and receive on the specified frequency. If you need to you can adjust the calibration @@ -548,11 +548,11 @@ NAR the value means, read the appendix on calibration and/or the source code for more information. To change a TeleDongle's calibration, you must reprogram the unit completely. -

    2.12.3. Telemetry/RDF/APRS Enable

    +

    2.12.3. Telemetry/RDF/APRS Enable

    Enables the radio for transmission during flight. When disabled, the radio will not transmit anything during flight at all. -

    2.12.4. APRS Interval

    +

    2.12.4. APRS Interval

    How often to transmit GPS information via APRS (in seconds). When set to zero, APRS transmission is disabled. This option is available on TeleMetrum v2 and @@ -560,26 +560,26 @@ NAR packets. Note that a single APRS packet takes nearly a full second to transmit, so enabling this option will prevent sending any other telemetry during that time. -

    2.12.5. Callsign

    +

    2.12.5. Callsign

    This sets the call sign included in each telemetry packet. Set this as needed to conform to your local radio regulations. -

    2.12.6. Maximum Log Size

    +

    2.12.6. Maximum Log Size

    This sets the space (in kilobytes) allocated for each data log. The available space will be divided into chunks of this size. A smaller value will allow more logs to be stored, a larger value will record data for longer times. -

    2.12.7. Logging Trigger Motion

    +

    2.12.7. Logging Trigger Motion

    If TeleGPS moves less than this distance over a long period of time, it will not log that location, saving storage space. -

    2.12.8. Position Reporting Interval

    +

    2.12.8. Position Reporting Interval

    This sets how often TeleGPS reports position information via telemetry and to the on-board log. Reducing this value will save power and logging memory consumption. -

    2.13. Flash Device

    +

    2.13. Flash Device

    This reprograms TeleGPS devices with new firmware. Please read the directions for flashing devices in the Updating Device Firmware chapter below. -

    Chapter 6. Updating Device Firmware

    Table of Contents

    1. +

    Chapter 6. Updating Device Firmware

    TeleGPS is programmed directly over its USB connectors. @@ -591,7 +591,7 @@ NAR so you don't need to update your devices just to try out new software features. You can always download the most recent version from http://www.altusmetrum.org/AltOS/. -

    1.  +

    1.  Updating TeleGPS Firmware

    1. Attach a battery and power switch to the target @@ -618,24 +618,24 @@ NAR

    2. Verify that the device is working by using the 'Configure Altimeter' item to check over the configuration. -

    Chapter 7. Technical Information

    1. GPS Receiver

    TeleGPS uses the u-Blox Max-7Q GPS receiver. -

    2. Micro-controller

    +

    2. Micro-controller

    TeleGPS uses an NXP LPC11U14 micro-controller. This tiny CPU contains 32kB of flash for the application and 4kB of RAM for temporary data storage. -

    3. Lithium Polymer Battery

    +

    3. Lithium Polymer Battery

    Shipping restrictions may prevent us from including a battery battery with TeleGPS. -

    4. Mechanical Considerations

    +

    4. Mechanical Considerations

    TeleGPS is designed to be rugged enough for typical rocketry applications. The 4 mounting holes on the board are sized for use with 4-40 or M3 screws. -

    5. On-board data storage

    +

    5. On-board data storage

    TeleGPS has 2MB of non-volatile storage, separate from the code storage memory. The TeleGPS firmware uses this to log information during flight. -

    Appendix A. Release Notes

    Version 1.41

    +

    Appendix A. Release Notes

    Version 1.41

    Version 1.4.1 is a minor release. It fixes install issues on Windows and provides the missing TeleMetrum V2.0 firmware. There aren't any changes to the firmware or host applications at @@ -666,7 +666,7 @@ NAR release didn't have this key in the released version of the software, making map downloading fail for most people.

    -

    Version 1.4

    +

    Version 1.4

    Version 1.4 is a major release. It includes support for our new TeleGPS product, new features and bug fixes in in the flight software for all our boards and the AltosUI ground station diff --git a/AltOS/doc/telegps.pdf b/AltOS/doc/telegps.pdf index fb5d50e71edf73557ec4b769c0b12f48b036a4fe..26703dc7412912dc933848e6639074dfd57b6af9 100644 GIT binary patch delta 4214 zcmai%O>9*~6vy)r5L&+40;MhJLq&mU>CD`@cV>t&7APUc$O3l+q>041&}dYQ(H#p- z1OhQS(UnNhn7GiG*cj3U8?m(5mhxzU7UD{x7~|Rn{_mXo)i)+4oP_`B`Moo9=FFM* zhTXTd3$W9(%dLon6p2*d{rcI8m9|er&kMOzBs-=0{)3fCZK3Ounn*-SU0Q( zwh^`o_7Lo0SRJ+*_6Y1z*kiCQu*YFfz_!A+!L|<{Sj{f~AZ22Oh^*XJ-}>^4uNCT0 zz5ltPSB}0>Ke)hMmqxq&Ke0Zp68uv{DVeE-RN<}*E!;Om37zLk|Lj#rQIOEe{XNP$ z+{R0+8`&bGvt_2JS0PG4LTf_b0m@Vo^EfHj>Q#uQZZ~v^ZE)8?ZC43$RCef9NWtw! zF0n2b{p?q%jWJ~^uR@4|gh^7Hc*KiLnQDf}?e2}@6ox>x!(nx? zwN$yayCX%Tp^D4wBNF>I+H_rNYM7TjR zuXvQHCMtK=g*!6C*1A8&(Zx|DWqH843dk%-C@1D|1pBVA?p_rqTo-4Mt0pvayOUF_ z)13##W0Oc*Oom)FVY$05EgkxzUsBYfSe$2fE?3QH9weo^IEKZ(0JJwTQG)emXs(*j z%Z3(5q&Y+)i9Ub&gH29%dt+ z6thofDxiFjJC#z?p!#hT**Nb|P+o-;1xZea$R}}+Y@}6Xm83$Ff~4TI!Bdm0yWgTT z#T3(-3eYS_3OdK%k+j_^8yE8yq>bI{XsadO?`jj6Bm1T>v24t3ab0z$f(&VpJDfu2 z0dW*U7Eb^muR@4|q%rQVDNF_%C*@=S~pOD+C~dE4K>%{kXd?;9Gdm?%0^!N>a`ccOv% z)UM;HvNjTx28POZn)zkqPB$=O4QX%kg^S;QxK6|xkBw7z|Qyh&-bDW)h;uR@f9B5o*c=Plnw zcnFh9ZM_QF)a~xyM3LSEhSS9AD_uk?z_K72(`ioL!VLo|Wfk=*L@5ZUuW#R+-)Mwi zH05GRg(wBdINRulbF8b~a21&ft0Fgbg>|eb{4x=)F~@q*Zt3kVZwRR%i+8)pIh15@ z-d9rT@<$Xt#H$cX-L7vQ*cZUiGb$Ze#Wf}sViY7bclYL5Z=2z9dXEbX(;G9awQx&K zPx!&xzHTvo>XkQvRFESJk~(o;-e#;1MTnznbC3$TG{~L3jV*QDVH?&LzgGQk*Zfn4 zpT5KRGN=AwYq~UkrABoOFwX0*)?54}!yAcjET8_y-mWFXZFkx6&YBti_&$57bzRaN zs&SWHTWjymT?%i`Ze!$NWcCj3)pB50ynD|8-=hWw2a-YcRQ<{5e?r{J*51v_6W+3A K%i#XKE&l>Fn}YNJ delta 4257 zcmai%%Wqai7{>F7B2X?uDbN<=Lq&np(z%_PImDQN1&uMXz@1iX)EE~U6JqeTW1%rf zASO&SaY59$(1pgtMiC<}m zSFI7m-t)7yP(tur$*+I=Xzo1SFVvGlY~c9@CBJ!ho^DMY`e1baTT@4NZCmipwgoN3 zZHO6&+YxslW+LuH%tFjY%t3S@<|5`H<|90N7h)k|5uy{Z7}14Tf>?@JhUiB0AbJtY z5i1aPBUU2Xh*gMt5ceYPL##&Jk9YvF2C){gZe-hn?D)5sFE6ZOY;AkZOV7VrsiF43 z6T>gRu%rFdl;Jiv+-?0O>u0zu86eJtsAowkf&8%B~~m}IK)gi)mwnYhl~&!Z@b zWJWe~1(i}{!hUfpPh@?IBxl%g<=*ki9hk^E=T_rfN%!^%RDg3{u(Bm&RMY-{9CrL9 z=5q5y*4<|ex2js-Qcc6+u-iVCEp?BcL{GD!FR%vII+K!ZwAG6^o-;W4m>z^*e&=2cZq zR0--$ZeSdHre`cb%1RNpG@zhT2*Yl-hjs#DMrmI42cV!*h)lv-|B(FyCTFaXic~^H zldx{zc(&N_Q&|s4*<1!vDM=<#P(9y2mG!POxlz^OW1>n)m|SZN)4LJUX`bhGO-LnB zG~w7fJc=cFWIXH5jF!65p`=pMo7|q0=+I9=F{3qaG$^T*A`^})_t!W!snJIB@)*Ic z4=Sa|Bt-5WKaH*D`@gXWq!KC&yVeA@-Vdj7_@Hu1)eTK5rM$^KaA#^ zN~mZOMed%P@bj{wxywnV6qy7H`4dsfRHry{1(i}{5`}Rq&V*bV?OAod4JxI`Bns=^ z1eFr(1tM>*+HV@2u*IP^ttCCO3W_6Wx8@zv?V*uk{fW zRf>6&TYmuu$#rD&TZcE!gs2iMn$Tn6Rk!(qfALu1uTSMNMwOyuk}P+_moUjsE`-|R z<;klJfgS5r%92Sk9oYRB3C(f2uhRyVqGZCogwhUyU4%z&+&8@P_l?CfY1rMmh-!Wh zqc4li>kS)KnuJU!OIW`pmqJDTMXYWcQVAMOIAp`SU79QYlL&ky|Ru`pcnrlvJi(4N?gkhTW;l=$-d2hfY;fQj$tBZ*u)tP}}Rs*6B}L zRo!NTa^q6&J8%_KdirW8Ag+t`S!hY6m^Zn9J@y^G4djY5e0Ze!m0~JYj<$t0ZpO7N z>#9D^h7Y&#?<0fPGB#_iYBT@Uex*GJKY(Z^i)2h-JAM3nwzDNhx~^xtmbTQ$hqtm9 zJG$g_s}bC|u8zJ9o3xU}AlHRZgXmJrH*YKy+r;(8!Ht7v)58z7AC&)Nar-*@R?W`! MoYkv0Z{0HIKT3v*`Tzg` diff --git a/AltOS/doc/telemega-outline.pdf b/AltOS/doc/telemega-outline.pdf index 11d5ba0e117eb3454ab66e283649f2e97752b8b9..19d8be4fa2d5e380fd1c1b2f88fcafd143f5366d 100644 GIT binary patch delta 224 zcmexp_R(y@MovpZV?!fDGh>U5yHa>~Ep-izLkx|q49%>JEjDZOnlYjZP0r)1MiH^x z{Ee@XUB|%4%*@EbLQ_E_Go`>7#*05maCMFi9&c=>Lu67DGgp^G7mR17*?VC9b delta 224 zcmexp_R(y@Mou#$6C)!-Q&Y2zyHa>~&2)`SLX3>83{9;}%{FWEnlYjZP0r)1MiDXJ z{Ee@XUB}qa!r0KrKvO{@Go`>7#*0JO*iZFnlYjZO)lcAMitro zi|;7Aj)A3_si~QTrh-OhN`Wbi7ptJ}mzbMctPqVXJo&Ylz9>uyiiXYl;)*QJE@tK? q1{M}(E-of6hNeyi=B6eFPUaTQmPUpaZWe~-b_zCxluVv1tp)&*2{;G< delta 224 zcmdmKzSDfdW==CB6C)!-Q&Z!Od(wD#&2)`SLX3>83{9;}jW_G_nlYjZO)lcAMitro zi|;7AjuyiiXYl;)*QJhK_C~ q7S3kouCC4|j;_XLCPv1VmPY1Ij;;nKP8OCXb_zCxluVv1tp)&}IXH6w diff --git a/AltOS/doc/telemetry.html b/AltOS/doc/telemetry.html index 894ce92..7dc82f9 100644 --- a/AltOS/doc/telemetry.html +++ b/AltOS/doc/telemetry.html @@ -1,10 +1,10 @@ -AltOS Telemetry

    AltOS Telemetry

    Packet Definitions

    Keith Packard

    +AltOS Telemetry

    AltOS Telemetry

    Packet Definitions

    Keith Packard

    This document is released under the terms of the Creative Commons ShareAlike 3.0 license. -

    Revision History
    Revision 0.101 July 2011
    Initial content

    1. Packet Format Design

    +

    Revision History
    Revision 0.101 July 2011
    Initial content

    1. Packet Format Design

    AltOS telemetry data is split into multiple different packets, all the same size, but each includs an identifier so that the ground station can distinguish among different types. A single @@ -22,14 +22,14 @@ All packet types start with a five byte header which encodes the device serial number, device clock value and the packet type. The remaining 27 bytes encode type-specific data. -

    2. Packet Formats

    +

    2. Packet Formats

    This section first defines the packet header common to all packets and then the per-packet data layout. -

    2.1. Packet Header

    Table 1. Telemetry Packet Header

    OffsetData TypeNameDescription
    0uint16_tserialDevice serial Number
    2uint16_ttickDevice time in 100ths of a second
    4uint8_ttypePacket type
    5   

    +

    2.1. Packet Header

    Table 1. Telemetry Packet Header

    OffsetData TypeNameDescription
    0uint16_tserialDevice serial Number
    2uint16_ttickDevice time in 100ths of a second
    4uint8_ttypePacket type
    5   

    Each packet starts with these five bytes which serve to identify which device has transmitted the packet, when it was transmitted and what the rest of the packet contains. -

    2.2. Sensor Data

    TypeDescription
    0x01TeleMetrum Sensor Data
    0x02TeleMini Sensor Data
    0x03TeleNano Sensor Data

    +

    2.2. Sensor Data

    TypeDescription
    0x01TeleMetrum Sensor Data
    0x02TeleMini Sensor Data
    0x03TeleNano Sensor Data

    TeleMetrum, TeleMini and TeleNano share this same packet format for sensor data. Each uses a distinct packet type so that the receiver knows which data values are valid and which @@ -38,63 +38,63 @@ Sensor Data packets are transmitted once per second on the ground, 10 times per second during ascent and once per second during descent and landing -

    Table 2. Sensor Packet Contents

    OffsetData TypeNameDescription
    5uint8_tstateFlight state
    6int16_taccelaccelerometer (TM only)
    8int16_tprespressure sensor
    10int16_ttemptemperature sensor
    12int16_tv_battbattery voltage
    14int16_tsense_ddrogue continuity sense (TM/Tm)
    16int16_tsense_mmain continuity sense (TM/Tm)
    18int16_taccelerationm/s² * 16
    20int16_tspeedm/s * 16
    22int16_theightm
    24int16_tground_presAverage barometer reading on ground
    26int16_tground_accelTM
    28int16_taccel_plus_gTM
    30int16_taccel_minus_gTM
    32   

    2.3. Configuration Data

    TypeDescription
    0x04Configuration Data

    +

    Table 2. Sensor Packet Contents

    OffsetData TypeNameDescription
    5uint8_tstateFlight state
    6int16_taccelaccelerometer (TM only)
    8int16_tprespressure sensor
    10int16_ttemptemperature sensor
    12int16_tv_battbattery voltage
    14int16_tsense_ddrogue continuity sense (TM/Tm)
    16int16_tsense_mmain continuity sense (TM/Tm)
    18int16_taccelerationm/s² * 16
    20int16_tspeedm/s * 16
    22int16_theightm
    24int16_tground_presAverage barometer reading on ground
    26int16_tground_accelTM
    28int16_taccel_plus_gTM
    30int16_taccel_minus_gTM
    32   

    2.3. Configuration Data

    TypeDescription
    0x04Configuration Data

    This provides a description of the software installed on the flight computer as well as any user-specified configuration data.

    Configuration data packets are transmitted once per second during all phases of the flight -

    Table 3. Sensor Packet Contents

    OffsetData TypeNameDescription
    5uint8_ttypeDevice type
    6uint16_tflightFlight number
    8uint8_tconfig_majorConfig major version
    9uint8_tconfig_minorConfig minor version
    10uint16_tapogee_delayApogee deploy delay in seconds
    12uint16_tmain_deployMain deploy alt in meters
    14uint16_tflight_log_maxMaximum flight log size (kB)
    16charcallsign[8]Radio operator identifier
    24charversion[8]Software version identifier
    32   

    2.4. GPS Location

    TypeDescription
    0x05GPS Location

    +

    Table 3. Sensor Packet Contents

    OffsetData TypeNameDescription
    5uint8_ttypeDevice type
    6uint16_tflightFlight number
    8uint8_tconfig_majorConfig major version
    9uint8_tconfig_minorConfig minor version
    10uint16_tapogee_delayApogee deploy delay in seconds
    12uint16_tmain_deployMain deploy alt in meters
    14uint16_tflight_log_maxMaximum flight log size (kB)
    16charcallsign[8]Radio operator identifier
    24charversion[8]Software version identifier
    32   

    2.4. GPS Location

    TypeDescription
    0x05GPS Location

    This packet provides all of the information available from the Venus SkyTraq GPS receiver—position, time, speed and precision estimates.

    GPS Location packets are transmitted once per second during all phases of the flight -

    Table 4. GPS Location Packet Contents

    OffsetData TypeNameDescription
    5uint8_tflagsSee GPS Flags table below
    6int16_taltitudem
    8int32_tlatitudedegrees * 107
    12int32_tlongitudedegrees * 107
    16uint8_tyear 
    17uint8_tmonth 
    18uint8_tday 
    19uint8_thour 
    20uint8_tminute 
    21uint8_tsecond 
    22uint8_tpdop* 5
    23uint8_thdop* 5
    24uint8_tvdop* 5
    25uint8_tmodeSee GPS Mode table below
    26uint16_tground_speedcm/s
    28int16_tclimb_ratecm/s
    30uint8_tcourse/ 2
    31uint8_tunused[1] 
    32   

    +

    Table 4. GPS Location Packet Contents

    OffsetData TypeNameDescription
    5uint8_tflagsSee GPS Flags table below
    6int16_taltitudem
    8int32_tlatitudedegrees * 107
    12int32_tlongitudedegrees * 107
    16uint8_tyear 
    17uint8_tmonth 
    18uint8_tday 
    19uint8_thour 
    20uint8_tminute 
    21uint8_tsecond 
    22uint8_tpdop* 5
    23uint8_thdop* 5
    24uint8_tvdop* 5
    25uint8_tmodeSee GPS Mode table below
    26uint16_tground_speedcm/s
    28int16_tclimb_ratecm/s
    30uint8_tcourse/ 2
    31uint8_tunused[1] 
    32   

    Packed into a one byte field are status flags and the count of satellites used to compute the position fix. Note that this number may be lower than the number of satellites being tracked; the receiver will not use information from satellites with weak signals or which are close enough to the horizon to have significantly degraded position accuracy. -

    Table 5. GPS Flags

    BitsNameDescription
    0-3nsatsNumber of satellites in solution
    4validGPS solution is valid
    5runningGPS receiver is operational
    6date_validReported date is valid
    7course_validground speed, course and climb rates are valid

    +

    Table 5. GPS Flags

    BitsNameDescription
    0-3nsatsNumber of satellites in solution
    4validGPS solution is valid
    5runningGPS receiver is operational
    6date_validReported date is valid
    7course_validground speed, course and climb rates are valid

    Here are all of the valid GPS operational modes. Altus Metrum products will only ever report 'N' (not valid), 'A' (Autonomous) modes or 'E' (Estimated). The remaining modes are either testing modes or require additional data. -

    Table 6. GPS Mode

    ModeNameDecsription
    NNot ValidAll data are invalid
    AAutonomous modeData are derived from satellite data
    DDifferential Mode +

    Table 6. GPS Mode

    ModeNameDecsription
    NNot ValidAll data are invalid
    AAutonomous modeData are derived from satellite data
    DDifferential Mode Data are augmented with differential data from a known ground station. The SkyTraq unit in TeleMetrum does not support this mode
    EEstimated Data are estimated using dead reckoning from the last known data -
    MManualData were entered manually
    SSimulatedGPS receiver testing mode

    2.5. GPS Satellite Data

    TypeDescription
    0x06GPS Satellite Data

    +

    MManualData were entered manually
    SSimulatedGPS receiver testing mode

    2.5. GPS Satellite Data

    TypeDescription
    0x06GPS Satellite Data

    This packet provides space vehicle identifiers and signal quality information in the form of a C/N1 number for up to 12 satellites. The order of the svids is not specified.

    GPS Satellite data are transmitted once per second during all phases of the flight. -

    Table 7. GPS Satellite Data Contents

    OffsetData TypeNameDescription
    5uint8_tchannelsNumber of reported satellite information
    6sat_info_tsats[12]See Per-Satellite data table below
    30uint8_tunused[2] 
    32   

    Table 8. GPS Per-Satellite data (sat_info_t)

    OffsetData TypeNameDescription
    0uint8_tsvidSpace Vehicle Identifier
    1uint8_tc_n_1C/N1 signal quality indicator
    2   

    3. Data Transmission

    +

    Table 7. GPS Satellite Data Contents

    OffsetData TypeNameDescription
    5uint8_tchannelsNumber of reported satellite information
    6sat_info_tsats[12]See Per-Satellite data table below
    30uint8_tunused[2] 
    32   

    Table 8. GPS Per-Satellite data (sat_info_t)

    OffsetData TypeNameDescription
    0uint8_tsvidSpace Vehicle Identifier
    1uint8_tc_n_1C/N1 signal quality indicator
    2   

    3. Data Transmission

    Altus Metrum devices use the Texas Instruments CC1111 microcontroller which includes an integrated sub-GHz digital transceiver. This transceiver is used to both transmit and receive the telemetry packets. This section discusses what modulation scheme is used and how this device is configured. -

    3.1. Modulation Scheme

    +

    3.1. Modulation Scheme

    Texas Instruments provides a tool for computing modulation parameters given a desired modulation format and basic bit rate. For AltOS, the basic bit rate was specified as 38 kBaud, resulting in the following signal parmeters: -

    Table 9. Modulation Scheme

    ParameterValueDescription
    ModulationGFSKGaussian Frequency Shift Keying
    Deviation20.507812 kHzFrequency modulation
    Data rate38.360596 kBaudRaw bit rate
    RX Filter Bandwidth93.75 kHzReceiver Band pass filter bandwidth
    IF Frequency140.62 kHzReceiver intermediate frequency

    3.2. Error Correction

    +

    Table 9. Modulation Scheme

    ParameterValueDescription
    ModulationGFSKGaussian Frequency Shift Keying
    Deviation20.507812 kHzFrequency modulation
    Data rate38.360596 kBaudRaw bit rate
    RX Filter Bandwidth93.75 kHzReceiver Band pass filter bandwidth
    IF Frequency140.62 kHzReceiver intermediate frequency

    3.2. Error Correction

    The cc1111 provides forward error correction in hardware, which AltOS uses to improve reception of weak signals. The overall effect of this is to halve the available bandwidth for data from 38 kBaud to 19 kBaud. -

    Table 10. Error Correction

    ParameterValueDescription
    Error CorrectionConvolutional coding1/2 rate, constraint length m=4
    Interleaving4 x 4Reduce effect of noise burst
    Data WhiteningXOR with 9-bit PNRRotate right with bit 8 = bit 0 xor bit 5, initial - value 111111111

    4. TeleDongle packet format

    +

    Table 10. Error Correction

    ParameterValueDescription
    Error CorrectionConvolutional coding1/2 rate, constraint length m=4
    Interleaving4 x 4Reduce effect of noise burst
    Data WhiteningXOR with 9-bit PNRRotate right with bit 8 = bit 0 xor bit 5, initial + value 111111111

    4. TeleDongle packet format

    TeleDongle does not do any interpretation of the packet data, instead it is configured to receive packets of a specified length (32 bytes in this case). For each received packet, @@ -106,9 +106,9 @@ the packet data, two bytes added by the cc1111 radio receiver hardware and finally a checksum so that the host software can validate that the line was transmitted without any errors. -

    Table 11. Packet Format

    OffsetNameExampleDescription
    0length22Total length of data bytes in the line. Note that +

    Table 11. Packet Format

    OffsetNameExampleDescription
    0length22Total length of data bytes in the line. Note that this includes the added RSSI and status bytes
    1 ·· length-3packet4f ·· 00Bytes of actual packet data
    length-2rssi3fReceived signal strength. dBm = rssi / 2 - 74
    length-1lqia9Link Quality Indicator and CRC status. Bit 7 - is set when the CRC is correct
    lengthchecksum88(0x5a + sum(bytes 1 ·· length-1)) % 256

    5. History and Motivation

    + is set when the CRC is correct

    lengthchecksum88(0x5a + sum(bytes 1 ·· length-1)) % 256

    5. History and Motivation

    The original AltoOS telemetry mechanism encoded everything available piece of information on the TeleMetrum hardware into a single unified packet. Initially, the packets contained very diff --git a/AltOS/doc/telemetry.pdf b/AltOS/doc/telemetry.pdf index 9d95bc20918dd9cbc1c2bf7394e5236328e227cb..b7e0e7de0556d2d8942d5d2207b21690bf0d869d 100644 GIT binary patch delta 842 zcmaiyze>YU6o;{!(ArHM11^;kl5_v3iePH$<|H_%gQ$auP;eCS0ZP-Bvn%Kml+4|P zF0MX>kKkf*Z*JNqgX8zRzmI$F;SOfC!K^m^S`UB%0Rd$C9oHLy3-lC72Sf)*(r<{h z)d-V~r`06cYtElt#sW!rKz5zh-A%usOUFC8dboXb&X;5KhMp^Y$*2HfjDl7T8{=EN zh3~`dbWTP&S1h+Il`I=ORN>FCtu4i+y(>M|RJBZr5j>8K706{vQ`Ish#_=O=yF&O( zapC6^S}Iw2jK6WZ3E?XSc6S9;3|+#rk=GXK8YB^R3zo`8R>J8B(i=eWpxBzFN?(_- zInHJRCF$Z7IaQ6Ug!kGYK9!4Ceb|UBZ`% ww^{r|{V%Pbd`>Rv-H;MLqQHIGWnmZ{F(o2Uy^sppW9pC`IQ#!q@cOm&2cBW&(ArHp23#s_$>r|y-dz=;4RLf51pf@84kALqQN#~Wnzp=qmwtkh zxtq|%)lcC^a51^$&bBu=WO#o0J>1=!%Wzp4E-RDIU7(!OAY^3ml~ilcq5PcEZV+}E zNe4C9*^DsVd)-XZqx$Nt6AA`Y0Xg)VkM{#hH=ciX`~2|YU9HFHk9;DSltOS`7?w5- z8+#0sQ9H<3WhPjuAV(@ooZ|PW)y}Ozty`L0D~oZKH1INM1VVr$*;6iMXiGA&$0g2_ zR!7K?1WeJ=GPGrtG5#ceZZNQuv*Z}MgcoDKB_vQP!A#E3wvm@`F%Gg7fQLZJZ)3^n z>k`%{`JRA-5@yVXTq7^xQ(*w(#7s*uS^!tQX5jfS@c2DeuRUMd~yTRh<74{S)u_zY5;Xn!gkS B-y#42 -- 2.30.2