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
Baca juga:
— Training ESP32 Berbasis IoT – Pelatihan Praktis & Bersertifikat
Baca juga: Ingin Jadi Ahli IoT & Otomasi? Semua Bisa Dimulai dari Arduino! untuk memahami roadmap lengkap belajar Arduino dari dasar hingga proyek IoT.




