How to remotely control your Arduino with a 2.4ghz controller with less then 12$

Hi all. The real title of this topic should be: Arduino library to decode syma transmitters, but my intent is to provide a very quick and cheap way to build RC things (cars, quads, robots, ...) without losing time building a professional remote control system.

Advantages: - very quick and cheap - NO lag (it's 2.4ghz but it's NOT wifi!) - great range (even greater with transmitter mod (http://www.instructables.com/id/Quadcopter-Range-Hack/) and NRF24L01+ sma version (http://www.banggood.com/NRF24L01-Wireless-Transceiver-Module-SMA-Antenna-MCU-Arduino-p-80577.html) - auto frequency selection and frequency hopping in order to have multiple projects running at the same time without disturbing each other - 4 axis and multiple buttons

Required hardware: - an Arduino - a syma remote controller (http://www.gearbest.com/rc-quadcopter-parts/pp_193065.html?wid=1, 10$ at the moment) - a NRF24L01*+* chip (http://www.gearbest.com/transmitters-receivers-module/pp_218375.html, 1$ at the moment)

THE LIBRARY WITH FULL INSTRUCTIONS AND INFORMATION: https://github.com/Suxsem/symaxrx

Enjoy!

Thanks for sharing.

I had not realized the nRF24s would interface with a standard RC transmitter.

...R

I can't seem to get this working. I have the NRF24L01+ hooked up properly (and testing functionality with another sketch), but when I load your example it doesn't bind with the transmitter. Is there something special I have to do?

HedgeKeeper: I can't seem to get this working. I have the NRF24L01+ hooked up properly (and testing functionality with another sketch), but when I load your example it doesn't bind with the transmitter. Is there something special I have to do?

Do you have the syma x5c-1 (not the old x5c)? Do you have the transmitter with green or blue led?

Please help me! I can not upload code.

error is:

C:\Program Files (x86)\Arduino\libraries\symaxrx-master\examples\symax_rx\symax_rx.ino:6:28: fatal error: symax_protocol.h: No such file or directory

#include <symax_protocol.h>

^

compilation terminated.

exit status 1
Error compiling.

So, where did you put the .h file?

in the same folder

now it is ok,i upload code,my mistake.

But now,not respond to my transmiter,i have with green light.

Hello, I tried your Code with my Syma X5C-1 Remote (Blue LED) but it does not Bind. It get the tx data at the bind channel and then stops in the WAIT_FIRST_SYNCHRO case and mWireless->rxFlag() always return false/0 it looks like it set the wrong channel/frequency in "mWireless->switchFreq(mRFChanBufs[mRfChNum]);" but i can't figure out myself what goes wrong there.

Can this be applied in creating a remote control in switching the lights on/off? Maybe like a two-button remote control?

Hello,

I got this to work on a controller with a blue LED.

kajovb: did you move the throttle up and down? That seems to required to get beyond the "bind in progress" stage.

Is it supposed to work on the controllers with a green LED? (I doesn't work for mine, doesn't bind) If not, what would it take to make it work?

Hello.
I have a transmitter SYMA X5c-1
Green light.
https://s29.postimg.org/kcry2n54n/IMG_20170405_084639.jpg

Library RF24-master - examples - GettingStarted
Test communication with NRF24L01 ok

Despite symax_rx.ino it does not communicate.
Which can be a problem?

No help?
Library RF24-master - examples - scanner
My SYMA transmitters https://s10.postimg.org/mo9asm76h/scaner_1.png

I had all the right gear and if I tried to connect it would only display:

Bind in progress Bind in progress Bind in progress Bind in progress 224 : 0 0 0 0 0 0 0 0 0 0 0 224 : 0 0 0 0 0 0 0 0 0 0 0 Not bound Not bound Not bound

and than just loop the Not bound. I eventualy found a solution for this. I put a delayMicroseconds(84); between uint8_t value = protocol.run(&rxValues); and newTime = micros(); With this method it connects 50% of the time.

I dont know why this works and I dont know if it could work better, but is some kind of a solution.

I observe the same problem: arduino + NRF24L01 receiver (with additional capacitor on supply line) and Syma X11 transmitter: after binding and 2-3 values my receiver return Not bound... I will check delayMicroseconds(84) but "this method it connects 50% of the time" will be satisfying? Will see.

Unfortunately no success :frowning: Delay tested and problem not disapear. Do you have advise?

The only advise I can give is just try somethings... that is the way I got it and the only way i know

It takes my 2 Minute time to detect the problem.

SOLUTION:

You should need to disable incrementChannel to get it working like i did:

Open symax_protocol.cpp >
goto near line 80 >

Double Slash “//” or remove the line “incrementChannel = true;”

See Attachment Sucessfully Getting Values:

Hi ajaybnl, thank you for solution, it seems that it is working now :-)

Igorn:
Please help me! I can not upload code.

error is:

C:\Program Files (x86)\Arduino\libraries\symaxrx-master\examples\symax_rx\symax_rx.ino:6:28: fatal error: symax_protocol.h: No such file or directory

#include <symax_protocol.h>

^

compilation terminated.

exit status 1
Error compiling.

If your files are in the same folder then you have to change:

#include <symax_protocol.h>

to

#include "symax_protocol.h"

ajaybnl: It takes my 2 Minute time to detect the problem.

SOLUTION:

You should need to disable incrementChannel to get it working like i did:

Open symax_protocol.cpp > goto near line 80 >

Double Slash "//" or remove the line "incrementChannel = true;"

See Attachment Sucessfully Getting Values:

There is another incrementChannel = true; near line 214 I had to comment out to make the communication work. I have Syma X5 (not X5C) with PCB v6 (I bought it 3 months ago for $28 with everything except the camera), the remote has a blue LED and the range without any modifications is more than 275 meters (more than 900 ft). Is it possible the v6 protocol does not use frequency hopping? Or the algorithm in setRFChannel() is wrong so the method precalculates wrong channels? In that case, after setting incrementChannel to false, we don't receive all packets but only every 4th packet?!