Berkomunikasi dengan Arduino Menggunakan Raspberry Pi

Communicating with an Arduino Using a Raspberry Pi

Raspberry Pi dan Arduino dapat berkomunikasi satu sama lain menggunakan protokol yang berbeda, termasuk Serial (UART), I2C, dan SPI. Panduan ini akan menunjukkan kepada Anda cara mengatur komunikasi antara raspberry pi dan arduino menggunakan Antarmuka serial (UART), yang merupakan metode yang paling umum dan langsung.


Apa yang Anda Butuhkan

  1. Raspberry Pi (Model apa pun dengan dukungan GPIO, mis., Pi 3, pi 4)
  2. Arduino (mis., uno, mega, nano)
  3. Kabel USB (Untuk menghubungkan Arduino ke Raspberry Pi)
  4. Kabel jumper (Jika menggunakan komunikasi serial GPIO)
  5. Python terpasang di raspberry pi
  6. Ide Arduino diinstal pada pi raspberry atau komputer terpisah

Langkah 1: Menghubungkan Arduino ke Raspberry Pi

Anda dapat menghubungkan Raspberry Pi ke Arduino menggunakan USB atau Pin GPIO.

Metode 1: Koneksi USB (Disarankan)

  1. Hubungkan Arduino ke Raspberry Pi menggunakan kabel USB.
  2. Raspberry Pi akan mendeteksi Arduino sebagai perangkat serial (mis., /dev/ttyUSB0 atau /dev/ttyACM0).

Metode 2: Menggunakan Pin GPIO (Serial Perangkat Keras)

  1. Hubungkan Arduino TX (pin 1) ke Raspberry Pi RX (GPIO 15, PIN 10).
  2. Hubungkan Arduino RX (pin 0) ke Raspberry Pi TX (GPIO 14, PIN 8).
  3. Menghubungkan Gnd ke gnd.
  4. Nonaktifkan konsol serial bawaan Raspberry Pi:
    sudo raspi-config
    
    • Navigasikan ke Opsi Antarmuka> Port Serial.
    • Nonaktifkan shell login di atas serial tetapi memungkinkan perangkat keras port serial.
    • Reboot Raspberry Pi:
      sudo reboot
      

Langkah 2: Instal perpustakaan yang diperlukan

Pastikan Raspberry Pi Anda memiliki alat komunikasi serial yang diperlukan diinstal.

sudo apt update
sudo apt install python3-serial

Untuk memeriksa port serial yang tersedia:

ls /dev/tty*

Untuk koneksi USB, cari /dev/ttyUSB0 atau /dev/ttyACM0.


Langkah 3: Unggah sketsa Arduino

Untuk mengirim data dari Arduino ke Raspberry Pi, unggah ini sederhana Sketsa Arduino menggunakan Ide Arduino.

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

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

Langkah 4: Baca data serial di Raspberry Pi

Buat skrip Python di Raspberry Pi untuk membaca data dari Arduino.

Contoh Kode Python

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()
  • Pastikan itu /dev/ttyUSB0 cocok dengan port serial yang terdeteksi.
  • Jalankan skrip:
    python3 serial_read.py
    
  • Anda harus melihat "Halo dari Arduino!" dicetak setiap detik.

Langkah 5: Mengirim data dari Raspberry Pi ke Arduino

Ubah Kode Arduino Untuk menerima data dari 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);
  }
}

Ubah Kode Python Untuk mengirim data ke Arduino:

ser.write(b"Hello from Raspberry Pi!\\n")
  • Sekarang, Arduino akan menerima pesan yang dikirim oleh Raspberry Pi.

Metode komunikasi alternatif

  1. Komunikasi I2C (Untuk beberapa Arduino)

    • Raspberry Pi bertindak sebagai Menguasai, Arduino bertindak sebagai Budak.
    • Aktifkan I2C:
      sudo raspi-config
      
    • Instal perpustakaan yang diperlukan:
      sudo apt install python3-smbus i2c-tools
      
    • Menggunakan Wire.h Di sisi Arduino untuk komunikasi I2C.
  2. Komunikasi SPI (Untuk transfer data berkecepatan tinggi)

    • Memerlukan Arduino yang diaktifkan secara spi Dan SPI.h perpustakaan.
    • Lebih cepat dari UART dan I2C tetapi membutuhkan Lebih banyak kabel.

Pemecahan masalah

  1. Arduino tidak terdeteksi pada raspberry pi

    • Berlari ls /dev/tty* Untuk memeriksa perangkat serial yang tersedia.
    • Pastikan port serial yang benar ditentukan dalam skrip Python.
  2. Izin ditolak kesalahan

    • Tambahkan pengguna Anda ke dialout kelompok:
      sudo usermod -aG dialout $USER
      sudo reboot
      
  3. Karakter sampah dalam output

    • Memastikan Kedua perangkat menggunakan laju baud yang sama (misalnya., 9600).
    • Tambahkan penundaan kecil (time.sleep(2)) sebelum membaca data dalam Python.

Kesimpulan

Dengan mengikuti panduan ini, Anda dapat membangun komunikasi serial Antara Arduino dan Raspberry Pi, memungkinkan mereka untuk bertukar data Proyek IoT, Integrasi Sensor, dan Sistem Otomasi. Bereksperimen dengan I2C dan SPI Untuk aplikasi yang lebih canggih!

Tinggalkan komentar

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.