Weiter im Programm - nachdem ich jetzt lange nur langweilige Bilder von Motoren, Titan-Material und Ständern gepostet habe mal wieder etwas Elektronik. Habe mir da einiges besorgt.
Ein Bild viele Teile - Fangen wir heute mal mit diesem hier an:
Das ist ein TPMS - Tire pressure monitor system.
Genauer gesagt der Sensor mit Transmitter von I2M.
Das I2M System ist zwar etwas teurer (so 80€ pro Sensor), aber ich denke es ist das beste System auf dem Markt und wirklich für den Rennsport ausgelegt.
Der Sensor wird in der Felge montiert und ermöglicht die Verwendung beliebiger Winkelventile. Das ist schon einmal ein Vorteil gegenüber allen serienmäßig verwendeten Systemen.
Das wichtigste Signal ist der Reifendruck (0-3,5 bar). Daneben werden aber auch die Lufttemperatur im Reifen (-40 bis 125°C) sowie der Batteriestatus (0-100%) übertragen.
Das ganze mit bis zu 10Hz (weiterer Unterschied zu günstigeren Systemen) und mit einem intelligenten Batteriesparmodus.
Im Grunde werden Beschleunigung und Druckänderungen berücksichtigt um die Übertragungsfrequenz festzulegen.
Wenn das Fahrzeug länger als 2h steht wird dann auch gar nichts mehr übertragen.
Wenn sich der Reifendruck ändert, dann wird die Übertragungshäufigkeit auf das Maximum von 10 Hz gesetzt.
Letztlich hängt daher die "Lebensdauer" der Batterie davon ab wie oft man fährt. Bei einem Hobby-Racer vielleicht 3-5 Jahre. Dann kann man aber leider nicht einfach die Batterie tauschen (Nachteil des Systems), sondern muss für 180€ neue Sensoren kaufen. Falls es bis dahin die gleichen überhaupt noch gibt
Soweit so gut und einfach. Um das ganze zum Laufen zu bekommen, muss das Signal natürlich noch empfangen, entschlüsselt und irgendwie dargestellt werden.
Mein Ansatz war das ganze zu Empfangen, dann auf den CAN-Bus zu legen; an die Megasquirt zu schicken. Darauf kann dann mein Dashboard ganz einfach zu greifen und die Daten live anzeigen.
Wieso das ganze? Man erspart sich grundsätzlich das Gefummel mit Reifendruckmessgeräten. Man muss nicht mal absteigen und kennt den Luftdruck. Und vielleicht noch nützlicher → der Luftdruck wird natürlich mitgeloggt und man kann später schauen ob es bei vergangenen Fahrten Problemen gab etc. Auch kann man Probleme direkt während der Fahrt erkennen (z.B. große Warnleuchte geht an bei Druckverlust) und hat so auch mehr Sicherheit.
Abgesehen davon habe ich auch einfach einen Fetisch alles mit zu messen was geht
Gut also zurück zur Messkette. Megasquirt und Dashboard habe ich schon. Muss das Signal also nur noch auf den CAN-Bus gebracht werden. Da gibt es auch was von I2M: Empfänger mit CAN-Bus Schnittstelle. Kostet aber halt auch gleich wieder so um die 400€. Und um das zu programmieren braucht es noch ein spezielles Schnittstellenkabel für um die 70€.
Also mit Versand nochmal um die 500€ um überhaupt etwas mit den knapp 200€ Sensoren anfangen zu können.
Als technikbegeisterter Pfennigfuchser, dachte ich mir, dass das auch günstiger gehen muss.
Wobei der Preis vom Sensor schon einigermaßen gerechtfertigt ist; Aber der Empfänger mit CAN-Schnittstelle und Programmierkabel ist meiner Meinung nach einfach maßlos überteuert.
Also war der nächster Schritt beschlossene Sache: Ich muss erstmal versuchen das Signal vom TPMS-Sensor zu ha....- ähm "auszulesen". Den Schritt möchte ich nun ganz ganz grob beschreiben:
Zuerst habe ich mir erstmal für 2,55 Euro ein 433Mhz RF-Empfänger Modul für Arduino besorgt und damit rumexperimentiert. Wenn man genau wüsste wie das Signal aufgebaut ist dann wäre das wirklich der Weg den man gehen könnte. Plus die Kosten für Arduino + CAN-Bus Transceiver + paar Kabel + 3D gedrucktes Gehäuse und einem schönen Stecker von Binder. Also vielleicht um die 40€ Materialkosten.
Leider wusste ich natürlich nicht wie das Signal aufgebaut ist

Daher war das noch nicht der beste Ansatz. Habe mir daher einen USB RTL-SDR Stick gekauft. Das ist der blaue Stick auf dem ersten Bild. Damit kann man im Prinzip auf einem großen Bereich von Frequenzen Signale empfangen.
Mich haben nur die ~433 Mhz vom TPMS-Sensor interessiert. Daher einfach mal da mitgelauscht.
Normal gibt es da schon zwangsweise eine mehr oder weniger Große Hilfesteller vom Hersteller.
Denn normal werden/müssen sämtliche Hochfrequenz Sendegeräte bei der FCC registriert werden und die entsprechende Registrierungsnummer auf dem Gerät angebracht werden. Über die Homepage dieser Behörde und der auf dem Gerät lesbaren Registrierungsnummer kann man sich dann ganze einfach die Registrierungsdokumente anschauen. Da steht dann typischerweise drinnen auf welcher Trägerfrequenz übertragen wird und nach welchem Schema übertragen wird (wie oft..). Manchmal auch mit welcher Modulation und mit welcher Codierung.
Zu meinem Leidwesen hat sich das der Hersteller meines Systems aber gespart
Aber nicht so wild. Die Frequenz kenne ich, das Schema ebenfalls und beim Rest (z.B. Codierung) gibt es zum einen nicht so viele Möglichkeiten und zum anderen lässt sich das auch manuell herausfinden, wenn man sich dann das Signal anschaut.
Also los gehts. Zunächst ist es noch sehr wichtig, dass man möglichst viel Abstand zur modernen Zivilisation hat. Sonst entschlüsselt man die Wetterstation des Nachbarn und meint im Signal irgendwo den Reifendruck zu erkennen.
Okay also einfach mal auf die entsprechende Frequenz gestellt; Nichts registriert außer Rauschen. Also alles in Ordnung. Dann muss nur noch der TPMS-Sensor getriggert werden und schon sieht man ein Signal. Dafür habe ich den Sensor einfach in einen Kasten gepackt und dort drinnen den Druck erhöht. Schon sendet er.
Ein einzelnes Signal sieht dann in etwa so aus:
Das ist eine Zeitspanne von 1s dargestellt. Sensor sendet mit 1Hz. Also ein Signal pro Sekunde wie zu erwarten.
Jetzt fragt man sich vielleicht auf dem ersten Blick wie man da irgendwas entschlüsseln soll? Dafür muss man erstmal gehörig reinzommen (nicht dargestellt). Das Signal ist nämlich nur xx Millisekunden lang.
Das würde dann auch wirklich erstmal per Hand bzw. Auge und Hirn gehen. Ist am Anfang nicht mal so verkehrt um das Signal zu verstehen.
Aber zum Glück gibt es auch Software die einem das ganze abnimmt. Da gibts dann einige Parameter die man verstellen kann - wie z.B. Noise-Ratio, Modulation und zuletzt Decodierung. Wie gesagt gibt es nicht so viele Möglichkeiten so ein Funksignal zu codieren. Sprich man bekommt relativ schnell raus, welche Codierung es ist und schon ist man am Ziel.
Wobei das Ziel dann erst der Anfang ist
Denn dann hat man nur einen Haufen an Nullen und Einsen.
Jetzt kommt der eigentlich schwierige Teil. Irgendwo zwischen diesen Nullen und Einzen steht nämlich in Binärschreibweise der Reifendruck und die Reifentemperatur. Aber blöderweise weiß man nicht in welcher Einheit .. mit welchem Offset und überhaupt an welcher Stelle. Um das ganze noch schwieriger zu machen wird auch noch ein Identifier und eine Check-Summe übertragen ..
Jetzt hatte ich die Hoffnung, dass das ganze Signal eher so wie bei typischen Wetterstationen aufgebaut ist. Also relativ kurz und somit einfach zu entschlüsseln. Das war aber leider nicht der Fall. Man bekommt da so um die 300 Bits übertragen.
Aber gut, da gibt man natürlich nicht gleich auf. Identifier (welcher Sensor sendet überhaupt), Check-Summe und Batteriestand sind mir erstmal völlig egal. Ich suche nur nach Temperatur und Druck.
Und da beides auf einmal auch schon zu schwierig wäre macht man folgendes:
Einmal eine Messreihe in der nur Temperatur verändert werden. Beispielsweise im Backofen+Gefrierschrank.
Der Druck bleibt dabei idealerweise gleich.
Dann als nächstes nur den Druck variieren. Also wieder in eine Box mit Druckluftanschluss und Drucksensor.
Temperatur bleibt dabei nahezu konstant. Muss man halt etwas setzen lassen.
Um sich die Arbeit zu erleichtern hat man normal auch den original Empfänger vom Hersteller. Denn selbst wenn man mit einem zweiten Sensor den aktuellen Druck/Temperatur kennt, dann heißt das noch nicht das der eigentliche Sensor genau das gleiche ausgibt. Aber da ich das ganze natürlich nur für mich selbst mache, könnte ich mir die Arbeit dann sparen wenn ich schon den Receiver vom Hersteller hätte.
Das ganze macht die Angelegenheit also nochmal schwieriger.
Aber wenigstens wird z.B. die Temperatur nur in 1° Schritten übermittelt. Das heißt wenn beide Sensoren lange bei der gleichen tatsächlichen Temperatur nebeneinander liegen, dann werden die nicht wahnsinnig weit auseinander liegen.
Sprich wenn man beim zweiten Sensor 22°C gemessen hat, dann probiert man beim Verschlüsseln eben mal 20,21,22,23,24 °C aus. Das ganze bei verschiedenen Temperaturen. Also Gefrierschrank; Kühlschrank; Raumtemperatur; Backofen 50°C; Backofen 80 °C, etc.
Man sucht dann beispielsweise in dem Signal nach dem Zahlenwert 50 in Binärschreibweise.
Das wird aber noch zu keinem Erfolg führen

Denn typischerweise überträgt man da positive Zahlen. Da der Hersteller aber als Messbereich schon -40°C angibt, wird da im einfachsten Fall ein Offset mit verwurstet sein.
Der war dann aber relativ einfach herauszubekommen hihi.
So habe ich also immer nach folgender Binärkombinationen gesucht: Reale Temperatur + Offset.
Bzw. nimmt einem das von mir verwendete Tool dann ab. Also das durchklappert diese über 300 Bits nach der entsprechenden Kombination.
Und das hat dann tatsächlich geklappt! Sprich ich könnte letztlich bei allen Nachrichten die Temperatur entschlüsseln
Das war die gute Nachricht. Die schlechte Nachricht war aber, dass ich es beim Druck nicht hinbekommen habe. Da gibt es nicht einfach ein Offset. Da stecken dann zusätzlich noch unbekannte Einheitsumrechnungen und Sonstiges mit drinnen. Real Pressure = (1.376*PRESSURE+98.624)/100; So sieht das Beispielsweise beim CAN-Bus Signal aus.
Aber beim RF-Signal war es das scheinbar nicht. Zudem haben sich für meinen Geschmack auch immer viel zu viele Bits bei einer Druckänderung verändert. Also nicht ganz einfach. Zudem noch die hohe Auflösung des Drucks.
Daher Vorerst eine Geschichte ohne Happy-End. Aber wollte es trotzdem mal teilen. Und vielleicht kann ich es ja später - einfach aus Spaß - entschlüsseln wenn ich den real übertragenen Druckwert kenne, nachdem ich mir den Receiver mit Kabel für 500€ vom Hersteller besorgt habe
Wer sich für das ganze genauer interessiert: Einfach mal nach Hack TPMS googeln. (Oder weather station hack); Da gibt es genug Anleitungen zu finden und auch wissenschaftliche Arbeiten. Denn im Falle vom TPMS ist das natürlich auch eine Sicherheitslücke. Da heutzutage viele Autos über TPMS verfügen. Und man auch falsche Signale senden kann.