Kommunikation mit einem Arduino mit einem Raspberry Pi

Communicating with an Arduino Using a Raspberry Pi

Der Raspberry Pi und Arduino können unter Verwendung verschiedener Protokolle miteinander kommunizieren, einschließlich Serielle (UART), I2C und SPI. Diese Anleitung zeigt Ihnen, wie Sie die Kommunikation zwischen einem Himbeer -Pi und einem Arduino einrichten Serienschnittstelle (UART), was die häufigste und unkomplizierteste Methode ist.


Was Sie brauchen werden

  1. Raspberry Pi (Jedes Modell mit GPIO -Unterstützung, z. B. PI 3, PI 4)
  2. Arduino (z. B. Uno, Mega, Nano)
  3. USB -Kabel (Um den Arduino mit dem Himbeer -Pi zu verbinden)
  4. Jumperdrähte (Wenn Sie die serielle GPIO -Kommunikation verwenden)
  5. Python installiert Auf dem Raspberry Pi
  6. Arduino ide Installiert auf dem Raspberry Pi oder einem separaten Computer

Schritt 1: Verbinden des Arduino mit dem Raspberry Pi

Sie können den Raspberry Pi mit dem Arduino mithilfe der Himbeer anschließen USB oder die GPIO -Stifte.

Methode 1: USB -Verbindung (empfohlen)

  1. Verbinden Sie die Arduino zum Raspberry Pi mit einem USB -Kabel.
  2. Der Raspberry Pi erkennt den Arduino als serielles Gerät (z. B., /dev/ttyUSB0 oder /dev/ttyACM0).

Methode 2: Verwenden von GPIO -Stiften (Hardware -Serie)

  1. Verbinden Sie die Arduino TX (Pin 1) Zu Raspberry Pi Rx (GPIO 15, Pin 10).
  2. Verbinden Sie die Arduino Rx (Pin 0) Zu Raspberry Pi TX (GPIO 14, Pin 8).
  3. Verbinden GND zu GND.
  4. Deaktivieren Sie die integrierte Serienkonsole des Raspberry Pi:
    sudo raspi-config
    
    • Navigieren zu Schnittstellenoptionen> Serienport.
    • Deaktivieren Sie die Anmeldeschale über seriell, aktivieren Sie die serielle Porthardware.
    • Starten Sie den Raspberry Pi neu:
      sudo reboot
      

Schritt 2: Installieren Sie die erforderlichen Bibliotheken

Stellen Sie sicher, dass Ihr Raspberry Pi über die erforderlichen seriellen Kommunikationstools installiert ist.

sudo apt update
sudo apt install python3-serial

So überprüfen Sie die verfügbaren seriellen Anschlüsse:

ls /dev/tty*

Für eine USB -Verbindung suchen Sie nach /dev/ttyUSB0 oder /dev/ttyACM0.


Schritt 3: Laden Sie eine Arduino -Skizze hoch hoch

Um Daten vom Arduino an den Raspberry Pi aus zu senden, laden Sie dies einfach hoch Arduino -Skizze Verwenden der Arduino ide.

void setup() {
  Serial.begin(9600); // Start serial communication
}

void loop() {
  Serial.println("Hello from Arduino!"); // Send message
  delay(1000);
}

Schritt 4: Lesen Sie Seriendaten zum Raspberry Pi

Erstellen Sie ein Python -Skript auf dem Raspberry Pi, um die Daten aus dem Arduino zu lesen.

Beispiel für Python -Code

import serial
import time

# Open the serial port (Change ttyUSB0 if necessary)
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
time.sleep(2)  # Wait for connection

try:
    while True:
        if ser.in_waiting > 0:
            data = ser.readline().decode('utf-8').strip()
            print(f"Received: {data}")
except KeyboardInterrupt:
    print("Exiting...")
    ser.close()
  • Stellen Sie das sicher /dev/ttyUSB0 entspricht Ihrem erkannten seriellen Anschluss.
  • Führen Sie das Skript aus:
    python3 serial_read.py
    
  • Sie sollten sehen "Hallo aus Arduino!" Jede Sekunde gedruckt.

Schritt 5: Senden Sie Daten vom Raspberry Pi an Arduino

Ändern Sie die Arduino -Code Daten aus dem Raspberry Pi empfangen:

void setup() {
  Serial.begin(9600);
}

void loop() {
  if (Serial.available() > 0) {
    String received = Serial.readStringUntil('\\n');
    Serial.print("Raspberry Pi Sent: ");
    Serial.println(received);
  }
}

Ändern Sie die Python -Code Daten an den Arduino senden:

ser.write(b"Hello from Raspberry Pi!\\n")
  • Jetzt erhält der Arduino Nachrichten, die vom Raspberry Pi gesendet werden.

Alternative Kommunikationsmethoden

  1. I2C -Kommunikation (für mehrere Arduinos)

    • Raspberry Pi wirkt als Master, Arduino handelt als Sklave.
    • Aktivieren Sie I2C:
      sudo raspi-config
      
    • Installieren Sie die erforderlichen Bibliotheken:
      sudo apt install python3-smbus i2c-tools
      
    • Verwenden Wire.h Auf der Arduino -Seite für die I2C -Kommunikation.
  2. SPI -Kommunikation (Für Hochgeschwindigkeitsdatenübertragung)

    • Erfordert SPI-fähiger Arduino Und SPI.h Bibliothek.
    • Schneller als UART und I2C, benötigt aber mehr Verkabelung.

Fehlerbehebung

  1. Arduino nicht auf Raspberry Pi erkannt

    • Laufen ls /dev/tty* Überprüfen Sie die verfügbaren Seriengeräte.
    • Stellen Sie sicher, dass der richtige serielle Port im Python -Skript angegeben ist.
  2. Erlaubnis verweigert Fehler

    • Fügen Sie Ihren Benutzer zur dialout Gruppe:
      sudo usermod -aG dialout $USER
      sudo reboot
      
  3. Müllzeichen in der Ausgabe

    • Sicherstellen Beide Geräte verwenden den gleichen Baudrate (z.B., 9600).
    • Fügen Sie eine kleine Verzögerung hinzu (time.sleep(2)) Vor dem Lesen von Daten in Python.

Abschluss

Wenn Sie diesem Leitfaden folgen, können Sie festlegen Serienkommunikation Zwischen einem Arduino und einem Himbeer -PI, sodass sie Daten für austauschen können IoT -Projekte, Sensorintegration und Automatisierungssysteme. Experimentieren mit I2C und SPI Für fortgeschrittenere Anwendungen!

Hinterlasse einen Kommentar

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.