Control of power levels for VTX, Telemetry and more using ATMEGA2560 PCB

If someone knows how to do all this without the ATMEGA2560 PCB, I am all ears.

My setup is as follows:

Taranis X9D transmitter with RFD TXMOD transmitting radio control and telementry.

  • I want to be able to control transmit power level as outlined below using a channel on the transmitter.

Quad copter has:

  • TBS UNIFY PRO32 HV video transmitter
  • RFD900x telemetry transceiver connected to Pixhawk 2.4.8 via sbus.
  • Runcam Split 3 Micro with DVR.

My objectives are to be able to:

  • change the TBS UNIFY PRO32 HV video transmitter power level.
  • Change RFD900x transceiver power level
  • start and stop Runcam Split 3 Micro recording video.
  • change the TX MOD power level.

I want these changes to be made using 4 separate radio channels with PWM outputs from the Pixhawk:

7 SB 3 position. RXD900x power level. 0dbm, 15dbm, 30dbm.
9 SG 3 position RC Transmitter (TX MOD) power level. 0dbm, 15dbm, 30dbm.
14 SE 3 position Video transmitter power level. 25mw, 400mw, 1000mw.
15 SF 2 position Video record or not.

Do I need to manually change the data rates of the TX MOD/RDF900x or if they will automatically set based on power levels?
If I have to control them, use channels 12 and 16 for this. These are SC and SD. Both are 3 position swtiches.

My plan is to have a small 3.3V atmega2560 pcb with level shifters if needed in the quad copter.
It will receive PWM input from the Pixhawk channels specified.
It will output the appropriate serial data to each device to control it accordingly.
If the device returns any data confirming its status, the atmega2560 will receive and verify the status for display on the DIY OSD below.

On startup, make the arduino put each device in the correct mode at the lowest power level.
Taranis will start up with switches in their rearmost position to avoid switch warning. This position of each switch will be lowest power on transmitters and video recording off.

The runcam and dvr runs on 5V. As far as I know the serial connection to the DVR is 3.3V.
I know the TBS UNIFY PRO32 HV video transmitter is 3.3v.
The RXD900x is 5V. Serial data interface is 3.3v.

The reason for doing this with the channels instead of moving through menus using the joysticks is that I won’t have to look down at the transmitter to make changes. I can just flip channel switches. I am setting up a MFE Fighter VTOL for search and rescue and I just don’t have enough time to figure all this stuff out.

Install DIY OSD (https://www.ebay.com/itm/283984411019) and video switcher (SmartFPV RC Camera Control v2.0 - https://smartfpv.com/store/video-switches/2-rc-camera-control-v2.html - I own 4 of these. They are no longer made.).
Connect DIY OSD to atmega2560.
Have atmega2560 output text to show me status of each device including LEDs, temperatures, power levels.
Have Atmega 2560 measure temperature of 5 ESCs and video transmitter and report this on DIY OSD as well. This will later be used in a VTOL aircraft which will have 5 ESCs. For now it will be 4 on my quad copter.
I am expecting that the number of items that will require temperature monitoring will increase to a maximum of 16 since there are 16 analog input pins on the ATMEGA2560.

Video switch will be controlled by RC Channel 11. This is a momentary switch. In its normal position, it will show me the MinimOSD output. When switched, it will show me the DIY OSD output.

It might make sense to use channel 8 to control the Minim OSD screens and the video switcher.

Make the ATMEGA2560 log the temperatures and power levels. It will need a time reference to match the logging on the Pixhawk. This should be when the Pixhawk is armed. Is there a way to make the pixhawk output a unique sequence on channel 11 for example when the Pixhawk is armed to tell the ATMEGA to start logging and set its time reference to zero?
Another way to handle the time is to connect the GPS to the ATMEGA2560 as well as the Pixhawk. The ATMEGA2560 can get the time from the GPS. Does the Pixhawk use the GPS as a time reference for logging as well?
The ATMEGA2560 would only need to read the GPS and get the time when it was logging something. That would be when one of the data values or switch positions changed.

My intent is to use this Arduino Mega 2560 pcb: https://www.ebay.com/itm/Mini-Meduino-Mega-2560-R3-Board-Pro-Mini-ATMEGA16U2-Female-header-for-Arduino/382570244931
I will design and have an interface PCB made which will have all the needed connections.

NOTE: The ATMEGA2560 is to be programmed entirely in BASCOM AVR with code that is commented well so that I can maintain it in the future.
I may omit this requirement if necessary to find someone who can do this project in a .ino file.

Lastly, is there any easy way to connect a signal from the ATMEGA2450 pcb to the Pixhawk that will inform me if there is an error on the ATMEGA2560 data?

Taranis X9D channels, switches and their uses:

1 Thr
2 Ail
3 Ele
4 Rud
5 S2 MODE SWITCH - 5 position.
6 S1 CAMERA PAN
7 SB 3 position. RXD900x power level. 0dbm, 15dbm, 30dbm.
8 SA MinimOSD OSD VIDEO SCREENS.
9 SG 3 position RC Transmitter (TX MOD) power level. 0dbm, 15dbm, 30dbm.
10 LS left slider. CAMERA TILT.
11 SH momentary. Control Video switch (SmartFPV RC Camera Control v2.0).
12 SC 3 position. Use for TX MOD data speed if needed.
13 RS right slider. LEDs.
14 SE 3 position Video transmitter power level. 25mw, 400mw, 1000mw.
15 SF 2 position Video record or not.
16 SD 3 position. Use for RXD900x data

1 Like

Sounds like an interesting project.

You probably could get the arming state and time from the flightcontroller via MavLink…
But I would try to cut out the arduino as far as possible and solve it via lua scripts (if possible), but this would require lots of serial connections on the FC…

The runcam part already works in 4.1, I am about to do a PR for the VTX part.

When you say the runcam part works in 4.1, I understand that it requires going through menus using the joysticks. Is this correct or can it be done using a channel?

It can be done using a channel - look for runcam control in the rc options

Hi Andy,
After doing some more research, I am finding that the ability to use a channel to control a Runcam won’t work with the Runcam Split 3 Micro. Is that your understanding as well?

Hi Tim, I have a split 3 micro and it works fine, what issue are you seeing. This is on 4.1.

I am still doing research. I don’t have anything hooked up yet. Where do you connect onto the split 3 micro? I see a serial connection, but I don’t see any means to connect the output from a channel on the Pixhawk to the split 3 micro.

https://ardupilot.org/copter/docs/common-camera-runcam.html

There are RX/TX pads on the daughterboard - connect to a spare serial port