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.
Der Code darf frei verwendet werden, ich freue mich aber über eine Nennung oder einen Link auf dieses Projekt als Referenz.

