Skip to the content
PCBKitNew board
2 layers223.5 × 188 mmUniversalRobotTx, the printed circuit board in 3D

DIY RC transmitter and receiver

Size
223.5 × 188 mm
Copper layers
2
Thickness
1.6 mm
Parts
97
Nets
109
Pads
372
Tracks, vias
432, 40
Pours
2
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
10 Apr 2024
Updated
1 Oct 2025

Overview

UniversalRobotTx is an open-source printed circuit board by falue, from the falue/universalRobotController repository on GitHub. It is a 2-layer board of 223.5 × 188 mm with 97 parts on 109 nets, routed with 432 tracks and 40 vias.

Its parts include 28 switches, 16 capacitors, 15 connectors, 6 resistors and 5 diodes. It belongs with the AVR (ATmega, ATtiny) boards of this library.

README

README.md

Universal Robot Control (RX/TX)

Introduction

This repository includes transmitter (TX) and receiver (RX) arduino files for a remote controlled robot of any form.

The transmitter is a custom build to have full control over input mixing, skewing and do all sorts of dependencies. It depends on a custom PCB, or like a thousand wires. The receiver end can be a robot or whatever.

This relies on OrangeRx products by hobbyking for Tx/Rx and uses the (legacy) DSM2/DSMX† protocols for a reliable, digital communication. with a "range of up to 3km (line of sight)". I'm sure though this works with any RC transmitter that uses iBUs / ppm.

Based on James Brutons RemoteDSM:

https://github.com/XRobots/RemoteDSM ↗

https://youtu.be/5BfRg9CUMYI ↗

† "The DSM in DSMX stands for Digital Spectrum Modulation and is what creates pure digital control providing an impenetrable radio link immune to all types of interference." (Soruce ↗)

Transmission speed

Depending if you need 10 or 20 channels you can choose to use a second transmitter. The second transmitter leads to more fluctation and/or longer duration of the main loop() though. If you need snappy response times, reconsider using a second transmitter.

Num of TransmittersRange (ms)Average (ms)Median (ms)
130-693132
228-704533

Hardware

TX

RX


OrangeRx setup

OrangeRx Receiver re-programming

As the Windows software "rx_secure_configurator ↗" for the receiver ↗ to set some settings on the receiver is very buggy, buy the OrangeRx Program box ↗.

  1. Connect the jumper to power the receiver from the program box to pin 1 and 2.
  2. Set the "out type" from default "SBus" to "iBUS"
  3. Set the *FailSafe" to send "1500" on all channels when losing connection; to be able to detect signal loss on the receiver

OrangeRx Binding Process

  1. Power off remote.
  2. Power on robot receiver. Its LED flashes fast yellow to indicate that there is no connection.
  3. Press "Bind" button on transmitter.
  4. Power on remote (!); keep "Bind" button pressed.
  5. remote beeps three times; robot receiver stops flashing and has now a continous light. congrats.
  6. From here on out, connection is established.

📝 NOTE: Red LED on remote (on the transmitter) does not turn on if no signal is sent to the PPM pin.

📝 NOTE: Always power on robot receiver first, then remote.

📝 NOTE: If turned off remote while robot receiver is on, restart robot receiver as well to reset connection. Turning off robot receiver while remote is still on, restarting robot receiver again auto connects again.

Parts

97
QtyValueFootprintReferences
160.33uFCapacitor_THT:C_Disc_D7.0mm_W2.5mm_P5.00mmC1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13, C17, C18, C19
14MountingHoleMountingHole:MountingHole_3mmH1, H2, H3, H4, H5, H6, H7, H8, H10, H11, H13, H14, H15, H16
6R=220ΩResistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P5.08mm_VerticalR1, R2, R3, R4, R5, R6
2Not usedConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ10, J14
112V POWER LEDLED_THT:LED_D3.0mmD5
15V LEDConnector_JST:JST_EH_B2B-EH-A_1x02_P2.50mm_VerticalJ15
1Arduino_Mega2560_R3_ShieldPCM_arduino-library:Arduino_Mega2560_R3_ShieldA1
1BATTERY INPUT 7-12VTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2-5.08_1x02_P5.08mm_HorizontalJ3
1In: 7-12VConnector_BarrelJack:BarrelJack_Kycon_KLDX-0202-xC_HorizontalJ12
1L-XConnector_JST:JST_PH_B3B-PH-K_1x03_P2.00mm_VerticalJ8
1L-YConnector_JST:JST_PH_B3B-PH-K_1x03_P2.00mm_VerticalJ9
1L-ZConnector_JST:JST_PH_B5B-PH-K_1x05_P2.00mm_VerticalJ1
1Not usedConnector_PinHeader_2.54mm:PinHeader_1x12_P2.54mm_VerticalJ13
1R-XConnector_JST:JST_PH_B3B-PH-K_1x03_P2.00mm_VerticalJ7
1R-YConnector_JST:JST_PH_B3B-PH-K_1x03_P2.00mm_VerticalJ6
1R-ZConnector_JST:JST_PH_B5B-PH-K_1x05_P2.00mm_VerticalJ2
1SYS RGB LEDLED_THT:LED_D5.0mm-4_RGB_Wide_PinsD2
1SYSTEM LEDLED_THT:LED_D3.0mmD1
1TX 1 LEDLED_THT:LED_D3.0mmD3
1TX 2 LEDLED_THT:LED_D3.0mmD4
1Transmitter 1Connector_JST:JST_PH_B5B-PH-K_1x05_P2.00mm_VerticalJ4
1Transmitter 2Connector_JST:JST_PH_B5B-PH-K_1x05_P2.00mm_VerticalJ5
1VOLTAGE METERConnector_JST:JST_EH_B2B-EH-A_1x02_P2.50mm_VerticalJ11
1main I/OButton_Switch_THT:Toggle_switch_3P_5.08SW7
1poti 1Potentiometer_THT:Potentiometer_Bourns_PTV09A-1_Single_VerticalRV1
1poti 2Potentiometer_THT:Potentiometer_Bourns_PTV09A-1_Single_VerticalRV2
1poti 3Potentiometer_THT:Potentiometer_Bourns_PTV09A-1_Single_VerticalRV3
1poti 4Potentiometer_THT:Potentiometer_Bourns_PTV09A-1_Single_VerticalRV4
1poti 5Potentiometer_THT:Potentiometer_Bourns_PTV09A-1_Single_VerticalRV5
1poti 6Potentiometer_THT:Potentiometer_Bourns_PTV09A-1_Single_VerticalRV6
1reset arduinoFL:Drucktaster_FL_Mentor_1852.6231SW6
1system push 1FL:Drucktaster_FL_Mentor_1852.6231SW3
1system push 2FL:Drucktaster_FL_Mentor_1852.6231SW4
1system push 3FL:Drucktaster_FL_Mentor_1852.6231SW5
1trimL-XPotentiometer_THT:Potentiometer_Bourns_3386X_HorizontalRV7
1trimL-YPotentiometer_THT:Potentiometer_Bourns_3386X_HorizontalRV13
1trimR-XPotentiometer_THT:Potentiometer_Bourns_3386X_HorizontalRV12
1trimR-YPotentiometer_THT:Potentiometer_Bourns_3386X_HorizontalRV11
1user push 1Button_Switch_THT:SW_TH_Tactile_FL_thingySW2
1user push 10Button_Switch_THT:SW_Push_1P2T_Horizontal_FL_RND_210-00255SW21
1user push 11Button_Switch_THT:SW_Push_1P2T_Horizontal_FL_RND_210-00255SW22
1user push 12Button_Switch_THT:SW_Push_1P2T_Horizontal_FL_RND_210-00255SW23
1user push 13Button_Switch_THT:SW_Push_1P2T_Horizontal_FL_RND_210-00255SW24
1user push 14Button_Switch_THT:SW_Push_1P2T_Horizontal_FL_RND_210-00255SW25
1user push 15Button_Switch_THT:SW_Push_1P2T_Horizontal_FL_RND_210-00255SW26
1user push 16Button_Switch_THT:SW_Push_1P2T_Horizontal_FL_RND_210-00255SW27
1user push 17Button_Switch_THT:SW_Push_1P2T_Horizontal_FL_RND_210-00255SW28
1user push 2Button_Switch_THT:SW_TH_Tactile_FL_thingySW8
1user push 3Button_Switch_THT:SW_TH_Tactile_FL_thingySW9
1user push 4Button_Switch_THT:SW_TH_Tactile_FL_thingySW10
1user push 5Button_Switch_THT:SW_TH_Tactile_FL_thingySW11
1user push 6Button_Switch_THT:SW_TH_Tactile_FL_thingySW12
1user push 7Button_Switch_THT:SW_Push_1P2T_Horizontal_FL_RND_210-00255SW18
1user push 8Button_Switch_THT:SW_Push_1P2T_Horizontal_FL_RND_210-00255SW19
1user push 9Button_Switch_THT:SW_Push_1P2T_Horizontal_FL_RND_210-00255SW20
1user switch 01Button_Switch_THT:Toggle_switch_3P_5.08SW1
1user switch 02Button_Switch_THT:Toggle_switch_3P_5.08SW14
1user switch 03Button_Switch_THT:Toggle_switch_3P_5.08SW13
1user switch 04Button_Switch_THT:Toggle_switch_3P_5.08SW17
1user switch 05Button_Switch_THT:Toggle_switch_3P_5.08SW15
1user switch 06Button_Switch_THT:Toggle_switch_3P_5.08SW16

The 95 most common of 97 parts.

Questions

How big is the UniversalRobotTx PCB?

It measures 223.5 × 188 mm and has 2 copper layers, 1.6 mm thick.

What parts does the UniversalRobotTx use?

97 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the UniversalRobotTx KiCad files?

From the falue/universalRobotController repository on GitHub, at the commit this page was made from: the board is kicad/universalRobotTx/universalRobotTx.kicad_pcb and its schematic kicad/universalRobotRx/universalRobotRx.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the UniversalRobotTx design in my own project?

Its repository states no licence, so its author keeps all rights: ask falue before reusing the design.

Similar boards

  • 2 layers142 × 58 mmBosch 88pin Breakout, the printed circuit board in 3D

    Bosch 88pin Breakout

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    97 parts1.2k
  • 2 layers99.8 × 99.8 mmDb25 bob, the printed circuit board in 3D

    Db25 bob

    rene-dev/stmbl

    AC Servo Driver for STM32F4

    97 parts990GPL-3.0
  • 2 layers380 × 45 mmAddOnC, the printed circuit board in 3D

    AddOnC

    freeDSP/freeDSP-aurora

    freeDSP ADAU1452 with 8 analog input, 8 analog outputs, S/P-DIF I/O, ADAT I/O, USB Audio Class2, WiFi, Bluetooth

    97 parts226CC-BY-SA-4.0
  • 2 layers100 × 110 mmKicad control board smt, the printed circuit board in 3D

    Kicad control board smt

    matthewcieplak/super-sixteen

    Code and schematics for the Super Sixteen Eurorack sequencer

    97 parts171
  • 2 layers40 × 100 mmFront prototype, the printed circuit board in 3D

    Front prototype

    ZeroPhone/ZeroPhone-PCBs

    PCB files for ZeroPhone - for gerbers and schematics, go to "Releases" tab!

    97 parts148GPL-3.0
  • 2 layers100 × 95 mm35C3XMR, the printed circuit board in 3D

    35C3XMR

    monero-project/kastelo

    The Sekura Monero Hardware Wallet

    97 parts115
  • 2 layers66 × 62 mmCh570aaonlyswadge, the printed circuit board in 3D

    Ch570aaonlyswadge

    cnlohr/cnhardware

    My dumping grounds for all my kicad projects and random hardware bringup.

    97 parts114