KOMUNIKASI SPI MENGGUNAKAN ARDUINO DI PROTEUS

🎯 1. TUJUAN PRAKTIKUM

Setelah menyelesaikan praktikum ini, mahasiswa mampu:

  1. Memahami konsep komunikasi SPI (Serial Peripheral Interface)
  2. Mengidentifikasi pin SPI pada Arduino
  3. Mensimulasikan komunikasi SPI di Proteus
  4. Mengimplementasikan sistem Master–Slave berbasis SPI
  5. 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

    1. Buka Proteus
    2. Tambahkan 2 Arduino UNO
    3. Hubungkan pin SPI sesuai tabel
    4. Tambahkan Virtual Terminal ke Slave
    5. Compile program di Arduino IDE
    6. Upload file HEX ke masing-masing Arduino di Proteus
    7. 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:

      1. Mengapa SPI disebut full duplex?
      2. Apa fungsi SS?
      3. Apa yang terjadi jika SCK tidak terhubung?
      4. Mengapa SPI lebih cepat dibanding I2C?
      5. 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

      1. Modifikasi program agar Master mengirim string
      2. Tambahkan LED di Slave yang menyala saat menerima data
      3. Gunakan Logic Analyzer untuk melihat sinyal SCK, MOSI, dan MISO
      4. Ubah kecepatan SPI dan amati perubahan sinyal

📝 FORMAT LAPORAN

  • Cover
  • Tujuan
  • Dasar teori
  • Rangkaian
  • Program
  • Hasil simulasi
  • Analisis
  • Kesimpulan

 

Related Articles