Table of Contents
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 <HardwareSerial.h> // 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: * USB Host Library for ESP32 (til MAX3421E). * TinyUSB (alternativ).
#include <SPI.h> #include <Usb.h> #include <Max3421e.h> #include <AndroidAccessory.h> 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 <Ethernet.h> 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.h> 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.
