Zugriff auf die serielle Konsole des Lego Mindstorms EV3

Leider gibt es keine wirklich simple Zugriffsmethode auf die serielle Konsole („serial console“) des EV3 Bricks. Ich hätte mir hier z.B. die Möglichkeit gewünscht, dass der EV3 sich mit dem Mini-USB-Anschluss als serielles Gerät am Computer anmeldet. Dem ist leider nicht so. Über einen kleinen Umweg und mit etwas basteln gibt es aber zum Glück doch eine Möglichkeit. Mithilfe eines USB-to-Serial- / UART-Adapters erfolgt der Zugriff ganz ähnlich wie das bei der seriellen Schnittstelle des Raspberry Pi der Fall ist.

Glücklicherweise bin ich bei diesem englischsprachigen Blog fündig geworden. Leider bekommt man nur über den ersten Sensor-Anschluss des EV3 Zugriff auf die serielle Konsole. Das heißt: Man muss eines der Verbindungskabel opfern und irgendwo in der Mitte teilen. Bei den Steckern handelt es sich übrigens um RJ12-Stecker, man kann also alternativ einfach ein solches Kabel nutzen – aber Vorsicht: Dort könnte die Farbkodierung der Adern eine andere sein!

Bitte lest diesen Blogeintrag erst einmal vollständig durch, bevor ihr mit irgendwelchem Kabel-Zerschneiden beginnt und entscheidet dann, ob ihr wirklich Zugriff auf „diese Art“ von serieller Schnittstelle haben wolltet – oder nicht doch eher auf er Suche nach so etwas wie einem SSH-Zugriff seid…

Nun heißt es, die äußere Isolierung zum Teil zu entfernen, ohne dabei die innen liegenden Adern zu beschädigen. Benötigt werden hier nur drei der sechs Adern: Rot, Gelb und Blau. Die anderen können gekürzt werden (oder besser mit einem Schrumpfschlauch isoliert werden, Hauptsache es gibt keinen Kurzschluss!).

img_20161116_190656

Ich habe nun aus meiner Bastel-Kabel-Sammlung je ein Kabel in den drei Farben herausgesucht und auch diese wieder in der Mitte geteilt (wer an solchen Kabeln interessiert ist: Die findet ihr unter den Suchbegriffen „Breadboard Kabel“, „Steckbrücken“ oder „Dupont Cable“). Das Ganze habe ich zusammengelötet und mit Schrumpfschlauch überzogen, nicht nur weil es besser aussieht, sondern auch, weil das Adapter-Kabel so stabiler ist.

img_20161116_195221

An dieser Stelle drücke ich euch die Daumen, dass alles korrekt verkabelt ist – falls nicht, gibt im schlimmsten Fall irgendein Teil gleich Rauchzeichen von sich. Entsprechend auch der Hinweis: Das Befolgen dieser Anleitung geschieht auf eigene Gefahr. Also seid vorsichtig!

Jetzt kommt ein USB-to-Serial-Adapter eurer Wahl zum Einsatz. Die Teile gibt es wirklich in allen möglichen Farben und Formen. Die einzige Voraussetzung: Euer Adapter muss auf 3,3V ausgelegt bzw. eingestellt sein (da wir hier den EV3 aber sowieso nicht durch den Adapter mit Strom versorgen, ist das bei den meisten Adapter eigentlich egal, da sie häufig sowieso nur mit 3,3V Logik-Ausgangsspannung arbeiten und die Logik-Eingänge einfach 5V-tolerant sind… trotzdem muss man ja nichts riskieren!)

Die einzelnen Adern werden an die folgenden Pins angeschlossen:

  • Rot -> GND (ja, das ist ungewöhnlich, aber korrekt)
  • Blau -> TX (transmit = senden)
  • Gelb -> RX (receive = empfangen)

img_20161116_195935

Das andere Ende des selbstgelöteten Adapter-Kabels wird in den Sensor-Port 1 im EV3 gesteckt. Jetzt kann man den USB-to-Serial-Adapter auch am Computer anschließen.

img_20161116_195826

Die Baudrate beträgt 115200. Die folgende Anleitung gilt für Ubuntu (und sollte größtenteils auch auf andere Distributionen zutreffen). Wer Windows verwenden möchte, schaut an dieser Stelle bitte in den am Artikelbeginn verlinkten Blogbeitrag.

Zuerst müssen wir herausfinden, welche Adresse der USB-to-Serial-Adapter zugewiesen bekommen hat:

$ dmesg | grep tty
[ 3349.874437] usb 2-1.8.1.1: cp210x converter now attached to ttyUSB0

Falls hier mehrere Einträge angezeigt werden, sind diese zeitlich sortiert – der neueste Eintrag steht unten und ist damit vermutlich der für uns relevante: Wie wir sehen, hat in meinem Fall der USB-to-Serial-Adapter die Adresse  ttyUSB0 zugeordnet bekommen. Das heißt, dass wir ihn unter /dev/ttyUSB0 finden werden. Um nun die entsprechende serielle Konsole anzeigen zu lassen, verwenden wir das Tool picocom. Falls es noch nicht installiert sein sollte, hilft ein einfaches:

sudo apt install picocom

Damit man auf den seriellen Port zugreifen kann, muss man erst mal den eigenen Nutzer zur Gruppe dialout hinzufügen:

sudo usermod -a -G dialout $USER

Damit die Änderungen übernommen werden, muss man sich ein mal aus- und wieder einloggen. Um danach picocom zu starten und sich mit dem EV3 zu verbinden, wird folgender Befehl ausgeführt (ggf. müsst ihr noch ttyUSB0 entsprechend eurer vorher gewonnenen Erkenntnisse anpassen):

sudo picocom -b 115200 /dev/ttyUSB0

Nun könnt ihr den EV3 starten. Der Anfang der nun ausgegebenen Nachrichten könnte z.B. folgendermaßen aussehen:

picocom v1.7

port is        : /dev/ttyUSB0
flowcontrol    : none
baudrate is    : 115200
parity is      : none
databits are   : 8
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv
imap is        : 
omap is        : 
emap is        : crcrlf,delbs,

Terminal ready
EV3 initialization passed!
Booting EV3 EEprom Boot Loader

	EEprom Version:   0.60
	EV3 Flashtype:    N25Q128A13B

EV3 Booting system 

Jumping to entry point at: 0xC1080000


U-Boot 2009.11 (Oct 26 2012 - 10:30:38)

[...]

Um picocom wieder zu beenden, drückt man erst Strg+A und dann Strg+X.

Übrigens: Sobald das Betriebssystem des EV3 vollständig gestartet ist, werdet ihr keine weiteren Ausgaben mehr zu sehen bekommen, da der Serial-Port nun wieder ganz normal als Sensor-Port fungiert.

Wie man weiterhin erkennen kann, läuft auf dem EV3 der Bootloader U-Boot – in meinem Fall in der schon etwas älteren Version 2009.11. Wirklich relevant sind der Bootloader und die serielle Konsole während des Bootvorgangs aber eigentlich nur, wenn man versucht einen eigenen Linux-Kernel auf dem EV3 zum Laufen zu bekommen…

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s