I2C upgrade test: first impressions

I’ve finally been able to fly in various sims for a while yesterday to test upgraded peripherals!  Before telling about my first impressions from an improved set, let me say a few words about why this change was really that necessary.

This project started long ago as a wish to build a scale helicopter controls set and evolved from a really rough device to a rather honed one. With its initial problems, like bad usability, low axis resolution, and jitter, worked around, I’ve been able to focus on expanding the assortment of available peripherals. That’s when I understood clearly that few important things are needed:

  • a way to distinguish devices from each other automatically
  • to have more than 6 analog axes
  • to have more than 10bit resolution for most important  axes
  • to remove filtering from the master controller
  • to have a per-device configuration
  • to simplify editing firmware and flashing the board
  • to have some kind of unified interface for everything

That’s why I decided to use the I2C bus as a standard connection method and an Arduino Leonardo for a controller. It basically solved all the problems at once, while not complicating things too much, only requiring for an inexpensive board to be added to each peripheral (either an I2C ADC or an Arduino Pro Mini).

I have tried flying a UH-1 and a Mi-8 in DCS, a Cessna 172 and a Bell 407 in X-plane, and an MH-9 (kinda pirated Hughes 500 😀 ) in Arma 3. In all these sims, the controls felt perfectly smooth. I noticed a significant increase in sensitivity and precision. That’s because the resolution of all the controls has been increased by 4 times compared to the non-i2c version! A great joystick library by MHeironimus for Arduino Leonardo now allows for really painless HID setup.

To sum it up, I should have used this approach from the very beginning; it’s really a game changer.

Cheers!

Leave a Reply

Your email address will not be published.

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