📺 ESP32-C3 med indbygget 0.42" OLED
En ESP32-C3 med sin egen lille skærm loddet direkte på printet. Skærmen er ikke meget større end et frimærke, men den er perfekt til at vise temperatur, WiFi-status eller IP-adresse – uden at du skal trække så meget som én ledning.
Du skal bruge: USB-C datakabel, Arduino IDE med ESP32-pakken og biblioteket U8g2 (af olikraus).
🛒 Køb ESP32-C3 OLED📄 Officielt datasheet (PDF)Datasheetet er Espressifs ESP32-C3. Selve boardet findes i flere udgaver fra forskellige producenter – derfor er pinout herunder sorteret efter funktion.
⚡ Hurtige specifikationer
| Parameter | Værdi |
|---|---|
| Chip | ESP32-C3 (RISC-V, 160 MHz), 4 MB flash |
| Trådløst | WiFi 802.11 b/g/n 2,4 GHz + Bluetooth 5 (LE), keramisk antenne |
| Display | 0.42" OLED, SSD1306-kompatibel, 72 × 40 synlige pixels |
| Display-forbindelse | I2C: SDA = GPIO5, SCL = GPIO6 |
| Logikspænding | 3,3V |
| USB | USB-C, ESP32-C3'ens indbyggede USB Serial/JTAG |
| Knapper | BOOT (GPIO9) og RESET |
📌 Pinout
Benrækkefølgen langs kanten varierer mellem producenterne af dette board, så tjek silketrykket. De interne forbindelser er de samme:
| Pin | Navn | Funktion | Forbindes til |
|---|---|---|---|
| 5V / VBUS | 5V | 5V ind/ud (USB) | Forsyning |
| 3V3 | 3,3V | 3,3V ud | Sensorer |
| GND | GND | Stel | GND |
| GPIO5 | SDA | OLED I2C data – kan deles med andre I2C-moduler | SDA på ekstra I2C-sensor |
| GPIO6 | SCL | OLED I2C clock – kan deles med andre I2C-moduler | SCL på ekstra I2C-sensor |
| GPIO0–4 | GPIO / ADC1 | Analoge og digitale ben | Sensorer, knapper |
| GPIO7, GPIO10 | GPIO | Allround-ben | LED, relæ |
| GPIO8 | LED | Onboard LED (blå, aktiv LOW på de fleste udgaver), ⚠️ strapping | Helst kun output |
| GPIO9 | BOOT | ⚠️ Strapping + BOOT-knap | Undgå |
| GPIO20 / GPIO21 | RX / TX | UART0 | Serielle moduler |
Nogle udgaver har en WS2812 RGB-LED i stedet for en blå LED (fx på GPIO2). Blinker din LED ikke med eksemplet nedenfor, så tjek printet for en lille firkantet RGB-LED.
🔌 Sådan forbinder du den
| Komponent | Komponent-pin | Board-pin |
|---|---|---|
| Ekstra I2C-sensor (fx BME280/AHT20) | VCC / GND / SDA / SCL | 3V3 / GND / GPIO5 / GPIO6 (samme bus som OLED) |
| DS18B20 temperatursensor | VDD / GND / DQ | 3V3 / GND / GPIO3 (4,7 kΩ pull-up til 3V3) |
| Knap | Ét ben / andet ben | GPIO4 / GND (INPUT_PULLUP) |
Husk at OLED'en allerede bruger adresse 0x3C på I2C-bussen. Ekstra sensorer skal have en anden adresse.
🛠️ Opsætning i Arduino IDE
- Åbn Arduino IDE (2.x anbefales) → Fil → Indstillinger.
- Indsæt i "Additional boards manager URLs":
https://espressif.github.io/arduino-esp32/package_esp32_index.json - Gå til Værktøjer → Board → Boards Manager, søg på esp32 og installér "esp32 by Espressif Systems" (version 3.x).
- Vælg board: Værktøjer → Board → esp32 → ESP32C3 Dev Module.
- Sæt Værktøjer → USB CDC On Boot → Enabled – ellers kommer der ingen
Serial.println()ud i Serial Monitor. - Installér biblioteket U8g2 via Værktøjer → Administrer biblioteker.
- Vælg den rigtige port under Værktøjer → Port og tryk Upload.
💻 Eksempelkode
Skærmens controller har en 128 × 64 buffer, men kun et 72 × 40 vindue er synligt. Derfor lægger vi en forskydning (offset) til alle koordinater. Rammen viser dig, om offset passer.
// KompoNemt ESP32-C3 OLED Hello + Blink (bibliotek: U8g2)
#include <U8g2lib.h>
#include <Wire.h>
// rotation, reset, SCL, SDA
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE, 6, 5);
const int XO = 30; // vandret offset (prøv 28 hvis rammen er skæv)
const int YO = 12; // lodret offset (prøv 24 hvis rammen er skæv)
const int LED = 8; // onboard LED, aktiv LOW
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(115200);
delay(100);
u8g2.begin();
u8g2.setContrast(255);
}
void loop() {
static bool on = false;
on = !on;
digitalWrite(LED, on ? LOW : HIGH);
u8g2.clearBuffer();
u8g2.drawFrame(XO, YO, 72, 40); // skal sidde lige i kanten
u8g2.setFont(u8g2_font_6x10_tr);
u8g2.drawStr(XO + 4, YO + 14, "KompoNemt");
u8g2.drawStr(XO + 4, YO + 30, on ? "Blink!" : "Blink.");
u8g2.sendBuffer();
delay(500);
}
💡 KompoNemt-tip fra værkstedet
- Offset-dansen: ses rammen ikke helt, så justér XO/YO. De fleste boards passer med 30/12, enkelte med 28/24.
-
Små fonte er dine venner: 72 × 40 pixels er ikke ret meget.
u8g2_font_5x7_trgiver dig 5 linjer. - Del I2C-bussen: du behøver ikke flere pins til ekstra I2C-sensorer – sæt dem på GPIO5/6 sammen med skærmen.
-
OLED-indbrænding: lad ikke det samme statiske billede stå i månedsvis. Sluk skærmen med
u8g2.setPowerSave(1), når den ikke bruges.
🔧 Fejlfinding
- Skærmen er sort: tjek at du ikke har byttet rundt på SCL/SDA i konstruktøren – det skal være SCL = 6, SDA = 5.
- Teksten er forskudt eller halv: justér XO/YO-offset.
- Upload fejler: hold BOOT nede, tryk RESET, slip BOOT og upload igen.
- Intet i Serial Monitor: sæt "USB CDC On Boot" til Enabled.
- LED blinker ikke: din udgave har måske en RGB-LED – se tippet under Pinout.
Sidder du fast? Skriv til os – vi hjælper gerne.