ESP32 C6 Wlan beim booten

ESP32 C6 automatisch mit Wlan beim booten verbinden – MicroPython Script

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.

Comments

No comments yet. Why don’t you start the discussion?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert