ESP32 - Taster

Dieses Tutorial zeigt Ihnen, wie Sie einen Taster mit dem ESP32 unter Verwendung von MicroPython nutzen.

Taster können mit dem ESP32 etwas knifflig sein, besonders für Elektronik-Einsteiger. Schauen wir uns die Grundlagen an und vermeiden wir einige häufige Fehler.

Zwei wichtige Probleme, die gelöst werden müssen:

Wenn Sie diese beiden Probleme verstehen und die passenden Lösungen umsetzen, sind Sie gut gerüstet, um Taster in Ihren ESP32-Projekten effektiv einzusetzen.

ESP32 MicroPython Taster

Überblick über Button

Drucktaster sind Schalter, die beim Drücken schließen und beim Loslassen öffnen. Sie werden auch als taktile Taster oder Tastschalter bezeichnet. Es gibt zwei Haupttypen von Drucktastern:

  • Drucktaster für die Leiterplattenmontage: Für die Montage auf Steckbrettern oder Leiterplatten ausgelegt.
  • Drucktaster für die Panelmontage: Für die Montage an Frontplatten oder Gehäusen vorgesehen.
ESP32 MicroPython Drucktaster

Pinbelegung

Die Taster für die Leiterplattenmontage haben normalerweise vier Pins.

Taster Pinbelegung

Obwohl ein Taster vier Pins hat, werden nur zwei verwendet. Das liegt daran, dass die Pins intern paarweise verbunden sind. Es gibt vier mögliche Arten, einen Taster auf einer Leiterplatte anzuschließen, aber zwei dieser Konfigurationen sind symmetrisch.

So verwenden Sie einen Taster

Warum werden bei einem Taster mit vier Pins nur zwei verwendet?

⇒ Um eine sichere Befestigung auf der Leiterplatte (PCB) zu gewährleisten und der Druckkraft standzuhalten.

Die Taster für die Panelmontage haben normalerweise zwei Pins.

Zweipoliger Drucktaster Pinbelegung
image source: diyables.io

Das Drucktaster-Modul enthält einen eingebauten Pull-Down-Widerstand, der sicherstellt, dass der Ausgang LOW bleibt, wenn der Taster nicht gedrückt ist. Es hat drei Pins:

  • GND: Verbinden Sie diesen Pin mit Masse.
  • VCC: Verbinden Sie diesen Pin mit einer 3,3-V-Stromversorgung.
  • OUT: Verbinden Sie diesen Pin mit einem digitalen Eingang Ihres ESP32.

Bei dieser Konfiguration gibt das Modul LOW aus, wenn der Taster nicht gedrückt ist, und HIGH, wenn der Taster gedrückt ist.

Funktionsweise

  • Wenn der Taster nicht gedrückt ist, sind Pin A und Pin B nicht verbunden.
  • Wenn der Taster gedrückt ist, sind Pin A und Pin B verbunden.
Funktionsweise eines Tasters

ESP32 - Taster

Ein Pin des Tasters wird mit VCC oder GND verbunden, der andere Pin mit einem Pin des ESP32. Ob der Taster gedrückt ist, können wir feststellen, indem wir den Zustand des Eingangspins am ESP32 prüfen.

Tasterzustand und Drückzustand

Wie sich ein ESP32-Pin beim Drücken oder Loslassen eines Tasters verhält, hängt davon ab, wie der Taster angeschlossen und wie der Pin konfiguriert ist.

Zwei gängige Anschlussmethoden:

  • Pull-Down-Widerstand:
    • Verbinden Sie eine Seite des Tasters mit VCC (Versorgung) und die andere mit einem ESP32-Pin.
    • Verwenden Sie entweder einen internen oder einen externen Pull-Down-Widerstand am ESP32-Pin.
    • Wenn der Taster gedrückt ist, liest der ESP32-Pin HIGH. Wenn der Taster nicht gedrückt ist, liest er LOW.
  • Pull-Up-Widerstand:
    • Verbinden Sie eine Seite des Tasters mit GND (Masse) und die andere mit einem ESP32-Pin.
    • Verwenden Sie entweder einen eingebauten Pull-Up-Widerstand oder einen externen Widerstand am ESP32-Pin.
    • Wenn der Taster gedrückt ist, liest der ESP32-Pin LOW. Wenn der Taster nicht gedrückt ist, liest er HIGH.

    Warum einen Pull-Up- oder Pull-Down-Widerstand verwenden?

    Ohne Widerstand kann der ESP32-Pin einen instabilen Zustand haben, wenn der Taster nicht gedrückt ist. Dies kann zu falschen Messwerten führen. Ein Pull-Up- oder Pull-Down-Widerstand sorgt für einen stabilen Zustand.

    Empfohlene Konfiguration:

    Für Einsteiger empfehlen wir, den eingebauten Pull-Up-Widerstand des ESP32-Pins zu verwenden. Das vereinfacht die Verdrahtung und macht einen externen Widerstand überflüssig. Sie können dies in Ihrem MicroPython-Code mit button = Pin(BUTTON_PIN, Pin.IN, Pin.PULL_UP) konfigurieren.

    Denken Sie daran: Ein Pull-Up- oder Pull-Down-Widerstand ist für zuverlässige Tasterauswertungen am ESP32 unerlässlich.

    ※ Notiz:

    Die ESP32-Pins GPIO34, GPIO35, GPIO36 (VP) und GPIO39 (VN) unterstützen keine internen Pull-Up- oder Pull-Down-Widerstände. Für diese Pins müssen Sie einen externen Pull-Up- oder Pull-Down-Widerstand verwenden.

Verdrahtungsdiagramm

  • So verbinden Sie ESP32 und Taster mit einem Steckbrett
ESP32 MicroPython Taster Schaltplan

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

ESP32 MicroPython zweipoliger Drucktaster Schaltplan

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

So programmieren Sie einen Taster

  • Richtet einen ESP32-Pin mit der Funktion Pin(BUTTON_PIN, Pin.IN, Pin.PULL_UP) als Eingang mit eingebautem Pull-Up-Widerstand ein.
button = Pin(BUTTON_PIN, Pin.IN, Pin.PULL_UP)
  • Den Zustand des ESP32-Pins auslesen.
button_state = button.value()

※ Notiz:

Es gibt zwei übliche Fälle:

  • Erstens: Ist der Eingang HIGH, führe eine Aktion aus. Ist der Eingang LOW, tue das Gegenteil.
  • Zweitens: Wechselt der Eingang von LOW auf HIGH (oder von HIGH auf LOW), führe eine Aktion aus.

Je nach Ziel wählen wir eine dieser Methoden. Zum Beispiel beim Steuern einer LED mit einem Taster:

  • Wenn die LED beim Drücken des Tasters EIN und beim Loslassen AUS gehen soll, wählen wir den ersten Fall.
  • Wenn die LED bei jedem Antippen des Tasters zwischen EIN und AUS wechseln soll, wählen wir den zweiten Fall.

ESP32 MicroPython-Code - Den Zustand des Tasters auslesen

from machine import Pin import time BUTTON_PIN = 21 # The ESP32 pin GPIO21 connected to the button # Set up the button pin. The Pin.PULL_UP enables the internal pull-up resistor. button = Pin(BUTTON_PIN, Pin.IN, Pin.PULL_UP) while True: # Read the state of the button button_state = button.value() # Print the button's state print(button_state) # Wait for half a second before reading the button again time.sleep(0.5)

Schnelle Schritte

So richten Sie Ihren MicroPython-Code auf dem ESP32 mit der Thonny IDE ein und führen ihn aus:

  • Stellen Sie sicher, dass die Thonny IDE auf Ihrem Computer installiert ist.
  • Vergewissern Sie sich, dass die MicroPython-Firmware auf Ihrem ESP32-Board installiert ist.
  • Wenn Sie zum ersten Mal einen ESP32 mit MicroPython verwenden, lesen Sie die Anleitung ESP32 MicroPython Erste Schritte für eine Schritt-für-Schritt-Anleitung.
  • Schließen Sie den Taster gemäß dem bereitgestellten Schaltplan an den ESP32 an.
  • Verbinden Sie das ESP32-Board über ein USB-Kabel mit Ihrem Computer.
  • Öffnen Sie die Thonny IDE auf Ihrem Computer.
  • Gehen Sie in der Thonny IDE zu Tools Options.
  • Wählen Sie im Reiter Interpreter die Option MicroPython (ESP32) aus dem Dropdown-Menü.
  • Stellen Sie sicher, dass der richtige Port ausgewählt ist. Die Thonny IDE erkennt ihn normalerweise automatisch, aber eventuell müssen Sie ihn manuell auswählen (z. B. COM12 unter Windows oder /dev/ttyACM0 unter Linux).
  • Kopieren Sie den bereitgestellten MicroPython-Code und fügen Sie ihn in den Editor von Thonny ein.
  • Speichern Sie den Code auf Ihrem ESP32:
    • Klicken Sie auf die Schaltfläche Save oder drücken Sie Ctrl+S.
    • Wählen Sie im Speicherdialog MicroPython device.
    • Benennen Sie die Datei main.py.
  • Klicken Sie auf die grüne Schaltfläche Run (oder drücken Sie F5), um das Skript auszuführen.
  • Drücken Sie die grüne Run-Schaltfläche oder F5, um Ihr Skript auszuführen.
  • Sehen Sie sich die Meldung in der Shell unten in der Thonny IDE an.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot 1 1 1 0 0 0 0 0 0 1 1 1
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

1 bedeutet nicht gedrückt, 0 bedeutet gedrückt.

Code-Erklärung

Die Erklärung finden Sie in den Kommentaren des oben angegebenen ESP32 MicroPython-Codes.

ESP32 MicroPython-Code - Drück- und Loslass-Ereignis des Tasters erkennen

Ändern wir den Code so, dass er erkennt, wann Taster gedrückt und losgelassen werden

/* * Dieser ESP32 MicroPython Code wurde von newbiely.de entwickelt * Dieser ESP32 MicroPython 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/esp32-micropython/esp32-micropython-button */ from machine import Pin import time BUTTON_PIN = 21 # The ESP32 pin GPIO21 connected to the button # Setup the button pin. The Pin.PULL_UP enables the internal pull-up resistor. button = Pin(BUTTON_PIN, Pin.IN, Pin.PULL_UP) # Initialize the previous state of the button prev_button_state = 1 # Assuming the button is unpressed initially while True: # Read the current state of the button button_state = button.value() # Check if button was released if prev_button_state == 0 and button_state == 1: print("The button is released") # Check if button was pressed if prev_button_state == 1 and button_state == 0: print("The button is pressed") # Save the current state as the previous state for the next loop iteration prev_button_state = button_state

Schnelle Schritte

  • Kopieren Sie den obigen Code und fügen Sie ihn in die Thonny IDE ein.
  • Klicken Sie auf die grüne Run-Schaltfläche oder drücken Sie F5, um das Skript zu starten.
  • Drücken Sie den Taster und lassen Sie ihn dann los.
  • Sehen Sie sich die Meldung in der Shell unten in Thonny an.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot The button is pressed The button is released
MicroPython (ESP32) • CP2102 USB To UART Bridge Controller @ COM12 ≡

※ Notiz:

  • Gelegentlich kann es vorkommen, dass ein einmaliges Drücken des Tasters mehrere Tastendrücke in der Shell von Thonny anzeigt. Dieses häufige Problem ist als Prellphänomen oder Prellen bekannt. Mehr dazu und eine Lösung finden Sie im ESP32 MicroPython Taster-Entprellung Tutorial.
  • Wenn Sie das Taster-Modul verwenden, setzen Sie den Pin mit button = Pin(BUTTON_PIN, Pin.IN) in den Eingangsmodus. In dieser Konfiguration gibt das Modul LOW aus, wenn der Taster nicht gedrückt ist, und HIGH, wenn er gedrückt ist.

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!