ESP8266 - Ampel

Dieses Tutorial erläutert Ihnen, wie Sie einen ESP8266 verwenden, um ein Ampelmodul zu steuern. Genauer gesagt decken wir die folgenden Aspekte ab:

Erforderliche Hardware

1×ESP8266 NodeMCU
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×Ampel-Modul
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP8266
1×(Empfohlen) Stromverteiler für ESP8266 Typ-C

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über das Ampelmodul

Pinbelegung

Ein Ampelmodul ist mit vier Pins ausgestattet:

  • GND-Pin: Verbinden Sie diesen Pin mit der Masse des ESP8266.
  • R-Pin: Steuert das rote Licht; verbinden Sie diesen Pin mit einem digitalen Ausgang des ESP8266.
  • Y-Pin: Steuert das gelbe Licht; verbinden Sie diesen Pin mit einem digitalen Ausgang des ESP8266.
  • G-Pin: Steuert das grüne Licht; verbinden Sie diesen Pin mit einem digitalen Ausgang des ESP8266.
Ampel-Pinbelegung

Wie es funktioniert

Verdrahtungsdiagramm

ESP8266 NodeMCU Ampel-Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Weitere Informationen finden Sie unter ESP8266-Pinbelegung und wie man ESP8266 und andere Komponenten mit Strom versorgt.

Wie man das Ampelmodul programmiert

  • Konfigurieren Sie die Pins des ESP8266 so, dass sie im digitalen Ausgangsmodus arbeiten, indem Sie die Funktion pinMode() verwenden.
pinMode(PIN_RED, OUTPUT); pinMode(PIN_YELLOW, OUTPUT); pinMode(PIN_GREEN, OUTPUT);
  • Programm zum Einschalten der roten LED mithilfe der digitalWrite() Funktion:
digitalWrite(PIN_RED, HIGH); // Rot einschalten digitalWrite(PIN_YELLOW, LOW); // // digitalWrite(PIN_GREEN, LOW); delay(RED_TIME); // Halte die rote LED für eine bestimmte Zeit eingeschaltet

ESP8266-Code

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp8266/esp8266-traffic-light */ #define PIN_RED D7 // The ESP8266 pin connected to R pin of traffic light module #define PIN_YELLOW D6 // The ESP8266 pin connected to Y pin of traffic light module #define PIN_GREEN D5 // The ESP8266 pin connected to G pin of traffic light module #define RED_TIME 4000 // RED time in millisecond #define YELLOW_TIME 4000 // YELLOW time in millisecond #define GREEN_TIME 4000 // GREEN time in millisecond void setup() { pinMode(PIN_RED, OUTPUT); pinMode(PIN_YELLOW, OUTPUT); pinMode(PIN_GREEN, OUTPUT); } // The loop function repeats indefinitely void loop() { // red light on digitalWrite(PIN_RED, HIGH); // turn on digitalWrite(PIN_YELLOW, LOW); // turn off digitalWrite(PIN_GREEN, LOW); // turn off delay(RED_TIME); // keep red light on during a period of time // yellow light on digitalWrite(PIN_RED, LOW); // turn off digitalWrite(PIN_YELLOW, HIGH); // turn on digitalWrite(PIN_GREEN, LOW); // turn off delay(YELLOW_TIME); // keep yellow light on during a period of time // green light on digitalWrite(PIN_RED, LOW); // turn off digitalWrite(PIN_YELLOW, LOW); // turn off digitalWrite(PIN_GREEN, HIGH); // turn on delay(GREEN_TIME); // keep green light on during a period of time }

Schnelle Schritte

Um mit dem ESP8266 in der Arduino IDE zu beginnen, befolgen Sie diese Schritte:

  • Wenn dies dein erster Einsatz von ESP8266 ist, sieh dir das Tutorial Tutorial zur Einrichtung der Umgebung für ESP8266 in der Arduino-IDE an.
  • Verbinde die Komponenten wie im Diagramm gezeigt.
  • Schließe das ESP8266-Board über ein USB-Kabel an deinen Computer an.
  • Öffne die Arduino-IDE auf deinem Computer.
  • Wähle das passende ESP8266-Board aus, z. B. (NodeMCU 1.0 (ESP-12E Modul)), und den jeweiligen COM-Port.
  • Kopiere den obigen Code und öffne ihn in der Arduino-IDE.
  • Klicke auf die Schaltfläche Hochladen in der Arduino-IDE, um den Code auf den ESP8266 hochzuladen.
  • Sieh dir das Ampelmodul an.

Es ist wichtig zu beachten, dass die genauen Funktionsweisen einer Ampel je nach dem jeweiligen Design und der in verschiedenen Regionen und an Kreuzungen verwendeten Technologie variieren können. Die oben beschriebenen Grundsätze geben ein allgemeines Verständnis davon, wie Ampeln funktionieren, um den Verkehr zu regeln und die Sicherheit im Straßenverkehr zu erhöhen.

Der obige Code demonstriert die individuelle Lichtsteuerung. Jetzt optimieren wir den Code für eine bessere Optimierung.

ESP8266 Code-Optimierung

  • Lass uns den Code verbessern, indem wir eine Funktion zur Lichtsteuerung implementieren.
/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp8266/esp8266-traffic-light */ #define PIN_RED D7 // The ESP8266 pin connected to R pin of traffic light module #define PIN_YELLOW D6 // The ESP8266 pin connected to Y pin of traffic light module #define PIN_GREEN D5 // The ESP8266 pin connected to G pin of traffic light module #define RED_TIME 2000 // RED time in millisecond #define YELLOW_TIME 1000 // YELLOW time in millisecond #define GREEN_TIME 2000 // GREEN time in millisecond #define RED 0 // Index in array #define YELLOW 1 // Index in array #define GREEN 2 // Index in array const int pins[] = { PIN_RED, PIN_YELLOW, PIN_GREEN }; const int times[] = { RED_TIME, YELLOW_TIME, GREEN_TIME }; void setup() { pinMode(PIN_RED, OUTPUT); pinMode(PIN_YELLOW, OUTPUT); pinMode(PIN_GREEN, OUTPUT); } // The loop function repeats indefinitely void loop() { // red light on trafic_light_on(RED); delay(times[RED]); // keep red light on during a period of time // yellow light on trafic_light_on(YELLOW); delay(times[YELLOW]); // keep yellow light on during a period of time // green light on trafic_light_on(GREEN); delay(times[GREEN]); // keep green light on during a period of time } void trafic_light_on(int light) { for (int i = RED; i <= GREEN; i++) { if (i == light) digitalWrite(pins[i], HIGH); // turn on else digitalWrite(pins[i], LOW); // turn off } }
  • Lass uns den Code verbessern, indem wir eine For-Schleife verwenden.
/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp8266/esp8266-traffic-light */ #define PIN_RED D7 // The ESP8266 pin connected to R pin of traffic light module #define PIN_YELLOW D6 // The ESP8266 pin connected to Y pin of traffic light module #define PIN_GREEN D5 // The ESP8266 pin connected to G pin of traffic light module #define RED_TIME 2000 // RED time in millisecond #define YELLOW_TIME 1000 // YELLOW time in millisecond #define GREEN_TIME 2000 // GREEN time in millisecond #define RED 0 // Index in array #define YELLOW 1 // Index in array #define GREEN 2 // Index in array const int pins[] = {PIN_RED, PIN_YELLOW, PIN_GREEN}; const int times[] = {RED_TIME, YELLOW_TIME, GREEN_TIME}; void setup() { pinMode(PIN_RED, OUTPUT); pinMode(PIN_YELLOW, OUTPUT); pinMode(PIN_GREEN, OUTPUT); } // The loop function repeats indefinitely void loop() { for (int light = RED; light <= GREEN; light ++) { trafic_light_on(light); delay(times[light]); // keep light on during a period of time } } void trafic_light_on(int light) { for (int i = RED; i <= GREEN; i ++) { if (i == light) digitalWrite(pins[i], HIGH); // turn on else digitalWrite(pins[i], LOW); // turn off } }
  • Lass uns den Code verbessern, indem wir die millis()-Funktion statt delay() verwenden.
/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp8266/esp8266-traffic-light */ #define PIN_RED D7 // The ESP8266 pin connected to R pin of traffic light module #define PIN_YELLOW D6 // The ESP8266 pin connected to Y pin of traffic light module #define PIN_GREEN D5 // The ESP8266 pin connected to G pin of traffic light module #define RED_TIME 2000 // RED time in millisecond #define YELLOW_TIME 1000 // YELLOW time in millisecond #define GREEN_TIME 2000 // GREEN time in millisecond #define RED 0 // Index in array #define YELLOW 1 // Index in array #define GREEN 2 // Index in array const int pins[] = { PIN_RED, PIN_YELLOW, PIN_GREEN }; const int times[] = { RED_TIME, YELLOW_TIME, GREEN_TIME }; unsigned long last_time = 0; int light = RED; // start with RED light void setup() { pinMode(PIN_RED, OUTPUT); pinMode(PIN_YELLOW, OUTPUT); pinMode(PIN_GREEN, OUTPUT); trafic_light_on(light); last_time = millis(); } // The loop function repeats indefinitely void loop() { if ((millis() - last_time) > times[light]) { light++; if (light >= 3) light = RED; // new circle trafic_light_on(light); last_time = millis(); } // TO DO: your other code } void trafic_light_on(int light) { for (int i = RED; i <= GREEN; i++) { if (i == light) digitalWrite(pins[i], HIGH); // turn on else digitalWrite(pins[i], LOW); // turn off } }

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!