The Robot Thread

I knew I had read this but could not find it again. Right in the documentation
You can use any RC transmitter/receiver system, provided it has a minimum of four channels.
That is my problem. My Surface Transmitter DX2.0 only has 2 channels.
Using wrong hardware.

ELRS is cheap.
The Transmitter, built into the RC controller is the same price.
Radiomaster 8T would probably do just fine for ELRS rover. Gamepad sytle for $50 new just add receiver for $25. RB3

So advantages of ELRS over DSMx Serial Adapter = Range, Channels and probably battery life.

In the same vein you have to consider "Crossfire" systems. More and more features.. Some I really don't need.

I have a HobbyTown store in the area and I almost went and bought a SPM461T from. In stock.
But when I looked at controllers the SLT3 Spektrum Car Style controller has its own protocol. SLT. There is an upgrade to DSMR.
I might go browse actual product.
 
I don't think the two-channel transmitter itself is what caused the "Bad channel 1 input" error. For Rover, the default mapping is basically:
Code:
CH1 = Steering
CH3 = Throttle
CH8 = Mode switch
MODE_CH can be changed, so you do not actually need a physical channel 8 just to get RC input working. I think the bigger problem was the type of receiver/output. The SR3000 has normal individual servo outputs for Steering, Throttle and AUX. That is different from feeding a serial RC protocol into an ArduPilot UART. The BAT/TEL connector also should not automatically be assumed to be a DSM serial RC output just because it says TEL or DATA.
The SPM4650 you found looks much more appropriate because it is explicitly an SRXL2 serial receiver. ArduPilot's SRXL2 documentation says to connect it to a UART like this:
Code:
GND -> GND
VCC -> 5V
Signal -> UART TX
Then configure that UART, for example:
Code:
SERIAL1_PROTOCOL = 23
SERIAL1_OPTIONS = 4
Option 4 enables half-duplex operation on the TX pin. SRXL2 is a single-wire half-duplex protocol, which is why the signal goes to TX rather than the usual RX pin. I would leave RC_PROTOCOLS on auto-detection initially instead of forcing only DSM while testing SRXL2.
Once the SPM4650 is connected, I would first check Mission Planner Status and watch ch1in, ch2in, ch3in etc. If those values move when you move the transmitter controls, then the receiver-to-ArduPilot link is working. Only after that would I worry about RCMAP.
mceclip0.png


So I think you were right in your latest post: the missing piece was probably a serial receiver/interface rather than simply needing more RC channels.
Also, RC_OPTIONS=48 should still be useful because it enables logging of the raw serial RC input bytes along with your existing option. That could be useful if SRXL2 still does not decode. Spektrum explicitly warns that Surface and Air are incompatible, even within their ecosystem
 
The BAT/TEL connector also should not automatically be assumed to be a DSM serial RC output just because it says TEL or DATA.
Yes that is my fault. I assumed wrong. Wasted much time on a bad assumption.
Truthfully I don't see much literature about it.
Luckily I found a SpeedyBee F405 diagram with the SPM4648 module and I found the part number from label name.
Then I found the other serial boards:
SPM4648
SPM4649T
SPM4650
SRM4651T

They also have a serial board for satellites that maybe compatible. Serial Extender as well.

So I went to HobbyTown and bought Spektrum DX3 Transmitter For Surface Car and SPM4651T serial receiver. This one has telemetry that I don't need. But was in stock.

Gratefully I now have working RC Control via RC Channel 3 in Ardupilot. I need to work out controls and channels and adjust.
I was just so happy to see Green Bars from UART1 on the Flight Controller. I did have to make a custom cable for it. Like all things.
Hooray for another item on the checklist I can checkoff I hope.
Maybe last step before wheels on ground.

Upgrading Spektrum Transmitter DX2.0 to DX3 was not a big stepup. In reality it is Gen2 DX3 and very plain.
No LED Screen but plenty of LEDs. DX3 is included as a basic controller with many RC models at the store.

It only has 3 Channels so I hope it does work for my Rover.
 
CoreWing has some really good instructions for Flight Controllers

I am having trouble getting skid steering working. Part of the problem is RC controller. I am only getting 'Channel 3' during Radio Calibration.
With 3 Channels on the transmitter it does not meet hardware requirements.
I am also unsure how to calibrate skid steering with RC Transmitter. Throttle is steering.

So I fell back to 2018 project. Autonomous BOAT. I had it roughed out but ran into the software problem.

It will be a better way to learn flight controllers for me. Steering and Throttle separate. Then move back to skid steering.

It is a continuation of learning from 2018 so I don't feel bad switching Rover to Boat. Firmware wise nothing changes. BOAT uses ROVER firmware.

It has been suggested that "Boaty McBoatface" would make a good Vessel name. Maybe I shorten it to Boaty

Picture of boat before upgrade. Very nice vacuum forming. Motor had a gearbox. The Nicad battery 7.2V is still holding a charge.
BSA Bob Shattan Black Phantom 28" circa 1990
 

Attachments

  • boat.jpg
    boat.jpg
    484.6 KB · Views: 6
Switching to the boat actually sounds like a good way to simplify the learning process. One thing still bothers me about the Rover setup, though. I don't think the DX3 having only three channels is the immediate problem.
If Radio Calibration only shows movement on Channel 3, ArduPilot is effectively receiving only one usable control input from your transmitter. For skid steering you need two independent inputs: steering and throttle. ArduPilot then mixes those two inputs into the left and right motor outputs.
So before blaming the three-channel limit, I would check what the SPM4651T is actually sending when you operate:

Steering wheel
Throttle trigger
Channel 3 button/switch

If all three controls are working through SRXL2, you should see at least two different RC input channels moving in Mission Planner. If only CH3 moves, something is still wrong before the skid-steering mixer — transmitter configuration, binding/channel mapping, or the way ArduPilot is interpreting the SRXL2 channels. The boat should make this much easier to diagnose. Start with the simplest possible arrangement:

Steering control -> rudder servo
Throttle control -> motor ESC

No skid-steering mixing is needed. Once you can move the rudder and throttle independently and see both corresponding RC inputs in Mission Planner, you will know the complete Spektrum -> SRXL2 -> UART -> ArduPilot input chain is correct. Then going back to skid steering should mostly be an output/mixer configuration problem rather than an RC receiver problem. And yes, using Rover firmware for the boat means the work is not wasted at all. It is probably an easier test platform for learning the ArduPilot input/output chain.
 
If all three controls are working through SRXL2, you should see at least two different RC input channels moving in Mission Planner.
All three inputs are coming over Channel 3 in Radio Calibration.
Steering, Throttle and Aux switch

I have moved on to the SPM4650. Essentially the same without some SMART features.
 
I have multi-channel DSM2 controllers arriving over the next week. Almost bit the bullet on RadioMaster MT8/ELRS but I want to explore DSM2/DSMX.

I decided to get something newer with 6 channels for RC Transmitter.

The ParkZone controller I bought is only 4 channels so I want minimum 6. Same with DX4e. Only 4 channels.
2 Channels needed for ARM switch and Mode.
 
I am still trying to figure out how to use all the UARTS of F405.

if I understand concepts correctly with multiple VTX units I could broadcast separate video streams over allowed channels?

The JHEMCU-F405-WING has two connectors for CAMERA and uses GPIO for relay to switch between the two sources. So VTX can only see one camera at a time.
 
Back
Top