Howto:Build your own Panel or Cockpit - Cockpit Systems and Hardware

From FlightGear wiki
Jump to navigation Jump to search
Return to Build your own Panel or Cockpit


WIP.png Work in progress
This article or section will be worked on in the upcoming hours or days.
See history for the latest developments.

Overview

There are five levels of hardware and software activity needed for a cockpit. Levels 1-4 may include software. The levels provide a model for thinking about how to structure the hardware and software of the cockpit. This model does not necessarily mean that the work done at a given level must run on a physically separate platforms.

Level What's there Why
Simulator Software
  • Flightgear
  • X-Plane
  • Prepare3D
Provides a model of the airplane, it's controls, its visual aspects, its motion and its environment. Simulator Software communicates with external hardware through one or more interfaces.
Cockpit System Provides services to support data flowing between the cockpit's Low Level Hardware and the Simulator's Software. Within the cockpit, this level can directly drive lower level hardware or can work through controllers and/or drivers. It is better though to leave the details of specific hardware to Controllers and Drivers
  • Raspberry Pi
  • BeagleBone
  • PC
Through the Simulator Software's external interface, the cockpit system provides user inputs from cockpit controls, radios and instruments. At the same time, the system obtains model data to drive physical display canges in the cockpit.
Controllers
  • Controllers provide additional hardware interface functions
  • Communicate directly with Low Level Hardware or through a Driver
  • Communicate directly with the processor providing Cockpit Data Processing and Communication
  • Controllers are usually dedicated to one specific type of hardware
Controllers provide a means to off-load needed work from the cockpit system. There are several reasons to use a controller and there may be several of them.

Controllers can be implemented as a separate hardware layer, or can be software running on the same hardware as the cockpit system.

Reasons:

  • Reduces complexity of the Cockpit System
  • Not enough I/O pins
  • Not enough time for the System to do all the work needed


A cockpit may contain several controllers.

Hardware Driver Circuits Specialized chips or circuits for one specific type of hardware
  • Analog to Digital Converters (ADC)
  • Digital to Analog Converters (DAC)
  • MCP23xxx Multiplexers
  • MAXIM LED segment drivers
  • Various PIC Processors
  • H Bridge Circuits
  • Amplifiers
Hardware driver circuits provide specialized interfaces between controllers and physical hardware components.

In some cases the interface is integrated with the hardware the controller is running on.

Low Level Hardware Switches, Displays, Rheostats, Encoders, Meters, Dials

Low level hardware can work through each of the above levels or can attach directly to any of them

PC

The personal computer running the Simulator Software provides interfaces we can use in a cockpit.

The basic idea is that the Simulator Software will communicate with hardware outside the PC itself. Various protocols and transport mechanisms are possible. Protocols can include Human Interface Device (HID) as used by commercial Joysticks, Yokes and Pedals. They may include internet protocols such as Transmission Control Protocol(TCP) or User Defined Packets (UDP). The data may be transported over USB, Ethernet or older connection types such as Serial or Parallel ports.

There is nothing limiting cockpit data to a single protocol or a single connection. You may want to use the usual joystick model over USB for the Yoke and Pedals, and a UDP or TCP connection over Ethernet for everything else. Some simulator software may support more than one connection via Ethernet.

Cockpit Systems

Raspberry Pi
Beaglebone

Controllers

Arduino, ATMega, PIC and STM microprocessors can be used to process multiple events from a lower level circuits or piece of hardware in order to present the cockpit system with a single piece of data. Offloading processing from the Cockpit system to controllers reduces complexity and allows the cockpit system to manage data in a timely manner. In some cases there may be a need to use a lower level controller to manage some aspect of the hardware.

Controllers can communicate with Low Level Driver Circuits or directly with the low level hardware.

Raspberry Pi - Arduino Communication

https://oscarliang.com/raspberry-pi-arduino-connected-i2c/
https://oscarliang.com/connect-raspberry-pi-and-arduino-usb-cable/
https://oscarliang.com/raspberry-pi-and-arduino-connected-serial-gpio/
https://oscarliang.com/arduino-timer-and-interrupt-tutorial/

Low Level Driver Circuits

Arduino, PIC or STM

Low level drivers might need to handle functions that a controller cannot perform itself, perhaps due to time or pin constraints. An additional processor can handle these functions, passing summarized data back to the main controller.

Microchip MCP23xxx Multiplexers

Multiplexers provide a way to provide more gpio inputs and outputs. There are three main ways to connect them: SPI, I2c or a small set of IO pins.

MAXIM LED segment drivers

Maxim's line of LED driver chips provide an easy way to drive 7, 14 or 16 segment displays. They are available as a set of modules that can be chained together to provide a significant number of digits or characters through an SPI or I2C interface.

Stepper Motor Drivers

There are several chips available that can drive small stepper motors. These can also be driven directly from gpio pins. One chip, the [| ADAFRUIT TB6612 1.2A DC/STEPPER MOTOR DRIVER BREAKOUT BOARD]

H Bridge Circuits

H Bridge circuits can control Stepper Motors or Air Cores. They can provide more power than can be obtained from a driver chip.

Analog to Digital Converters (ADC)

Small boards providing 4 ADC Channels of either 8 or 16 bit resolutions are available with I2C interfaces

Digital to Analog Converters (DAC)
Pulse Width Modulation Drivers

Small boards providing 16 PWM channels are available with I2C Interfaces.