Raspberry Pi Projects: LEGO Brick Alternative Sprache

ein neues Raspberry Pi Projekt nötig? Sie können schon einige Dritt Sprachen auf der LEGO Stein laufen, aber ev3dev stellt eine abgespeckte Version von Linux auf dem Ziegel. Sie müssen nicht alles auf dem Ziegel zu ändern, weil ev3dev off läuft eine Micro-SD-Karte in den Stein eingelegt. Sie können Ihre LEGO Stein zurück in den ursprünglichen Zustand durch einfaches Abziehen der SD-Karte leicht zurück.

Der Großteil der Montagearbeiten beinhaltet auf sie die SD-Karte mit der Linux-Distribution zu schaffen. Es ist ein bisschen wie die SD-Karte für den Raspberry Pi zu schaffen selbst. Beim ev3dev.org, Sie können Anweisungen zur Erstellung der SD-Karte unter dem Mac, PC oder Linux-Betriebssystem zu finden.

Nachdem Sie die SD-Karte erstellen, können Sie die Ziegel in den Raspberry Pi stecken. Sie haben die Ziegel direkt in einer der Raspberry Pi USB-Buchsen zum Anschluss (nicht mit einem USB-Hub im Gegensatz), um für sie zu arbeiten.

Sie kommunizieren mit dem LEGO Stein aus dem Raspberry Pi durch eine Secure Shell (SSH) Sitzung. Öffnen Sie eine Befehlszeilenfenster und Einrichtung einer Sitzung. Dies ist, was Sie sehen:

ssh root @ 192.168.2.3root @ 192.168.2.3-Passwort: _____ ______ _ | ___ / __ | | _____ __ / _ / / | _ / _` | / _ / / | __ / V / ___) | (_ | | __ / V / ___ | _ / | ____ / __, _ | ___ |! _ / Debian GNU / Linux jessie auf LEGO MINDSTORMS EV3 Die Programme enthalten mit dem Debian GNU / Linuxsystem sind frei Software-die genauen Vertriebsbedingungen für jede programare in den einzelnen Dateien in /usr/share/doc/*/copyright.Debian GNU / Linux kommt ABSOLUT KEINE GARANTIE beschrieben, soweit durch geltendes law.Last Login erlaubt: Mi 5. November 11 : 45: 33 2014 von 192.168.2.1root@ev3dev: ~ #

Unter Linux ist alles eine Datei, und die LEGO-Motoren sind keine Ausnahme. Sie sprechen auf eine Datei, um sie durch das Schreiben, und Sie erhalten Informationen zurück, indem eine Datei auflistet. Da diese Linux ist, fordert der normalen Befehlszeile immer noch funktionieren, und Sie werden es nützlich finden zu verwenden CD zu ändern Verzeichnis und ls sehen, welche Dateien in der aktuellen Verzeichnisebene sind.

Zur Nutzung dieses Systems aus Python, haben Sie eine SSH-Sitzung zu verwalten innerhalb eines Programms. Die meisten Leute empfehlen Pexpect verwenden, aber Sie können mehr Erfolg haben mit paramiko. Installieren Sie es mit dem folgenden:

pip installieren paramiko --upgrade

Der folgende Code zeigt Ihnen, wie Sie zu öffnen, ausführen und eine SSH-Sitzung aus Python schließen.

'' 'Math import paramikoimport sysimport ssh Sesson für EV3dev' ', Zeit, erstellen os # eine SSH clientssh = paramiko.SSHClient () shell = "" - debug = Truedef main (): print "Wait for brick" kontaktiert werden login () print "Jetzt zu Ziegel sprechen" kommando_senden ( "ls n") # Linux Liste directoryssh.close () print "Jetzt heruntergefahren" sys.exit () # Funktionen für den Zugriff auf EV3devdef login (): global shellssh.load_system_host_keys () ssh.load_host_keys (os.path.expanduser ( "~ / .ssh / known_hosts")) # Stellen Sie sicher, dass wir den Remote-Servers # SSH-Schlüssel hinzufügen automaticallyssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())paramiko.util.log_to_file("ev3brick.log")# Eine Verbindung mit dem EV3 Ziegel # Passwort ändern, um Ihre ownssh.connect ( "10.42.0.3", username = "root", Passwort = "legobrick9") # Erstellen Sie eine rohe shellshell = ssh.invoke_shell () wait_for_prompt () kommando_senden ( "cd / sys / class / Tacho Motor n ") # macht Befehle shorterdef wait_for_prompt (): # ein neues bufferreceive_buffer erhalten erstellen =" ", während nicht" # "in receive_buffer: # die bufferreceive_buffer + = shell.recv (1024 erhalten Get) wenn debug: print receive_bufferdef kommando_senden (Befehl): shell.send (Befehl) receive_buffer = "", während nicht "#" in receive_buffer: receive_buffer + = shell.recv (1024), wenn Debug oder "bash" in receive_buffer: print receive_bufferif __name__ == '__main __': main ()

Menü