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
- Raspberry Pi (Mikä tahansa malli, jolla on GPIO -tuki, esim. Pi 3, pi 4)
- Arduino (esim. UNO, Mega, Nano)
- USB -kaapeli (Arduinon yhdistämiseksi Raspberry PI: hen)
- Hyppyjohdot (Jos käytät GPIO -sarjaviestintää)
- Python asennettu Raspberry Pi
- 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)
- Yhdistä Arduino Raspberry Pi: lle USB -kaapelin käyttäminen.
- Raspberry Pi havaitsee Arduinon sarjalaitteena (esim.
/dev/ttyUSB0
tai/dev/ttyACM0
).
Menetelmä 2: GPIO -nastat (laitteistosarja)
- Yhdistä Arduino TX (nasta 1) -lla Raspberry pi rx (GPIO 15, nasta 10).
- Yhdistä Arduino RX (nasta 0) -lla Raspberry Pi TX (GPIO 14, PIN 8).
- Yhdistää GND GND: hen.
- 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
-
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.
-
SPI -viestintä (Nopea tiedonsiirto)
- Vaatii Spi-yhteensopiva Arduino ja
SPI.h
kirjasto. - Nopeampi kuin UART ja I2C, mutta vaatii Lisää johdotusta.
- Vaatii Spi-yhteensopiva Arduino ja
Vianetsintä
-
Arduinoa ei havaittu Raspberry PI: ssä
- Juoksua
ls /dev/tty*
Saatavilla olevien sarjalaitteiden tarkistaminen. - Varmista, että oikea sarjaportti on määritetty Python -komentosarjassa.
- Juoksua
-
Lupa kielsi virheen
- Lisää käyttäjä
dialout
Ryhmä:sudo usermod -aG dialout $USER sudo reboot
- Lisää käyttäjä
-
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.
- Varmistaa Molemmat laitteet käyttävät samaa baud -määrää (esim.,
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!