Zpět na domů

Semafor na ESP8266 a CH32V003: kód a schéma

Učební projekt pokojového semaforu na ESP8266 a CH32V003 demonstruje základní práci s GPIO a časováním. Uveden kompletní kód pro Arduino IDE a WCH SDK, schémata připojení pinů. Vhodný pro studium embedded-programování.

DIY semafor: ESP8266 vs CH32V003 s kódem
Advertisement 728x90

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.

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);
}

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á).

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

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 |

Google AdInline article slot

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

| 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

Advertisement 728x90

Číst dál