ESP32 + SIM7600 – GSM modul a mobilní připojení v Arduino IDE
Jak připojit GSM/LTE modul SIM7600 k ESP32 a navázat mobilní datové připojení pomocí knihovny TinyGSM.
Co je SIM7600?
SIM7600 je LTE Cat-4 modul od výrobce SIMCom, který umožňuje ESP32 připojit se k mobilní síti. Na rozdíl od WiFi nebo Bluetooth funguje kdekoliv se signálem operátora – v terénu, ve vzdálených lokalitách nebo tam, kde WiFi prostě není.
SIM7600 komunikuje s ESP32 přes UART rozhraní pomocí AT příkazů. Knihovna TinyGSM tyto AT příkazy abstrahuje do jednoduchého API.
Co SIM7600 umí
- LTE Cat-4 (download 150 Mbps, upload 50 Mbps)
- 2G/3G/4G fallback
- Hlasové hovory a SMS
- GPS/GNSS (varianta SIM7600E-H)
- HTTP, HTTPS, MQTT přes AT příkazy
Potřebné komponenty
- ESP32
- SIM7600 modul (USB dongle nebo breakout board)
- SIM karta s datovým tarifem
- LTE anténa (MANT konektor – povinná)
- Propojovací vodiče
- Napájení 5V/3A (SIM7600 při vysílání odebírá špičkově až 2A)
⚠️ Napájejte SIM7600 z kvalitního externího zdroje, ne přímo z ESP32. Nedostatečný proud způsobuje náhodné resety a selhání připojení.
Zapojení
Pin TX na SIM7600 připojte na GPIO 16 (RX2) ESP32. Pin RX na SIM7600 připojte na GPIO 17 (TX2) ESP32. GND propojte s GND ESP32 a VCC napájejte z externího 5V zdroje.
⚠️ GND ESP32 a GND externího zdroje musí být propojeny, jinak UART komunikace nefunguje.
Instalace knihovny
V Arduino IDE otevřete Library Manager a nainstalujte:
- TinyGSM od Volodymyr Shymanskyy
- SSLClient (pro HTTPS připojení)
Kód – připojení k mobilní síti
1#define TINY_GSM_MODEM_SIM7600
2#include <TinyGsmClient.h>
3#include <SSLClient.h>
4
5// UART piny pro komunikaci se SIM7600
6#define RXD2 16
7#define TXD2 17
8#define UART_BAUD 115200
9
10// APN vašeho operátora
11// Vodafone CZ: "internet"
12// T-Mobile CZ: "internet.t-mobile.cz"
13// O2 CZ: "internet"
14const char APN[] = "internet";
15
16const char ROOT_CA[] = "";
17
18HardwareSerial SerialAT(2);
19TinyGsm modem(SerialAT);
20TinyGsmClient gsmClient(modem);
21SSLClient sslClient(&gsmClient);
22
23void gsmConnect() {
24 Serial.println("Inicializuji modem...");
25 modem.restart();
26 delay(5000);
27
28 modem.simUnlock("0000"); // PIN SIM karty, nebo vynechte pokud PIN není nastaven
29 delay(3000);
30
31 // Ověření komunikace
32 SerialAT.println("AT");
33 delay(1000);
34 while (SerialAT.available()) Serial.write(SerialAT.read());
35
36 // Síla signálu (0-31, vyšší = lepší, 99 = neznámý)
37 SerialAT.println("AT+CSQ");
38 delay(1000);
39 Serial.print("Sila signalu: ");
40 while (SerialAT.available()) Serial.write(SerialAT.read());
41
42 // Stav registrace v síti
43 SerialAT.println("AT+CREG?");
44 delay(1000);
45 Serial.print("Registrace: ");
46 while (SerialAT.available()) Serial.write(SerialAT.read());
47
48 // IMSI číslo SIM karty
49 SerialAT.println("AT+CIMI");
50 delay(1000);
51 Serial.print("IMSI: ");
52 while (SerialAT.available()) Serial.write(SerialAT.read());
53
54 Serial.println("Modem: " + modem.getModemInfo());
55
56 Serial.print("Čekám na síť...");
57 if (!modem.waitForNetwork(60000L)) {
58 Serial.println("SELHALO!");
59 Serial.println("Status: " + String(modem.getRegistrationStatus()));
60 return;
61 }
62 Serial.println("OK");
63
64 Serial.print("Připojuji GPRS...");
65 if (!modem.gprsConnect(APN, "", "")) {
66 Serial.println("SELHALO!");
67 return;
68 }
69 Serial.println("OK");
70
71 Serial.print("IP adresa: ");
72 Serial.println(modem.localIP());
73}
74
75void setup() {
76 Serial.begin(115200);
77 SerialAT.begin(UART_BAUD, SERIAL_8N1, RXD2, TXD2);
78 delay(3000);
79
80 gsmConnect();
81}
82
83void loop() {
84 if (!modem.isNetworkConnected()) {
85 Serial.println("Síť ztracena – znovu připojuji...");
86 gsmConnect();
87 }
88 delay(30000);
89}
90Jak to funguje
AT příkazy
SIM7600 ovládáte pomocí AT příkazů přes UART. TinyGSM tyto příkazy posílá automaticky, ale v kódu posíláme několik příkazů manuálně pro diagnostiku. Příkaz AT ověří komunikaci – modul odpoví OK. Příkaz AT+CSQ vrátí sílu signálu na stupnici 0–31 (vyšší je lepší, hodnota 99 znamená neznámý signál). Příkaz AT+CREG? vrátí stav registrace v síti – hodnota 1 znamená registrován. Příkaz AT+CIMI vrátí IMSI číslo SIM karty.
Postup připojení
modem.restart()– restartuje modul do čistého stavumodem.simUnlock()– odemkne SIM kartu PINem (pokud je nastaven)modem.waitForNetwork()– čeká dokud se modul nezaregistruje v sítimodem.gprsConnect()– naváže datové spojení přes APN
Síla signálu (CSQ)
Hodnota z AT+CSQ určuje kvalitu signálu. Hodnoty 0–9 znamenají slabý signál, 10–14 jsou dostačující, 15–19 dobrý signál a 20–31 výborný. Hodnota 99 znamená neznámý signál nebo žádné pokrytí.
Časté problémy
Modul nereaguje na AT příkazy → Zkontrolujte zapojení TX/RX – jsou křížem (TX modemu → RX ESP32) → Ověřte že GND jsou propojeny → Zkuste snížit baud rate na 9600
waitForNetwork selže po 60 sekundách → SIM karta není aktivní nebo nemá datový tarif → Špatný PIN – zkuste simUnlock("") pokud PIN není nastaven → Slabý signál – přidejte LTE anténu na MANT konektor
gprsConnect selže → Špatný APN – ověřte u svého operátora → SIM nemá aktivní datové služby
Náhodné resety modulu → Nedostatečný proud ze zdroje – použijte napájení 5V/3A
Možná rozšíření
- Připojte MQTT broker přes mobilní data – posílejte data ze senzorů do internetu bez WiFi
- Přidejte DHT22 a sledujte teplotu vzdáleného skladu nebo skleníku přes LTE
- Postavte GPS tracker – SIM7600E-H má GPS, posílejte polohu přes MQTT
- Vytvořte SMS alarm –
modem.sendSMS("+420...")při detekci pohybu PIR senzorem - Nastavte ESP32 jako LTE hotspot – sdílejte mobilní data přes WiFi
