Kommunikáció egy Arduino -val egy Raspberry Pi segítségével

Communicating with an Arduino Using a Raspberry Pi

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

  1. Málna PI (Bármely modell GPIO -támogatással, például PI 3, PI 4)
  2. Arduino (például Uno, Mega, Nano)
  3. USB -kábel (Az Arduino csatlakoztatásához a Raspberry PI -vel)
  4. Jumper vezetékek (Ha a GPIO soros kommunikációját használja)
  5. Python telepítve a málna pi -n
  6. 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)

  1. Csatlakoztassa a Arduino a Raspberry Pi -hez USB -kábel használata.
  2. 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

  1. Csatlakoztassa a Arduino TX (1. érintkező) -hoz Raspberry Pi RX (GPIO 15, 10. érintkező).
  2. Csatlakoztassa a Arduino RX (0. érintkező) -hoz Raspberry Pi TX (GPIO 14, 8. érintkező).
  3. Összekapcsol GND -t a GND -hez.
  4. 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

  1. I2C kommunikáció (többszörös arduinókhoz)

    • A Raspberry Pi úgy viselkedik, mint , 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.
  2. 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.

Hibaelhárítás

  1. 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.
  2. Az engedély megtagadta a hibát

    • Adja hozzá a felhasználót a dialout csoport:
      sudo usermod -aG dialout $USER
      sudo reboot
      
  3. 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.

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!

Hagyj egy megjegyzést

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.