Kommunikointi Arduinon kanssa Raspberry Pi: llä

Communicating with an Arduino Using a Raspberry Pi

Raspberry Pi ja Arduino voivat kommunikoida keskenään käyttämällä erilaisia ​​protokollia, mukaan lukien Sarja (UART), I2C ja SPI. Tämä opas näyttää sinulle, kuinka asentaa viestintä Raspberry Pi: n ja Arduinon välillä Sarjarajapinta (UART), mikä on yleisin ja suoraviivainen menetelmä.


Mitä tarvitset

  1. Raspberry Pi (Mikä tahansa malli, jolla on GPIO -tuki, esim. Pi 3, pi 4)
  2. Arduino (esim. UNO, Mega, Nano)
  3. USB -kaapeli (Arduinon yhdistämiseksi Raspberry PI: hen)
  4. Hyppyjohdot (Jos käytät GPIO -sarjaviestintää)
  5. Python asennettu Raspberry Pi
  6. Arduino IDE asennettu Raspberry Pi: hen tai erilliseen tietokoneeseen

Vaihe 1: Arduinon yhdistäminen Raspberry Pi: hen

Voit yhdistää Raspberry Pi Arduinoon käyttämällä USB tai Gpio -nastat.

Menetelmä 1: USB -yhteys (suositeltu)

  1. Yhdistä Arduino Raspberry Pi: lle USB -kaapelin käyttäminen.
  2. Raspberry Pi havaitsee Arduinon sarjalaitteena (esim. /dev/ttyUSB0 tai /dev/ttyACM0).

Menetelmä 2: GPIO -nastat (laitteistosarja)

  1. Yhdistä Arduino TX (nasta 1) -lla Raspberry pi rx (GPIO 15, nasta 10).
  2. Yhdistä Arduino RX (nasta 0) -lla Raspberry Pi TX (GPIO 14, PIN 8).
  3. Yhdistää GND GND: hen.
  4. Poista Raspberry Pi: n sisäänrakennettu sarjikonsoli käytöstä:
    sudo raspi-config
    
    • Siirtyä jhk Käyttöliittymävaihtoehdot> sarjaportti.
    • Poista kirjautumiskuori käytöstä sarjan päällä, mutta ota sarjaporttilaitteisto käyttöön.
    • Käynnistä Raspberry Pi uudelleen:
      sudo reboot
      

Vaihe 2: Asenna vaadittavat kirjastot

Varmista, että Raspberry Pi on asennettu tarvittavat sarjaviestinnän työkalut.

sudo apt update
sudo apt install python3-serial

Saatavilla olevien sarjaporttien tarkistaminen:

ls /dev/tty*

Etsi USB -yhteys /dev/ttyUSB0 tai /dev/ttyACM0.


Vaihe 3: Lataa Arduino -luonnos

Lähettääksesi tietoja Arduinosta Raspberry Pi: lle, lataa tämä yksinkertainen Arduino -luonnos käyttämällä Arduino IDE.

void setup() {
  Serial.begin(9600); // Start serial communication
}

void loop() {
  Serial.println("Hello from Arduino!"); // Send message
  delay(1000);
}

Vaihe 4: Lue sarjatiedot Raspberry Pi: stä

Luo Python -skripti Raspberry Pi: lle lukeaksesi Arduinon tiedot.

Python -koodiesimerkki

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()
  • Varmistaa, että /dev/ttyUSB0 Vastaa havaittua sarjaporttia.
  • Suorita käsikirjoitus:
    python3 serial_read.py
    
  • Sinun pitäisi nähdä "Hei Arduinosta!" tulostettu joka sekunti.

Vaihe 5: Tietojen lähettäminen Raspberry Pi: stä Arduinoon

Muokata Arduino -koodi Tietojen vastaanottaminen Raspberry PI: lta:

void setup() {
  Serial.begin(9600);
}

void loop() {
  if (Serial.available() > 0) {
    String received = Serial.readStringUntil('\\n');
    Serial.print("Raspberry Pi Sent: ");
    Serial.println(received);
  }
}

Muokata Python -koodi Tietojen lähettäminen Arduinolle:

ser.write(b"Hello from Raspberry Pi!\\n")
  • Nyt Arduino vastaanottaa Raspberry Pi: n lähettämiä viestejä.

Vaihtoehtoiset viestintämenetelmät

  1. I2C -viestintä (useille arduinoille)

    • Raspberry Pi toimii Hallita, Arduino toimii Orja.
    • Ota I2c käyttöön:
      sudo raspi-config
      
    • Asenna vaadittavat kirjastot:
      sudo apt install python3-smbus i2c-tools
      
    • Käyttää Wire.h Arduino -puolella I2C -viestintää varten.
  2. SPI -viestintä (Nopea tiedonsiirto)

    • Vaatii Spi-yhteensopiva Arduino ja SPI.h kirjasto.
    • Nopeampi kuin UART ja I2C, mutta vaatii Lisää johdotusta.

Vianetsintä

  1. Arduinoa ei havaittu Raspberry PI: ssä

    • Juoksua ls /dev/tty* Saatavilla olevien sarjalaitteiden tarkistaminen.
    • Varmista, että oikea sarjaportti on määritetty Python -komentosarjassa.
  2. Lupa kielsi virheen

    • Lisää käyttäjä dialout Ryhmä:
      sudo usermod -aG dialout $USER
      sudo reboot
      
  3. Roskien merkit tulosteen

    • Varmistaa Molemmat laitteet käyttävät samaa baud -määrää (esim., 9600).
    • Lisää pieni viive (time.sleep(2)) Ennen kuin luet tietoja Pythonissa.

Johtopäätös

Seuraamalla tätä opasta voit perustaa sarjaviestintä Arduinon ja Raspberry Pi: n välillä, jolloin ne voivat vaihtaa tietoja IoT -projektit, anturien integrointi ja automaatiojärjestelmät. Koetella jtk I2c ja spi Edistyneempiä sovelluksia varten!

Jätä kommentti

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.