Raspberry Pi och Arduino kan kommunicera med varandra med olika protokoll, inklusive Serie (uart), i2c och spi. Den här guiden visar hur du ställer in kommunikation mellan en Raspberry Pi och en Arduino med hjälp av Seriellt gränssnitt (UART), som är den vanligaste och enkla metoden.
Vad du behöver
- Hallon (Varje modell med GPIO -stöd, t.ex. PI 3, PI 4)
- Arduino (t.ex. Uno, Mega, Nano)
- USB -kabel (för att ansluta Arduino till Raspberry Pi)
- Bulttrådar (Om du använder GPIO Serial Communication)
- Python installerad på Raspberry Pi
- Arduino IDE installerat på Raspberry Pi eller en separat dator
Steg 1: Ansluta Arduino till Raspberry Pi
Du kan ansluta Raspberry Pi till Arduino med USB eller Gpio stift.
Metod 1: USB -anslutning (rekommenderas)
- Ansluta Arduino till Raspberry Pi Använda en USB -kabel.
- Raspberry Pi kommer att upptäcka Arduino som en serieanordning (t.ex.
/dev/ttyUSB0
eller/dev/ttyACM0
).
Metod 2: Använda GPIO -stift (hårdvaruerserien)
- Ansluta Arduino TX (stift 1) till Raspberry Pi RX (GPIO 15, stift 10).
- Ansluta Arduino Rx (stift 0) till Raspberry Pi TX (GPIO 14, stift 8).
- Ansluta GND till GND.
- Inaktivera Raspberry Pis inbyggda seriekonsol:
sudo raspi-config
- Navigera till Gränssnittsalternativ> Seriell port.
- Inaktivera inloggningsskalet över serien men aktivera den seriella porthårdvaran.
- Starta om Raspberry Pi:
sudo reboot
Steg 2: Installera obligatoriska bibliotek
Se till att din Raspberry Pi har de nödvändiga seriekommunikationsverktygen installerade.
sudo apt update
sudo apt install python3-serial
För att kontrollera tillgängliga seriella portar:
ls /dev/tty*
För en USB -anslutning, leta efter /dev/ttyUSB0
eller /dev/ttyACM0
.
Steg 3: Ladda upp en Arduino -skiss
För att skicka data från Arduino till Raspberry Pi, ladda upp detta enkla Arduinoskiss med hjälp av Arduino IDE.
void setup() {
Serial.begin(9600); // Start serial communication
}
void loop() {
Serial.println("Hello from Arduino!"); // Send message
delay(1000);
}
Steg 4: Läs seriedata på Raspberry Pi
Skapa ett Python -skript på Raspberry Pi för att läsa data från Arduino.
Python -kodexempel
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()
- Se till att
/dev/ttyUSB0
Matchar din upptäckta seriella port. - Kör skriptet:
python3 serial_read.py
- Du borde se "Hej från Arduino!" tryckt varje sekund.
Steg 5: Skicka data från Raspberry Pi till Arduino
Modifiera den Arduinokod För att ta emot data från Raspberry Pi:
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
String received = Serial.readStringUntil('\\n');
Serial.print("Raspberry Pi Sent: ");
Serial.println(received);
}
}
Modifiera den Pytonkod För att skicka data till Arduino:
ser.write(b"Hello from Raspberry Pi!\\n")
- Nu kommer Arduino att ta emot meddelanden som skickas av Raspberry Pi.
Alternativa kommunikationsmetoder
-
I2C -kommunikation (för flera arduinos)
- Raspberry Pi fungerar som Bemästra, Arduino fungerar som Slav.
- Aktivera i2c:
sudo raspi-config
- Installera obligatoriska bibliotek:
sudo apt install python3-smbus i2c-tools
- Använda
Wire.h
På Arduino -sidan för I2C -kommunikation.
-
SPI -kommunikation (för höghastighetsdataöverföring)
- Kräva Spi-aktiverad arduino och
SPI.h
bibliotek. - Snabbare än uart och i2c men kräver mer ledningar.
- Kräva Spi-aktiverad arduino och
Felsökning
-
Arduino upptäcks inte på Raspberry Pi
- Sikt
ls /dev/tty*
För att kontrollera tillgängliga seriella enheter. - Se till att rätt seriell port anges i Python -skriptet.
- Sikt
-
Tillstånd nekad fel
- Lägg till din användare till
dialout
grupp:sudo usermod -aG dialout $USER sudo reboot
- Lägg till din användare till
-
Skräpkaraktärer i produktion
- Säkerställa Båda enheterna använder samma baudhastighet (till exempel.,
9600
). - Lägg till en liten försening (
time.sleep(2)
) innan du läser data i Python.
- Säkerställa Båda enheterna använder samma baudhastighet (till exempel.,
Slutsats
Genom att följa den här guiden kan du etablera seriekommunikation mellan en Arduino och en Raspberry Pi, vilket gör att de kan utbyta data för IoT -projekt, sensorintegration och automatiseringssystem. Experimentera med I2C och SPI För mer avancerade applikationer!