Spezifikation für eigene Firmware
Wenn du deinen Slimme Controller ohne Firmware bestellt hast, haben wir auf dieser Seite alles für dich, was du zum Flashen deiner eigenen Firmware brauchst. Beachte: sag uns vor der Bestellung unbedingt Bescheid, wenn du deine eigene Firmware flashen willst, sonst wird der ESP im Release-Modus ausgeliefert und du kannst den Flash-Speicher nicht überschreiben.
Verbindung über UART
Der Slimme Controller enthält einen ESP-C3 mit 4 MB Flash. Um mit dem ESP zu kommunizieren, kannst du die UART-Leitungen auf der Platine zusammen mit einem beliebigen billigen TTL-zu-USB-Adapter nutzen. Die UART-Leitungen müssen auf 3,3 V hochgezogen werden, NICHT auf 5 V.
Verbinde RX am UART-Header mit TX am Adapter und mach das Gleiche mit TX der Platine und RX am Adapter. Die Platine kannst du entweder direkt über den 3v3-Pin versorgen oder die üblichen 12 V an die Schraubklemmen anlegen.
Der Kalibrierungs-Button auf der Platine dient gleichzeitig als Auswahl für den Boot-Modus. Wenn du ihn beim Anschließen der Stromversorgung gedrückt hältst, geht der ESP in den Download-Modus und du kannst ihn mit ESP-IDF flashen.
Allgemeine Funktionsweise
Die Platine kommuniziert mit dem Lüfter, indem sie den passenden Optokoppler kurz einschaltet und dann wieder ausschaltet. Zieh die Leitung einfach für 100 bis 200 ms auf High, um einen Tastendruck zu simulieren, und leg sie danach wieder auf Masse. Ein dauerhaft aktiver Optokoppler blockiert jegliche weitere Eingabe am Lüfter komplett — also nicht vergessen, ihn wieder loszulassen. Es werden 6 Funktionen unterstützt, siehe Tabelle unten.
Außerdem gibt es einen speziellen Optokoppler, der umgekehrt angeschlossen ist und vom Lüfter eingeschaltet wird, sobald dieser im automatischen Temperaturmodus läuft. Der arbeitet invertiert: Die Leitung ist High, wenn der Lüfter NICHT im Auto-Modus ist, und wird auf Low gezogen, sobald er es ist.
Auch die beiden LEDs sind invertiert eingebaut, weil sie an Strapping-Pins hängen, die beim Boot High sein müssen. Um sie einzuschalten, setze die Pins auf Low, damit Strom durch die Pins abfließt. Setzt du die LED-Pins auf High, gehen sie aus.
Auf der Platine sitzt schließlich noch ein INA226, der die am Lüfter anliegende Spannung und den fließenden Strom messen kann. Er ist über den I2C-Bus angebunden und hat zusätzlich einen Alert-Pin. Details findest du im Datenblatt.
Pinbelegung
| GPIO | Richtung | Name | Beschreibung |
|---|---|---|---|
| 0 | OUT | IN/OUT | Taste Lüfterrichtung |
| 1 | OUT | AUTOHOLD | Taste automatischer Temperaturmodus |
| 2 | IN | RED LED | LED, beschriftet „command“ |
| 3 | OUT | ON/OFF | Ein-/Aus-Taste des Lüfters |
| 4 | OUT | FASTER | Taste Lüfter schneller |
| 5 | OUT | BEEP | Lässt den Lüfter piepen |
| 6 | OUT | SLOWER | Taste Lüfter langsamer |
| 7 | IN | AUTO STATUS | Status automatischer Temperaturmodus, Low = an. |
| 8 | IN | GREEN LED | LED, beschriftet „connected“ |
| 9 | IN | CALIB BUTTON | Kalibrierungs-Taste, wählt auch den Boot-Modus |
| 10 | IN | ALERT | INA226 Alert-Interrupt |
| 11-17 | IDK | FLASH | Interner Speicher, nicht verwenden |
| 18 | I/O | SDA | I2C-Daten für INA226 |
| 19 | OUT | SCL | I2C-Takt für INA226 |
| 20 | IN | UART RX | Debug-/Flash-Serial, kann anderweitig genutzt werden |
| 21 | OUT | UART TX | Debug-/Flash-Serial, kann anderweitig genutzt werden |