KOMUNIKASI SPI MENGGUNAKAN ARDUINO DI PROTEUS

🎯 1. TUJUAN PRAKTIKUM
Setelah menyelesaikan praktikum ini, mahasiswa mampu:
- Memahami konsep komunikasi SPI (Serial Peripheral Interface)
- Mengidentifikasi pin SPI pada Arduino
- Mensimulasikan komunikasi SPI di Proteus
- Mengimplementasikan sistem Master–Slave berbasis SPI
- Menganalisis proses transfer data SPI
📖 2. DASAR TEORI
2.1 Pengertian SPI
SPI (Serial Peripheral Interface) adalah protokol komunikasi serial sinkron yang dikembangkan oleh
📌 Motorola
SPI digunakan untuk komunikasi jarak dekat antara mikrokontroler dan perangkat periferal seperti:
-
-
-
- ADC/DAC
- Sensor
- SD Card
- Display TFT
- EEPROM
-
-
2.2 Arsitektur SPI

SPI memiliki 4 jalur utama:
| Pin | Nama | Fungsi |
| MOSI | Master Out Slave In | Data dari master ke slave |
| MISO | Master In Slave Out | Data dari slave ke master |
| SCK | Serial Clock | Clock dari master |
| SS / CS | Slave Select | Mengaktifkan slave |
Karakteristik:
-
-
- Sinkron (menggunakan clock)
- Full duplex
- Kecepatan tinggi
- Tidak memiliki sistem addressing seperti I2C
-
🧰 3. ALAT DAN BAHAN
Software:
-
-
- 🖥️ Proteus Design Suite
- 🖥️ Arduino IDE
-
Komponen di Proteus:
-
-
- Arduino UNO (2 buah)
- Virtual Terminal
- Logic Analyzer (opsional)
- Resistor
- LED (opsional)
-
🧪 4. SKENARIO PRAKTIKUM
🎯 Sistem yang Dibuat

-
-
-
- Arduino 1 → Master
- Arduino 2 → Slave
- Master mengirim data karakter ke Slave
- Slave menampilkan data ke Virtual Terminal
-
-
🔌 5. RANGKAIAN DI PROTEUS
5.1 Konfigurasi SPI Arduino UNO
|
SPI |
Pin Arduino |
|
MOSI |
D11 |
|
MISO |
D12 |
|
SCK |
D13 |
|
SS |
D10 |
5.2 Wiring Master – Slave
|
Master |
Slave |
|
D11 (MOSI) |
D11 |
|
D12 (MISO) |
D12 |
|
D13 (SCK) |
D13 |
|
D10 (SS) |
D10 |
|
GND |
GND |
⚠ Penting: Ground harus terhubung bersama.
💻 6. PROGRAM
6.1 Program MASTER
#include <SPI.h>
void setup() {
Serial.begin(9600);
SPI.begin();
pinMode(10, OUTPUT);
}
void loop() {
digitalWrite(10, LOW); // Aktifkan Slave
SPI.transfer('A'); // Kirim karakter A
digitalWrite(10, HIGH); // Nonaktifkan Slave
delay(1000);
}
6.2 Program SLAVE
#include <SPI.h>
volatile byte receivedData;
void setup() {
Serial.begin(9600);
pinMode(MISO, OUTPUT);
SPCR |= _BV(SPE); // Enable SPI
SPI.attachInterrupt();
}
ISR (SPI_STC_vect) {
receivedData = SPDR;
}
void loop() {
Serial.println((char)receivedData);
delay(500);
}
▶ 7. LANGKAH PRAKTIKUM
-
- Buka Proteus
- Tambahkan 2 Arduino UNO
- Hubungkan pin SPI sesuai tabel
- Tambahkan Virtual Terminal ke Slave
- Compile program di Arduino IDE
- Upload file HEX ke masing-masing Arduino di Proteus
- Jalankan simulasi
📊 8. HASIL YANG DIHARAPKAN
-
- Master mengirim karakter ‘A’
- Slave menerima data
- Virtual Terminal menampilkan huruf A setiap 1 detik
🔍 9. ANALISIS
Mahasiswa diminta menjawab:
-
-
- Mengapa SPI disebut full duplex?
- Apa fungsi SS?
- Apa yang terjadi jika SCK tidak terhubung?
- Mengapa SPI lebih cepat dibanding I2C?
- Apakah SPI cocok untuk komunikasi jarak jauh?
-
🏭 10. KAITAN DENGAN INDUSTRI
SPI banyak digunakan pada:
-
-
- Modul SD Card
- ADC resolusi tinggi
- Display TFT industri
- Sistem embedded berkecepatan tinggi
-
Namun dalam sistem PLC industri, komunikasi lebih sering menggunakan:
-
-
- Modbus
- Profibus
- Profinet
-
Karena SPI hanya cocok untuk komunikasi jarak pendek di dalam board.
🎓 11. TUGAS TAMBAHAN
-
-
- Modifikasi program agar Master mengirim string
- Tambahkan LED di Slave yang menyala saat menerima data
- Gunakan Logic Analyzer untuk melihat sinyal SCK, MOSI, dan MISO
- Ubah kecepatan SPI dan amati perubahan sinyal
-
📝 FORMAT LAPORAN
- Cover
- Tujuan
- Dasar teori
- Rangkaian
- Program
- Hasil simulasi
- Analisis
- Kesimpulan








