[ev3dev × Python] SSH-Steuerung (Fernbedienung mit Tastatur)

Dieser Artikel richtet sich an alle, die mit ev3 in Python arbeiten möchten. Dieses Mal möchte ich die Tastatur zur Fernbedienung verwenden. Insbesondere ist es so, als würde man die Taste w drücken, um vorwärts zu kommen.

Inhaltsverzeichnis

  1. Was ist vorzubereiten? 1 . SSH Control
  2. Glossar

0. Was ist vorzubereiten?

◯ ev3 (Tank) + M Motor ◯ PC (VS-Code) ◯ bluetooth ◯ microSD ◯ Material (Es wird empfohlen, fortzufahren, während Sie dies ansehen.) ◯ Referenzseite: SSH Control

1.SSH Control

sshcontrol.py


#!/usr/bin/env python3

#Importieren Sie nur das, was Sie brauchen
import termios, tty, sys
from ev3dev2.motor import OUTPUT_A,OUTPUT_B,OUTPUT_C,MoveTank,MediumMotor

#Instanzgenerierung
tank_drive = MoveTank(OUTPUT_A,OUTPUT_B)
m_c = MediumMotor(OUTPUT_C)

#Definieren Sie eine Funktion, um die gedrückte Taste zu erhalten
def getch():
    #Holen Sie sich den Standard-Deskriptor für Eingabedateien
    fd = sys.stdin.fileno()
    #Abrufen der Terminalattribute des Dateideskriptors
    old_settings = termios.tcgetattr(fd)
    #Machen Sie es unnötig, die Eingabetaste zu drücken
    tty.setcbreak(fd)
    #Empfangen Sie Zeichen, die auf der Tastatur eingegeben wurden
    ch = sys.stdin.read(1)
    #Stellen Sie die Terminalattribute des Dateideskriptors wieder her
    termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
    #ch(character =In diesem Fall die gedrückte Taste)Gib es zurück
    return ch

#==============================================
#Definieren Sie die Funktion, die den M-Motor antreibt
def fire():
   m_c.on(80)
#==============================================
#Definieren Sie eine Funktion für den Tank, um sich vorwärts zu bewegen
def forward():
   tank_drive.on(80,80)
#==============================================
#Definieren Sie eine Funktion für den Tank, um sich rückwärts zu bewegen
def back():
   tank_drive.on(-80,-80)
#==============================================
#Definieren Sie eine Funktion für den Tank, um nach links abzubiegen
def left():
   tank_drive.on(80,50)
#==============================================
#Definieren Sie eine Funktion für den Tank, um nach rechts abzubiegen
def right():
   tank_drive.on(50,80)
#==============================================
#Definieren Sie eine Funktion, die alle Motoren stoppt
def stop():
   tank_drive.stop()
   m_c.stop()
#==============================================

#Endlosschleife
while True:
   #getch()Ersetzen Sie den zurückgegebenen Wert durch
   k = getch()
   #k(Taste gedrückt)Anzeigen
   print(k)
   
   #Bestimmen Sie die Bewegung, die der gedrückten Taste entspricht
   if k == 'w':
      forward()
   if k == 's':
      back()
   if k == 'd':
      right()
   if k == 'a':
      left()
   if k == 'f':
      fire()
   #Wenn die gedrückte Taste die Leertaste ist
   if k == ' ':
      stop()
   if k == 'q':
      exit()

** Punkt **: Ein Programm, das die gedrückte Taste erfasst und mit SSH fernbedient

** Punkt **: Programmausführung

  1. Klicken Sie mit grünem Licht mit der rechten Maustaste auf ev3dev und drücken Sie Open SSH Terminal.

  2. Geben Sie "ssh robot @ ev3dev.local" ein.

  3. Sie werden nach einem Passwort gefragt, geben Sie also "maker" ein.

  4. Geben Sie "pwd" ein, um das aktuelle Verzeichnis anzuzeigen. (Aktueller Aufenthaltsort)

  5. Wechseln Sie mit cd directory in das Verzeichnis, in dem Ihr Programm existiert! (Verzeichnis ist ein Ordner)

  6. Geben Sie nach dem Verschieben "python3 program name.py" ein und drücken Sie die Eingabetaste.

  7. Der Bildschirm des intelligenten Blocks ändert sich nicht, kann aber ausgeführt werden.

1. Glossar

Ich denke, es gab viele Wörter, die ich dieses Mal nicht verstanden habe, deshalb werde ich sie kurz erklären.

SSH : Ein Mechanismus, um über ein Netzwerk eine Verbindung zu anderen Computern (hauptsächlich Servern) herzustellen und diese remote zu betreiben. Während der Kommunikation werden die verarbeiteten Informationen verschlüsselt.

◯ ** Termios-Modul **: Low Level Terminal Control Interface.

· ** Terminal **: Der Teil, der für die Eingabe und den Empfang von Informationen verantwortlich ist. Ein Gerät, das die Eingabe / Ausgabe und Kommunikation mit dem Hauptcomputer ausführt.

·Schnittstelle Ein gemeinsamer Teil, der verschiedene Arten von Dingen verbindet.

◯ ** tty Modul **: Eine Reihe praktischer Funktionen für allgemeine Terminalsteuerungsvorgänge.

・ ** tty **: Abkürzung, die ein beliebiges Textterminal bedeutet. Bezieht sich auf ** Terminalemulator ** usw. über ein Pseudoendgerät in einem Fenstersystem.

・ ** Textterminal **: Eingabe- / Ausgabegerät zur Eingabe und Anzeige von Text (Zeichenkette)

· ** Terminal-Emulator **: Software, die als Terminal funktioniert.

・ ** Funktionen **: Eine Sammlung von Funktionen

◯ ** Dateideskriptor **: Dateideskriptor, fd. Eine der Datei zugewiesene Markierung (Pfad zu) zur Identifizierung der Datei

·Datei : Was kann Daten als Byte-String lesen und schreiben

・ ** Byte-Zeichenfolge **: Eine Bytezeichenfolge ist ein Datensatz, in dem 1-Byte-Daten, die aus einem beliebigen Bitmuster bestehen, ohne ein bestimmtes Format oder eine bestimmte Bedeutung wie Zeichen oder Zahlen angeordnet sind.

· ** Bitmuster **: Eine Kombination aus "0" - und "1" -Bits. Dies ist die kleinste Einheit, die ein Computer verarbeiten kann.

·Teilzeitstelle : Es wird mit "B" abgekürzt. Dies ist eine Einheit, die die Informationsmenge auf einem Computer ausdrückt. Ein Byte besteht aus acht Einheiten, die als Bits bezeichnet werden und 0 oder 1 darstellen. Es wird für Speicher- und Festplattenkapazität, Mindestanweisungscode für Programme usw. verwendet.

◯ ** sys Modul **: Modul zur Verarbeitung von Informationen zu Python-Interpreten und zur Ausführungsumgebung

· ** Modul **: (Python) Eine Datei, die Code zusammenfasst.

・ ** Python-Standardbibliothek **: Eine Sammlung von Modulen. Offiziell Standard Library Tutorial

· ** Dolmetscher **: Software, die funktioniert, während der Quellcode Zeile für Zeile gelesen und in Anweisungen konvertiert wird, die vom Computer ausgeführt werden können. Die Verarbeitungsgeschwindigkeit ist nicht schnell, da das Programm zeilenweise verarbeitet wird.

stdin : Standardeingabe über die Tastatur. Standardeingabe. Sie können auf der Tastatur eingegebene Zeichen empfangen. fd = 0

fileno : = file-number = file.No 0,1,2.. Funktion zum Abrufen des Dateideskriptors (fd) eines Dateiobjekts Gibt einen Integer-Dateideskriptor zurück Diesmal, Dateiobjekt = auf der Tastatur eingegebene Zeichen

tcgetattr(fd) : Gibt eine Liste zurück, die die Terminalattribute des Dateideskriptors fd enthält.

・ Tc = Endcomputer = Endcomputer ・ Get = get ・ Attr = Attribut = Attribut

setbreak() : Ermöglicht die Eingabe von Zeichen ohne Drücken der Eingabetaste. Im Gegenteil, ohne dies ist es nicht möglich, mit einem Zeichen einzugeben.

read() : Datei lesen

termios.tcsetattr(fd, when, attributes) : Extrahieren Sie die Terminalattribute des Dateideskriptors fd aus den Attributen und legen Sie sie fest. Attribute (= Attribute) ist eine Liste, die tcgetattr () zurückgibt. Das Argument wann bestimmt, wann sich ein Attribut ändert: -TCSANOW nimmt sofort Änderungen vor. -TCSADRAIN nimmt Änderungen vor, nachdem alle aktuell in der Warteschlange befindlichen Ausgaben übertragen wurden. -TCSAFLUSH überträgt alle aktuell in die Warteschlange gestellten Ausgaben, ignoriert alle in die Warteschlange gestellten Eingaben und nimmt dann Änderungen vor.

Referenzartikel: Tastenanschläge in Python erkennen (ohne Eingabe) Was ist Standardeingabe / Standardausgabe? Mac Terminal-Befehlsliste (Basic) TERMIOS

Schließlich

Danke fürs Lesen! !!

Ich möchte einen besseren Artikel machen ◯ Das ist leichter zu verstehen ◯ Das ist schwer zu verstehen ◯ Das ist falsch ◯ Ich möchte, dass Sie hier mehr erklären Wir freuen uns über Ihre Meinungen und Vorschläge.

Recommended Posts

[ev3dev × Python] SSH-Steuerung (Fernbedienung mit Tastatur)
[Ev3dev] Lassen Sie uns ein Fernsteuerungsprogramm von Python mit dem RPyC-Protokoll erstellen
[ev3dev × Python] Einzelmotorsteuerung
Holen Sie sich Tastaturereignis mit Python
Bildschirm und geteilter Bildschirm mit Python- und SSH-Anmeldung am Remote-Server
[ev3dev × Python] Steuerung mehrerer Motoren
[ev3dev × Python] Anzeige, Sprache, LED-Steuerung
Versuchen Sie die Frequenzsteuerungssimulation mit Python
Exklusive Steuerung mit Sperrdatei in Python
Manuelle SSH-Registrierung für Coreserver mit Python
[Automatisierung] Bearbeiten Sie Maus und Tastatur mit Python
FizzBuzz in Python3
Melden Sie sich mit SSH bei einem Remote-Server an
Scraping mit Python
Statistik mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
PyCharm Remote Interpreter von SSH (WSL2, venv, pyenv)
In Python integrieren
Spielen Sie mit 2016-Python
Vorsichtsmaßnahmen beim Umgang mit Kontrollstrukturen in Python 2.6
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
Lassen Sie uns EV3-Motoren und -Sensoren mit Python steuern
Installieren Sie Python Control
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Aufbau einer Pepper-Kun-Fernbedienungsumgebung mit Docker + IPython Notebook
SSH in eine virtuelle Umgebung mit vscode Remote Development
Versionsverwaltung von Node, Ruby und Python mit anyenv
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Versuchen Sie es mit Python.
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
"Objektorientiert" mit Python gelernt
Führen Sie Python mit VBA aus
[ev3dev × Python] Ultraschallsensor
Umgang mit Yaml mit Python
Löse AtCoder 167 mit Python
[Python] Verwenden Sie JSON mit Python
Python lernen mit ChemTHEATER 05-1
Lerne Python mit ChemTHEATER
Führen Sie prepDE.py mit python3 aus
1.1 Erste Schritte mit Python
Tweets mit Python sammeln
Binarisierung mit OpenCV / Python
3. 3. KI-Programmierung mit Python