Skip to content
ICT Fusion Knowledgebase

Eerste ESP32-project

Starten met het ontwikkelen voor een embedded systeem is veel makkelijker als je op je embedded systeem iets ziet gebeuren. Deze pagina neemt je mee in hoe je een ingebouwde LED kan laten knipperen en programmeren, hoe je een externe LED kunt aansluiten en hoe je een button kunt gebruiken om de LED te bedienen.

We gaan ervan uit dat je een esp32-s3-devkitc-1-bordje en een breadboard gebruikt.


Vereisten

Zoek de volgende onderdelen; de meeste zitten al in je embedded kit:

  • ESP32-S3 DevKit board
  • USB‑C cable om de ESP32-S3 DevKit met je computer te verbinden.
    • Deze kabel zit niet in de kit.
  • Breadboard
    • In je embedded kit vind je twee breadboards; de ESP32-S3 DevKit past niet in één breadboard.
  • 1× LED (elke kleur)
  • 1× 220 Ω resistor (alles tussen 150–330 Ω is prima)
  • 1× push button
  • Een paar male–male jumper wires

Alleen 3.3 V

⚠️ De ESP32 gebruikt 3.3 V logic. Sluit 5 V-signalen niet rechtstreeks aan op GPIO-pinnen.


Blinkie: built‑in LED

De makkelijkste manier om te beginnen en te zien dat er iets gebeurt, is de built-in LED te laten knipperen. Bijna alle Arduino boards hebben een built-in LED, maar om die te besturen moet je het pin-nummer kennen.

In plaats van het pin-nummer te kennen, kun je de LED_BUILTIN-constante gebruiken.

const int LED_PIN = LED_BUILTIN;

Om een volledig werkende sketch te maken, moet je de setup()- en loop()-functies toevoegen. De setup()-functie wordt één keer aangeroepen wanneer het board start, en de loop()-functie wordt daarna herhaaldelijk aangeroepen.

De setup()-functie gebruik je om de LED-pin te initialiseren als output. De loop()-functie gebruik je om de LED te laten knipperen.

Hier is de volledige sketch:

// First ESP32 sketch: blink the built-in LED

const int LED_PIN = LED_BUILTIN;  // Built-in LED on many ESP32-S3 DevKit boards

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH); // LED on
  delay(500);
  digitalWrite(LED_PIN, LOW);  // LED off
  delay(500);
}

Upload de sketch. Als de LED niet knippert:

  • Controleer dat het juiste board (bijv. ESP32-S3 Dev Module) is geselecteerd.
  • Controleer dat de juiste port is geselecteerd.
  • Probeer na het uploaden op de EN/RESET button op het board te drukken.

Standaard programma knippert de LED al

Het standaard programma dat op de ESP32-S3 DevKitC-1 is geïnstalleerd knippert de LED al. Om zeker te zijn dat jouw programma werkt kun je de LED sneller/langzamer laten knipperen.


Breadboards gebruiken met de ESP32-S3 DevKit

Om de volledige functionaliteit van de ESP32-S3 DevKit te gebruiken, moet je twee breadboards gebruiken. Anders heb je alleen toegang tot de GPIO-pins aan één kant van het board.

We raden aan om één kant van het kleinere breadboard los te halen en naast het grotere breadboard te plaatsen.

Using both breadboards


Externe LED op een breadboard

Lukt het om de built-in LED te laten knipperen? Laten we nu een aparte LED op het breadboard aansluiten. Het aansluiten van een aparte LED maakt het gebruik van pins duidelijker.

Bekabel de LED als volgt:

  • Sluit de lange poot (anode) van de LED aan op een vrije GPIO-pin, bijvoorbeeld GPIO 25.
  • Plaats een 220 Ω resistor tussen de korte poot (cathode) en GND.

Pas je sketch aan:

const int LED_PIN = 25;  // External LED on GPIO 25

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(300);
  digitalWrite(LED_PIN, LOW);
  delay(300);
}

Staat je LED omgekeerd?

Als er niets gebeurt, probeer de LED om te draaien: de lange poot moet via de resistor naar de GPIO-pin gaan, en de korte poot naar GND.


Een button toevoegen om de LED te bedienen

Voeg nu een push button toe zodat de LED alleen aan gaat terwijl je hem indrukt.

Gebruik de internal pull‑up resistor van de ESP32 om het bekabelen te vereenvoudigen:

  • Sluit één kant van de button aan op GPIO 26.
  • Sluit de andere kant van de button aan op GND.

Gebruik deze sketch:

const int LED_PIN    = 25; // external LED
const int BUTTON_PIN = 26; // button connected between GPIO 26 and GND

void setup() {
  pinMode(LED_PIN, OUTPUT);

  // Enable the internal pull-up resistor on the button pin
  pinMode(BUTTON_PIN, INPUT_PULLUP);
}

void loop() {
  // With INPUT_PULLUP, the pin reads HIGH when not pressed, LOW when pressed
  int buttonState = digitalRead(BUTTON_PIN);

  if (buttonState == LOW) {       // button pressed
    digitalWrite(LED_PIN, HIGH);  // LED on
  } else {
    digitalWrite(LED_PIN, LOW);   // LED off
  }
}

Volgende stappen

Vanaf hier kun je:

  • Vervang de LED door een buzzer of relay.
  • Lees een sensor value (bijv. een LDR of potentiometer) uit en gebruik die om de LED te besturen.
  • Combineer deze pagina met Serial Monitor en communication protocols om sensor data naar je laptop of het web te sturen.