Daten vom EV3 zum NXT schicken, _ohne_ Spezialkabel.

Atmel, PIC, VEX, Fischertechnik

Moderator: Moderatoren

Benutzeravatar
c0pperdragon
Schreibt viel
Schreibt viel
Beiträge: 231
Registriert: 9. Feb 2015 00:29

Daten vom EV3 zum NXT schicken, _ohne_ Spezialkabel.

Beitragvon c0pperdragon » 10. Apr 2015 22:27

Hi!

Jetzt habe ich den ärgsten Hack geschafft, denn man sich zu diesem Thema vorstellen kann:

Was passiert, wenn man einfach einen EV3-Sensor-Port direkt mit normalem Lego-Kabel mit einem (speziell dem 4er) NXT-Sensor-Port verbindet?
Normal heißt jetzt wirklich, dass alle Kontakte verbunden sind. Auch die beiden Versorgungsspannungen sind sozusagen kurzgeschlossen.

Interessanterweise passiert da zuerst mal gar nicht viel schlimmes. Bei meinen beiden Geräte fließen da gerade mal 4.5mA vom EV3 zum NXT und ziehen dort die allgemeine Sensor-Versorgungsspannung um 0.15V auf das EV3-Niveau hoch. Falls man am NXT aktive Sensoren laufen hat, dann werden die über die Brücke vom EV3 mit Strom versorgt. Sonst gibt es keine negativen Auswirkungen daraus.
Die restlichen Pins sind recht gut gegen solche blödsinnige Beschaltung geschützt (ist ja alles kindertauglich).

Der EV3 erkennt zwar, dass da was am Port angeschlossen ist, kann sich aber naheliegenderweise keinen rechten Reim aus der ganzen Sache machen.
Trotzdem ist es möglich vom Programm aus (EV3-Basic unter Standardfirmware), den I2C anzusprechen und zumindest eine Slave-Adresse hinauszufunken. Weil kein Handshake erfolgt, hört der EV3 nach der Adresse wieder auf.
An der Gegenseite sitzt der NXT und kriegt den I2C-Versuch auf Pin 5 und Pin 6. Hinter diesen Pins liegt am Port 4 aber unter anderem der RS485-Baustein und könnte ein serielles Pegel-Differenz-Signal empfangen. Wenn man diesen Port also auf Empfangen öffnet, dann kann der zwar dieses für ihn total unverständliches Signal nicht entziffern, aber er erkennt zumindest irgendwie ein Start-Bit und liest ein Byte Signalmüll ein.

Mit dieser Beschaltung nur mit Standardkabel ist es also möglich, vom EV3 einzelne Signalpulse zum NXT zu schicken. Man kann ungefähr 1 Puls pro ms schicken, und auch einwandfrei als Einzelimpuls erkennen. Mit einer einfachen Codierung ("1 mal Klopfen: Ja, 2 mal Klopfen: Nein, 3 mal Klopfen: Weiß nicht), kann man natürlich potenziell alles übertragen was man will. Wie hoch die maximale Übertragungsrate (in bit/s) sein könnte, weiß ich nicht genau, aber ich schätze, dass man wahrscheinlich mit schlauer Implementierung auf 1000 bit/s oder so kommen könnte. Da sind dann aber beide Seiten schon arg nur mehr mit Übertragung beschäftigt. Realistischerweise irgendwo bei 500 bit/s.

Für die Sache ist am NXT die Enhanced Firmware nötig, um das RS485-Interface ansprechen zu können. Am EV3 braucht man nur Standard-Firmware.

Ich mache auf jeden Fall noch ein kleines Beispielprogram mit Sourcecode.

Zurück zu „allgemeine / Nicht-Lego-Robotik und Elektronik“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 15 Gäste

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss