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/ttyUSB0vagy/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/ttyUSB0Megfelel 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.hAz Arduino oldalán az I2C kommunikációhoz.
 
- 
SPI -kommunikáció (nagysebességű adatátvitelhez) - Megkövetel SPI-kompatibilis Arduino és SPI.hkö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 dialoutcsoport: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!
 
             
         
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
             
   
   
   
   
   
   
   
   
   
   
   
   
  