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
- Raspberry Pi (Model apa pun dengan dukungan GPIO, mis., Pi 3, pi 4)
- Arduino (mis., uno, mega, nano)
- Kabel USB (Untuk menghubungkan Arduino ke Raspberry Pi)
- Kabel jumper (Jika menggunakan komunikasi serial GPIO)
- Python terpasang di raspberry pi
- 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)
- Hubungkan Arduino ke Raspberry Pi menggunakan kabel USB.
- Raspberry Pi akan mendeteksi Arduino sebagai perangkat serial (mis.,
/dev/ttyUSB0
atau/dev/ttyACM0
).
Metode 2: Menggunakan Pin GPIO (Serial Perangkat Keras)
- Hubungkan Arduino TX (pin 1) ke Raspberry Pi RX (GPIO 15, PIN 10).
- Hubungkan Arduino RX (pin 0) ke Raspberry Pi TX (GPIO 14, PIN 8).
- Menghubungkan Gnd ke gnd.
- 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
-
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.
-
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.
- Memerlukan Arduino yang diaktifkan secara spi Dan
Pemecahan masalah
-
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.
- Berlari
-
Izin ditolak kesalahan
- Tambahkan pengguna Anda ke
dialout
kelompok:sudo usermod -aG dialout $USER sudo reboot
- Tambahkan pengguna Anda ke
-
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.
- Memastikan Kedua perangkat menggunakan laju baud yang sama (misalnya.,
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!