Skip to content
Sergey A. Kilimnik edited this page Mar 13, 2015 · 16 revisions

Project description

This project is using Cortex M4 STM32F429 Discovery board from STMicroelectronics. So the minimal setup is the board and any PC compatible joystick. And, for sure, some time to create your personal configuration.

The full list of required hardware can be found on [hardware] page.

###Project structure

The software part of the project consists of 4 parts:

  • Board firmware. This is primary code of the project, this part can be downloaded from link on main page

  • GUI Configuration application. This is PC software for Windows (requires .Net 4.0)

  • Configuration (or program). This is your personal configuration for your aircrafts and joysticks. This part is prepared inside GUI Configuration application.

  • Variables and constants. The list of variables or constants used by program. For example you can define the Delta mixer as part of your configuration, and the % of aileron efficiency will be the constant for this mixer.

Some additional words about Configuration and Variables. The configuration is static part of your program. You can change it only using GUI Application from your PC. But variables and constants can be changed on the fly using internal board GUI without connecting to the PC.

###Configuration (program) structure

  • The configuration consists of list of the models.

  • The model is the part of program corresponding to your aircraft-joystick pair. (if you want to fly same A/C using different joysticks you are to create different models)

  • The model consists of several configuration blocks connected with the links

  • Every block is the minimal logical unit, chick makes one conversion of data

  • Every block has links

  • Links can be input or output, block takes values from input links, makes calculations and puts data into output links

  • There are 3 types of links :

    • Axis (blue links and connections)
    • Value (teal links and connections)
    • Button (red links and connections)
  • Link can be connected by following rules :

    Input link of block can be connected only output link of other block

    Link can be connected only to the link of same type

  • Any model should have one and only one Joystick block

  • Any model should have one PPM Output block or several PPM Mode output blocks

  • The internal resolution of axis is 1000. So axis value can be 0 .. 1000

  • The internal resolution of Value is signed 16bits. So it can be -32K to 32K.

  • The button can be "not pressed", "clicked" and "held"

  • The axis values from joystick as well as axis value to PPM are mapped automatically.

== Variables ==

Some of the block types have configuration constants. It can be exponent level for exponent block, servo traveling borders for PPM mapping block, aileron efficiency for delta mixer etc. All those constants can be marked as "EEPROM" stored variables. It constant marked as "EEPROM" stored it means that value of this constant can be changed from internal board GUI without the PC connected.

Also as "EEPROM" can be marked trimmer values. In this case those trimmers will be stored after every change and restored during next board start. If trimmer is not marked as "EEPROM" it means that it will be restored to default value on board restart (it can be useful for some trimmers, for example elevator trimmer)

There are some limitations about the stored values:

  • Stored value is always signed 16 bit integer
  • There are only 1024 slots for storing values
  • Since at this board we don't have the real EEPROM and writing values to the board flash, to prevent flash degradation the values are not been written immediately after the change. The firmware checks the variables every 2 minutes and makes the write if something was changed.

== The configuration example ==

You also can check the [simple_example example] configuration with full description as starting point.

Clone this wiki locally