Montag, 2. April 2012

Serielles TTL Datenkabel

Um das vermaledeite Siemens Handy zu entsperren hatte ich mir ja extra ein USB Datenkabel besorgt – das ist nun arbeitslos. Also ist es an der Zeit auch das Kabel mal einer Obduktion zu unterziehen. Offenbar ist es nichts weiter als ein USB2serial Adapter auf PL2303 Basis – jedenfalls meldet es sich so beim Computer:
Bus 001 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Also frisch ans Werk und mal die beiden Stecker aufmachen, um zu sehen wie die verbunden sind:


Auf der USB-Seite findet sich erwartungsgemäß ein (leider vergossener) IC, ein Quarz (12MHz) und etwas Kleinkram. Die Terminals sind freundlicherweise beschriftet:
GND     weiß
RX grün
DTR –
TX blau
VCC rot
Auf der Handyseite landen die Kabel auf den entsprechenden Pins des Siemens-Lumberger Steckers.

Ich würde sagen, das werfe ich nicht weg – sowas kann man ja noch brauchen. Und wenn ich so darüber nachdenke, dann kommt mir eine Idee: Könnt Ihr Euch vorstellen, daß da wirklich ein RS232-Pegelwander a la MAX232 drin ist? Und im Handy dann noch einer? Ich nicht! Wenn ich Siemens wäre, hätte ich da einfach die TTL Pegel aufs Kabel gelegt und mir das Wandeln gespart. Bei den paar Zentimetern Kabel sollte das kein Problem sein. Wenn dem so ist, könnte das Teil recht nützlich sein. Zwar haben die Arduinos einen USB/RS232 Wandler an Bord, aber manche Clones, z.B. das ITeadStudio iBoard, das ich zufällig habe, oder ein nackter Aufbau mit einem Mikrocontroller haben das nicht, so daß ein TTL-Seriell Kabel hilfreich wäre. Nicht umsonst verkaufen diverse Anbieter passende Breakout-Boards. Bleibt die Frage, mit welcher Spannung hier zu rechnen ist. 5V? 3.3V? Also mal anstecken und ein wenig messen. Zwischen GND und VCC liegen 4.6V. Aber gilt das notwendigerweise auch für die Signalpegel? Versuch macht kluch, also habe ich mal das Oszi zwischen GND und TX geklemmt und dann das Interface mit Nullen geflutet:
cat /dev/zero > /dev/ttyUSB0
Das Ergebnis sah dann so aus:


Laut Wikipedia gilt an Eingängen: ≤ 0.8V ist low und ≥ 2.0V ist high. Das trifft übrigens sowohl für 5V, als auch für 3.3V TTL zu. CMOS will ≤1.5V bzw. ≥ 3.5V. Also ist unser Signal mit beiden TTL Varianten und CMOS kompatibel. Vorausgesetzt ein 3.3V TTL Baustein nimmt die überzähligen 0.4V nicht übel, was ich mir aber eigentlich kaum vorstellen kann. Zumindest das Datenblatt für den ATmega328p, der in den Arduinos verbaut ist sagt unter absolute maximum ratings: „Voltage on any Pin except RESET: Vcc + 0.5V“. D.h. für den wäre das OK.

Praxistest

Theoretisch sieht das ja schonmal gut aus, aber klappt es in der Praxis? Dazu habe ich das Kabel mal an einen Arduino angeschlossen (RX-TX, TX-RX, GND-GND) und irgendein Beispiel-Datenlogger-Programm draufgeladen. Und siehe da – ich konnte den Datenstrom über das alte Handykabel ebenso lesen, wie über die USB2RS232 Schnittstelle. Cool! :-)

2 Kommentare:

  1. Usb2serial ist immer praktisch zu haben :-). Wie du sagst, optimal für Arduino-clones ohne Usb. Du scheinst im Moment voller Tatendrang und noch dazu auch Zeit zu haben! Beneidenswert. Ich hoffe, dass ich ab Mai, wenn ich meine eigenes Lab hab und der größte Umzugsstress vorbei ist, dann auch mal wieder etwas mehr zum "Maken" komme.

    AntwortenLöschen
  2. Ich bin schon gespannt auf Deine Maker-Höhle ;-)
    Und Du hast recht: ich bin gerade voller Tatendrang und versuche so oft, wie möglich zumindest eine Kleinigkeit hinzukriegen. Wenn man da nicht dran bleibt fängt man immer wieder von vorne an. UNd da meine Holde momentan sehr beschäftigt ist nutze ich die freie Zeit ;-)
    Teilweise gehen die Mini-Projekte erstaunlich schnell, was doppelt motivierend ist.
    Ansonsten Glückwunsch zum neuen GSM Modul - ist echt eine schönes Teil. Ich hätte schon diverse Ideen, was man noch so damit anstellen könnte.

    AntwortenLöschen