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/ttyUSB0
oder/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/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
-
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.
-
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.
- 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
dialout
Gruppe: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!