====== 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.