ESP32 er en lavpris, lavt strømforbrugende system-on-chip (SoC) udviklet af Espressif Systems. Den er designet til IoT (Internet of Things), indlejrede systemer og trådløse applikationer. ESP32 kombinerer Wi-Fi, Bluetooth (Classic + BLE), en dual-core mikrocontroller og en række periferienheder, hvilket gør den ekstremt alsidig for både hobbyprojekter og professionelle løsninger.
Nyere modeller er beskrevet på https://let-elektronik.dk/esp32 (nederst, under produkt-billeder/links)
OBS!
Nedestående beskrivelser er primært gældende for den oprindelige ESP32
| Komponent | Beskrivelse |
|---|---|
| CPU | Dual-core Xtensa LX6 (32-bit) med op til 240 MHz (kan køre på 80/160/240 MHz). |
| Hukommelse | 520 KB SRAM (ekstern RAM kan tilføjes op til 16 MB via PSRAM). |
| Flash-hukommelse | Ekstern SPI flash (typisk 4–16 MB, understøtter op til 32 MB). |
| Wi-Fi | 802.11 b/g/n (2,4 GHz), understøtter STA (Station), AP (Access Point), P2P (Peer-to-Peer). |
| Bluetooth | Bluetooth 4.2 (Classic + BLE – Bluetooth Low Energy). |
| Periferienheder | GPIO, ADC, DAC, PWM, I²C, SPI, UART, CAN, Touch Sensor, Hall Sensor, RTC, DMA mv. |
| Strømforbrug | ~0,15 mA i dyb søvn, ~10–20 mA i aktiv tilstand (afhænger af konfiguration). |
| Spændingsforsyning | 2,2–3,6 V (typisk 3,3 V). |
| Driftstemperatur | -40°C til +125°C (industrielt interval). |
—
[1] Nyere modeller har dog 2/4/5G som f.eks. ESP32-C5
—
—
| Type | Beskrivelse | Antal |
|---|---|---|
| GPIO | Generelle input/output-pins (kan konfigureres som input, output, interrupt mv.). | 34–48 (afhænger af pakke) |
| ADC (Analog-Digital) | 12-bit SAR ADC (op til 2,048 niveauer), understøtter 18 kanaler (nogle med 12-bit, andre med 9-bit). | 2x 12-bit ADC |
| DAC (Digital-Analog) | 8-bit DAC til at generere analoge signaler. | 2x |
| PWM | Pulse-Width Modulation til motorstyring, LED-dimming mv. | 16 kanaler |
| I²C | Inter-Integrated Circuit (2-lednings kommunikation til sensorer mv.). | 2x |
| SPI | Serial Peripheral Interface (højhastigheds kommunikation til flash, display mv.). | 4x |
| UART | Asynkron serial kommunikation (RS-232/485). | 3x |
| CAN | Controller Area Network (til bilindustri og industrielle applikationer). | 1x |
| Touch Sensor | Kapacitive berøringsensorer (op til 10 kanaler). | 10x |
| Hall Sensor | Måling af magnetfelter (til f.eks. strømsensorer). | 1x |
| RTC (Real-Time Clock) | Hardware-ur med kalenderfunktion (kan køre i dyb søvn). | 1x |
| DMA | Direct Memory Access (til hurtig dataoverførsel uden CPU-indblanding). | 2x |
—
ESP32 understøtter flere strømbesparende tilstande:
| Tilstand | Beskrivelse | Strømforbrug |
|---|---|---|
| Aktiv | CPU, Wi-Fi/Bluetooth og periferienheder kører. | ~80–200 mA |
| Modem Søvn | CPU kører, men Wi-Fi/Bluetooth er slukket. | ~20–30 mA |
| Let Søvn | CPU er slukket, men RAM bevares. Kan wake up via eksterne interrupts. | ~0,8 mA |
| Dyb Søvn | CPU, RAM og de fleste periferienheder er slukket. Kan kun vækkes via eksterne signals (GPIO, RTC). | ~5–150 µA |
| Hibernation | Alt er slukket (inkl. RTC). Kan kun vækkes via reset. | ~1 µA |
—
ESP32 kan programmeres på flere måder:
| Metode | Beskrivelse | Fordele | Ulemper |
|---|---|---|---|
| Arduino IDE | Populært værktøj med ESP32-core (understøtter de fleste Arduino-biblioteker). | Nemt for begyndere, stort community. | Begrænset adgang til avancerede funktioner. |
| ESP-IDF | Espressifs officielle framework (C/C++). | Fuldt udnyttelse af hardware, avancerede funktioner. | stejl læringskurve. |
| MicroPython | Python-implementering til ESP32. | Nem syntax, godt til hurtig prototyping. | Langsommere end C, begrænset RAM. |
| PlatformIO | Avanceret udviklingsmiljø (understøtter Arduino, ESP-IDF, MicroPython). | Fleksibelt, god til store projekter. | Kræver opsætning. |
| Lua (NodeMCU) | Scripting-sprog til ESP32 (baseret på Lua). | Hurtig udvikling, dynamisk. | Mindre udbredt end Arduino/ESP-IDF. |
—
ESP32 findes i flere fysiske pakker, hvoraf de mest populære er:
| Modul | Beskrivelse | Antal GPIO | Wi-Fi/Bluetooth | PSRAM | Flash | Pris (ca.) |
|---|---|---|---|---|---|---|
| ESP32-WROOM-32 | Standardmodul med 4 MB flash, PCB-antenne. | 34 | ✅ Ja | ❌ Nej | 4 MB | ~50–100 DKK |
| ESP32-WROOM-32D | Som WROOM-32, men med 16 MB flash og PSRAM-understøttelse. | 34 | ✅ Ja | ✅ Ja | 16 MB | ~80–120 DKK |
| ESP32-WROOM-32E | Opdateret version med 16 MB flash og bedre antenne. | 34 | ✅ Ja | ✅ Ja | 16 MB | ~100–150 DKK |
| ESP32-SOLA-1 | Single-core, 2 MB flash, ingen Bluetooth. | 18 | ✅ Wi-Fi kun | ❌ Nej | 2 MB | ~40–70 DKK |
| ESP32-C3 | RISC-V CPU, 2,4 GHz Wi-Fi + BLE 5.0, ingen Bluetooth Classic. | 22 | ✅ Ja | ✅ Ja | 4–16 MB | ~60–100 DKK |
| ESP32-S2 | Single-core Xtensa, 2,4 GHz Wi-Fi (ingen Bluetooth), USB OTG. | 42 | ✅ Wi-Fi kun | ✅ Ja | 4–16 MB | ~70–120 DKK |
| ESP32-S3 | Dual-core Xtensa, 2,4 GHz Wi-Fi + BLE 5.0, USB OTG, PSRAM-understøttelse. | 45 | ✅ Ja | ✅ Ja | 8–16 MB | ~100–150 DKK |
| ESP32-C6 | RISC-V CPU, 2,4 GHz Wi-Fi 6 + BLE 5.0, Zigbee/Thread-understøttelse. | 22 | ✅ Ja | ✅ Ja | 4–16 MB | ~120–180 DKK |
—
—
| Fordele ✅ | Ulemper ❌ |
|---|---|
| Lav pris (fra ~50 DKK). | Begrænset 5 GHz Wi-Fi (kun 2,4 GHz). |
| Dual-core CPU (høj ydeevne). | ADC-nøjagtighed (12-bit, men ikke lineær ved lave spændinger). |
| Wi-Fi + Bluetooth integreret. | Begrænset RAM (520 KB, men kan udvides med PSRAM). |
| Lavt strømforbrug (god til batteridrevne enheder). | Kompleks opsætning (kræver ekstern flash/RAM). |
| Stort community (mange biblioteker og eksempler). | Varmeudvikling (kan kræve køling ved høj belastning). |
| Mange periferienheder (GPIO, I²C, SPI, UART mv.). | Forskellige revisioner (kan være svært at vælge det rigtige modul). |
| Understøtter flere programmeringssprog (C, Python, Lua). | Begrænset USB-understøttelse (nogle moduler kræver ekstern USB-chip). |
==== Eksempel: Enkel Wi-Fi-klient (Arduino-kode) ====
<code cpp> #include <WiFi.h>
const char* ssid = “DitNetværk”; const char* password = “DitPassword”;
void setup() {
Serial.begin(115200); WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED