MKIV Master controller



1 x Arduino Leonardo
1 x FTDI232 USB-UART board
1 x 6x6x5mm tact button
4 x TJ8P8C sockets
4 x M3x30mm screw
2 x M3x40mm screw
4 x M3x6mm screw
6 x M3 nuts
ribbon cable


STL’s / Sources

Assembling manual

1. Solder reset button wires to a 6x6x5mm tact button.

2. Put the RST button into its socket in the controller box, fix with hot glue.

4. Put the Leonardo board into the box, fix with 4x M3x6mm screws.

5. Solder 4 4-wire cables to Ethernet sockets, add 5th 4 wire cable and make a cable tie (tie wires of the same color together and solder them). Cover ties with thermal shrink tube. Pin 1 is where the white-orange wire of an Ethernet cable will go.

6. Put sockets into their slot in the controller box.

7. Cut an 8-pin connector and solder wires as follows:

  • SOCKET PIN 1 (white-orange wire of Ethernet cable) -> 5V
  • SOCKET PIN 2 (orange wire of Ethernet cable) -> GND
  • RST BTN PIN 1 -> RST (polarity does not matter here)
  • RST BTN PIN 2 -> GND

Put a thermal shrink tube and some hot glue onto wires to fix them. Insert the header into the Leonardo board.

8. Solder a 2-pin connector to SDA and SCL wires and connect them to their sockets. SCL pin (Ethernet socket pin 3) is the closest one to RST button on the board.

  • SOCKET PIN 3 (white-green wire of Ethernet cable) -> SCL
  • SOCKET PIN 4 (blue wire of Ethernet cable) -> SDA

9. Flash the controller with the master controller firmware from simchair4_software repo and connect a peripheral to it to check if it works. Check every socket this way. If everything is fine, proceed.

10. Do some cable management and fix sockets with hot glue. Be careful not to pour glue onto lid screw holes. Don’t worry if this happens though, hot glue can be easily removed mechanically after it will dry.

11. Put 2 M3x40mm screws into their sockets, fix with nuts:

12. Put the lid onto the controller box and fix it with 4 M3x30 screws.

13. Put mounting brackets on and add nyloc nuts. The controller is finished!

USB – Ethernet cable for flashing peripherals

FTDI232 USB-UART board is used to flash most of MKIV peripherals. In fact, you can ofc use any other one, the only thing being if it does not have a DTR pin, you will need to press the reset button on the peripheral manually during flashing.

Note that some devices (like the compact head) still need to be flashed through their UART header, so solder wires to the back part of pins so you can still use jumper wires to connect the header to Pro Mini board.


13 Replies to “MKIV Master controller”

    1. FTDI232 board is used to flash Arduino Pro Mini boards. Every peripheral has a separate Pro Mini board in it, except for cyclic and pedals, they have 15-bit ADS1115 ADCs onboard.

        1. Pro Mini has no USB interface, thats why you need a USB-UART board to flash it. Leonardo and most of others is flashed through its USB port, yes. In MKIV, Rx,Tx and DTR pins are connected to Ethernet socket, so you can flash the board with a special cable without disassembling anything (well, most of the devices)

          1. What i miss ?
            I not see any use in this MKIV tutorial with pro mini.

            I really confuse 🥺

  1. Sorry!
    My bad
    I found that in all the other components (Cyclic, Collective Head, etc..) have a Mini pro board

    1. Not really, in cyclic and pedals, we have a 15-bit ADS1115 analog-to-digital converter board (ADC). It’s connected to the I2C bus just like everything else. Everything else has 1 or more Pro Mini in it =) E.g. MKIII VRMax collective head has 4 of these.

  2. Hello,
    First of all congratulation for this fantastic job and thanks very much for sharing it.
    i was planning on starting this build with my two sons to teatch them some 3D printing, electronic and hack…….
    for the moment, i just started looking fort parts.
    i have a quick question about the new master controller (and will certainly have a lot other to come…… 😉 )
    when putting the switch on fly mode is the switch open or closed. i understand the wiring but i’m a beginner in arduino and can not find the answer in the code.

    thanks very much in advance for your help.
    best and once again congratulation.

    1. hi! Thanks for your kind words. In the fb_setup_body tab you can find these lines:

      pinMode(2, INPUT_PULLUP);
      g_operating_mode = !digitalRead(2);
      if (g_operating_mode == 1) {
      } else {

      that basically means on startup, digital pin 2 is read and if its lit, the board loads in the programmer mode.


Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.