A Raspberry Pi és az Arduino különféle protokollok segítségével kommunikálhat egymással Serial (UART), I2C és SPI- Ez az útmutató megmutatja, hogyan lehet a kommunikációt beállítani a Raspberry Pi és a Arduino között Soros interfész (UART), amely a leggyakoribb és legegyszerűbb módszer.
Mire lesz szüksége
- Málna PI (Bármely modell GPIO -támogatással, például PI 3, PI 4)
- Arduino (például Uno, Mega, Nano)
- USB -kábel (Az Arduino csatlakoztatásához a Raspberry PI -vel)
- Jumper vezetékek (Ha a GPIO soros kommunikációját használja)
- Python telepítve a málna pi -n
- Arduino ide Telepítve a Raspberry Pi -re vagy egy külön számítógépre
1. lépés: Az Arduino csatlakoztatása a Raspberry PI -vel
Csatlakozhatja a Raspberry Pi -t az Arduino -hoz USB vagy a GPIO -csapok.
1. módszer: USB kapcsolat (ajánlott)
- Csatlakoztassa a Arduino a Raspberry Pi -hez USB -kábel használata.
- A Raspberry Pi felismeri az Arduino -t soros eszközként (például
/dev/ttyUSB0
vagy/dev/ttyACM0
).
2. módszer: GPIO -csapok (hardver sorozat) használata
- Csatlakoztassa a Arduino TX (1. érintkező) -hoz Raspberry Pi RX (GPIO 15, 10. érintkező).
- Csatlakoztassa a Arduino RX (0. érintkező) -hoz Raspberry Pi TX (GPIO 14, 8. érintkező).
- Összekapcsol GND -t a GND -hez.
- Tiltsa le a Raspberry Pi beépített soros konzolját:
sudo raspi-config
- Navigál Interfész opciók> Soros port.
- Tiltsa le a bejelentkezési héjat a sorozattal, de engedélyezze a soros port hardverét.
- Indítsa újra a Raspberry Pi -t:
sudo reboot
2. lépés: Telepítse a szükséges könyvtárakat
Győződjön meg arról, hogy a Raspberry Pi rendelkezik a szükséges soros kommunikációs eszközökkel.
sudo apt update
sudo apt install python3-serial
A rendelkezésre álló soros portok ellenőrzése:
ls /dev/tty*
USB -kapcsolathoz keresse meg /dev/ttyUSB0
vagy /dev/ttyACM0
.
3. lépés: Töltsön fel egy Arduino vázlatot
Adatokat küldeni az Arduino -ból a Raspberry Pi -be, töltse fel ezt az egyszerűt Arduino vázlat a Arduino ide.
void setup() {
Serial.begin(9600); // Start serial communication
}
void loop() {
Serial.println("Hello from Arduino!"); // Send message
delay(1000);
}
4. lépés: Olvassa el a soros adatokat a Raspberry PI -n
Hozzon létre egy Python szkriptet a Raspberry Pi -en, hogy elolvassa az Arduino adatait.
Python kód példa
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()
- Gondoskodjon arról, hogy
/dev/ttyUSB0
Megfelel az észlelt soros portnak. - Futtassa a szkriptet:
python3 serial_read.py
- Látnod kell "Helló Arduino -tól!" Minden másodpercenként nyomtatva.
5. lépés: Adatok küldése a Raspberry Pi -ből Arduino -ba
Módosítsa a Arduino -kód Adatok fogadása a Raspberry Pi -től:
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
String received = Serial.readStringUntil('\\n');
Serial.print("Raspberry Pi Sent: ");
Serial.println(received);
}
}
Módosítsa a Python kód Adatok küldése az Arduino -nak:
ser.write(b"Hello from Raspberry Pi!\\n")
- Az Arduino most a Raspberry Pi által küldött üzeneteket fog kapni.
Alternatív kommunikációs módszerek
-
I2C kommunikáció (többszörös arduinókhoz)
- A Raspberry Pi úgy viselkedik, mint Fő, Arduino úgy viselkedik Rabszolga.
- Engedélyezze az i2c -t:
sudo raspi-config
- Telepítse a szükséges könyvtárakat:
sudo apt install python3-smbus i2c-tools
- Használat
Wire.h
Az Arduino oldalán az I2C kommunikációhoz.
-
SPI -kommunikáció (nagysebességű adatátvitelhez)
- Megkövetel SPI-kompatibilis Arduino és
SPI.h
könyvtár. - Gyorsabb, mint az uart és az i2c, de megköveteli További vezetékek.
- Megkövetel SPI-kompatibilis Arduino és
Hibaelhárítás
-
Arduino nem észlelt a Raspberry Pi -n
- Fut
ls /dev/tty*
A rendelkezésre álló soros eszközök ellenőrzéséhez. - Győződjön meg arról, hogy a megfelelő soros port a Python szkriptben van megadva.
- Fut
-
Az engedély megtagadta a hibát
- Adja hozzá a felhasználót a
dialout
csoport:sudo usermod -aG dialout $USER sudo reboot
- Adja hozzá a felhasználót a
-
Szemétfigurák a kimenetben
- Biztosít Mindkét eszköz ugyanazt az adatátviteli sebességet használja (például.,
9600
). - Adjon hozzá egy kis késleltetést (
time.sleep(2)
) Az adatok elolvasása előtt a Pythonban.
- Biztosít Mindkét eszköz ugyanazt az adatátviteli sebességet használja (például.,
Következtetés
Az útmutató követésével létrehozhatja soros kommunikáció egy Arduino és a Raspberry Pi között, lehetővé téve számukra az adatok cseréjét IoT projektek, érzékelő integráció és automatizálási rendszerek- Kísérletez valamivel I2C és SPI A fejlettebb alkalmazásokhoz!