====== 5G med ESP32 ======
ESP32 **understøtter ikke 5G direkte**, da dens indbyggede trådløse modul kun håndterer **2,4 GHz Wi-Fi (802.11 b/g/n)** og **Bluetooth (Classic + BLE)**. Men du kan **tilføje 5G-funktionalitet** til ESP32 ved at bruge et **eksternt 5G-modem**, der kommunikerer med ESP32 via **UART, SPI, I²C eller USB**.
----
==== Muligheder for 5G med ESP32 ====
===== Eksternt 5G-modem (anbefalet) =====
Du kan bruge et **dedikeret 5G-modem** (f.eks. **Quectel, SIMCom, Telit, eller Huawei**) og forbinde det til ESP32 via **UART (AT-kommandos)** eller **USB**. ESP32 fungerer som **controller**, mens 5G-modemet håndterer den trådløse kommunikation.
^ **Modul** ^ **Type** ^ **Interface til ESP32** ^ **5G-standard** ^ **Pris (ca.)** ^ **Noter** ^
| **Quectel EP06** | 5G NR (Sub-6 GHz) | **USB 3.0 / PCIe** | **5G SA/NSA** | ~1.500–2.500 DKK | Kræver USB-to-UART konverter (f.eks. CP2102) eller PCIe-bridge. |
| **Quectel RG500Q** | 5G NR (Sub-6 GHz) | **USB 3.0 / UART** | **5G SA/NSA** | ~2.000–3.000 DKK | Understøtter **AT-kommandos** via UART. |
| **SIMCom SIM8200** | 5G NR (Sub-6 GHz) | **USB / UART / PCIe** | **5G SA/NSA** | ~1.800–2.800 DKK | Populært til IoT, understøtter **Linux (OpenCPU)**. |
| **Telit FN980** | 5G NR (Sub-6 GHz) | **USB / PCIe** | **5G SA/NSA** | ~2.500–4.000 DKK | Industrielt modul, god dokumentation. |
| **Huawei ME909s-521** | 5G (Sub-6 GHz) | **USB / UART** | **5G NSA** | ~2.000–3.500 DKK | Kræver **SIM-kort** og **antenner**. |
| **Sierra Wireless MC7455** | 4G/LTE (kan opgraderes til 5G) | **USB / PCIe** | **LTE Cat. 6** | ~1.000–2.000 DKK | Godt til prototyping, men kun 4G (kan opgraderes til 5G-modeller). |
> **⚠️ Bemærk:**
> * **5G-moduler er dyre** (1.500–4.000 DKK) og kræver **eksterne antenner** og **SIM-kort med 5G-dækning**.
> * **ESP32 kan ikke håndtere 5G direkte** – det kræver et separat modem.
> * **Strømforbrug**: 5G-moduler bruger **0,5–2 A** under aktiv brug (ESP32 skal have en **ekstern strømforsyning**).
----
==== Implementeringsmetoder ====
===== Metode 1: 5G-modem via UART (AT-kommandos) =====
**Fordele:** \\
✅ Nemt at integrere med ESP32 (UART er indbygget).\\
✅ Understøttes af de fleste 5G-moduler (Quectel, SIMCom, Telit).\\
✅ Lavt strømforbrug (sammenlignet med USB).\\
**Ulemper:** \\
❌ Langsommere end USB (begrænset af UART-hastighed, typisk **115200–4 Mbps**).\\
❌ Kræver **AT-kommandos** til konfiguration.\\
====== Hardware-forbindelse =====
ESP32 (UART) → 5G-modem (UART)
---------------------------------
TX (GPIO 17) → RX (Modem)
RX (GPIO 16) → TX (Modem)
GND → GND
3.3V/5V → VCC (Check modem-spænding!)
> **⚠️ Vigtigt:**
> * Nogle 5G-moduler kører på **5V**, mens ESP32 er **3,3V**. Brug en **logisk niveau-konverter** (f.eks. **TXB0104**).
> * Tilslut **antenner** og **SIM-kort** til 5G-modemet.
====== Software (Arduino-kode til ESP32) =====
#include
// Opret en ny HardwareSerial til 5G-modemet (UART2)
HardwareSerial SerialModem(2); // RX=16, TX=17
void setup() {
Serial.begin(115200); // Debug til Serial Monitor
SerialModem.begin(115200, SERIAL_8N1, 16, 17); // UART2: RX=16, TX=17
delay(1000);
sendATCommand("AT", "OK", 2000); // Test forbindelse
sendATCommand("AT+CPIN?", "READY", 2000); // Tjek SIM-kort
sendATCommand("AT+CREG?", "0,1", 2000); // Tjek netværksregistrering
sendATCommand("AT+CGATT=1", "OK", 5000); // Aktiver GPRS/5G
sendATCommand("AT+CGACT=1,1", "OK", 5000); // Aktiver PDP-kontekst
}
void loop() {
// Eksempel: Send HTTP GET-anmodning
String response = sendATCommand("AT+HTTPGET=1,80,\"http://example.com\"", "OK", 10000);
Serial.println("HTTP Response: " + response);
delay(30000); // Vent 30 sekunder
}
// Funktion til at sende AT-kommandos
String sendATCommand(String command, const char* resp, unsigned long timeout) {
String response = "";
SerialModem.println(command);
unsigned long startTime = millis();
while (millis() - startTime < timeout) {
if (SerialModem.available()) {
char c = SerialModem.read();
response += c;
if (response.indexOf(resp) != -1) {
break;
}
}
}
Serial.print("AT Command: ");
Serial.println(command);
Serial.print("Response: ");
Serial.println(response);
return response;
}
====== Eksempel på AT-kommandos (SIMCom SIM8200) =====
^ **Kommando** ^ **Beskrivelse** ^
| `AT` | Test forbindelse til modemet. |
| `AT+CPIN?` | Tjek om SIM-kortet er indsat og klar. |
| `AT+CREG?` | Tjek netværksregistrering (0,1 = registreret). |
| `AT+CGATT=1` | Aktiver GPRS/5G-forbindelse. |
| `AT+CGACT=1,1` | Aktiver PDP-kontekst (nødvendigt for data). |
| `AT+CNACT=1,1,"apn"` | Opret forbindelse til APN (f.eks. `internet` eller `data`). |
| `AT+HTTPGET=1,80,"url"` | Send HTTP GET-anmodning til en URL. |
| `AT+HTTPREAD=0,100` | Læs HTTP-svar (100 bytes). |
| `AT+CSQ` | Tjek signalstyrke (0–31, hvor 31 er bedst). |
| `AT+CPSI?` | Vis 5G-netværksinfo (hvis understøttet). |
----
===== Metode 2: 5G-modem via USB (anbefalet til høj hastighed) =====
**Fordele:** \\
✅ **Højere hastighed** (USB 3.0 understøtter op til **5 Gbps**).\\
✅ **Bedre stabilitet** (mindre fejl end UART).\\
✅ Understøtter **avancerede funktioner** (f.eks. **QMI, MBIM, NCM**).\\
**Ulemper:**\\
❌ Kræver **USB-host-funktionalitet** (ESP32 har ikke indbygget USB-host).\\
❌ Kræver **ekstern USB-host-controller** (f.eks. **MAX3421E** eller **FT232H**).\\
====== Hardware-forbindelse (med USB-host) =====
ESP32 → USB-Host-Chip (f.eks. MAX3421E) → 5G-modem (USB)
-----------------------------------------------------------
GPIO → SPI (til MAX3421E) → USB A/B
3.3V → VCC → 5V (via regulator)
GND → GND → GND
> **⚠️ Bemærk:**
> * **MAX3421E** er en **USB-host-controller**, der kan styres via **SPI** fra ESP32.
> * Kræver **ekstern strømforsyning** (5G-moduler bruger **0,5–2 A**).
====== Software (ESP32 + MAX3421E) =====
Du skal bruge **USB-host-biblioteker** til ESP32:
* [[https://github.com/adafruit/Adafruit_USB_Host_Shield|USB Host Library for ESP32]] (til MAX3421E).
* [[https://github.com/hathach/tinyusb|TinyUSB]] (alternativ).
#include
#include
#include
#include
USB Usb;
MAX3421E UsbHost;
AndroidAccessory Acc(&Usb);
void setup() {
Serial.begin(115200);
UsbHost.Init();
Usb.Init();
}
void loop() {
Usb.Task();
if (Acc.isConnected()) {
Serial.println("5G-modem forbundet via USB!");
// Send data via USB (f.eks. QMI/AT-kommandos)
}
}
> **⚠️ Udfordringer:**
> * **Kompleks opsætning** (kræver dyb forståelse af USB-protokoller).
> * **Begrænset støtte** til 5G-moduler via USB-host på ESP32.
----
===== Metode 3: 5G via Ethernet (ESP32 + 5G-router) =====
Hvis du **ikke vil bruge et 5G-modem direkte**, kan du forbinde ESP32 til en **5G-router** via **Ethernet** (hvis ESP32-modellen understøtter det, f.eks. **ESP32-Ethernet-Kit**).
====== Hardware-forbindelse =====
ESP32 (Ethernet) → 5G-router (Ethernet-port)
----------------------------------------------
TX/RX → Router
GND → GND
3.3V/5V → (Strøm til ESP32)
> **⚠️ Bemærk:**
> * **ESP32-Ethernet-Kit** (f.eks. **ESP32-POE-ISO**) understøtter **100 Mbps Ethernet**.
> * **5G-routeren** skal have en **Ethernet-port** (f.eks. **Huawei B818-263**).
====== Software (ESP32 + Ethernet) =====
#include
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // MAC-adresse
IPAddress ip(192, 168, 1, 100); // Statisk IP (tilpas til dit netværk)
void setup() {
Serial.begin(115200);
Ethernet.begin(mac, ip);
delay(1000);
Serial.println("Forbundet til 5G-router via Ethernet!");
Serial.print("IP: ");
Serial.println(Ethernet.localIP());
}
void loop() {
// Eksempel: Send HTTP GET-anmodning
EthernetClient client;
if (client.connect("example.com", 80)) {
client.println("GET / HTTP/1.1");
client.println("Host: example.com");
client.println("Connection: close");
client.println();
while (client.available()) {
Serial.write(client.read());
}
client.stop();
}
delay(30000);
}
----
==== Overvejelser og udfordringer ====
===== Fordele ved at bruge 5G med ESP32 =====
^ **Fordel** ^ **Beskrivelse** ^
| **Høj hastighed** | 5G giver **1–10 Gbps** (teoretisk), **100–500 Mbps** (reelt). |
| **Lav latens** | **1–10 ms** (godt til real-time applikationer). |
| **Større dækning** | 5G (Sub-6 GHz) har bedre dækning end Wi-Fi. |
| **Flere enheder** | 5G kan håndtere **1 million enheder pr. km²** (godt til IoT). |
| **Fremtidssikret** | 5G er den nyeste standard og vil blive udbredt. |
----
===== Ulemper og udfordringer =====
^ **Udfordring** ^ **Beskrivelse** ^ **Løsning** ^
| **Høj pris** | 5G-moduler koster **1.500–4.000 DKK**. | Brug **4G/LTE** som alternativ (billigere, f.eks. **SIM800C** ~200 DKK). |
| **Strømforbrug** | 5G-moduler bruger **0,5–2 A**. | Brug **ekstern strømforsyning** (f.eks. **5V/3A power bank**). |
| **Kompleks opsætning** | Kræver **AT-kommandos, antenner, SIM-kort**. | Brug **færdige løsninger** (f.eks. **5G-router + Ethernet**). |
| **Begrænset ESP32-understøttelse** | ESP32 har **ingen indbygget 5G**. | Brug **eksternt modem** (UART/USB). |
| **Netværksdækning** | 5G er **ikke tilgængeligt overalt**. | Tjek **dækning** hos din udbyder (Telia, TDC, 3, etc.). |
| **SIM-kort** | Kræver **5G-kompatibelt SIM-kort**. | Brug **IoT-SIM** (f.eks. fra **Hologram, Soracom, eller lokale udbydere**). |
| **Antenner** | 5G-moduler kræver **eksterne antenner**. | Brug **MIMO-antenne** for bedst ydeevne. |
----
==== Alternativer til 5G med ESP32 ====
Hvis 5G er for **dyrt eller komplekst**, kan du overveje disse alternativer:
^ **Teknologi** ^ **Hastighed** ^ **Rækkevidde** ^ **Strømforbrug** ^ **Pris (modul)** ^ **Bemærkninger** ^
| **4G/LTE (Cat. 1)** | 10 Mbps | 1–10 km | 200–500 mA | ~200–500 DKK | Godt til IoT (f.eks. **SIM800C**). |
| **4G/LTE (Cat. 4)** | 150 Mbps | 1–10 km | 300–800 mA | ~500–1.000 DKK | Hurtigere, men dyrere (f.eks. **SIM7600**). |
| **NB-IoT** | 250 Kbps | 1–10 km | 10–100 mA | ~300–800 DKK | Lavt strømforbrug, god til sensorer. |
| **LoRaWAN** | 0,3–50 Kbps | 2–15 km | 1–50 mA | ~200–600 DKK | Lang rækkevidde, lavt strømforbrug. |
| **Wi-Fi (ESP32)** | 150 Mbps | 50–100 m | 50–200 mA | ~50–200 DKK | Nemt, men begrænset rækkevidde. |
| **Bluetooth (BLE)** | 1–2 Mbps | 10–100 m | 10–50 mA | ~50–200 DKK | Godt til kortdistance-kommunikation. |
----
==== Anbefalinger ====
^ **Brugsscenarie** ^ **Anbefalet løsning** ^ **Modul** ^ **Interface** ^ **Pris (ca.)** ^
| **Højhastigheds-data (100+ Mbps)** | 5G-modem via **UART/USB** | **Quectel EP06** | UART/USB | ~2.000 DKK |
| **Lavt strømforbrug (batteri)** | **4G/LTE (Cat. 1)** | **SIM800C** | UART | ~200 DKK |
| **Lang rækkevidde (IoT-sensorer)** | **NB-IoT** | **SIM7020** | UART | ~500 DKK |
| **Kortdistance (hjemmeautomation)** | **Wi-Fi (ESP32)** | **ESP32-WROOM-32** | Wi-Fi | ~50 DKK |
| **Enkelt opsætning** | **5G-router + Ethernet** | **ESP32-Ethernet-Kit** | Ethernet | ~300 DKK + router |
----
==== Trin-for-trin guide til 5G med ESP32 (UART-metode) ====
===== Trin 1: Vælg et 5G-modul =====
* **Anbefalet:** **Quectel RG500Q** (5G, UART-understøttelse).
* **Alternativ:** **SIMCom SIM8200** (5G, USB/UART).
===== Trin 2: Køb nødvendige komponenter =====
^ **Komponent** ^ **Eksempel** ^ **Pris (ca.)** ^
| ESP32 (f.eks. WROOM-32D) | ESP32-WROOM-32D | ~100 DKK |
| 5G-modul | Quectel RG500Q | ~2.000 DKK |
| Logisk niveau-konverter | TXB0104 | ~50 DKK |
| 5G-antenne | MIMO-antenne | ~200 DKK |
| SIM-kort | IoT-SIM (f.eks. Hologram) | ~100 DKK/år |
| Strømforsyning | 5V/3A USB-C | ~100 DKK |
| Breadboard & ledninger | - | ~50 DKK |
===== Trin 3: Forbind hardware =====
1. Tilslut **5G-modulet** til **logisk niveau-konverter** (hvis nødvendigt).
2. Forbind **konverteren** til **ESP32** (UART-pins: RX/TX).
3. Tilslut **antenner** og **SIM-kort** til 5G-modulet.
4. Tilslut **strømforsyning** (5V/3A) til 5G-modulet.
===== Trin 4: Programmer ESP32 =====
* Brug **Arduino IDE** med ovenstående **UART-eksempelkode**.
* Test forbindelse med **AT-kommandos** (`AT`, `AT+CPIN?`, `AT+CREG?`).
===== Trin 5: Test 5G-forbindelse =====
1. Send `AT+CNACT=1,1,"apn"` (udskift `apn` med din udbyder, f.eks. `internet`).
2. Tjek forbindelse med `AT+CNACT?`.
3. Send data via `AT+HTTPGET` eller `AT+CSOCKSEND`.
===== Trin 6: Optimér strømforbrug =====
* Sluk for **5G-modulet**, når det ikke er i brug (via `AT+CPOWD=1`).
* Brug **dyb søvn** på ESP32 (`esp_deep_sleep()`).
----
==== Eksempel: Send data til en cloud-server via 5G ====
#include
HardwareSerial SerialModem(2); // UART2: RX=16, TX=17
void setup() {
Serial.begin(115200);
SerialModem.begin(115200, SERIAL_8N1, 16, 17);
// Aktiver 5G-forbindelse
sendATCommand("AT+CPIN?", "READY", 2000);
sendATCommand("AT+CREG=1", "OK", 2000);
sendATCommand("AT+CGATT=1", "OK", 5000);
sendATCommand("AT+CGACT=1,1", "OK", 5000);
sendATCommand("AT+CNACT=1,1,\"internet\"", "OK", 10000); // Udskift "internet" med din APN
}
void loop() {
// Send sensor-data til en cloud-server (f.eks. ThingSpeak)
String temperature = "25.5"; // Eksempel: Temperatur fra sensor
String payload = "{\"temperature\":" + temperature + "}";
// Opret TCP-forbindelse
sendATCommand("AT+CSOCKSEND=1,1,\"api.thingspeak.com\",80", "OK", 5000);
String cmd = "POST /update HTTP/1.1\nHost: api.thingspeak.com\nContent-Type: application/json\nContent-Length: " + String(payload.length()) + "\n\n" + payload;
sendATCommand(cmd, "OK", 10000);
delay(60000); // Send data hver minut
}
String sendATCommand(String command, const char* resp, unsigned long timeout) {
String response = "";
SerialModem.println(command);
unsigned long startTime = millis();
while (millis() - startTime < timeout) {
if (SerialModem.available()) {
char c = SerialModem.read();
response += c;
if (response.indexOf(resp) != -1) {
break;
}
}
}
Serial.print("AT: ");
Serial.println(command);
Serial.print("Response: ");
Serial.println(response);
return response;
}
----
==== Opsummering ====
^ **Metode** ^ **Kompleksitet** ^ **Hastighed** ^ **Strømforbrug** ^ **Pris** ^ **Anbefaling** ^
| **5G-modem via UART** | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ | **Bedste balance** (anbefalet til de fleste). |
| **5G-modem via USB** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | **Høj hastighed**, men kompleks. |
| **5G-router + Ethernet** | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | **Nem opsætning**, men kræver router. |
| **4G/LTE (alternativ)** | ⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐ | **Billigere og enklere**. |
----
===== Konklusion =====
* **ESP32 understøtter ikke 5G direkte**, men du kan tilføje det via et **eksternt 5G-modem** (UART/USB).
* **Anbefalet løsning:** **Quectel RG500Q + ESP32 (UART)** for en balance mellem pris, hastighed og kompleksitet.
* **Alternativ:** Brug **4G/LTE** (f.eks. **SIM7600**) for en **billigere og enklere løsning**.
* **Husk:** 5G-moduler kræver **ekstern strøm, antenner og SIM-kort**.
Hvis du har brug for **høj hastighed og lav latens**, er 5G en god løsning – men for de fleste IoT-projekter er **4G/LTE eller Wi-Fi** tilstrækkeligt.