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
- Raspberry Pi (Jedes Modell mit GPIO -Unterstützung, z. B. PI 3, PI 4)
- Arduino (z. B. Uno, Mega, Nano)
- USB -Kabel (Um den Arduino mit dem Himbeer -Pi zu verbinden)
- Jumperdrähte (Wenn Sie die serielle GPIO -Kommunikation verwenden)
- Python installiert Auf dem Raspberry Pi
- 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)
- Verbinden Sie die Arduino zum Raspberry Pi mit einem USB -Kabel.
- Der Raspberry Pi erkennt den Arduino als serielles Gerät (z. B., /dev/ttyUSB0oder/dev/ttyACM0).
Methode 2: Verwenden von GPIO -Stiften (Hardware -Serie)
- Verbinden Sie die Arduino TX (Pin 1) Zu Raspberry Pi Rx (GPIO 15, Pin 10).
- Verbinden Sie die Arduino Rx (Pin 0) Zu Raspberry Pi TX (GPIO 14, Pin 8).
- Verbinden GND zu GND.
- 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/ttyUSB0entspricht 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
- 
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.hAuf der Arduino -Seite für die I2C -Kommunikation.
 
- 
SPI -Kommunikation (Für Hochgeschwindigkeitsdatenübertragung) - Erfordert SPI-fähiger Arduino Und SPI.hBibliothek.
- Schneller als UART und I2C, benötigt aber mehr Verkabelung.
 
- Erfordert SPI-fähiger Arduino Und 
Fehlerbehebung
- 
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.
 
- Laufen 
- 
Erlaubnis verweigert Fehler - Fügen Sie Ihren Benutzer zur dialoutGruppe:sudo usermod -aG dialout $USER sudo reboot
 
- Fügen Sie Ihren Benutzer zur 
- 
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.
 
- Sicherstellen Beide Geräte verwenden den gleichen Baudrate (z.B., 
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!
 
             
         
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
   
   
   
   
   
   
   
   
   
   
   
   
  