This post is just to make people aware of a project that I did a while back.
I was annoyed that the Spektrum DX6i remote that I had did not provide the useful timer features of the DX8i. That is, the countdown timer should be automatically activated when the throttle is actuated instead of requiring the user to manually pull on the trainer switch.
Hardware and firmware side together this hack took me around one hour to complete so it should take you much less should you consider to perform it.
I've spent another hour retrofitting the display backlight and adding that functionality to the firmware as well.
Features:
- one PIC10F222 (<1$ in single units)
- can detect whether single-pitch (plane mode) or collective pitch is used
- starts timer on throttle up, stops it when throttle is removed
- backlight is activated when the menu wheel is moved, deactivated after 5s
- inactivity warning: after 90s of no usage the remote beeps at you
- features can be disabled at startup by powering up the remote with the throttle in the high position
Repository: https://code.google.com/p/dx6i-enhancements/
Pictures and details after the break:
The code detects how the remote is start up, depending on the throttle position:
- minimum (wiper <= 0.5V) - normal pitch mode
- middle (wiper 1.5V +/- 0.2V) - collective pitch mode
- high (>3V) - disabled
All the actions are done by setting the trainer switch high for ~100ms and then low for ~100ms. In flight mode this starts the counter, in menu mode this is done twice in order to simulate a beeping warning.
There's only one screen of code so be sure to check it out:
Wiring was done with hot glue and just sticking the wires in the sockets because the remote was still under warranty. I had no issue with this, it has been running fine for more than one year.
The chip was affixed to the shell using hot glue again and a socket, in case I need to reprogram it. I didn't need to.
I don't have any pictures of the backlight mod, I just bought a 3-5 EUR amber backlight that was the same size as the display, if anyone is interested I will search for the shop link.
Backlight consumption is a few milliamps so probably it can be left on all the time and the extra pin can be used for something else (like vibration motor).
Do not rely on the remote's timer for accurate timing, it seems to be only indicative. Also my code has a lot of assumptions and the timing is also imprecise to make it more robust.
Hi, I am interested in your work. I have some issues of wiring these GPIOs of the PIC10f222 MCU to the PCB of DX6i remote control. In your picture, I believe there are five coloured wires (white, blue, orange, yellow and ??). How to connect these wires to the PCB of DX6i, could you please enlighten me? Thanks very much.
ReplyDeleteThere's a wiki page describing where to get the signals from:
Deletehttps://code.google.com/p/dx6i-enhancements/wiki/Hardware
GP0 -> Trainer switch, red cable
GP1 -> Throttle potentiometer wiper, orange cable
Vdd -> 3.3V, taken for example from the Throttle pot red wire.
Vss -> 0.0V, GND, taken from almost anywhere there is a black cable going.
I don't remember off the top of my head, I would need to open the remote again. I'll do it if you cannot figure out from this comments how it would be wired.
How to figure out by yourself: power up the remote and look for a black cable or GND marking, this would be the ground. With a multimeter, probe around for 3.3V. All the potentiometers have this. Then probe for another voltage that changes when the stick is moved, this will be the wiper.
Thanks for your reply. However, you also mentioned to control the backlight (I assume you have modified to add a backlight kit to DX6i, did you use the Turnigy Backlight Kit from HobbyKing?). I couldn't figure how to wire GP2 (according to the source code) to the backlight control. Thanks again!
DeleteHi, I just did it the simple way, I power up directly the backlight from GP2 through a 700 ohm resistor, yielding about 5mA which is enough. You can go with a lower resistor or even no resistor at all for maximum brightness.
DeleteThe backlight was from reichelt.de (part number starts with LEDX) but any similar backlight would do. Make sure it is LED-based and not the inverter type.
DeleteLong time ago, but very interesting project. Is it possible to separate just the backlight auto off function (maybe with fade in/out)? Thx.
ReplyDeleteThat would be a cool idea, can't remember exactly why it was done like this, but I had no embedded or C experience at that time.
DeleteThe project is hosted here: https://github.com/ligius-/dx6i-enhancements
It should be trivial to port to a small Arduino board (back then Arduino did not exist) and do analogWrite on the backlight pin.
The 10F222 doesn't seem to have a hardware PWM output, so I guess a better option is to go with an ATTiny which has 3 or 4 usable pins. I might explore that in the future, but the code is pretty simple to port to the Arduino framework: https://github.com/ligius-/dx6i-enhancements/blob/master/main.c
Thx for reply! Sorry, but I've really no idea to write a code for a micro processor. Searched with DX6i+ATTiny for a similar project an found this on YouTube...
ReplyDeletehttps://youtu.be/fn2NmeOPrGk
But there is no information about the chip or a code. I think he use the buzzer to activate backlight, cause it also work if he use trim switches.
Yes, the backlight in that video is activated with the buzzer, I think, and has a 10s timeout. Since the buzzer beeps with every keypress this a decent approach. He also says that the ATTiny is just stuck on the board without soldering.
DeleteI can look into this but not in the near future. If you want to try it yourself, you only need one input pin and one output pin. Example code:
https://wokwi.com/arduino/projects/313969858193654336