Implementace pokojového semaforu pomocí ESP8266 a CH32V003
Připojte RYG-semaforový modul k ESP8266 nebo CH32V003 a implementujte základní cyklus přepínání: červená 5 s, žlutá 1 s, zelená 5 s s blikáním. Projekt demonstruje nastavení GPIO, zpoždění a cykly bez externích knihoven. Vhodné pro první kroky v embedded vývoji.
ESP8266 používá GPIO 13 (červená), 12 (žlutá), 14 (zelená). CH32V003 — porty PC5, PC6, PC7. Kód je minimalizován, logika odpovídá reálnému semaforu s přípravou na přechod.
Nastavení GPIO na ESP8266
Definujte piny a nastavte je jako výstupy. Použijte připojení s rezistory pro ochranu LED diod.
const byte redLedPin = 14;
const byte yellowLedPin = 12;
const byte greenLedPin = 13;
void setup() {
pinMode(redLedPin, OUTPUT);
pinMode(yellowLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
}
V loop() implementujte sekvenci:
- Červená HIGH na 5000 ms.
- Žlutá HIGH na 1000 ms, poté LOW pro obě.
- Zelená HIGH na 5000 ms.
- Tři cykly blikání: HIGH 500 ms, LOW 500 ms.
- Žlutá HIGH 1000 ms, LOW.
void loop() {
// červená
digitalWrite(redLedPin, HIGH);
delay(5000);
// žlutá
digitalWrite(yellowLedPin, HIGH);
delay(1000);
digitalWrite(redLedPin, LOW);
digitalWrite(yellowLedPin, LOW);
// zelená
digitalWrite(greenLedPin, HIGH);
delay(5000);
for (byte i = 0; i < 3; i++) {
digitalWrite(greenLedPin, HIGH);
delay(500);
digitalWrite(greenLedPin, LOW);
delay(500);
}
// žlutá
digitalWrite(yellowLedPin, HIGH);
delay(1000);
digitalWrite(yellowLedPin, LOW);
}
Připojení přes USB, ovladače CH340, Arduino IDE s deskou ESP8266. Programování standardní.
Přechod na CH32V003
Kompaktnější RISC-V kontrolér pro nízkoenergetické úlohy. Vyžaduje programátor WCH LinkE: napájení přes USB desky, SWD pro nahrání. Připojte semafor k PC5 (červená), PC6 (žlutá), PC7 (zelená).
/* Global define */
#define RED_LED_PIN GPIO_Pin_5
#define YELLOW_LED_PIN GPIO_Pin_6
#define GREEN_LED_PIN GPIO_Pin_7
Logika je identická: delay_ms místo delay, GPIO_WriteBit. Inicializace:
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
- GPIO_InitTypeDef pro OutputPushPull.
Cyklus loop() adaptován pro SDK WCH: sekvence stavů s časovači. Kompletní kód používá standardní funkce CH32V003FUN pro minimalizaci závislostí.
Srovnání platforem
| Parametr | ESP8266 | CH32V003 |
|----------|---------|----------|
| Jádro | Tensilica L106 | RISC-V2A |
| Piny | GPIO12-14 | PC5-7 |
| Napájení | USB | USB + programátor |
| Programování | Arduino IDE | WCH LinkE + IDE |
| Cena | Střední | Nízká |
ESP8266 je jednodušší pro začátečníky díky USB a Arduino ekosystému. CH32V003 šetří zdroje, ale přidává krok s programátorem.
Výhody přístupu:
- Minimální kód bez knihoven.
- Snadno modifikovatelné časování.
- Škálovatelné na tlačítka/senzory.
Co je důležité
- GPIO-připojení: Vždy používejte rezistory 220–330 Ω pro omezení proudu.
- Časování: delay() blokuje; pro pokročilé úlohy — millis() nebo časovače.
- Ladění: Sledujte Serial pro logy stavů.
- Porty: CH32V003 — PCx pro jednoduchost, bez PWM na začátku.
- Škálování: Přidejte FSM pro stavy místo sekvenčního loop().
Projekt je reprodukovatelný: objednejte RYG-modul, opakujte na nepájivém poli. Ideální pro demonstraci základního embedded kódu.
— Editorial Team
Zatím žádné komentáře.