Interfacing GT-38 UART RF 433MHz Transceiver Module with Arduino

GT-38 Wireless Transceiver Module Features

Electronic devices need to be connected wirelessly in so many cases. In these cases, Radio Frequency or RF equipments are used. RF modules include all radio waves that can travel different distances and reach the receiver according to their frequency and amplitude.

The GT-38 wireless module is a powerful wireless serial communication module with operating frequency range 433-458 MHz that is capable of transmitting data up to 1200 meters. Using this module, one can make wireless communication between two computers.

This module communicates through UART serial port and can be easily interfaced with all microcontrollers and minicomputers. The communication protocol is through UART and using AT commands.

The GT-38 module is designed to be easily installed on SMD boards. This board also has a built-in MCU and does not require separate programming on the module.


It is better to use a Voltage divider on the RX wire side of the module.

Download the datasheet of this module here.

GT-38 Wireless Transceiver Module Pinout

This module has 5 pins:

  • VIN: Module power supply
  • GND: Ground
  • RX: Data receive through serial protocol
  • TX: Data transmit through serial protocol
  • SET: Mode Setting

Required Materials

Hardware Components

Arduino UNO R3 × 1
GT-38 Wireless Transceiver Module × 1
Male to Female Jumper Wire × 1

Software Apps

Arduino IDE

Interfacing GT-38 Wireless Transceiver Module with Arduino

Step 1: Circuit

The following circuit shows how you should connect the Arduino Board to the GT-38 module. Connect wires accordingly.


If the connection is not established, you can replace RX and TX wires.

Step 2: Library

Install the following library on your Arduino IDE.


If you need more help with installing a library on Arduino, read this tutorial: How to Install an Arduino Library

Step 3: Code

Upload the following codes to the Arduino Boards of the receiver and transmitter sides.

  Modified on March 09, 2021
  Modified by MohammedDamirchi from
*/ #include <SoftwareSerial.h> SoftwareSerial mySerial(10, 11); // RX, TX void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial) { ; // wait for serial port to connect. Needed for native USB port only } // set the data rate for the SoftwareSerial port mySerial.begin(9600); } void loop() { // run over and over if (mySerial.available()) { Serial.write(; } if (Serial.available()) { mySerial.write(; }

This code is for testing the connection between the two Arduino Boards.

Liked What You See?​
Get Updates And Learn From The Best​

Comments (10)

  • Billy Martin Reply

    These are awesome useful utility style adding to an arduino that then is parleyed into many great projects.

    May 3, 2021 at 5:59 am
  • Graeme Reply

    I can’t get these things to talk AT ALL. Pulling SET low does not allow you to change anything. Entering “AT” results in “ERROR” being spat back at me before you can even add anything else, and nothing else works. Default settings of 9600 baud 8N1 443MHz with SET line now floating, send it some data, nothing happens, no transmission on scanner radio. Genuine HC12 would seem to be MUCH better then these POS modules. I bought ten of them, up to #5 now, and NONE of them work, none of them will configure via SET. Seller refuses to accept there is anything wrong with them, and will have to open a dispute at this stage. Anyone else had that issue with these things?

    May 19, 2021 at 11:38 pm
    • Mehran Maleki Reply

      Hello my friend. Unfortunately, I haven’t had such issues with these modules yet. Have you tried our code here in this tutorial? The code is for testing the connection between two Arduino boards. The least it can do is to help you figure out whether there is actually something wrong with the modules you have or they’re OK and you haven’t been able to get them to work.

      May 22, 2021 at 8:32 am
    • Calin Reply

      I have exactly the same problem and I have also successfully used HC-12 modules before… Did you find anything new?
      I bought 35 pieces of GT-38 as a replacement of HC-12 and I also get the same problem when I’m sending any AT command: the module will return the text “ERROR”. From what I’ve read this happens if the module cannot understand the command. Since the return “ERROR” message is decoded correctly , it doesn’t seem like a BAUD issue or any Serial protocol problem like start/stop bit, parity bit and so on.
      Do you have any ideas?

      February 17, 2022 at 9:16 pm
      • Ron Saunders Reply

        In Arduino’s Serial Interface, change ‘newline’ to ‘carriage return’ and it will work.

        March 5, 2022 at 4:20 pm
  • Derek Reply

    How does the GT-38 differ from the HC-12? Which is the better of the two?

    June 16, 2021 at 10:46 pm
    • Mehran Maleki Reply

      The main thing that makes these two modules different is their manufacturer. Their specifications are very similar according to the datasheet. So, the only way to figure out their differences -if any- is to evaluate their capabilities in practice.

      June 19, 2021 at 6:56 am
  • Timor bader Reply

    How I can use this rf module using arduino mkr zero? I am asking because mkr zero doesn’t support softwareserial library.

    September 3, 2021 at 1:58 pm
    • Mehran Maleki Reply

      Unfortunately, I don’t have much experience with Arduino MKR Zero and its software serial availability. But as far as I know, the currently Arduino core code sets up the Zero to create two serial ports, but there is no official software serial library yet.
      So, you might have to either write the code and the library yourself or use another Arduino board that supports software serial.

      September 4, 2021 at 6:22 am
  • Morteza Rajabi Reply

    Can you send data from one GT-38 module and receive it with 3 other modules?

    April 25, 2023 at 7:28 am

Leave a Reply

Your email address will not be published. Required fields are marked *