Datasheet & Pinout: ESP32-C3 med 0.42" OLED

📺 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

  1. Åbn Arduino IDE (2.x anbefales) → Fil → Indstillinger.
  2. Indsæt i "Additional boards manager URLs":
    https://espressif.github.io/arduino-esp32/package_esp32_index.json
  3. Gå til Værktøjer → Board → Boards Manager, søg på esp32 og installér "esp32 by Espressif Systems" (version 3.x).
  4. Vælg board: Værktøjer → Board → esp32 → ESP32C3 Dev Module.
  5. Sæt Værktøjer → USB CDC On Boot → Enabled – ellers kommer der ingen Serial.println() ud i Serial Monitor.
  6. Installér biblioteket U8g2 via Værktøjer → Administrer biblioteker.
  7. 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_tr giver 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.