First of all, this might be a stupid or bad question but i am quite new to this topic.

I want to build a rc transmitter (with some joystick buttons, an arduino and a hc-12 transceiver). I've searched a lot about this topic. But i still have a question that rests unanswered.

Why is it necessary to use multiple channnels to control for example pitch,jaw,throttle of a quadcopter. transmitters in shops have 4 or 6 channels but i don't understand why these different channels are necessary. These transmitter send the information of each button over a different channel, why is this necassary?

Is it not possible to send the commands over one channel (all at the same frequency)? For example send p30 for a pitch of 30 degrees and j30 for a jaw of 30 degrees? Than, the receiver can interpret this as well?

I guess it is to send al the commands on the same time?

Thanks in advance

  • $\begingroup$ Welcome to Robotics newbee, but I'm afraid that it is not clear what you are asking. We prefer practical, answerable questions based on actual problems that you face, so it's a good idea to include details of what you want to achieve, what you tried, what you saw & what you expected to see. Please take a look at How to Ask & tour for more information on how stack exchange works and work through the Robotics question checklist to edit your question to make it clearer. $\endgroup$ – Mark Booth Jan 4 '17 at 15:04
  • $\begingroup$ Oké Mark, i will try to formulate it beter and more specific $\endgroup$ – newbee Jan 4 '17 at 15:10
  • $\begingroup$ Thanks newbee, understanding how to write a good question is a skill we all have to learn. $\endgroup$ – Mark Booth Jan 4 '17 at 16:17

It's a bit more complex than that.

Basically, it is several channels multiplexed and all transmitted on one channel, yet constantly being switched between various channels.

That sounds confusing so let me explain what I mean.

Let's take as an example of a classic four channel RC system. You'd have roll, yaw, pitch and throttle. Each control stick axis is on a separate channel electronically, but then they are multiplexed together into a single channel and the receiver will demultiplex them back out into their various control channels so that each can move a servo or signal a microprocessor.

In the case of a DSM type transmitter this single multiplexed channel is encoded so that a single receiver alone (the one that you bind to) can understand your transmitter. This allows several users to coexist all in the same 2.4GHz band of frequencies. The fact that several users are all transmitting signals to their own vehicles at the same time potentially leads to interference problems and so the transmitter now uses frequency or channel hopping algorithms in order to avoid the interference from all the other users nearby.

So here we have used the word channel to refer to several different things:

  • several channels, one for each dimension of control
  • a single multiplexed channel of info transmitted to the receiver
  • signal hopping between various channels to avoid interference

RC controllers have evolved through many generations and are quite good today at allowing numerous users to coexist in the same area.

Sure, you could design a transmitter that sends all the information you want on a single radio channel as this person seems to have done. But I think that they would soon learn of the shortcomings of their design if they tried to use that one design on multiple vehicles at the same place and time.

| improve this answer | |

Arduino, HC-12 transceivers and a KY-023-type X and Y Joystick? I shall be able to respond it to you in a few days time. I got my remote control already working, a 50k Potentiometer to send to the ESC on the plane the motor speed that I desire and the KY-023. I am using an Arduino Nano (Micro or Uno would work great as well), however, on the receiver side(plane), I am using an Arduino based on Atmega32u4, a little more expensive. Why? For better performance, and in order to avoid interference with the servos, so you need a physical serial UART port, and the other Arduinos(with the exception of the 32u4-based and the Mega) have only one, witch is used to upload the code and debug (the Serial instance). This one has Serial and Serial1, Serial1 being represented by a pair of distinct pins on the board, that provides you with a hardware-based serial UART interface (avoiding running the HC-12 over a software-based one) that will give you better IO performance and also avoid conflicts with the Servo.h lib that uses Timer1. The only reason that I can't give you the answer now, is that I burned my receiver by accident while connecting it to a drop-down voltage regulator in order to start outdoor testing. Indoors it was moving the servos with quite acceptable delay, however, due to current limitations I had to buy those external power supplies, coz the onboard ones were not holding voltage while dealing with 2 servos plus the transceiver. I was using factory default configuration, Serial1 set to 9600bps. Data format is: 1000,110,89 -> First value meant to be ESC speed control, second one to be X servo position and third to be Y servo position. The manual(datasheet) says it has a time between 4-80mS per byte sent, so, do not abuse it. I also read that if you send and receive too much data at the same time, it gets as slow as 1 sec. per cycle. So this is it! As soon as I get a new board I will start outdoor testing and post the results.

| improve this answer | |
  • $\begingroup$ Hi and welcome to Robotics! Please improve formatting of your answer and split it into multiple paragraphs, as reading through a text wall like this is not very pleasant. $\endgroup$ – mactro Jan 10 '17 at 9:33

Well, today I was able to finally get my hands on a new Hc-12 transceiver, since one the last batch was burned out by accident and I had to give my project a pause. So today, I lowered the baud rate of both boards to 2400bps, since it offers the best rage and transmitting power possible, and changed from the default channel-01 to channel-02. If I may, let me share a couple of important things about these little things. First, always, if powering from 4.5v to 5v, always use a 1N4007 diode in series with the module, specially if you're transmitting all the time. My transmitter got so hot that I though it was gone for good, lucky enough, I saw this information on the manuals before loosing it. A 100uf decoupling electrolytic capacitor is also recommended, to be put in direct contat with the board after the diode. I think the pourpose here is decoupling, power reservoir and/or noise filtering. It is raining down here, and probably will still rain for a few days, so I am not so eager to take the pair outside for a real trial run. I will need binoculars and a few aluminum foil pieces glued to a stick and then glued to the servos, so I can observe from a certain distance. What I can tell for the indoors performance is that it looks sharp. But the KY-023-type X and Y Joystick really requires skill to operate, it requires you to have hands of a fairy, only after training for like 1h I could move it to the desired positions without making the servos jump around. You need to go slowly but surely. Lag is almost non-existent, I would say looks pretty much real time. What really scared me is the current-hungry pair of sg90 servos! 4 AA batteries are not enough to power them directly and the 32u4-based Arduino board + transceiver. So I am looking into C-type batteries or even a power bank to be able to test outside. Really! This servo-current thing is really giving me something else to think about......

| improve this answer | |
  • $\begingroup$ Hi! I "solved" the servo issue with the addition of 3x 4700uF caps in parallel between then and the power source (4 AA-size alcaline batteries), and put a 100uF capacitor connected directly to the Hc-12 module (direct to it, after the IN1007 diode). The leds on the Arduino board still "Jitter" when the servos move, but the Arduino board does not reboot nor freezes anymore. 250 meters direct sight, is all I've got in an open RF-noisily environment (long street, small town). Factory mode 9.6kbps, CH02. I'll try to lower the b. rate to 2.4kbps and get a pair of better antennas. $\endgroup$ – Jeferson Lucio Jan 23 '17 at 22:12
  • $\begingroup$ Hello again! I've just bought an Nagoya Na-771 UHF Antenna + Pigtail and connected it to the transmitter board. Eager to start testing again ASAP. This antenna has 3dB gain while the onboard one is said to have 2dB. If the weather clears (stops raining) tonight or tomorrow night, I will test it outdoors. I will keep initially 9.6kbps, it is said to reach a maximum of 600 meters with this configuration, which to me, is more than enough. ESC with BEC, motor and battery will arrive soon. I am curious to see how it's going to behave under the electrical magnetic noise of a brushless nearby. $\endgroup$ – Jeferson Lucio Jan 27 '17 at 18:54
  • $\begingroup$ The Na-771 Antenna on the transmitter side made the "magic", I've got a little more than 500 meters from it, direct line of sight, basically doubling the range. Used default factory configuration (only the UHF channel was changed to CH02, keeping 9.6kbps). As I said before the weather was not so nice and the avenue I used to test it is RF-noisily, many cars passing by as well, I wonder how things would go on the country-side (I will get there in a few days, should the weather helps and my ESC and brushless motor arrive). As I mentioned before I'm worried about motor noise on UHF band. $\endgroup$ – Jeferson Lucio Jan 29 '17 at 2:59
  • $\begingroup$ I am quite happy with the 500 meters range. I am studding UHF antennas in order to find out how can I implement one, better than the HC-12's factory-default to fly on my flying wing without messing CG or aerodynamics. However, don't you guys agree that 500 meters is enough to fly a line of sight 1,2 meters flying wing? Further than that, if you're not using FPV, you can easily lost visual contact with such small object on this giving distance, against a clear sky background, and even if you implement engine shutdown and emergency landing protocols, most of the time you're going to be domed. $\endgroup$ – Jeferson Lucio Jan 29 '17 at 3:08
  • $\begingroup$ Hello again! The 2A/5v BEC contained into the ESC seems to supply more than enough current to drive the Arduino Micro, the two SG90 servos and the HC-12 transceiver, and the current lines seem to be clean enough not to interfere with the operation of them all. My wing will arrive late this week and I am exited about testing it all together!! $\endgroup$ – Jeferson Lucio Feb 7 '17 at 1:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.