Ang Raspberry Pi at Arduino ay maaaring makipag -usap sa bawat isa gamit ang iba't ibang mga protocol, kabilang ang Serial (UART), I2C, at SPI. Ang gabay na ito ay magpapakita sa iyo kung paano mag -set up ng komunikasyon sa pagitan ng isang Raspberry Pi at isang Arduino gamit ang Serial Interface (UART), na kung saan ay ang pinaka -karaniwang at prangka na pamamaraan.
Ano ang kakailanganin mo
- Raspberry Pi (Anumang modelo na may suporta sa GPIO, hal., PI 3, PI 4)
- Arduino (hal., uno, mega, nano)
- USB cable (para sa pagkonekta sa arduino sa Raspberry Pi)
- Jumper wires (Kung gumagamit ng GPIO serial na komunikasyon)
- Naka -install ang Python Sa Raspberry Pi
- Arduino Ide naka -install sa Raspberry Pi o isang hiwalay na computer
Hakbang 1: Pagkonekta sa Arduino sa Raspberry Pi
Maaari mong ikonekta ang Raspberry Pi sa Arduino gamit USB o ang GPIO PINS.
Paraan 1: Koneksyon sa USB (Inirerekomenda)
- Ikonekta ang Arduino sa Raspberry Pi gamit ang isang USB cable.
- Ang Raspberry Pi ay makakakita ng Arduino bilang isang serial device (hal.,
/dev/ttyUSB0
o/dev/ttyACM0
).
Pamamaraan 2: Paggamit ng GPIO Pins (Hardware Serial)
- Ikonekta ang Arduino TX (pin 1) sa Raspberry Pi RX (GPIO 15, PIN 10).
- Ikonekta ang Arduino RX (pin 0) sa Raspberry Pi TX (GPIO 14, PIN 8).
- Kumonekta Gnd sa gnd.
- Huwag paganahin ang built-in na serial console ng Raspberry Pi:
sudo raspi-config
- Mag -navigate sa Mga pagpipilian sa interface> serial port.
- Huwag paganahin ang pag -login shell sa serial ngunit paganahin ang serial port hardware.
- I -reboot ang Raspberry Pi:
sudo reboot
Hakbang 2: I -install ang mga kinakailangang aklatan
Tiyakin na ang iyong Raspberry Pi ay may kinakailangang naka -install na mga tool sa komunikasyon.
sudo apt update
sudo apt install python3-serial
Upang suriin ang magagamit na mga serial port:
ls /dev/tty*
Para sa isang koneksyon sa USB, hanapin /dev/ttyUSB0
o /dev/ttyACM0
.
Hakbang 3: Mag -upload ng isang sketch ng Arduino
Upang magpadala ng data mula sa Arduino hanggang sa Raspberry Pi, i -upload ang simple Arduino Sketch Gamit ang Arduino Ide.
void setup() {
Serial.begin(9600); // Start serial communication
}
void loop() {
Serial.println("Hello from Arduino!"); // Send message
delay(1000);
}
Hakbang 4: Basahin ang serial data sa Raspberry Pi
Lumikha ng isang script ng Python sa Raspberry Pi upang mabasa ang data mula sa Arduino.
Halimbawa ng Python Code
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()
- Tiyakin na
/dev/ttyUSB0
tumutugma sa iyong napansin na serial port. - Patakbuhin ang script:
python3 serial_read.py
- Dapat mong makita "Hello mula sa Arduino!" nakalimbag bawat segundo.
Hakbang 5: Pagpapadala ng data mula sa Raspberry Pi hanggang Arduino
Baguhin ang Arduino Code Upang makatanggap ng data mula sa Raspberry Pi:
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
String received = Serial.readStringUntil('\\n');
Serial.print("Raspberry Pi Sent: ");
Serial.println(received);
}
}
Baguhin ang Python Code Upang magpadala ng data sa Arduino:
ser.write(b"Hello from Raspberry Pi!\\n")
- Ngayon, ang Arduino ay makakatanggap ng mga mensahe na ipinadala ng Raspberry Pi.
Mga alternatibong pamamaraan ng komunikasyon
-
Komunikasyon ng I2C (Para sa maramihang mga arduinos)
- Ang Raspberry Pi ay kumikilos bilang Master, Si Arduino ay kumikilos bilang Alipin.
- Paganahin ang I2C:
sudo raspi-config
- I -install ang mga kinakailangang aklatan:
sudo apt install python3-smbus i2c-tools
- Gumamit
Wire.h
Sa panig ng Arduino para sa komunikasyon ng I2C.
-
Komunikasyon ng SPI (Para sa paglipat ng data ng high-speed)
- Nangangailangan SPI-pinagana ang Arduino at
SPI.h
Library. - Mas mabilis kaysa sa UART at I2C ngunit nangangailangan mas maraming mga kable.
- Nangangailangan SPI-pinagana ang Arduino at
Pag -aayos
-
Hindi napansin ni Arduino sa Raspberry Pi
- Tumakbo
ls /dev/tty*
Upang suriin ang magagamit na mga serial device. - Tiyakin na ang tamang serial port ay tinukoy sa script ng Python.
- Tumakbo
-
Ang pahintulot ay tinanggihan ang error
- Idagdag ang iyong gumagamit sa
dialout
Pangkat:sudo usermod -aG dialout $USER sudo reboot
- Idagdag ang iyong gumagamit sa
-
Mga character na basura sa output
- Matiyak Ang parehong mga aparato ay gumagamit ng parehong rate ng baud (hal.,
9600
). - Magdagdag ng isang maliit na pagkaantala (
time.sleep(2)
) Bago basahin ang data sa Python.
- Matiyak Ang parehong mga aparato ay gumagamit ng parehong rate ng baud (hal.,
Konklusyon
Sa pamamagitan ng pagsunod sa gabay na ito, maaari mong maitaguyod Komunikasyon ng Serial sa pagitan ng isang arduino at isang raspberry pi, na nagpapahintulot sa kanila na makipagpalitan ng data para sa Mga proyekto ng IoT, pagsasama ng sensor, at mga sistema ng automation. Eksperimento sa I2C at SPI Para sa mas advanced na mga aplikasyon!