Open Source Hamradio Transceiver for Arduino

The ArduTrx Shield with an Arduino and a display board mounted in a self made wooden case. Completed with a 2S lipo battery, an antenna and a Kenwood-compatible hand mic ready for its first QSO.


The ArdTrx project consists of two parts: the ArduTrx shield and the software. Both parts can be used independant from each other.

The ArduTrx shield is an Arduino shield with a HF module and surrounding circuitry. The shield plugs directly into the pin header of the Arduino Uno or compatible board and forms a stack with it. Other shields can be plugged on top or in between.

The ArduTrx software utilizes this shield but could also be used with a compatible HF module on a breadboard. To get a useful HMI it is suggested to plug a SainSmart 1602 LCD Keypad Shield ( on top.


ArduTrx shield (the hardware)


The hardware is built around the popular HF modules from Dorji or NiceRF and utilizes all necessary circuitry to get the module running and audio in and out of it.

Description of circuit

HF module (U1)

A HF module from Dorji or NiceRF is used on the shield. 2 meter (144 MHz) or 70 centimeter (440 MHz) modules can be soldered.

HF filter (L1..L3 and C1..C4)

Unfortunatelly these HF modules produce spurious emissions. Therefore a HF filter is implemented on the shield. It is a chebyshev low pass filter and has a cutoff frequency of 185 MHz.

voltage regulator LT1085 (U2)

The HF modules allow a maximum voltage of 4.5 V (Dorji) or 5.5 V (NiceRF). Arduinos usually don't provide these voltages. But you only get the maximum HF power if you go to the voltage limits. Therefore ArduTrx uses a adjustable power regulator LT1085. The desired voltage can be set with the resistors R15 and R17. Additionally the modules draw up to 750 mA while transmit. This is too much for the voltage regulators on the Arduinos. The LT1085 on the ArduTrx shield can provide up to 3 A.

audio driver LM4871 (U3)

To make the audio output of the HF module hearable you need a speaker and an audio driver. ArduTrx shield uses a LM4871 which is optimal for battery powered circuits with low voltage and can drive high power with its differential output. The speaker can be connected to CN6. It is also possible the drive single ended loads like head phones on CN4.

level shifter SN74LVC1T45 (U4, U5)

ArduTrx can be used with 3.3V and 5V arduinos and these level shifters guarantee the right voltage level on the transmission lines.

rotary encoder (SW1)

The rotary encoder is only connected to the pins of the arduino and has no connection to the HF module. It can be used in Arduino programs to set the frequency of the HF module.

programming switch (S1)

The HF module needs a serial input from the arduino to change its configuration. Unfortunatelly this serial port of the Arduino is also used during programming of the Arduino and generates programming errors if it is also connected to HF module. So ArduTrx has a switch to open the serial connection to the HF module and allow programming (switch in off position). The switch has to be turned on if settings to the HF module have to be made.

external power connector (CN7)

This connector has the same function as the coaxial power connector on the Arduino board. It only uses an industrial connector and allows a safer connection. The input voltage can be measured with R35 and R36.

antenna connector (CN1)

The antenna connector is a SMA connector like it is used on many Hand-helds.

hand mic connector (CN3 and CN4)

CN3 and CN4 form a hand mic connector which is compatible to Kenwood or Baofeng.

Arduino pin usage

Arduino pindirection on Arduinousage
0/RXinputserial communication with HF module
Attention: also used for programming the Arduino
1/TXoutputserial communication with HF module
Attention: also used for programming the Arduino
2inputsquelch. low=RX active; high=no RX
3outputanalog / pwm audio output; for example for 1750 Hz tone.
4-not used
5-not used
6-not used
7-not used
8-not used
9-not used
10-not used
11outputPTT: low=no TX (RX); high=PTT active
12outputPower down: low=sleep mode; high= normal mode
13outputOutput power: low=1W; high=0.5W
A0-not used
A1inputmeasurement input for VIN or serial input of GPS
A2inputaudio input to Arduino
A3inputrotary encoder signal A
A4inputrotary encoder signal B
A5inputrotary encoder switch
AREF-not used
SCL-not used
SDA-not used
RESET-not used
IOREF-reference voltage for level shifters (U4 and U5)
VIN-input voltage for voltage regulator (U2)
3.3V-not used
5V-supply voltage for CN5 (GPS connector)


There exists two versions of the hardware which are both software compatible: The hardware is released under CERN OHL v1.2


HF module

Compatibility with the following HF modules has been tested. There may be more compatible modules but these have not been tested yet and so they are not on this list.


Compatibility with the following Arduino boards has been tested. There may be more compatible boards but these have not been tested yet and so they are not on this list.

Bill of material for ArduTrxShield 1.1

DesignatorPackageQuantityValue / Manufacturer and Partnumberorder numbers
C1,C4C_0603230pKEM C0G0603 30P2627466
C13C_060311uKEM X5R0603 1,0U1759039
C15c_elec_8x10.51470uHA-V 470U 169695710
C2,C3C_0603247pKEM C0G0603 47P1759062
C5,C7,C8,C10,C11,C12,C14,C16,C17,C18,C19,C20C_060312100nKEM Y5V0603 100N1759122
C6,C9C_0805210uKEM X5R0805 10U1762635
CN1WR-SMA-PCB1Wuerth 60312202114509RND 205-005091608592
CN2ARDUINO1ARDUINO stacked pin headerConrad 1516613-62
CN31503_071Lumberg 1503-07LUM 1503-07
CN41501_031Lumberg 1501-03LUM 1501-031200127
CN5Pin_Header_Straight_1x031CONN_01X03MPE 087-1-0031022249
CN6Pin_Header_Straight_1x021CONN_01X02MPE 087-1-0021022247
CN7WR-TBL_6913223100021Wuerth 691322310002AKL 382-021642012
D1LED_06031Led redSMD-LED 0603 RT2426211
D2LED_06031Led yellowSMD-LED 0603 GE2426218
D3LED_06031Led greenSMD-LED 0603 GN2426215
D4SOD-1231BAT46WBAT 46W2689977
L1,L2,L3WE-CAIR_42483Wuerth 7449121562431629
Q1,Q2,Q3SOT-2332N70022N 7002 SMD2317619
R1,R6,R7,R8,R10,R14,R16,R24,R25,R26,R31R_0603111kSMD-0603 1,0K2447272
R12,R13,R21,R27,R2,R33,R34R_060374k7SMD-0603 4,7K2447385
R15R_06031121SMD-0603 1202447242
R17R_06031300RND 0603 1 3002447331
R19,R20,R36R_0603320kRND 0603 1 20K2447293
R23R_060312kRND 0603 1 2K2447319
R3,R9,R11,R18,R22R_06035100SMD-0603 1002447227
R35R_06031100kSMD-0603 100K2447226
S1dip_1-3001SW_DIP_x1RND 210-001621960917
SW1WE_4312x6xxx7x61TAST_HORTASTER 33051555989
U1DRA8181DRA818box73 DRA818V
U3SOIC-8_3.9x4.9mm_Pitch1.27mm1LM4871LM 4871 M1468873

DNI means do not install. Leave this part unpoplated.


ArduTrx software

The software utilizes the ArduTrx shield on any compatible board. Together with an HMI board it creates a complete hamradio transceiver.

You can find the software on github:
The software is released under GPL v2

Introduction into the software

In the source code in line 50 to 52 you have to define which hf module you use.

When you start ArduTrx it will display the version and release date for a few seconds during startup. After that the main menu is displayed.

In the main menu on the first line on the left it shows "ArduTrx". You can change this to your Callsign or whatever you like in the source code in line 48.

In the first line on the right it shows the used frequency. The frequency can be changed by turning the rotary encoder. If there is "-" in front of the frequency an offset for repeater operation is used. it is defined in line 81 to 83 or 90 to 92.

In the second line there are several parameters.

You can change the active point by pushing left or right button. The active value is blinking. You can increase or decrease the value by pushing up or down button.
When you are at M for menu pushing up or down will bring you to the menu. You can skip through the options by pushing left or right. The menu has the following options:

By pushing down the active option can be changed. Then pushing right or left changes the value of the option. Pushing up saves the value and the next options may be changed.

Pushing the select button in the main menu will activate PTT and send a 1750 Hz tone for repeater operation.
Pushing the rotary encoder in the main menu will switch from high to low power and backwards.
PTT is activated by pushing the PTT button (SW1) on the right top or pushing the PTT button on the hand microphone.
Switch S1 has to be closed all the time except during programming.


The fully assembled shield ready to plug into an Arduino board

Close-Up of the display and HMI with keys and rotary encoder

This was the first prototype


March 3rd 2019Make MunichArduTrx_Vortrag_makemunich2019.pdf (in German)

If you have any questions contact me via email at, make an issue at github or send me a message at twitter (

Last update: 30. may 2019