Projects/FlightSimHardware

From Leeds Hackspace Wiki
Jump to navigation Jump to search

Intro

I've been working on FlightGear, an open source flight simulator for a number of years, getting back into electronics, and seeing the vast prices charged for some simulator hardware I decided there had to be a cheaper way, and set about designing my own. The components will be based around Atmel AVR hardware, and I'm hoping to build modules for the radio stack, transponder, warning panels, and probably more. I may get around to building gauges eventually too, though that will require a suitable source of mechanical parts (maybe they could be printed on a reprap...)

Modules

Comm/Nav Radio

A dual purpose module for use as a communications transciever or navigation receiver. An ATMega16 drives 12 digits of 7 segment display in 2 groups of 6, the groups are refreshed in parallel which helps with the refresh rate, 2 encoders allow the standby frequency to be updated (the final unit will have a dual concentric encoder as on the real thing - if anyone knows a source of these at a sensible price then please get in touch!) There'll be a push button to swap the active and standby frequencies too, but on this version that function is handled by pushing the right hand encoder. Communication with FlightGear is by a USB serial link provided by an FTDI cable, it just requires a protocol definition file, and an addition to the commandline or .fgfsrc file.

The protocol is currently extremely simple:

<?xml version="1.0"?>

<PropertyList>
 <comment>
  <![CDATA[
    This is the protocol definition for an ATMEGA16 based serial
    comm or nav panel.

    Usage:
    # fgfs --generic=serial,in,/dev/radios/CommNav0,9600,comm0
  ]]>
 </comment>

 <generic>

  <input>
   <line_separator>newline</line_separator>
   <var_separator>,</var_separator>

   <chunk>
    <name>comm0active</name>
    <type>float</type>
    <format>%03.3f</format>
    <node>/instrumentation/comm/frequencies/selected-mhz</node>
   </chunk>

   <chunk>
    <name>comm0standby</name>
    <type>float</type>
    <format>%03.3f</format>
    <node>/instrumentation/comm/frequencies/standby-mhz</node>
   </chunk>

  </input>

 </generic>

</PropertyList>

Transponder

Requires 4 single digit 7 segment displays, and 4 encoders, probably to be built with another ATMega16 as I have plenty spare, though it won't need all the IO pins.

Warning Panel

A really simple module, just a bunch of LEDs, a day/night select switch (adjust PWM to change LED brightness) and a test button. I may experiment with V-USB for this one, since the rest of the code should be pretty simple.