Wenn man mit einem ESP32 C6 arbeitet, ist es oft praktisch, dass sich das Board nach dem Start automatisch mit dem WLAN verbindet. So kann man sofort auf Netzwerke zugreifen, Daten übertragen oder den Microcontroller über das Internet steuern, ganz ohne manuelles Eingreifen.
Im folgenden kurzen MicroPython Script zeige ich, wie der ESP32 C6 nach dem Einschalten direkt eine WLAN-Verbindung herstellt. Wie ihr den ESP32 C3 automatisch mit dem Wlan verbindet, erfahrt ihr in diesem Artikel.
boot.py
Folgenden code kopiert ihr über Thonny direkt in eure boot.py:
# boot.py import time, network from machine import Pin from neopixel import NeoPixel # --- LED/NeoPixel Setup (GPIO 8, 1 LED) --- np = NeoPixel(Pin(8, Pin.OUT), 1) def led(color): # Farbe setzen (R,G,B 0..255) np[0] = color np.write() def off(): led((0, 0, 0)) def blink(color, times=1, interval=150): for _ in range(times): led(color); time.sleep_ms(interval) off(); time.sleep_ms(interval) # === NEU: Zeitzonen-Offset laden + Helper === try: from secrets import TZ_OFFSET_HOURS # z. B. 3 in Sommerzeit für Zypern except Exception: TZ_OFFSET_HOURS = 0 # Fallback = UTC def fmt_localtime(offset_hours=TZ_OFFSET_HOURS): t = time.localtime(time.time() + offset_hours * 3600) y, mo, d, h, mi, s, wday, yday = t return "%04d-%02d-%02d %02d:%02d:%02d" % (y, mo, d, h, mi, s) # --- WLAN verbinden (mit gelb blinkend während Verbindungsaufbau) --- def connect_wifi(ssid, password, timeout_ms=15_000): wlan = network.WLAN(network.STA_IF) wlan.active(True) if not wlan.isconnected(): start = time.ticks_ms() on = False wlan.connect(ssid, password) while (not wlan.isconnected() and time.ticks_diff(time.ticks_ms(), start) < timeout_ms): led((40, 40, 0) if on else (0, 0, 0)) # gelb blinkend on = not on time.sleep_ms(200) off() return wlan # --- NTP Zeit setzen (mit blau/cyan Status) --- def set_time_via_ntp(retries=3, delay_s=1): import ntptime # Visual: cyan blinken während Sync for attempt in range(1, retries + 1): try: led((0, 30, 30)) # cyan an ntptime.settime() # stellt RTC auf UTC off() return True except Exception as e: off() time.sleep(delay_s) return False # ====== Startablauf ====== try: # Zugangsdaten laden from secrets import WIFI_SSID, WIFI_PASS except Exception: # rot (Fehler: keine Zugangsdaten) led((50, 0, 0)) print("WiFi: secrets.py fehlt oder ungueltig") else: wlan = connect_wifi(WIFI_SSID, WIFI_PASS) if wlan.isconnected(): # grün kurz -> verbunden led((0, 40, 0)); time.sleep_ms(800); off() print("WiFi verbunden:", wlan.ifconfig()) # Zeit via NTP holen if set_time_via_ntp(): # kurz blau = Zeit erfolgreich gesetzt led((0, 0, 50)); time.sleep_ms(500); off() # === NEU: UTC & Lokale Zeit ausgeben print("UTC: ", "%04d-%02d-%02d %02d:%02d:%02d" % tuple(time.localtime()[:6])) print("Lokal: ", fmt_localtime()) # nutzt TZ_OFFSET_HOURS print("NTP: Zeit gesetzt (UTC).") else: # orange = NTP fehlgeschlagen led((50, 20, 0)); time.sleep_ms(1200); off() print("NTP: keine Zeit erhalten.") else: # rot dauerhaft -> WLAN fehlgeschlagen led((50, 0, 0)) print("WiFi: keine Verbindung") # nach 5s LED aus, damit sie nicht für immer leuchtet time.sleep(5) off()
secrets.py
Außerdem brauchen wir eine Datei, in der wir unsere SSID und Passwort eintragen können. Erstellt dazu diese Datei, tragt eure SSID und Passwort ein und speichert sie als secrets.py.
# secrets.py WIFI_SSID = "SSID" WIFI_PASS = "PASSWORT" # Optional: lokale Zeitzone relativ zu UTC (z. B. 1 = MEZ, 2/3 = Sommerzeit, etc.) TZ_OFFSET_HOURS = 0
Nach einem Start eures ESP32 C6 verbindet sich dieser automatisch mit eurem Wlan. Die LEDs am ESP32 C6 blinken entsprechend gelb beim verbinden, leuchten kurz grün wenn sich der ESP32 C6 mit dem Wlan verbunden haben oder rot wenn eine Verbindung fehlgeschlagen ist. Außerdem zieht sich der ESP32 C6 automatisch die aktuelle Uhrzeit über das Internet und blinkt dann blau wenn es geklappt hat.