Nakikipag -usap sa isang Arduino gamit ang isang Raspberry Pi

Communicating with an Arduino Using a Raspberry Pi

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

  1. Raspberry Pi (Anumang modelo na may suporta sa GPIO, hal., PI 3, PI 4)
  2. Arduino (hal., uno, mega, nano)
  3. USB cable (para sa pagkonekta sa arduino sa Raspberry Pi)
  4. Jumper wires (Kung gumagamit ng GPIO serial na komunikasyon)
  5. Naka -install ang Python Sa Raspberry Pi
  6. 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)

  1. Ikonekta ang Arduino sa Raspberry Pi gamit ang isang USB cable.
  2. 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)

  1. Ikonekta ang Arduino TX (pin 1) sa Raspberry Pi RX (GPIO 15, PIN 10).
  2. Ikonekta ang Arduino RX (pin 0) sa Raspberry Pi TX (GPIO 14, PIN 8).
  3. Kumonekta Gnd sa gnd.
  4. 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

  1. 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.
  2. 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.

Pag -aayos

  1. 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.
  2. Ang pahintulot ay tinanggihan ang error

    • Idagdag ang iyong gumagamit sa dialout Pangkat:
      sudo usermod -aG dialout $USER
      sudo reboot
      
  3. 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.

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!

Mag -iwan ng komento

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.