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.
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).
/* 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_InitTypeDeffü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 |
|----------|---------|----------|
| 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 Fortgeschrittenemillis()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
Noch keine Kommentare.