Einen ESP32 mit KI programmieren, ohne selbst Code zu schreiben – wie gut funktioniert das in der Praxis? Die Plattform Klais verspricht, Projekte über einen KI-Chat umzusetzen und dabei auch durch die Verkabelung der Bauteile zu führen. Beschrieben wird also zunächst, was die Schaltung machen soll. Anschließend soll sich das Projekt im Gespräch mit der KI weiter anpassen lassen.
Das Team von Klais hat mich direkt angesprochen und zu einem Test eingeladen. Da mich das Thema derzeit besonders interessiert, habe ich einen der ersten 50 kostenlosen Testplätze genutzt und konnte die Plattform inzwischen ausprobieren. In diesem Beitrag zeige ich dir, wie die Umsetzung funktioniert und wie weit ich dabei ohne eigenen Code gekommen bin.
Dabei interessiert mich auch, welchen Mehrwert Klais gegenüber einem allgemeinen KI-Assistenten wie Claude bietet. Denn auch mit Claude lassen sich Mikrocontrollerprojekte planen, Programme entwickeln und Fehler untersuchen. Wo erleichtert Klais die Arbeit an der Schaltung, und welche Schritte nimmt mir die Plattform tatsächlich ab? Diese Fragen möchte ich anhand meines Tests einordnen.
Eine Einschränkung gibt es bereits bei der Hardwareauswahl: Zum Zeitpunkt meines Tests unterstützt Klais ausschließlich den ESP32-S3 in der Variante N16R8, also mit 16 MB Flash und 8 MB PSRAM. Ein beliebiges ESP32-Board aus der Bastelkiste lässt sich damit derzeit noch nicht verwenden.
Welchen ESP32-S3 benötigt Klais?
Für meinen Test kommt ein ESP32-S3 N16R8 zum Einsatz. Auf diese Variante ist die Hardwareunterstützung von Klais zum Testzeitpunkt beschränkt. Beim Kauf solltest du deshalb auf die vollständige Bezeichnung achten: N16 steht für 16 MB Flash-Speicher, R8 für 8 MB zusätzlichen PSRAM. Ein ESP32-S3 mit anderer Speicherausstattung ist damit nicht automatisch geeignet.



| Eigenschaft | Technische Daten |
|---|---|
| Mikrocontroller | ESP32-S3 |
| Prozessor | Xtensa LX7, zwei 32-Bit-Kerne |
| Taktfrequenz | Bis zu 240 MHz |
| Interner Arbeitsspeicher | 512 KB SRAM |
| Flash-Speicher | 16 MB |
| Zusätzlicher Arbeitsspeicher | 8 MB PSRAM |
| WLAN | 2,4 GHz, IEEE 802.11 b/g/n |
| Bluetooth | Bluetooth 5 LE |
| Schnittstellen für Erweiterungen | Unter anderem GPIO, I²C, SPI und UART |
| USB-Anschlüsse am verwendeten Entwicklungsboard | Zwei USB-C-Buchsen |
Das verwendete ESP32-S3-Board besitzt zwei USB-C-Anschlüsse. Welcher Anschluss bei welchem Schritt benötigt wird, zeige ich dir im Abschnitt zum Setup von Klais.
Setup von Klais: Den ESP32-S3 vorbereiten
Damit Klais mit dem ESP32-S3 arbeiten kann, muss zunächst die passende Firmware auf das Board übertragen werden. Dieses Flashen erfolgt direkt über den Browser. Dabei wird eine gegebenenfalls vorhandene Firmware auf dem Mikrocontroller ersetzt.
Für meinen Test habe ich vom Klais-Team einen Einladungslink erhalten. Dieser führt auf die Einladungsseite der Beta, auf der auch die noch verfügbaren Plätze angezeigt werden. Über „Start“ geht es weiter zur Einrichtung des ESP32-S3.
Die Flash-Seite von Klais führt durch die Übertragung der Firmware auf den ESP32-S3. Über die Schaltfläche „Start“ beginnt die Vorbereitung.
Damit der Browser auf den angeschlossenen ESP32-S3 zugreifen kann, stellen wir über „Connect device“ die Verbindung zum Board her.
Der Browser öffnet ein Auswahlfenster mit den verfügbaren seriellen Geräten. Hier wählen wir den Anschluss des ESP32-S3 aus und bestätigen mit „Verbinden“. Bei meinem Test wurde das Board als USB Single Serial (COM19) angezeigt; auf deinem Rechner kann die Anschlussbezeichnung abweichen.
Unter „Board detected“ zeigt Klais das erkannte Board und die vorgesehene Firmware an. Hier tragen wir die E-Mail-Adresse ein und bestätigen die erforderlichen Teilnahmebedingungen. Die zusätzliche Checkbox für E-Mail-Updates ist optional. Mit „Install KLAIS“ starten wir anschließend die Übertragung der Firmware.
Anschließend überträgt Klais die Firmware auf den ESP32-S3. Bei meinem Test dauerte das etwa drei Minuten. Währenddessen bleibt das Board per USB mit dem Rechner verbunden.
WLAN-Verbindung einrichten
Nach dem Flashen fehlt dem ESP32-S3 noch die Verbindung zum WLAN. Darüber wird das Board als sogenannter Satellit in Klais eingebunden und kann mit der Plattform kommunizieren.
Für die WLAN-Einrichtung stecke ich das USB-Kabel von der mit COM beschrifteten USB-C-Buchse in die mit USB beschriftete Buchse um. Die beiden Beschriftungen befinden sich bei meinem Board auf der Unterseite. Über den USB-Anschluss werden anschließend die WLAN-Zugangsdaten auf den ESP32-S3 übertragen.
Im Schritt „Connect to WiFi“ suchen wir über „Scan networks“ nach verfügbaren WLAN-Netzwerken. Dafür benötigt der Browser zunächst wieder Zugriff auf den ESP32-S3.
Durch den Wechsel der USB-C-Buchse meldet sich das Board am Rechner über einen anderen Anschluss. Im Auswahlfenster erscheint bei mir nun USB JTAG/serial debug unit (COM20). Diesen Eintrag wählen wir aus und bestätigen mit „Verbinden“. Die COM-Nummer kann auf deinem Rechner anders lauten.
Nach dem Scan werden die gefundenen WLAN-Netzwerke aufgelistet. Ich wähle mein 2,4-GHz-Netzwerk aus und gebe im folgenden Schritt das WLAN-Passwort ein. Anschließend verbindet sich der ESP32-S3 mit dem WLAN und wird als Satellit in Klais eingebunden.
Die Meldung „You are a Satellite“ bestätigt die abgeschlossene Einrichtung. Über „Go to the dashboard“ wechseln wir zur Projektoberfläche von Klais. Damit ist das Board für unser erstes kleines Projekt mit der KI vorbereitet.
Sprache, Zeitzone und Anrede festlegen
Bevor ich mit dem ersten Projekt starte, passe ich Klais im Chat an. Für Sprache, Zeitzone und Anrede reicht jeweils ein kurzer Prompt. So lassen sich die Einstellungen zum Beispiel formulieren.
Bitte antworte mir auf Deutsch.
Verwende für mein Projekt die Zeitzone Europe/Berlin.
Sprich mich mit Stefan an und duze mich.
Erster Test mit der RGB-LED
Für den ersten Test nutze ich die RGB-LED, die auf meinem ESP32-S3 N16R8 bereits verbaut ist. Im Chat gebe ich Klais den Pin und das gewünschte Verhalten vor.
auf meinem ESP32-S3 N16R8 ist eine RGB LED am GPIO48 verbaut, lasse diese in weiß blinken
Ob Klais den Prompt wie gewünscht umsetzt, lässt sich direkt am Board prüfen. Die LED an GPIO48 soll weiß blinken.
Praxistest: Ein Reaktionsspiel ohne vorgegebene Pinbelegung
Beim ersten Test habe ich Klais noch vorgegeben, dass die eingebaute RGB-LED an GPIO48 hängt. Für das Reaktionsspiel lasse ich die Pinbelegung bewusst offen. Klais wirbt damit, neben der Software auch die Verdrahtung vorzuschlagen. Genau das möchte ich ausprobieren: Reicht es, wenn ich die Bauteile nenne und beschreibe, was das Spiel tun soll?
Die Idee ist einfach. Nach einer zufälligen Wartezeit leuchtet die RGB-LED rot. Erst dann soll der Spieler den Taster drücken. Der ESP32 misst die Zeit zwischen dem roten Signal und dem Tastendruck und zeigt sie in Millisekunden auf dem OLED an.
Im Prompt beschreibe ich diesen Ablauf und nenne die verbaute RGB-LED, den Taster mit externem Pull-up und das OLED. Welche GPIOs für Taster und Display geeignet sind und wie ich die Bauteile anschließe, soll Klais vorschlagen. Anschließend prüfe ich, ob ich die Schaltung anhand dieses Vorschlags aufbauen kann und ob das Spiel damit wie beschrieben läuft.
Klais hat die Verdrahtung als Anschlusstabelle ausgegeben. Für den Taster schlägt es GPIO4 mit einem externen 10-kΩ-Pull-up vor. Beim OLED liegen SDA an GPIO21 und SCL an GPIO47. Damit hatte ich die nötigen Angaben für den Aufbau. Ich hatte mir zusätzlich einen gezeichneten Schaltplan gewünscht und musste auf die Tabelle länger warten als erwartet.
Klais fragte außerdem nach der Auflösung und der I²C-Adresse meines OLEDs. Beim Spielablauf wies es auf eine Grenze hin. Laut Klais fehlen der lokalen Automatik ein Zufallsgenerator für die Wartezeit und eine Uhr mit Millisekundenauflösung für die Reaktionsmessung. Für die gewünschte Spielmechanik konnte Klais daher keine lokale Umsetzung anbieten.
Beim Upload erschien eine italienische Bestätigungsabfrage für eine Notabschaltung. Da ich die Meldung in dem Moment nicht einordnen konnte, habe ich den ESP32 vorsichtshalber getrennt. Für eine so wichtige Abfrage hätte ich die zuvor eingestellte Sprache Deutsch erwartet.
Notabschaltung für den Satelliten erzwingen. Fortfahren?
Die Anschlusstabelle liegt damit vor. Ob das Reaktionsspiel in der gewünschten Form auf dem Board läuft, ist an diesem Punkt noch offen.
Wenn man links im Menü auf Device klickt bekommt man die aktuelle Information wie verbindungsqualität sowie die gesetzten Anschlüssen. Hier bekomme ich zusätzlich den Hinweis „Unstable link“ was auf eine schlechte WLAN Verbindung hindeutet. Jedoch kann ich nicht weiter an den Router gehen da dieser ca. 30cm vom Gerät entfernt aufgebaut ist. Hier gibt es wohl andere Probleme auf oder mit dem Gerät.
Zweiter Praxistest: RGB-LED mit einem Taster steuern
Beim Reaktionsspiel bin ich an die Grenzen der lokalen Zeitmessung gestoßen. Für den zweiten Test nehme ich mir eine einfachere Aufgabe vor. Klais soll einen externen Taster mit der eingebauten RGB-LED verknüpfen. Dazu brauche ich nur einen Taster und einen 10-kΩ-Widerstand als externen Pull-up.
Im Ruhezustand soll die LED grün leuchten. Solange ich den Taster gedrückt halte, soll sie rot leuchten. Beim Loslassen soll sie wieder auf Grün wechseln. Welchen GPIO ich für den Taster verwende und wie ich ihn verdrahte, soll Klais vorschlagen.
Ich möchte mit meinem ESP32-S3 N16R8 und einem externen Taster die eingebaute RGB-LED steuern. Der Taster soll über einen externen 10-kΩ-Pull-up angeschlossen werden. Wähle einen geeigneten GPIO und zeige mir, wie ich Taster und Widerstand verdrahte.
Im Ruhezustand soll die LED grün leuchten. Solange ich den Taster gedrückt halte, soll sie rot leuchten. Sobald ich loslasse, soll sie wieder grün werden. Richte die Steuerung als lokale Automatik auf dem ESP32 ein.
Am Board prüfe ich anschließend drei Dinge. Die LED soll beim Drücken auf Rot wechseln, beim Halten rot bleiben und beim Loslassen wieder grün leuchten.
Die Automation wurde innerhalb von 5 Minuten durch die KI erstellt und läuft wie gewollt auf dem Mikrocontroller.
Wenn ich den Taster betätige wechselt die LED die Farbe von grün zu rot.
Erkannte Vor- und Nachteile von Klais
Beim Reaktionsspiel bin ich an eine Grenze der Klais-Beta gestoßen. Die Plattform hat zwar eine Verdrahtung vorgeschlagen, konnte die gewünschte Spiellogik mit zufälliger Wartezeit und Reaktionsmessung in Millisekunden aber laut eigener Rückmeldung nicht direkt auf dem ESP32 umsetzen. Der zweite Test ging deutlich schneller. Die Aufgabe war überschaubar: Solange ich den Taster gedrückt halte, leuchtet die RGB-LED rot. Beim Loslassen wechselt sie wieder auf Grün.
Was mir an Klais gefällt: Für den Einstieg reichen das verwendete Board, die Bauteile und eine Beschreibung dessen, was das Projekt tun soll. Beim Reaktionsspiel hat Klais die benötigten Anschlüsse als Tabelle ausgegeben. Die Pinbelegung hatte ich offengelassen, und um eine Tabelle hatte ich im Prompt nicht eigens gebeten. Bei der Tastersteuerung übernimmt Klais auch die Übertragung auf den ESP32. Ich musste dafür keinen Code kopieren, keine Entwicklungsumgebung öffnen und die Anwendung nicht selbst aufs Board laden.
Gerade weil die Übertragung so bequem ist, hätte ich mir einen Blick in den generierten Code gewünscht. Bei der Tastersteuerung hätte mich zum Beispiel interessiert, wie Klais den Eingang abfragt und ob es den Taster entprellt. Im Test konnte ich den Code nicht einsehen. Ob die LED beim Drücken und Loslassen richtig reagiert, sehe ich direkt am Board. Wie sauber die Steuerung umgesetzt ist, kann ich so nur anhand ihres Verhaltens beurteilen.
RGB-LED und Taster mit Claude Code umsetzen
Den zweiten Praxistest habe ich auch mit Claude Code in der Konsole ausprobiert. Für die Softwareentwicklung finde ich das praktisch, weil Claude die MicroPython-Datei direkt in meinem Projektordner anlegt. Der Pro-Tarif enthält Claude Code und kostet bei monatlicher Abrechnung in den USA 20 US-Dollar. Die Preise können je nach Region abweichen. Claude Pro im Anthropic Help Center
Diesen Prompt habe ich in der Konsole eingegeben.
erstelle mir für den ESP32-S3 N16R8 ein Micropython Programm, die RGB LED am GPIO48 soll dauerhaft grün leuchten, wenn ich den Taster am GPIO4 betätige soll diese von grün auf rot wechseln. Wenn der Taster losgelassen wird soll die RGB LED wieder grün leuchten!
Nach rund 15 Sekunden lag die main.py in meinem Projektordner. Claude nutzt neopixel für die RGB-LED und liest den Taster an GPIO4 mit internem Pull-up ein. Beim Drücken soll die LED auf Rot wechseln, beim Loslassen zurück auf Grün.

Bei Claude kann ich den Quellcode direkt lesen und bearbeiten. Zur Übertragung öffne ich die erzeugte main.py in Thonny und speichere sie unter demselben Namen auf dem Mikrocontroller. Beim nächsten Neustart führt MicroPython die Datei automatisch aus. Im Klais-Test hat die Plattform die Übertragung für mich übernommen. Für die Claude-Variante lag zu diesem Zeitpunkt der Code vor. Der Test am Board stand noch aus.
Fazit: Wie weit komme ich mit Klais ohne eigenen Code?
Die Idee hinter Klais gefällt mir. Ich beschreibe, was mein ESP32 tun soll, und Klais übernimmt einen guten Teil der Arbeit bis hin zur Übertragung aufs Board. Bei der RGB-LED mit Taster hat das in meinem Test funktioniert. Die Anschlusstabelle war dabei hilfreich, weil ich die GPIO-Belegung auf einen Blick sehen konnte. Ein gezeichneter Schaltplan zusätzlich zur Tabelle würde den Aufbau für mich noch übersichtlicher machen.
Beim Reaktionsspiel habe ich gemerkt, wo die Beta an ihre Grenzen stößt. Die Einrichtung des OLEDs war umständlicher als erwartet. Vor allem hat mich überrascht, dass die lokale Automatik laut Klais weder die zufällige Wartezeit noch die Zeitmessung in Millisekunden umsetzen konnte. Für mein Spiel waren das zwei zentrale Funktionen. Dazu kam die italienische Bestätigungsabfrage beim Upload, die ich in dem Moment nicht einordnen konnte.
Für einfache Aufgaben wie die Tastersteuerung nimmt mir Klais bereits Arbeit ab. Bei Projekten mit genauer Zeitmessung würde ich nach diesem Test vor dem Aufbau klären, ob die benötigte Logik direkt auf dem ESP32 laufen kann.
Letzte Aktualisierung am: 04. November 2026





















