Serielle Kommunikation Arduino-Raspberry

Serielle Kommunikation zwischen Arduino und Raspberry Pi

Verdrahtungsbeispiel:
rs232

Wichtig:
NICHT 5V und 3.3V direkt verbinden! Verwende einen Spannungsteiler für 5V→3.3V. 
Dafür gibt es die Wiederstände mit 10k und 20 die hier als Spannungsteiler dienen.

1. Arduino-Code

void setup() {
  Serial.begin(9600); // Serielle Kommunikation starten
}

void loop() {
  // Daten vom Raspberry Pi lesen
  if(Serial.available() > 0) {
    String input = Serial.readStringUntil('\n');
    Serial.print("Empfangen: ");
    Serial.println(input);
  }
  
  // Eigene Daten senden
  int sensorValue = analogRead(A0);
  Serial.print("Sensor: ");
  Serial.println(sensorValue);
  delay(1000);
}

2. Raspberry Pi Python-Code

import serial
import time

# Serielle Verbindung konfigurieren
ser = serial.Serial(
    port='/dev/ttyS0',  # Bei USB: /dev/ttyUSB0
    baudrate=9600,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    timeout=1
)

try:
    while True:
        # Daten senden
        ser.write(b"Hello Arduino!\n")
        
        # Daten empfangen
        if ser.in_waiting > 0:
            line = ser.readline().decode('utf-8').rstrip()
            print(f"Empfangen: {line}")
        
        time.sleep(1)

except KeyboardInterrupt:
    ser.close()
    print("Verbindung geschlossen")

3. Überprüfung der Verbindung

  1. Hardware-Check:
    • Stromversorgung beider Geräte prüfen
    • RX/TX-Kabel vertauscht? (RX→TX und TX→RX)
    • GND verbunden?
  2. Software-Check Raspberry Pi:
    # Verfügbare serielle Ports anzeigen
    ls /dev/tty*
    
    # Berechtigungen setzen
    sudo usermod -a -G dialout $USER
    sudo reboot
  3. Test mit minicom:
    sudo apt install minicom
    minicom -b 9600 -o -D /dev/ttyS0

    Im minicom sollte die Arduino-Ausgabe sichtbar sein

4. Fehlerbehebung

ProblemLösung
Keine Daten empfangen
  • Baudrate auf beiden Geräten prüfen
  • Port-Adresse mit ls /dev/tty* überprüfen
Korrupte Zeichen Erde verbinden oder Spannungsteiler verwenden
Permission denied Benutzer zur dialout-Gruppe hinzufügen

5. Wichtige Hinweise

  • Immer zuerst USB abstecken bevor Verbindungen geändert werden
  • Bei direkter GPIO-Verbindung (ohne USB):
    # UART auf Raspberry Pi aktivieren
    sudo raspi-config → Interface Options → Serial Port → No→Yes
  • Für USB-Verbindung Arduino IDE Serial Monitor deaktivieren