Close Menu
  • Articles
    • Learn Electronics
    • Product Review
    • Tech Articles
  • Electronics Circuits
    • 555 Timer Projects
    • Op-Amp Circuits
    • Power Electronics
  • Microcontrollers
    • Arduino Projects
    • STM32 Projects
    • AMB82-Mini IoT AI Camera
    • BLE Projects
  • IoT Projects
    • ESP8266 Projects
    • ESP32 Projects
    • ESP32 MicroPython
    • ESP32-CAM Projects
    • LoRa/LoRaWAN Projects
  • Raspberry Pi
    • Raspberry Pi Projects
    • Raspberry Pi Pico Projects
    • Raspberry Pi Pico W Projects
  • Electronics Calculator
Facebook X (Twitter) Instagram
  • About Us
  • Disclaimer
  • Privacy Policy
  • Contact Us
  • Advertise With Us
Facebook X (Twitter) Instagram Pinterest YouTube LinkedIn
How To Electronics
  • Articles
    • Learn Electronics
    • Product Review
    • Tech Articles
  • Electronics Circuits
    • 555 Timer Projects
    • Op-Amp Circuits
    • Power Electronics
  • Microcontrollers
    • Arduino Projects
    • STM32 Projects
    • AMB82-Mini IoT AI Camera
    • BLE Projects
  • IoT Projects
    • ESP8266 Projects
    • ESP32 Projects
    • ESP32 MicroPython
    • ESP32-CAM Projects
    • LoRa/LoRaWAN Projects
  • Raspberry Pi
    • Raspberry Pi Projects
    • Raspberry Pi Pico Projects
    • Raspberry Pi Pico W Projects
  • Electronics Calculator
How To Electronics
Home » Using SIM7600 4G GSM with Arduino | AT Commands, Call, SMS
Arduino Projects

Using SIM7600 4G GSM with Arduino | AT Commands, Call, SMS

Mamtaz AlamBy Mamtaz AlamUpdated:August 20, 202213 Comments7 Mins Read
Share Facebook Twitter LinkedIn Telegram Reddit WhatsApp
SIM7600 Arduino
Share
Facebook Twitter LinkedIn Pinterest Email Reddit Telegram WhatsApp

Overview

In this article we will learn how to use SIM7600 GSM GPS 4G LTE Module with Arduino & use AT Commands to make receive call or send receive SMS or Internet Connection.

Earliier we use 2G GSM Module like SIM800/900 and also A9G GSM GPS module. As we know the 2G GSM/GPRS is in the stage of closing in most countries or regions like Australia & Canada. But there are indeed some projects that need remotely GSM wireless communication where WiFi is not available. In such regions, the project requires access to the Internet, such as remote environmental monitoring. Considering the investment/risk, for most cases, the LTE 4G is still a proper solution by now.

One of the most popular GSM GPS 4G LTE Module is SIM7600. The SIM7600 series is the LTE module that supports wireless communication modes of LTE. It also integrates multiple satellite high-accuracy positioning GNSS systems, with multiple built-in network protocols.

One of the readymade customized SIM7600 & Arduino board is designed by Makerfabs. This Maduino Zero 4G LTE module uses the SIMCOM7600(E/A)CAT4 module, to help Makers to achieve the 4G connection easily. Besides, this module can be a fully 4G access to your computer or Raspberry Pi, and also for call or SMS.


SIM7600 GSM GPS 4G LTE Module

The SIM7600 Series is Multi-Band LTE-TDD/LTE-FDD/HSPA+/TD-SCDMA and Dual-Band GSM/GPRS/EDGE module solution in a SMT type which supports LTE CAT4 up to 150Mbps for downlink data transfer.

SIM7600

It has strong extension capability with rich interfaces including UART, USB2.0, SPI, I2C, GPIO, etc. With abundant application capabilities like TCP/UDP/FTP/FTPS/HTTP/HTTPS/SMTP/POP3 and MMS, the module provides much flexibility and ease of integration for customers’ applications. To learn more about SIM7600 refer to SIM7600 Datasheet.



General features

  • Quad-Band TDD-LTE B38/B39/B40/B41
  • Tri-Band FDD-LTE B1/B3/B8
  • Dual-Band TD-SCDMA B34/B39
  • Dual-Band WCDMA/HSDPA/HSPA+ B1/B8
  • GSM/GPRS/EDGE 900/1800 MHz
  • Control Via AT Commands
  • GNSS gpsOne Gen 8B; Standalone; Assisted, XTRA;
  • Data Transfer: LTE CAT4 with Uplink up to 50Mbps & Downlink up to 150Mbps
  • Interfaces: USB2.0, UART, SIM Card, SPI, I2C, GPIO, ADC, PCM, SDIO

Maduino Zero 4G LTE(SIM7600X) Board

The Maduino Zero 4G LTE integrated two types of the 4G LTE CAT4 module SIM7600A-H or SIM7600E-H. The SIM7600A-H/SIM7600E-H is a complete multi-band LTE-FDD/LTE- TDD/HSPA+/UMTS/EDGE/GPRS/GSM module solution in LCC type. It supports LTE CAT4 up to 150Mbps for downlink and 50Mbps for uplink data transfer, much faster and popular than 2G/3G.

Maduino Zero 4G LTE(SIM7600X) Board

You can purchase this board from Maduino Zero 4G LTE(SIM7600X) as it is manufactured by Makerfabs.


Interface

Makerfabs Maduino Zero 4G LTE module is based on ATSAMD21G18A microcontroller, which is Arduino compatible. Hence you can use Arduino IDE to operate and program the SIM7600 Module. The front and back side of the board looks something like this.

SIM7600 Board Interfaces

On the front side you can connect a 3.7V Lithium-Ion Battery to the battery connector. The switch can be used to turn ON/OFF the module. There are two USB TypeC ports, one for microcontroller and the other for LTE. There are two pushbuttons used for MCU & LTE reset. The stat LED indicates the network connectivity status. You can connect 3 antennas to the board which are the main antenna, auxiliary antenna, and a GPS antenna. A 3.5mm Jack can be used to connect mic or earphones and an audio jack can be used for connecting speakers.

On the backside, there is a micro-sim slot for inserting a 4G SIM Card. There is a pair of SD Card slots, one for Microcontroller and the other for SIM7600.

Don’t plug or unplug the Antenna, SIM Cars, SD Card when the device is powered on. It may result in short-circuiting that may burn the IC down.



Features

  • Supports dial-up, phone, SMS, TCP, UDP, DTMF, HTTP, FTP, and so on
  • Dual USB Type C port
  • Control Via AT Commands
  • Board USB supply voltage range: 4.8~5.5V, 5.0V Typical
  • Board Battery supply voltage range: 3.4~4.2V, 3.7V Typical
  • 3GPP E-UTRA Release 11
  • Onboard charger, up to 1A charge current
  • Overcharge protection(OCP), 4.3V
  • Over-discharge protection(ODP), 2.5V
  • Power Manager, the board can be supplied by USB or battery.
  • IPEX Antenna, GSM/UMTS/LTE main antenna. UMTS/LTE auxiliary antenna. GNSS antenna
  • SMS support
  • Audio support
  • On boarder controller: ATSAMD21G18A
  • Audio Codec: NAU8810
  • Level Shifter: TXS0108E
  • Windows and Raspberry Pi support
  • Qualcomm MDM9x07 Chipset

Using SIM7600 GSM GPS 4G LTE with Arduino

Now let us see how we can use the SIM7600 GSM GPS 4G LTE with Arduino to use AT Commands for Call & SMS features.

SIM7600 GSM GPS 4G LTE with Arduino

  1. Plug the SIM card into the board.
  2. Plug the GPS antenna into the interface.
  3. Plug two 4G-GSM antennas into the main antenna interface and auxiliary one.
  4. Plug the headphone with the microphone.
  5. Plug the SD card into the SD card slot for SIM7600.

When powering the board and the SIM7600 module working, the onboard STA LED(blue) will turn on.


Setting up Arduino IDE

The ATSAMD21G18A board isn’t pre-installed in the Arduino IDE. So, we need to install “Arduino Zero Board” from the Board Manager.

Open the Boards Manager From the top Arduino IDE menu, select Tools-> Board-> Boards Manager… to open the Boards Manager dialog box. Then install Arduino SAMD Boards(32-bits ARM Cortex-M0+).

Once, installation is completed, you can now select the Arduino Zero board as shown in the image below. To program this Board you need to connect USB TypeC Data Cable.




Source Code/Program

Now open the Arduino IDE and paste the following sketches below.Verify the code and upload.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include <stdio.h>
#include <string.h>
 
#define DEBUG true
#define MODE_1A
 
#define DTR_PIN 9
#define RI_PIN 8
 
#define LTE_PWRKEY_PIN 5
#define LTE_RESET_PIN 6
#define LTE_FLIGHT_PIN 7
 
String from_usb = "";
 
void setup()
{
    SerialUSB.begin(115200);
    //while (!SerialUSB)
    {
        ; // wait for Arduino serial Monitor port to connect
    }
 
    delay(100);
 
    Serial1.begin(115200);
 
    //Serial1.begin(UART_BAUD, SERIAL_8N1, MODEM_RXD, MODEM_TXD);
 
    pinMode(LTE_RESET_PIN, OUTPUT);
    digitalWrite(LTE_RESET_PIN, LOW);
 
    pinMode(LTE_PWRKEY_PIN, OUTPUT);
    digitalWrite(LTE_RESET_PIN, LOW);
    delay(100);
    digitalWrite(LTE_PWRKEY_PIN, HIGH);
    delay(2000);
    digitalWrite(LTE_PWRKEY_PIN, LOW);
 
    pinMode(LTE_FLIGHT_PIN, OUTPUT);
    digitalWrite(LTE_FLIGHT_PIN, LOW); //Normal Mode
    // digitalWrite(LTE_FLIGHT_PIN, HIGH);//Flight Mode
 
    SerialUSB.println("Maduino Zero 4G Test Start!");
 
    sendData("AT+CGMM", 3000, DEBUG);
}
 
void loop()
{
    while (Serial1.available() > 0)
    {
        SerialUSB.write(Serial1.read());
        yield();
    }
    while (SerialUSB.available() > 0)
    {
#ifdef MODE_1A
        int c = -1;
        c = SerialUSB.read();
        if (c != '\n' && c != '\r')
        {
            from_usb += (char)c;
        }
        else
        {
            if (!from_usb.equals(""))
            {
                sendData(from_usb, 0, DEBUG);
                from_usb = "";
            }
        }
#else
        Serial1.write(SerialUSB.read());
        yield();
#endif
    }
}
 
bool moduleStateCheck()
{
    int i = 0;
    bool moduleState = false;
    for (i = 0; i < 5; i++)
    {
        String msg = String("");
        msg = sendData("AT", 1000, DEBUG);
        if (msg.indexOf("OK") >= 0)
        {
            SerialUSB.println("SIM7600 Module had turned on.");
            moduleState = true;
            return moduleState;
        }
        delay(1000);
    }
    return moduleState;
}
 
String sendData(String command, const int timeout, boolean debug)
{
    String response = "";
    if (command.equals("1A") || command.equals("1a"))
    {
        SerialUSB.println();
        SerialUSB.println("Get a 1A, input a 0x1A");
 
        //Serial1.write(0x1A);
        Serial1.write(26);
        Serial1.println();
        return "";
    }
    else
    {
        Serial1.println(command);
    }
 
    long int time = millis();
    while ((time + timeout) > millis())
    {
        while (Serial1.available())
        {
            char c = Serial1.read();
            response += c;
        }
    }
    if (debug)
    {
        SerialUSB.print(response);
    }
    return response;
}

After uploading the code, open the serial monitor. You can now send the AT command to the board, and it will print the module response. There are some demos that show how to use the AT commands.


SIM7600 AT Commands Test

These are some basic functions to test AT Commands.

1
2
3
4
AT+CGMI    // Request manufacturer identification
AT+CGMM    // Request model identification
AT+CGSN    // Request product serial number identification
AT+CSUB    // Request the module version and chip

1
2
3
4
5
AT+CPIN?     // Request the state of the SIM card
AT+CICCID    // Read ICCID from SIM card
AT+CNUM      // Request the subscriber number
AT+CNMP?     // Preferred mode selection
AT+COPS?     // Check the current network operator

1
2
AT+IPREX?    // Check local baud rate
AT+CRESET    // Reset the module



Get the GNSS location

To get the GNSS Location from SIM7600, use the following AT Commands.

1
2
3
AT+CGPS=1      // Start GPS session
AT+CGPSINFO    // Get GPS fixed position information
AT+CGPS=0      // Stop GPS session


Send and receive SMS

We can send SMS using SIM7600 & Arduino. Is recommended to use other serial monitors not the Arduino IDE one to send the AT command for this demo.

1
2
3
AT+CSCA="XXXXXX"       // Set the SMS service centre address
AT+CMGF=1              // Select SMS message format
AT+CMGS="xxxxxx"       // Send message to "xxxxxx"(the receiver number).

After sending the above AT commands, it will show “>” and then you can send your message. When you finish your message, you need to send “1A” with the hexadecimal for confirming or send “1B” with the hexadecimal for cancel. This is why it is recommended to use other serial monitor.

1
2
    AT+CMGR=3        // Read message
    AT+CMGD=3        // Delete message


Make a call

You can make or receive a call with SIM7600 using following AT Commands.

1
2
3
    AT+CSDVC         // Switch voice channel device
    AT+CSDVC=1       // 1-Handset, 3-Speaker phone
    AT+CLVL=2        // Set loudspeaker volume level to 2, the level range is 0 to 5

1
2
3
4
    ATDxxxxx;        // Call to xxxxx
    AT+CHUP          // Hang up the call
    AT+CLIP=1     // Calling line identification presentation
    ATA         // Call answer


HTTP test

You can test the SIM7600 LTE HTTP request using following commands.

1
2
3
4
5
    AT+HTTPINIT         // Initialize and start the HTTP
    AT+HTTPPARA="URL","http://www.makerfabs.com"  // Set the URL
    AT+HTTPACTION=0    // Connect the HTTP. (0-get, 1-post, 2-head)
    AT+HTTPHEAD        // Read the response's header.
    AT+HTTPREAD=0,3    // Read the content (“3” means the number of the reading data)

A detailed guide on how to make HTTP Post with SIM7600 is discussed on this article: Send Data with HTTP Post Method.


Test the SD card for SIM7600

When you plug an SD card into the SD card slot for SIM7600, You can use the following commands to check it.

1
2
3
4
    AT+FSCD=D:                    // Select SD card directory as current directory
    AT+FSLS                       // List directories/files in current directory
    AT+CFTRANRX="D: TEST.txt",10  // Transfer a file to EFS
    AT+CFTRANTX="D: TEST.txt"     // Transfer a file from EFS to host



Surfing the Internet using SIM7600

The SIM7600 Arduino Modem can be a wireless networking device to support the PC or Raspberry PI surfing the internet. Use Type-C USB cable to connect the board(USB-LTE) and PC.

Surfing the Internet using SIM7600

For surfing the internet you need to install the SIM7600 driver to the PC. The driver is available on resources.

Open Device Manager – > Other equipment – >“SimTech,Incorporated”- > Update the driver – > Browse my computer to find driver files – > Select a path for saving the driver file based on the system- >The installation is complete.

Install all the drivers that show as the yellow exclamation marks.

If the PC does not connect to the internet through this device, please open the serial monitor and send the AT command to start the networking.

1
    AT$QCRMCALL=1,1

The network icon will then appear as a cellular network.

Surfing the Internet using SIM7600

If have are still not able to connect to the internet, please use the PPP dial-up connection way to start networking. More info you can get from GitHub.


Video Tutorial & Guide

SIM7600 4G LTE GSM Modem Tutorial with Arduino | AT Commands, Call, SMS, HTTP Internet
Watch this video on YouTube.

Share. Facebook Twitter Pinterest LinkedIn Tumblr Email Reddit Telegram WhatsApp
Previous ArticleInterfacing DS18B20 Sensor with Raspberry Pi Pico
Next Article HTTP Post with SIM7600 & Arduino | Send Data to Server

Related Posts

DC Energy Meter using Arduino

Build a DC Energy Meter using Arduino – 32V/5A

Updated:August 26, 20252K
Interfacing ADXL375 Accelerometer with Arduino

Interfacing ADXL375 Accelerometer with Arduino (±200g)

Updated:June 28, 2025
PZEM-004T Arduino Energy Meter

DIY AC Energy Meter using PZEM-004T & Arduino

Updated:March 6, 20258K
Interfacing BMI160 Accelerometer & Gyroscope with Arduino

Interfacing BMI160 Accelerometer & Gyroscope with Arduino

Updated:February 2, 20259K
Password Based Door Lock Security System Using Arduino & Keypad

Password Based Door Lock Security System Using Arduino & Keypad

Updated:February 2, 20252436K
Earthquake Detector Alarm with with Accelerometer & Arduino

Earthquake Detector Alarm with Accelerometer & Arduino

Updated:February 2, 2025661K
View 13 Comments

13 Comments

  1. Marco on February 28, 2022 2:53 PM

    Hi , is it possible to use tinygsm library instead of sending all the AT command ?

    Reply
    • Admin on February 28, 2022 2:53 PM

      The Tinygsm library might not work with this module. But you can give a try

      Reply
      • tormodwarren on May 9, 2022 5:15 PM

        Hi Admin!

        I get error message “SerialUSB” was not declared in this scope.

        It is ugrent that I fix this for work. Do you kindly have a solution?

        Thank you!

      • Admin on May 9, 2022 5:19 PM

        SerialUSB command is not supported by Arduino UNO or ATmega328 based board. SerialUSB command is for ATSAMD based 32 bit controller.

  2. Tuan Trung on April 3, 2022 11:01 AM

    Hi Admin
    I used SIM7600GH and Andruino Uno R3 but when I open the Arduino IDE and paste the following sketches below.Verify the code, It’s indicated: ‘SerialUSB’ was not declared in this scope
    So how to fix t, please?

    Reply
  3. tormodwarren on May 9, 2022 5:12 PM

    Hi Tuan! I have the same issue, and it is ugent to fix it for work. Did you get a solution?

    Thank you, have a good day!

    Reply
  4. ericdeath on November 9, 2022 1:00 AM

    No questions – this is just a brilliant web page. Congradualtions!

    Reply
  5. Achu SA on January 30, 2023 4:11 AM

    Am also getting the same error as shown in your call image.

    No Carrier Found.

    Where you able to fix it ?

    Reply
  6. Sarahe on February 7, 2023 12:16 AM

    Hi My GPS is showing no info just ””’

    Reply
  7. Borja Vega on July 2, 2023 5:13 PM

    Very good post!
    Let me ask you something…
    You define a “1A” token from serial port and you answer to the SIMCOM Serial1.write(26);
    Why ASCII 26, I guess It’s SUB ASCII simbol? shouldn’t it be “>” simbol?

    Thanks!

    Reply
  8. Borja Vega on July 2, 2023 5:15 PM

    You have to include this line of code on the top of the sketch:

    #define SerialUSB Serial

    Arduino always load Serial ports and some other stuff, you only have to access it through his new name!

    Best!

    Reply
  9. Bjorn on July 19, 2023 9:32 AM

    Hi! Did you ever find a solution to this? I am getting empty GPS values as well.

    Reply
  10. Chinua on August 10, 2023 1:08 PM

    AT+CMGS = “+2348023411675”

    This is used to send SMS from the IDE monitor.

    But how do you send this same statement as part of the Arduino code?

    Reply

CommentsCancel reply

Latest Posts

ESP32 Fingerprint Attendance System with Live Web Dashboard

June 14, 2026
IoT Based PM & Air Quality Monitoring System using ESP32

IoT Based PM & Air Quality Monitoring System using ESP32

June 14, 2026
DIY ESP32 MLX90640 IR Thermal Camera with Live Web Display

DIY ESP32 MLX90640 IR Thermal Camera with Live Web Display

May 10, 2026
IoT Activity Tracker with ESP32 & Accelerometer Gyroscope

IoT Activity Tracker with ESP32 & Accelerometer/Gyroscope

May 2, 2026
A Guide to Sourcing Obsolete ICs for Vintage Projects

Beyond AliExpress: A Guide to Sourcing Obsolete ICs for Vintage Projects

April 21, 2026

ESP32 IoT Vehicle Motion Analyzer with MPU6050 & LIS3MDL

April 27, 2026
Building a Smart Sensor Node with a BLE Microcontroller

Building a Smart Sensor Node with a BLE Microcontroller

February 26, 2026
High-Accuracy Pitch, Roll, Yaw with ESP32 & BNO08x IMU

High-Accuracy Pitch, Roll, Yaw with ESP32 & BNO08x IMU

April 27, 2026
Top Posts & Pages
  • IoT Based PM & Air Quality Monitoring System using ESP32
    IoT Based PM & Air Quality Monitoring System using ESP32
  • How to use LDR Sensor Module with Arduino
    How to use LDR Sensor Module with Arduino
  • 12V DC to 220V AC Inverter Circuit & PCB
    12V DC to 220V AC Inverter Circuit & PCB
  • Buck Converter: Basics, Working, Design & Application
    Buck Converter: Basics, Working, Design & Application
  • IoT AC Energy Meter with PZEM-004T & ESP32 WebServer
    IoT AC Energy Meter with PZEM-004T & ESP32 WebServer
  • How to use Modbus RTU with ESP32 to read Sensor Data
    How to use Modbus RTU with ESP32 to read Sensor Data
  • LM358 Dual Op-Amp Features, Pins, Working & Applications
    LM358 Dual Op-Amp Features, Pins, Working & Applications
  • ECG Graph Monitoring with AD8232 ECG Sensor & Arduino
    ECG Graph Monitoring with AD8232 ECG Sensor & Arduino
Categories
  • Arduino Projects (197)
  • Articles (60)
    • Learn Electronics (19)
    • Product Review (15)
    • Tech Articles (28)
  • Electronics Circuits (46)
    • 555 Timer Projects (21)
    • Op-Amp Circuits (7)
    • Power Electronics (13)
  • IoT Projects (205)
    • ESP32 MicroPython (7)
    • ESP32 Projects (82)
    • ESP32-CAM Projects (15)
    • ESP8266 Projects (76)
    • LoRa/LoRaWAN Projects (22)
  • Microcontrollers (38)
    • AMB82-Mini IoT AI Camera (4)
    • BLE Projects (18)
    • STM32 Projects (19)
  • Raspberry Pi (93)
    • Raspberry Pi Pico Projects (57)
    • Raspberry Pi Pico W Projects (12)
    • Raspberry Pi Projects (24)
Follow Us
  • Facebook
  • Twitter
  • Pinterest
  • Instagram
  • YouTube
About Us

“‘How to Electronics’ is a vibrant community for electronics enthusiasts and professionals. We deliver latest insights in areas such as Embedded Systems, Power Electronics, AI, IoT, and Robotics. Our goal is to stimulate innovation and provide practical solutions for students, organizations, and industries. Join us to transform learning into a joyful journey of discovery and innovation.

Copyright © How To Electronics. All rights reserved.
  • About Us
  • Disclaimer
  • Privacy Policy
  • Contact Us
  • Advertise With Us

Type above and press Enter to search. Press Esc to cancel.

Ad Blocker Enabled!
Ad Blocker Enabled!
Looks like you're using an ad blocker. Please allow ads on our site. We rely on advertising to help fund our site.