Download PDF Parts List View on YouTube Download Code

Inexpensive radio controls are an ideal way to add reliable, long-distance remote control capability to your project. Today we’ll see how easy this is to accomplish.

These controllers have a wealth of features and can be used both with or without a microcontroller.

Introduction

Radio Control units, or RC Controllers, have been used by model airplane, helicopter, rover and boating enthusiasts for years. Indeed, many of these hobbies would not exist if it were not for the availability of inexpensive yet reliable radio control devices.

But these controllers are not limited to hobby vehicle control. They are equally suitable for use in controlling any electronic project that requires a full-featured wireless remote control.

Today, I’ll show you how to take a very common and inexpensive RC Controller and use it for a variety of purposes, both with and without a microcontroller.  But before we get started, it would be a good idea to learn a little about RC Controllers and the terminology that is associated with them.

Radio Control Basics

Radio controllers typically consist of both a transmitter and receiver, and they generally operate on a radio frequency that does not require licensing for low-power transmitters. This frequency can vary depending on which country they are certified for use in.

RC Remote Controls

Older transmitter/receiver combinations used frequencies in the MHz band, such as the 72MHz band for model aircraft and the 75MHz band for surface vehicles. Each of these frequency bands was divided into individual channels, and you needed to find an unused one to operate your aircraft or vehicle.

Nowadays, it is more common to use “spread-spectrum” radios in the 2.4GHz band. The use of spread-spectrum technology eliminates the need to select a channel.

Channels

Not to be confused with the individual RF frequency channels used in older devices, in this context “channels” refers to control channels.  Each of these channels is tied to two things:

  • A switch, joystick, potentiometer, or display on the RC Controller.
  • An output or input on the receiver.

So a “6-channel” remote will have six corresponding outputs or inputs on the receiver, each one mapped to an element on the controller.

RC Control Channels

TX Modes

You’ll see this term used when describing an RC transmitter. The term “mode” generally applies to using the transmitter with an airplane, and it refers to how the transmitter is configured to control the airplane, i.e. which sticks operate which controls on the plane.

A standard transmitter has two sticks, each capable of both horizontal and vertical movement. Each stick, therefore, has two channels, one for horizontal movements and another for vertical ones.

There are four TX modes in total:

  • Mode 1 – Left stick operates elevator & rudder, right stick operates throttle & ailerons.
  • Mode 2 – Left stick operates throttle & rudder, right stick operates elevator & ailerons.
  • Mode 3 – Left stick operates elevator & ailerons, right stick operates throttle & rudder.
  • Mode 4 – Left stick operates throttle & ailerons, right stick operates elevator & rudder.

RC Transmitter Mode 1

RC Transmitter Mode 2

RC Transmitter Mode 3

RC Transmitter Mode 4

The most common configuration is Mode 2, and most new transmitters are configured this way.

Most transmitters have the facility to change modes. This is usually a pretty involved process that requires you to disassemble the transmitter and move the stick controls.

For our purposes, using the transmitter to control our projects, the mode is usually irrelevant.

Receivers

Of course, the other end of this remote control system is the receiver.

In most cases, the receiver is made by the same company that manufactured the transmitter, and it is often included with the transmitter. You can usually buy additional receivers, so you can use the same transmitter with a number of different projects.

In order for the receiver and transmitter to interact with one another, you’ll need to “bind” them. This is usually a pretty simple procedure, I’ll show you in a bit how to do it with the transmitter-receiver combination that I have.   When you purchase a new transmitter with a receiver, they are usually bound to one another already.

Flysky FS-I6x Transmitter

Physically, the receiver is a small, lightweight box that has one or two wire antenna leads. The outputs are generally 3-pin connectors, which can be used directly with servo motors or electronic speed controls (ESC’s).

Many receivers also have additional outputs for a unique type of serial bus. Some receivers also have input connections, so you can monitor various aspects of your remote controlled vehicle.

RX Protocols

Once again, we have a term that can be used for two different aspects of the radio control system. While a “protocol” can refer to the method used to exchange data between the transmitter and receiver, in this context it refers to the ports on the receiver..

The most common protocol used on the receiver side is PWM (Pulse Width Modulation), and this is used almost universally to control servo motors and ESC’s.

Many receivers also have a serial interface, this allows the connection of several devices without a lot of cabling.  The protocol used on this port varies between manufacturers.

Here is a partial list of the protocols used in some popular receivers:

  • PWM (universal)
  • PPM or CPPM (universal)
  • SBUS (Futaba, Frsky)
  • IBUS (Flysky)
  • XBUS (JR)
  • MSP (Multiwii)
  • CRSF (TBS Crossfire)
  • SPEKTRUM1024 (Spektrum DSM2)
  • SPEKTRUM2048 (Spektrum DSMX)
  • FPort (Frsky)
  • SPI_RX (universal)

The above list came from information on Oscar Liang’s excellent website, one of the best resources on the internet for radio control information.

Flysky FS-I6X

The transmitter/receiver I selected for my experiments is the popular Flysky FS-I6X. This is a 6-channel device that can be converted into a 10-channel unit with a firmware update.

This unit operates on the 2.4GHz band and permits bidirectional communication between transmitter and receiver.  It uses “multi-channel hopping” to switch between 16 available channels between 2.408 and 2.475GHz.

It also supports the Flysky implementation of iBUS for both sending and receiving multi-channel data.

Receiver

The receiver included with the Flysky FS-I6X is a 6-channel unit, the FS-IA6B. 

This device has two small wire antennas, seven 3-pin connectors for input/output devices, plus two additional 3-pin connectors used for the iBUS transmit and receive connections.

RC Control Channels Outputs

One of the seven 3-pin connectors on the side of the unit is used for both the power input and for binding the receiver to the transmitter. In normal operation, you apply 4-8 volts to the VCC and GND pins on this connector. When binding the receiver, you need to short the “signal” pin to ground.

Flysky provides a jumper that can be used to accomplish this.

Using an RC Controller on its own

By themselves, a receiver and transmitter pair is all you need to control a number of basic devices, such as servo motors and ESC’s.

RC Controlled Servo Motors

If you’re using the Flysky FS-I6X, you will need to be sure that you power up the receiver AFTER the transmitter, this is true for many other RC Controllers as well.  You’ll also need to have all the switches in the up position and the throttle control (left stick) down all the way. Both of these requirements are safety precautions to avoid an uncontrolled vehicle or one that starts with the motors running.

By default, the outputs of the transmitter are set as follows:

  • Channel 1 – Right Stick, Left/Right
  • Channel 2 – Right Stick, Up/Down
  • Channel 3 – Left Stick, Up/Down
  • Channel 4 – Left Stick, Left/Right
  • Channel 5 – Control VRA
  • Channel 6 – Control VRB

So, by connecting devices to these receiver channel outputs, you may control them with their associated control on the transmitter.

RC Control Channels Mapping

Give it a try. Hook it up as follows. You can use servo motors, continuous servo motors or ESC’s.

Now try moving the sticks and the two potentiometers to see how they can control each device.

RC Controlled Servo Motors

If all you need for your project is a few servo motors, you might be able to get away without even using a microcontroller. However, by adding a microcontroller like an Arduino to the project you’ll be able to greatly expand upon the capabilities of your system

Using an RC Controller with a Microcontroller

While you can use just about any microcontroller with the remote receiver you do need to keep in mind that the outputs are at a 5-volt logic level, so if you use a microcontroller whose inputs are not 5-volt tolerant you’ll need to add in a level-converter.

Although adding a level-converter is pretty simple, I decided to just use older Arduino AVR boards, which use 5-volt logic. 

I’ll show you two ways of using the receiver with a microcontroller:

  • Using the PWM outputs as microcontroller inputs.
  • Using the Flysky iBus output.

Before we get started, however, you’ll need to make a slight configuration change to your controller. Well technically you don’t need to make any changes, this “suggested” change will let you demonstrate the use of both the controls and switches on the Flysky controller.

Mapping a Switch to an Output

We have already looked at the default setup of the Flysky remote controller, all six channels are mapped to either a potentiometer or one aspect of a joystick. They all, therefore, give out a variable reading that is proportional to the position of the control.

But there are also four switches on the controller that, by default, are not mapped to any channel. So in order to use one of the switches, we will need to remove the mapping to one of the variable controls and then map that channel to one of the switches.

In my case, I decided to map switch SWA (the leftmost switch) to controller channel 6, which is normally used for the right potentiometer.

Here is how I did that with the Flysky FS-I6X:

  • Power on the transmitter, be sure to have all the controls in their default positions.
  • Hold the OK key down for a few seconds until you display a Menu
  • Use the Up and Down keys to select “Functions Setup”, the mode represented by a wrench.
  • Select Functions Setup using the OK key
  • Use the Up and Down controls to highlight Aux Channels
  • Select Aux Channels with the OK key.
  • You will be able to remap channels 5 and 6. Use the controls to select a channel, then cycle through the options for the controls you can attach to that channel.
  • When you find one you want, just leave it. Then hold the Cancel key down for a few seconds and release it. You will exit the channels page and be back in the Functions menu.
  • Choose Aux Channels again, just to be sure your setting was saved.

Use this technique to map channel 6 to switch SWA.

Using PWM Outputs – Arduino Uno

One way to work with the Flysky receiver is to read each individual channel output from the “servo” connector.

Remember, our controller outputs PWM, which by its own nature communicates by manipulating the width of a pulse. We can use a microcontroller, like an Arduino, to measure the pulse width and interpret that data.

It’s actually pretty easy to do.

Arduino Uno Hookup

We will need an Arduino Uno, or pretty well any 5-volt Arduino, for our experiment.

Arduino Uno RC Hookup

The hookup is pretty straightforward, the six outputs from the Flysky receiver are connected to six inputs on the Arduino. 

We also connect the 5-volt output from the Arduino to the receiver’s VCC to power it. And, of course, we connect a Ground as well.

PWM Output Sketch

The sketch is actually pretty simple, thanks to a couple of functions I found on GitHub.  This code, written by Ricardo Paiva, simplifies getting data from the RC channels. 

All we are going to do in the sketch is read the values from each of the channels and print them on the Serial Monitor.

We begin by defining the six input connections from the receiver.  We then define five integers to represent values from the first five ports, as these are analog controls.

The logic state of channel 6 is represented with a boolean, as it is now mapped to a switch.

Now we come to the two functions, readChannel and readSwitch, that I picked up on GitHub. 

readChannel has four inputs:

  • The channel input pin
  • The Minimum range value
  • The Maximum range value
  • A Default value

The Minimum and Maximum values allow you to assign a range to each control. They can be any valid integers, including negative numbers.

The Default value is the value that will be applied if there is trouble reading data from the RC receiver.

The heart of readChannel is the pulseIn function, which measures the incoming pulse width. A valid width will be between 1000 and 2000 microseconds, and any pulse in that range will be mapped to the range defined by the Minimum and Maximum.

readSwitch performs the same function, except it uses a boolean value when reading a switch.

In Setup, we start the Serial Monitor and define all of our I/O pins as inputs.

In the Loop, we populate the channel value variables by calling readChannel for each channel. Note the minimum and maximum and default values given to each control.

We then print the values of our variables to the Serial monitor. After a short delay, we do it all over again.

PWM Test Results

Disconnect the Arduino from the computer while you power up the transmitter. 

Arduino Uno RC Demo

Now connect the Arduino and open your Serial Monitor.  You should be seeing a display of all six channels.

Manipulate the controls and observe the Serial Monitor data. You should see each control has an effect on a specific channel of data.

The switch SWA will give values of 0 or 1, depending upon its position. Everything else will range between -100 and 100, with zero being the center.

Using iBus Output – Arduino Mega 2560

Another way to get data from the Flysky receiver is via the iBus serial connection. This has a few advantages, not the least being that it only requires one wire (plus power and ground).

We are going to require a second UART, or serial input, on our microcontroller, and this rules out using an Arduino Uno again. Although you can emulate a serial port with SoftwareSerial, in this case we are using a library that requires a physical UART instead.

For this reason, we are switching to an Arduino Mega 2560, it has multiple hardware UARTs.

Arduino Mega 2560 Hookup

Here is how we will hook up our circuit:

Arduino Mega RC Hookup

As you can see, the wiring is very minimal. Pin 19 on the Arduino Mega 2560 is the RX1, or “Receive 1”, input to one of the hardware UARTs. We will get our data here.

Once again, we will use the microcontrollers 5-volt output to power the receiver. Make sure not to omit the Ground connection.

iBus Library

To simplify working with the iBus we can take advantage of a library that does most of the “heavy lifting” for us. 

We will be using the iBusBM library, which works for Arduino as well as ESP32. You can install this inside your Arduino IDE using the Library Manager.

Arduino iBusBM Library

Open the Library Manager and filter the display by “iBus”. You will see a few libraries, many of them for the infotainment system in BMW vehicles, which is also named “iBus”.

As we aren’t working with BMW’s today, we will grab the iBusBM Library, which should be the first result in your filtered search.

Install the library into your Arduino IDE. You might want to explore some of the sample sketches it comes with later. 

Right now, we are going to program essentially the same sketch we did last time, so we can read the data onto the Serial Monitor.

iBus Sketch

Now that we have our iBus library installed, we can put to gather a sketch.  As we did the last time, we are just going to read the data from the six channels and display it on the serial monitor.

Here is our sketch. Between the reduced number of connections and the use of the iBus library, it is in many ways a lot simpler than the last one.

We begin by including our iBusBM library and then creating an object to represent the iBus.

Our two functions from GitHub are back, with readChannel modified to use a different method of getting data. We can now use the iBus library, which itself has its own readChannel function.

When you work with this library you’ll need to note that it numbers the channels differently,  The iBusBM library starts numbering at 0, so the first channel is 0, the second is 1 etc. etc.

In Setup, we start the serial monitor, and we bind the iBus object to the Serial1 port, where we have data coming in from the RC receiver.

The code in the Loop is pretty simple. We just cycle through the first five channels and read their values and print them to the Serial Monitor. We then read the value of our switch on channel 6, which you’ll note is called with a 5” due to the numbering scheme in the library.

After doing that, we go back to the top of the Loop and do it all again!

iBus Test Results

As one might expect, the results from the iBus experiment look identical to the results of the original experiment with the Arduino Uno. 

Arduino Mega RC Demo

But one thing that is different is the simplicity of getting that data, using the iBus for a single-wire connection and a library to make reading the data a breeze.

Build an RC Controlled Robot Car

Now that we know two methods of using the radio controller with an Arduino, we can put our knowledge to work and build something. And the most obvious thing to build would be a radio-controlled car. 

So let’s put one together!

RC Car Description & Operation

We’ll be using the standard 2-wheel “robot car” base that we’ve used in many other projects. These are available on Amazon, eBay, and probably at your local electronics dealer (if you indeed have a local electronics dealer). They come in a variety of shapes and sizes, the ones I picked up on Amazon set me back about twelve US dollars each.

Most of these bases consist of an acrylic base plate and a couple of 6-volt DC motors, typically the yellow geared ones with a 90-degree shaft mount. The kits include all the mounting hardware, a couple of wheels, a castor to balance everything, and (usually) a battery holder, a switch, and perhaps some wire for the motors.

We will keep our radio controller mappings the same as earlier, with channel 6 mapped to switch SWA.  We will be using every channel except channel 4 in this design.

Car Modes

Our robot car will be able to operate in two different “modes”:

  • Normal Mode – Use the two sticks to control the car’s speed and direction
  • Spin Mode – The car spins on one spot, you can control the speed and direction of rotation.

The switch we mapped to channel 6, SWA, will be used to change modes. An LED on the car will indicate that we are Spin mode (although it’s usually pretty obvious). 

In Normal mode, the right stick controls the car’s direction and steering.  The left stick controls the acceleration.

In Spin mode, potentiometer VRA (the top left one), which is mapped to channel 5, controls the direction of rotation. The speed is controlled with the left stick.

RC Car Hookup

Here is how we will be hooking up our car.

RC Car Hookup

Once again, we will use an Arduino Mega 2560, with the data being read from the iBus serial connector on the Flysky receiver.

The car will use a TB6612 H-Bridge controller to power the motors. This tiny wonder has several advantages over the common L298N H-Bridge, however you could substitute an L298N if you wished. If you do, you’ll likely need to increase the motor power supply voltage, as you’ll lose 1.4-volts through the L298N.

Any color of LED will work, and the dropping resistor can be anything from 150 to 470 ohms.

Follow the chart on the wiring diagram for the motor controller hookup, each channel has two inputs for direction and a PWM input to control speed. There is also a common STBY, or Standby, input that can put the motor controller to “sleep”.

Note that you may or may not have to reverse the polarity on your motors, it really depends upon how you have them mounted.  If they are 180 degrees apart, then you’ll likely want o reverse polarity, as shown in the diagram. But if they are mounted parallel to one another, then they likely need to be of the same polarity.

RC Car Sketch

Now it’s time to take a look at the sketch we’ll need to make our robot car come alive:

The sketch is a bit long, but it’s actually very easy to understand if you break it down. 

Once again, we’ll be using the iBusBM Library which we used in the last sketch, it simplifies getting data from the Flysky iBus connection.

We define some variables to hold the monitor speeds and channel data, as well as the connections to the TB6612 and the LED.

We then create a couple of functions, which themselves could probably be put into one function, to drive the motors at a specified speed and direction.  We also use the same trusty functions to get the RC controller data.

In the setup, we initialize the serial port, in case we need to debug, and also connect the Serial1 port to the iBus object.

We then define all of our connections as outputs.  As you’ve probably noted, I used pin 13 for the LED, so you could skip it and use the Mega’s onboard LED instead.

We add a short delay, with a flash of the LED, at the end of Setup. This is to allow time for the receiver to establish a connection to the transmitter.

Then we go into the loop. We start the loop by getting data from each of the channels. Note the minimum and maximum values used.  

The right stick controls each have a range of -100 to 100, they control the direction and, to some degree, speed.

The left stick’s vertical movement is mapped from 0 to 155, this is the motor speed and is added to the values from the right joystick.

The VRA control, which controls the spin direction and speed, is also set for a range of -100 to 100. It is used in conjunction with the left stick speed.

As both modes use the reading from the left stick, we get that first, from Channel 3, and assign it to the two motor speed variables.

Channel 6 is mapped to our switch, which controls mode. We examine its value now, to determine what mode we are in.

If we are in Spin mode then we use VRA (Channel 5) to determine what direction to spin the car. Positive values indicate clockwise, whereas negative ones are counter-clockwise.  We also add the value to our motor speeds, using the abs (absolute) function to get a positive number.

If we are in Normal mode we look at the value of Channel 2, the vertical movement on the right stick, to get our discretion. We also add the absolute speed values to our motor speeds.

Next, we then check the horizontal stick movement, on Channel 1, to do the steering. We then apply the correction to the motor speeds.

Before we drive the motors, we use a constrain function to ensure that the values stay between 0 and 255. Then we drive the motors using the functions we defined earlier.

Testing the RC Car

Testing out the car is a matter of manipulating the controls on the transmitter and observing the wheel movements.

RC Car Testing

If you can arrange to have the car base supported during testing, it will be a lot easier to give the car its first “check-up”. Otherwise, it will start to run away from you! I used a large circuit board holder to hold the car base, effectively putting it “up on blocks”.

Turn the transmitter on before you power up the Arduino on the car, you can keep the 6-volts to the motor connected at all times as it isn’t drawing power when the Arduino is off.

After the transmitter boots up, power up the car, observing the LED. After a few seconds, you should hear a sound from the transmitter, indicating that it is communicating with the receiver.

When the car boots up, it is in “Normal” mode, so you can use both joysticks to drive it.

RC Car Testing

Now manipulate the right stick on the transmitter and observe the wheel motions. Pull the stick all the way back, and note the direction that  the motors turn in. Now push it forward, and then side-to-side, all the time observing the motor movements.

Note the effect of the throttle, or left stick vertical movement, on the speed. 

Both motors should be spinning in the same direction while in Normal mode. If they aren’t, then reverse the polarity on one of the motors (it doesn’t matter which one). 

Now reduce the throttle to minimum and flip the switch SWA (the one on the far left). You should see the LED light up, and if the control VRA was not in the center you may also see the motors moving. 

Radio Controlled Arduino Car

Use VRA and note the motor movements, they will be moving in the opposite direction to one another.  By manipulating VRA you can change the direction of rotation and speed for both motors. You can also use the throttle to increase speed.

If it all checks out, then it’s time to go for an actual test drive! Find a big area if possible, remember that your radio control has a range that can approach a kilometer under the right conditions.

Now put it to the test!

Remember, by applying a firmware update to your Flysky FS-I6X you can increase its capacity to 10 channels. The Arduino Mega has oodles of I/O pins that we haven’t touched, so now that you know how to work with RC data, you could add a number of exciting features to your car.

Conclusion

Radio control transmitter/receiver pairs, like the Flysky FS-I6X, can really simplify the design of radio control projects. 

Remember, you can purchase additional receivers for most transmitter models, like the Flysky I used, so that you can create several radio-controlled devices using the same transmitter.

Now go out and control something!

Parts List

Here are some components that you might need to complete the experiments in this article. Please note that some of these links may be affiliate links, and the DroneBot Workshop may receive a commission on your purchases. This does not increase the cost to you and is a method of supporting this ad-free website.

COMING SOON!

 

Resources

Code Used in this Article – All today’s Arduino code in one easy to use ZIP file.

iBusBM Library – Repository for iBusBM Library

TB6612 H-Bridge – How to use the TB6612, and how it compares to the L298N

Flysky FS-I6X – Official website for the Flysky FS-I6X Transmitter

Flysky FS-I6X Manual – PDF version of the Flysky FS-I6X instruction manual

RC Protocols – RC protocols explained by Oscar Liang

 

Radio Control – Use the Flysky FS-I6X with Arduino & Build an RC Car
Summary
Radio Control - Use the Flysky FS-I6X with Arduino & Build an RC Car
Article Name
Radio Control - Use the Flysky FS-I6X with Arduino & Build an RC Car
Description
Learn how RC Radio controls work, and how to use them with an Arduino to build advanced remote control projects. I'll show you two ways of interfacing with a Flysky FS-I6X transmitter and receiver. We'll also build a cute radio-controlled robot car!
Author
Publisher Name
DroneBot Workshop
Publisher Logo
Subscribe
Notify of

28 Comments
Oldest
Newest
Inline Feedbacks
View all comments
SCOTT WHITNEY
2 years ago

I am excited to receive my new RC radio and incorporate it into my rover project. My thinking is to use a MEGA as shown by Bill. I also would like to upgrade the transmitter’s firmware to allow for 10 channels. Is there a good article about the upgrade, and can I assume with the upgrade, an Arduino MEGA via IBUS, that all 10 channels will be usable on the GPIO pins on the MEGA?

Steven Behnke
2 years ago
Reply to  SCOTT WHITNEY

I believe the transmitter is already able to transmit all 10 channels, but the receiver doesn’t seem to receive them unless you buy the 10 channel receiver.

2 years ago
Reply to  Steven Behnke

I can verify Mine came out of the box working on 6 channels

Andy Oakley
2 years ago
Reply to  SCOTT WHITNEY

The transmitter is set to 6 channels out of the box, you need to add a 10 channel receiver and then effectively switch on the extra channels. This video shows you how. https://youtu.be/wNShZd6ajSw
hope this helps

Eric Trottier
2 years ago

Hi,
I am following you for little more then a year.
I learned so much from you.
You are the best!
Thank you very much!

Andy Oakley
2 years ago

Hi there, just wanted to thank you for putting so much effort in to your site. It has helped me enormously on my journey of learning arduino. Again thank you so much.

Senuda
2 years ago

Dear Drnebot,

Is Flysky i6 and i6x Signals are same?

isa düzgün
2 years ago

merhaba. şu şekilde hata mesjı alıyorum çözümü nedir?

“Arduino:1.8.19 (Windows 10), Kart:”Arduino Uno”

C:\Users\iduzg\Documents\Arduino\iBus\sketch_feb14a\sketch_feb14a.ino: In function ‘void setup()’:

sketch_feb14a:27:14: error: ‘Serial1’ was not declared in this scope

  ibus.begin(Serial1);

       ^~~~~~~

C:\Users\iduzg\Documents\Arduino\iBus\sketch_feb14a\sketch_feb14a.ino:27:14: note: suggested alternative: ‘Serial’

  ibus.begin(Serial1);

       ^~~~~~~

       Serial

exit status 1

‘Serial1’ was not declared in this scope

This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.

Denis Lindesay
2 years ago

Thanks for this well presented video. I have learned a lot. I have an FS-i6 working on 10 channels for a boat project. I plan to use a small stepper motor to rotate either way a rotating mast with a camera on top, using Arduino. Can anyone tell me where I can get help on this.

HENRY W WILLIAMS
2 years ago

How do i Control 4 DC Motors with the MEGA 2560 and the Flysky FS-I6X ? I Have a Project That have 4DC Motors. 2 Motors for the Drive wheels, 1 Motor For The Gripper And 1 Motor for the DC Motor Screw Shaft. I know I may need 2 TB6612 H-Bridge controller modules. But How would I connect the 2nd TB6612 H-Bridge controller  Module to the Mega 2560 So I can control the the 4 DC Motors seperately with the Flysky FS-I6X controller?

Last edited 2 years ago by HENRY W WILLIAMS
Xenophon
1 year ago

I am using a Arduino Uno and not the Mega as per drawings. I do not know how to connect the Uno to the L298N and write the sketch. Can someone please help me?

MrY
1 year ago

hi,
could you do a tutorial how to send data control from esp32 and use flysky receiver decode data to control drone / car ?
so I would like to use home wifi instead of flysky, or use flysky and esp32 to send data to flysky ?
thanks

Denis
1 year ago

Thanks Bill for such an informative article. Very useful to me. I am working on a project which is using 9 or 10 channels. Have the radio and a 10 ch receiver which all seem to work OK..I am using a stepper motor to direct a camera, a couple of linear actuators, and a winch which are all DC motors of different voltages, and there are two towing hooks released by normal small servos and of course 2 brush less driving motors. Its a service/rescue boat for radio controlled yacht racing. Incidentally my Flysky FS-i6-X came with the 10 channels… Read more »

Asim Kumar Naskar
1 year ago

I am using your programme to read PWM values through 6-channels. But when we print them I saw that they are not stable and give different values when joysticks(of Flysky transmitter) are not changed. What may be the reason?

Aaron
1 year ago

Hello, I’m using this code in a project. My problem is once I have my acceleration all the way up then push forward on the other stick. I lose all control of my steering. It inverses at best at worst I loose all control.

Ammar Hadwan
1 year ago

Hello there,
I would like to know what software or website you usually use for drawing the circuit diagram.
Thanks

CRISTIAN
1 year ago

A beautiful day! I appreciate and respect your detailed work of educating everyone, valid for beginners but I think also for advanced ones…I searched all over the internet for connecting a FlySky radio control…initially directly to a dual controller board for my project RC mower / snow machine with two or four 24v motors (wheelchair for disabled people) , ,,,Thanks for the info and code, but I couldn’t get it to work. The budget is tight and I tried with the controller below…can you help me with information or can you please make a tutorial with this board? This type… Read more »

Lookr1
1 year ago
Reply to  CRISTIAN

I looked at those 60-100 amp controllers too. Amazon has them but they aren’t highly rated some arrive dead or burn up. I bought a Sabertooth 60 amp several years ago, it works great, but I see they no longer available only the 25 amp Sabertooth is. I was considering using the IBT-2 BTS7960B its 43 amps,30Amps continuous. And, if thats not enough I could run 2 IBT-2 in parallel. IBT-2 are cheap. They are abt $13 for 2. Drone bot workshop has a video on how to use them.

Last edited 1 year ago by Lookr1
Lachlan
1 year ago

Does anyone have a code for the same thing but without the IBUS

Darksplat
1 year ago
Reply to  Lachlan

I am also looking for a version without using the iBUS I have a cheap Turnigy 5CH Transmitter with CH5 being my switch.

Lookr1
1 year ago
Reply to  Lachlan

You could look at the UNO code here and the motor controller controller code in the Droneshop video under motor controllers and try and merge the 2. Copy paste a line and test.

Steff B.
1 year ago

Hi! Thank you for your fantastic work and tutorials, I can’t thank you enough! This is more of a note for anyone who may have missed it (like I did), if you don’t see the SwA option under the aux Channels when mapping that switch, be sure to configure it as “On”: With the transmitter powered on, press and hold the OK button Select Systems Press the DOWN button all the way to “Aux switches” Select OK The arrow should point to SwA by default, press the UP button to toggle between “On” or “Off” (note the Ch value, for… Read more »

John
1 year ago

Thanks so much for all these great tutorials and videos. Have been learning a lot.
I just got the FlySky FS-I6/FS-IA6 and am trying to set up Channel 1 as i-Bus (or any other channel).
In the setup menu I select the channel then it prompts me to, “Press the corresponding servo interface button or press CANCEL“.
I assume it’s expecting me to press a button on some i-Bus enabled servo but I don’t have any such thing.
Am I missing something or is there some work around?

Thanks, John

Bud
1 year ago

Thank you so much for all the info you put out here on U-TUBE. I have used several of your ideas and they all work. I have never used RC controllers before. I also am hoping some of my grandchildren will try using Arduino, Raspberry-pie, and some of the other micro controller programmers that are available.

Olah Robert
1 year ago

Hello. I have an Andruino nano module, a Gps module and a flysky i6 remote control. Can someone help me with a code to configure them, I mention that I am on the first project of this kind. Thank you.

Scran
7 months ago

Could you do this with a arduino uno and a l298 motor controller?

Sona naka
5 months ago

Good way to use RC rig and Arduino for application User. Thank you.

Bob Found
4 months ago

Can you use the iBus AND the PWM outputs on the Rx at the same time?