Die ESP32-Platine ist ein stromsparender Mikrocontroller, der auf dem ESP32-Chip von Espressif Systems basiert. Er kann mit zwei Threads arbeiten, die gleichzeitige Aufgaben ermöglichen. Um die Multithreading-Funktionalität im ESP32 mit MicroPython zu nutzen, können Sie die _thread-Bibliothek verwenden.
Unten zeige ich Ihnen den im Video verwendeten Code, um die Threads unabhängig voneinander arbeiten zu lassen, einer von ihnen führt ein Programm aus und mit dem anderen verbinden wir uns remote mit der ESP32-Platine, um sie zu steuern.
import machine
import time
from _thread import start_new_thread
import network
import webrepl
ssid = "ESP32.led"
password = "po12345678"
ap = network.WLAN(network.AP_IF)
ap.active(True)
ap.config(essid=ssid, password=password, authmode=network.AUTH_WPA2_PSK)
while not ap.active():
pass
# Initialize the built-in LED as an output
led = machine.Pin(14, machine.Pin.OUT)
# Define loop function, which toggles the built-in LED
def loop():
webrepl.start()
webrepl.start(password='mypass')
def loop2():
while True:
led.value(1) # Turn the LED on
time.sleep(1) # Wait for a second
led.value(0) # Turn the LED off
time.sleep(1) # Wait for a second
# Start the loop2 function in a separate thread
start_new_thread(loop2, ())
# Run the loop function in the main thread
loop()
Der folgende Code in MicroPython für den ESP32 erstellt einen Wi-Fi-Zugangspunkt und steuert das Ein- und Ausschalten einer in Pin 14 des ESP32 integrierten LED. Nachfolgend wird die Funktionsweise des Codes erläutert:
- Die erforderlichen Bibliotheken werden importiert:
- machine: Um mit der ESP32-Hardware zu interagieren.
- time: Um Funktionen im Zusammenhang mit der Zeit, wie sleep, zu verwenden.
- _thread: Um Threads zu handhaben und die gleichzeitige Ausführung von Funktionen zu ermöglichen.
- network: Um Netzwerkverbindungen zu konfigurieren und zu verwalten.
- webrepl: Um eine webbasierte REPL (Read-Eval-Print Loop) zu starten, die es ermöglicht, über eine Wi-Fi-Verbindung mit dem Gerät zu interagieren.
- Die Variablen ssid und password werden definiert, die den Namen und das Passwort des zu erstellenden Wi-Fi-Zugangspunkts enthalten werden.
- Ein Wi-Fi-Zugangspunkt wird erstellt und aktiviert, indem die Klasse network.WLAN verwendet und mit dem zuvor definierten Namen und Passwort konfiguriert wird.
- Es wird gewartet, bis der Zugangspunkt aktiv ist.
- Der Pin 14 wird als Ausgangspin initialisiert, um die LED zu steuern.
- Die Funktion loop wird definiert, welche die webbasierte REPL mit einem Passwort startet.
- Die Funktion loop2 wird definiert, welche die integrierte LED in Intervallen von einer Sekunde ein- und ausschaltet.
- Die Funktion loop2 wird in einem separaten Thread unter Verwendung von start_new_thread gestartet. Dies ermöglicht, dass die LED unabhängig vom Rest des Codes ein- und ausgeschaltet wird.
- Schließlich wird die Funktion loop im Hauptthread des Programms ausgeführt, was die webbasierte REPL startet.
Mit diesem Code wird ein Wi-Fi-Zugangspunkt erstellt und die integrierte LED am Pin 14 gesteuert, während das Gerät weiterhin über eine webbasierte REPL zugänglich ist. Dies ermöglicht es den Benutzern, sich mit dem Gerät zu verbinden und Befehle zu senden oder den Code zu ändern, ohne das Blinken der LED zu unterbrechen.
Schreibe einen Kommentar Antworten abbrechen