Somewhere in the corner on the third shelf is the box with my old RC stuff, and in that box was sitting my very, very old Hitec Laser 4 transmitter – 72 MHz, 4 channels, definitely not usable anymore. So, I decided to engage in a project to convert this outdated piece of equipment into a 10-channel DSM2/DSMX transmitter.

The goal was to use the case, existing gimbal assemblies and switches, and to add couple more switches and 2 potentiometers to create a transmitter with Throttle, Rudder, Aileron, Elevator, four on-off channels, and two continuous channels using potentiometers.

As the actual transmitter I planned to use OrangeRX DIY Transmitter Module, which I acquired some time ago. I did not intend to use any of the original electronics, so I also planned to design and implement custom controller module that would generate 10-channel PPM signal to feed into OrangeRX module.

After opening the Laser 4 case, I found out that the case was intended by Hitec to be used in different configurations of transmitters, so the holes for mounting various additional switches and POTs were already marked on the inside – this made drilling the holes for various additional components much easier. Also, the final look of the product was much more “industrial”.

After removing original electronics and installing all required additional controls, I measured available mounting places and designed the new control board accounting for all necessary connectors and allowing for subsequent placement of OrangeRX module. This control board was designed around the relatively new dsPIC33EP64GS504 44-pin microcontroller from Microchip. This MCU operates at 70 MHz and has an ample number of fast 12-bit ADCs.

This control board presented on the picture below mounted on my work table for programming and debugging. Besides connectors for various control elements and OrangeRX module, the board also has the ICSP connector for programming and serial connector compatible with XBee, which I used to upload real-time data for analysis and debugging. During development stage I used an LED to communicate the status of the board, which prior to mounting into the case was replaced by piezo buzzer.

After the software for the board was developed and successfully passed all tests, including communication with OrangeRX module, the board was installed into the case and all components connected to respective pins. This is how transmitter looked right before the case was closed:

This is how the final product looks like:

The red button in the upper right corner is the OrangeRX module pairing control:


 As I primarily fly drones which use my custom control boards, I did not need and thus did not provide any controls for mixing or reversing attitude controls – Rudder, Aileron, and Elevator controls provide signals corresponding to NED coordinate system. Thus, for example, when the Elevator stick is pushed forward respective control input moves toward minimum (from the central point) and when it is pulled back – the signal moves toward maximum.

On boot control board checks the position of all controls – throttle, all switches and POTs should be low, Rudder, Aileron, and Elevator should be at mid-point – the buzzer would issue a special tone if these conditions are not met. If the initial conditions are met, transmitter can be “armed” by toggling switch 3 (upper left) on and off again – arming will be indicated by a tone and controls will become enabled. Until controls are enabled, the board will provide OrangeRX module with the PPM signal corresponding to throttle, all switches and POTs being low, and Rudder, Aileron, and Elevator - at mid-point.

While today one may buy a 10-channel multi-protocol transmitter like Jumper T8SG, for example, for around $80, does it make sense to put time and effort in building your own? Probably, not – but this project was just a training exercise prior to building a transmitter that I really want for my drones the one based upon the XBee!

XBee modules provide encrypted full-duplex digital communication between modules at 250 Kb/sec at 2.4 GHz band with DSSS (Direct Sequence Spread Spectrum) at a distance up to 2 miles line-of-sight. XBee-based transmitter-receiver pair (actually, two equal nodes on the network) would allow to pass commands to the drone AND collect extensive telemetry without the need for additional telemetry receiver transmitter. However, this is the topic for another post.

For those interested, attached is the project code:

Views: 608

Comment by John Hestness on November 27, 2017 at 9:23am

Nice project and write up!

Comment by Rana on November 27, 2017 at 7:44pm

Nice efforts ! Jumper T8SG does not support futaba however they claim. It did not bind with my existing Futaba 617FS receivers.

Comment by Nicholas Witham on November 27, 2017 at 11:25pm

Awesome, great work.

Is it possible to do 16 channels and output as SBUS? Also, will you share the files with us?

Comment by Nikola Rabchevsky on November 28, 2017 at 2:11pm

This illustrates the great leap between building custom PCBs (pretty easy) to making a finished injection-molded product (really expensive).
This also has me wondering why Futaba or some other R/C manufacturer isn't leveraging their expensive plastic to get into the UAV market.  They could pull the RF component out of one of their transmitters and install a Sololink and open-source Linux SBC.

Comment by Alex Zarenin on November 28, 2017 at 5:58pm


Judging from the analysis of the frame, 14 channels is the max for DSM2/DSMX. As to the SBUS protocol, in my view it is something that was "hacked" together - I haven't seen a micro-controller that would have SBUS HW module, without which it would be rather difficult to implement. Took me some time to figure out how to effectively implement interrupt-driven PPM controller using the OC module on my MCU. Still, it has to run at highest interrupt priority as the frame appears to be rather "fragile". As I mentioned in my post, I think the way to go is the standard serial protocol with HW flow control - like the one implemented in XBee.

As to files, I would gladly share them - as soon as I figure out how to attach ZIP file to the post :)



Comment by Nicholas Witham on November 28, 2017 at 6:48pm

Fair enough Alex.

How configurable are the outputs you can get? ie, can you get channel 1 to do something based on another channel, or can you implement expo?

I have a project that could use exactly this, as long as the configuration is there.

Comment by Alex Zarenin on November 28, 2017 at 11:22pm


The SW for the board is absolutely custom - no external libraries, every single piece of code is in the project. I do not have a need for any "mixing" of the channels, but that would be relatively easy to add - as long as you are comfortable with MPLab-X (Microchip development environment) and C16 compiler.




You need to be a member of DIY Drones to add comments!

Join DIY Drones


Season Two of the Trust Time Trial (T3) Contest 
A list of all T3 contests is here. The current round, the Vertical Horizontal one, is here

© 2017   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service