Zurück zur Startseite

Ampel auf ESP8266 und CH32V003: Code und Schaltplan

Lern-Raumampel-Projekt auf ESP8266 und CH32V003 demonstriert grundlegende Arbeit mit GPIO und Zeiten. Vollständiger Code für Arduino IDE und WCH SDK, Pin-Anschlussschemata bereitgestellt. Geeignet zum Studium der eingebetteten Programmierung.

DIY-Ampel: ESP8266 vs CH32V003 mit Code
Advertisement 728x90

Raum-Ampel mit ESP8266 und CH32V003 bauen

Verbinde ein RYG-Ampelmodul mit einem ESP8266 oder CH32V003 und programmiere einen einfachen Zyklus: Rot 5 Sekunden, Gelb 1 Sekunde, Grün 5 Sekunden mit Blinken. Dieses Projekt demonstriert GPIO-Konfiguration, Verzögerungen und Schleifen ohne externe Bibliotheken. Ideal für den Einstieg in die Embedded-Entwicklung.

ESP8266 nutzt GPIO 13 (rot), 12 (gelb), 14 (grün). CH32V003 verwendet die Ports PC5, PC6, PC7. Der Code ist schlank und simuliert eine echte Ampel mit Übergangsvorbereitung.

GPIO-Einrichtung beim ESP8266

Definiere die Pins und konfiguriere sie als Ausgänge. Verwende Strombegrenzungswiderstände, um die LEDs zu schützen.

Google AdInline article slot
const byte redLedPin = 14;
const byte yellowLedPin = 12;
const byte greenLedPin = 13;

void setup() {
  pinMode(redLedPin, OUTPUT);
  pinMode(yellowLedPin, OUTPUT);
  pinMode(greenLedPin, OUTPUT);
}

In loop() läuft diese Sequenz:

  • Rot HIGH für 5000 ms.
  • Gelb HIGH für 1000 ms, dann LOW für beide.
  • Grün HIGH für 5000 ms.
  • Drei Blinkzyklen: HIGH 500 ms, LOW 500 ms.
  • Gelb HIGH 1000 ms, dann LOW.
void loop() {
  // rot
  digitalWrite(redLedPin, HIGH);
  delay(5000);

  // gelb
  digitalWrite(yellowLedPin, HIGH);
  delay(1000);

  digitalWrite(redLedPin, LOW);
  digitalWrite(yellowLedPin, LOW);
  
  // grün
  digitalWrite(greenLedPin, HIGH);
  delay(5000);

  for (byte i = 0; i < 3; i++) {
    digitalWrite(greenLedPin, HIGH);
    delay(500);
    
    digitalWrite(greenLedPin, LOW);
    delay(500);
  }

  // gelb
  digitalWrite(yellowLedPin, HIGH);
  delay(1000);
  digitalWrite(yellowLedPin, LOW);
}

Über USB mit CH340-Treibern und Arduino IDE mit ESP8266-Board-Paket anschließen. Wie gewohnt flashen.

Wechsel zum CH32V003

Ein kompakter RISC-V-Mikrocontroller für stromsparende Anwendungen. Erfordert einen WCH LinkE-Programmieradapter: USB-Strom für das Board, SWD zum Flashen. Verbinde die Ampel mit PC5 (rot), PC6 (gelb), PC7 (grün).

Google AdInline article slot
/* Global define */
#define RED_LED_PIN     GPIO_Pin_5 
#define YELLOW_LED_PIN  GPIO_Pin_6
#define GREEN_LED_PIN   GPIO_Pin_7

Die Logik bleibt gleich: delay_ms statt delay, GPIO_WriteBit. Initialisierung:

  • RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  • GPIO_InitTypeDef für OutputPushPull.

Die loop() ist für das WCH SDK angepasst: Zustandssequenz mit Timern. Der vollständige Code nutzt Standard-CH32V003FUN-Funktionen, um Abhängigkeiten zu minimieren.

Plattformvergleich

| Parameter | ESP8266 | CH32V003 |

Google AdInline article slot

|----------|---------|----------|

| Kern | Tensilica L106 | RISC-V2A |

| Pins | GPIO12-14 | PC5-7 |

| Strom | USB | USB + Programmer |

| Flashen | Arduino IDE | WCH LinkE + IDE |

| Preis | Mittel | Niedrig |

ESP8266 ist einsteigerfreundlich dank USB und Arduino-Ökosystem. CH32V003 spart Ressourcen, braucht aber einen Programmer.

Wichtige Vorteile:

  • Minimaler Code, keine Bibliotheken nötig.
  • Timings leicht anpassbar.
  • Erweiterbar auf Taster oder Sensoren.

Wichtige Tipps

  • GPIO-Verdrahtung: Immer 220–330 Ohm Widerstände für Strombegrenzung verwenden.
  • Timings: delay() blockiert die CPU; für Fortgeschrittene millis() oder Timer nutzen.
  • Debugging: Serial-Monitor für Zustandslogs einrichten.
  • Ports: Bei CH32V003 PCx-Pins für Einfachheit – erstmal kein PWM.
  • Erweiterung: Endliche Zustandsmaschine (FSM) statt linearer Schleife einführen.

Dieses Projekt ist einfach nachzubauen: Nimm ein RYG-Modul und breadboarde es. Perfekt, um grundlegende Embedded-Programmierung vorzuführen.

— Editorial Team

Advertisement 728x90

Weiterlesen