Neuigkeiten    Das Projekt    Technik    RoboSpatium    Unterstützung    Stichwortverzeichnis    Download    Reaktionen    Spiele    Gadgets    Kontakt   




<<< Dateiübertragung zum Webserver         Roboterarm v1.0 >>>

USB Kommunikation

Arduino UNO vorbereiten

In diesem Kapitel verwende ich einen Arduino UNO als Endgerät zur Kommunikation per USB-Schnittstelle. Auf diesem sollte der folgende Sketch laufen:

1
2
3
4
5
6
7
8
9
void setup() {  
  Serial.begin(115200);  
}  
 
void loop() {  
  if (Serial.available()) {        // If anything comes in Serial (USB),  
    Serial.write(Serial.read());   // read it and send it out via serial  
  }  
}  
    

Der Arduino liest mit diesem Sketch Daten, die vom PC gesendet werden und gibt diese unverändert wieder an den PC zurück. Wir brauchen als nächstest also ein Python-Skript, das Daten an den Arduino sendet und dann wartet, bis diese vom Arduino zurückgesendet werden.

Python zum Datenaustausch per USB

Um in Python die USB-Schnittstelle nutzen zu können, muss das entsprechende Modul installiert sein:

sudo apt-get install python3-serial

Nun kann das folgende Skript gestartet werden:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/python3  
 
import sys     # Needed for handling command line parameters  
import serial  # Needed for USB communication  
import time  
 
 
# Open USB port to Arduino running echo script  
usbComm = serial.Serial(  
# port = '/dev/ttyUSB0', #Replace ttyS0 with ttyACM0 for Pi1,Pi2,Pi0  
port = '/dev/ttyACM0', #Replace ttyACM0 with ttyUSB0 for Pi3 and Pi4  
baudrate = 115200,  
parity = serial.PARITY_NONE,  
stopbits = serial.STOPBITS_ONE,  
bytesize = serial.EIGHTBITS,  
timeout = 1  
)  
time.sleep(1.002)# Give port some time to really open...  
 
 
# Now write the text received from the command line  
for arg in sys.argv: # Loop through all command line parameters  
    command_line = arg + '\r\n' # Add return and new line to argument  
    print(arg)  
    usbComm.write(command_line.encode('utf-8'))# Write line to USB  
    time.sleep(1.002)  
    # Now read what is received from Arduino  
    received_line = ""  
    byte_from_arduino = usbComm.read(1)  
    while(byte_from_arduino.upper() != b''):  
        if(byte_from_arduino != b'\r'):  
            received_line = received_line + byte_from_arduino.decode('utf-8').upper()  
        print(byte_from_arduino)  
        byte_from_arduino = usbComm.read(1)  
        time.sleep(0.2)  
    # print message  
    print(received_line)  
 
usbComm.close()  
print("...done!")  
    

Das Python Skript sendet sämtliche, von der Kommandozeile übergebenen Parameter an den Arduino. Nach dem Senden eines Parameters wird dabei auf die Antwort vom Arduino gewartet und das empfangene Byte ausgegeben. Sollte es sich bei einem empfangenen Byte um einen Buchstaben handeln, so werden Kleinbuchstaben in Großbuchstaben gewandelt. Das empfangene Wort wird vom Skript ausgegeben, sobald kein weiteres Byte im Empfangspuffer vorgefunden wird.


<<< Dateiübertragung zum Webserver         Roboterarm v1.0 >>>


Neuigkeiten    Das Projekt    Technik    RoboSpatium    Unterstützung    Stichwortverzeichnis    Archiv    Download    Reaktionen    Spiele    Verweise    Gadgets    Kontakt    Impressum   





Twitter YouTube Hackaday Patreon TPO