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.
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?
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.
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.
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?!