Tesla Command Button – Öffnen der Ladeklappe

Als kurze Einführung in die Gesamtthematik empfehle ich, zunächst diese Übersicht zu lesen –> klick

Das Funksignal für das Öffnen der Ladeklappe ist ein relativ einfaches, für alle Teslas konstantes ASK Signal (Träger an/aus), das auf 433MHz gesendet wird (USA vermutlich 315MHz). Ein solches Signal kann man problemlos mit einem Arduino oder ähnlichen Microcontroller erzeugen und mit entsprechenden Sendemodulen senden. Hier liegt schon ein erster Grund für Fehlschläge. Die aus Arduino Kits weit verbreiteten FS1000A Module funktionieren nicht. Diese Module schaffen die nötige Taktrate nicht und haben keine gute Reichweite und Frequenzstabilität. Gute Erfahrungen habe ich mit STX882 Modulen oder dem Umbau einer Baumarkt Fernbedienung (z.B. Elro). Hinterlasst gerne einen Kommentar über funktionierende und nicht funktionierende Funkmodule.

Der zweite Knackpunkt scheint das Signal selbst zu sein. Es gibt Codes auf github dazu, die aber bei mir nicht wirklich robust funktioniert haben. Oftmals musste ich die Sendetaste wiederholt drücken. Deshalb habe ich das Signal mit einem Logic Analyser mitgeschnitten; einfach ein ASK 433 MHz Empfänger an den Analyzer und mit 2MHz Sampling geloggt. Mit einer deutlich verbesserten Nachahmung des Signals klappt alles prima und wie mit dem Original.

Signalbeschreibung

Das mitgeschnittene Signal sieht so aus:

Vornweg sei angemerkt, dass der UMC2 bei Signalwiederholungen kein komplett identisches Timing erzeugt; +/-10us Abweichungen scheinen ganz normal und sind offenbar kein Problem.

Die Präambel des Signals besteht aus 13 ca. 800us langen An/Aus-Perioden. Der UMC2 erzeugt bei der Präambel allerdings eine Art „Chirp“. Die An-Pulse starten mit ca. 530us Länge, die Aus-Pulse mit ca 270us. Die An-Pulse werden mit jeder Wiederholung ca. 20us kürzer, die Aus-Pulse entsprechend länger. Am Ende der Präambel sind die Pulse dann 400us lang. Ich bin nicht sicher, ob dieser „Chirp“ wirklich nötig ist. Ich habe ihn in den Code mit eingebaut. Weiterhin findet man in dem Signal Manchester kodierte Anteile. Dieser Codeteil wird dreimal wiederholt. Zwischen den Codeteilen gibt es ein Trennsignal. Am Ende folgt ein etwas anderes Abschlusssignal. Danach kommen 25ms Pause. Das Signal wird so lange gesendet, wie der Knopf gedrückt wird.

Der Code:

Diese Signalfolge habe ich als Code für die Arduino Entwicklungsumgebung auf github abgelegt: https://github.com/stefan73/BetterTeslaChargeportOpener

Der Code braucht keine weiteren Libraries und sollte damit sehr portabel sein. Kleinere Abweichungen im Timing im Bereich von +/-10us hat ja auch das Original. Deshalb langen auch die nicht so ganz exakten Delay() Funktionen der Arduino IDE. Es sollte auch mit anderen Boards problemlos klappen. Sowohl mit ATMega 328p als auch mit 168 Boards konnte ich damit problemlos die Ladeklappe öffnen. Nach 10 Wiederholungen des Gesamtsignals (also 10 x 3 = 30 Codepaketen) endet die Übertragung und die Board LED / Pin13 blinkt.

Die Schaltung:

Ich habe ganz trivial einen Taster genommen. Dieser schaltet die Spannungsversorgung zu meinem Arduino Mini Pro Board mit ATMega 168 (und ja, ein 1€ Clone von Aliexpress tut es) sowie dem Sendemodul. Der 433MHz Sender wird mit seiner Datenleitung an Pin11 des Arduino angeschlossen und das war es auch eigentlich schon. Wer will kann den Sender über Pin 10 mit 5V Spannung versorgen, was sich bei meiner Trivialschaltung allerdings erübrigt – ich schalte einfach alles über den Taster.
Falls ihr dazu einen Schaltplan möchtet, hinterlasst bitte einen Kommentar. So sieht die einfachste Form der Schaltung mit einem Mini Pro (ATMega168) und STX882 aus.

EInfache Schaltung mit MiniPro und STX882 – STX882 Spannungsversorgung über den 5V Pin des Arduino

Achtung Bootloader:

Einen Hinweis muss ich noch zum Bootloader geben. Die alten Arduino Bootloader brauchen ca. 1-2 Sekunden, bis unser Code auf dem ATMega los läuft. Das ist an sich kein Problem – man muss die Taste aber dann so lange drücken. Die Lösung heißt Optiboot. Das ist ein neuerer Bootloader. Mit diesem läuft der Code des Nutzers ohne merkbare Verzögerung los. Für unsere Schaltung ist das natürlich schöner, weil man damit kaum eine halbe Sekunde auf den Knopf drücken muss und schon öffnet sich die Klappe. Es gibt eine Menge Anleitungen zum Flashen von Optiboot im Netz. Für Anfänger ist es sicherlich besser einen Arduino aus vertrauenswürdiger Quelle mit aktuellem Bootloader zu kaufen.

Wie ihr im Beitragsbild sehen könnt, habe ich eine Baumarktfernbedienung umgebaut und an der Garagenwand montiert. Man kann natürlich auch versuchen, die Schaltung in den Ladestecker einzubauen. War mir offen gesagt zu aufwändig. Die gezeigte Fernbedienung hängt direkt neben der Wallbox.

P.S. Ich habe Mikrosekunden mit der Einheit us bezeichnet. Das eigentlich korrekte griechische My Zeichen habe ich aus Bequemlichkeit nicht benutzt.

Schreibe einen Kommentar

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