Penggunaan Komunikasi SPI untuk Sensor dan Aktuator di Proteus

- Tujuan
Setelah menyelesaikan praktikum ini, mahasiswa diharapkan dapat:
- Memahami prinsip kerja komunikasi SPI (Serial Peripheral Interface).
- Menghubungkan mikrokontroler dengan sensor dan aktuator menggunakan SPI.
- Mengirim dan menerima data menggunakan protokol SPI.
- Menampilkan hasil pengukuran sensor pada LCD.
- Alat dan Bahan
- Software Proteus (ISIS untuk simulasi)
- Software Arduino IDE
- Mikrokontroler (Arduino Uno/ATmega328P)
- Sensor tekanan (misalnya, BMP280 atau MCP3208 sebagai ADC untuk sensor analog)
- LCD SPI (misalnya, Nokia 5110 atau ST7735 TFT Display)
- Kabel penghubung virtual pada Proteus
- Resistor dan kapasitor sesuai kebutuhan
- Dasar Teori
SPI (Serial Peripheral Interface) adalah protokol komunikasi serial sinkron yang digunakan untuk menghubungkan mikrokontroler dengan berbagai perangkat eksternal, seperti sensor dan aktuator. SPI memiliki empat jalur utama:
- MOSI (Master Out Slave In): Data dikirim dari master ke slave.
- MISO (Master In Slave Out): Data dikirim dari slave ke master.
- SCK (Serial Clock): Sinyal clock yang dihasilkan oleh master.
- SS (Slave Select): Sinyal untuk memilih perangkat slave tertentu.
- Langkah Kerja
- Konfigurasi Proteus
- Buka Proteus dan buat proyek baru.
- Tambahkan komponen berikut ke dalam skema:
- Mikrokontroler (Arduino Uno/ATmega328P)
- Sensor tekanan (BMP280 atau MCP3208 sebagai ADC)
- LCD SPI (Nokia 5110 atau ST7735)
- Resistor dan kapasitor jika diperlukan
- Hubungkan komponen dengan jalur SPI:
- MOSI ke pin SPI perangkat
- MISO ke pin SPI perangkat
- SCK ke pin SPI perangkat
- SS ke pin masing-masing perangkat slave
- Pemrograman Mikrokontroler
- Buka Arduino IDE dan buat program untuk komunikasi SPI.
- Tambahkan library SPI jika diperlukan (#include <SPI.h>).
- Inisialisasi SPI pada mikrokontroler:
#include <SPI.h>
#define SS_SENSOR 10
#define SS_LCD 9
void setup() {
Serial.begin(9600);
SPI.begin();
pinMode(SS_SENSOR, OUTPUT);
pinMode(SS_LCD, OUTPUT);
digitalWrite(SS_SENSOR, HIGH);
digitalWrite(SS_LCD, HIGH);
}
- Membaca data dari sensor SPI:
int readSensorSPI() {
digitalWrite(SS_SENSOR, LOW);
byte highByte = SPI.transfer(0x00);
byte lowByte = SPI.transfer(0x00);
digitalWrite(SS_SENSOR, HIGH);
return (highByte << 8) | lowByte;
}
- Menampilkan data pada LCD SPI:
void displayOnLCD(int value) {
digitalWrite(SS_LCD, LOW);
SPI.transfer(0xFE); // Perintah LCD
SPI.transfer(value);
digitalWrite(SS_LCD, HIGH);
}
- Looping pembacaan data:
void loop() {
int sensorValue = readSensorSPI();
Serial.println(sensorValue);
displayOnLCD(sensorValue);
delay(1000);
}
- Simulasi Proteus
- Impor program HEX dari Arduino IDE ke Proteus.
- Jalankan simulasi dan periksa apakah nilai sensor terbaca dengan benar.
- Periksa tampilan LCD, apakah hasil pengukuran sensor ditampilkan dengan benar.
- Analisis dan Pertanyaan
- Apa fungsi masing-masing pin dalam komunikasi SPI?
- Bagaimana cara menghubungkan lebih dari satu perangkat SPI ke mikrokontroler?
- Apa keuntungan dan kelemahan komunikasi SPI dibandingkan I2C?
- Bagaimana cara memastikan data yang dikirim tidak mengalami kesalahan?
- Kesimpulan
Setelah menyelesaikan praktikum ini, mahasiswa diharapkan dapat memahami dan mengimplementasikan komunikasi SPI untuk interfacing dengan sensor dan aktuator, serta menampilkan data pada LCD SPI.
⚖️ SPI vs I2C: Kapan Menggunakan Masing-Masing Protokol?
Salah satu pertanyaan analisis dalam praktikum ini menyinggung perbandingan SPI dengan I2C, dan ini penting dipahami sebelum memilih protokol untuk proyek Anda. Secara umum, SPI lebih cepat karena menggunakan jalur data terpisah untuk pengiriman dan penerimaan (full-duplex), namun membutuhkan lebih banyak pin terutama jika banyak perangkat slave yang terhubung. Sebaliknya, komunikasi I2C menggunakan 2 Arduino Uno hanya membutuhkan dua jalur (SDA dan SCL) meski kecepatannya lebih rendah dibanding SPI. Jika Anda ingin memahami I2C secara lebih mendalam, tutorial lengkap I2C (Inter-Integrated Circuit) bisa menjadi referensi tambahan yang baik.
🔧 Referensi Praktikum SPI Lainnya di Proteus
Jika Anda ingin melihat variasi lain dari implementasi SPI di lingkungan simulasi, Anda bisa membandingkan dengan komunikasi SPI menggunakan Arduino di Proteus yang membahas pendekatan serupa dengan konfigurasi komponen yang sedikit berbeda. Membandingkan beberapa contoh praktikum SPI akan membantu Anda memahami pola umum yang selalu muncul, seperti inisialisasi SPI.begin(), pengaturan pin Slave Select, serta urutan pengiriman dan penerimaan byte data, sehingga Anda lebih percaya diri saat harus mengimplementasikan SPI pada proyek dengan sensor atau modul yang berbeda.
📦 Jika Library Sensor Belum Tersedia di Proteus
Sebelum sensor SPI seperti BMP280 atau LCD SPI bisa disimulasikan di Proteus, terkadang Anda perlu menambahkan library tambahan yang belum tersedia secara default. Jika mengalami kendala ini, ikuti panduan cara install library Arduino di Proteus agar komponen yang dibutuhkan bisa muncul dan digunakan dalam skema rangkaian simulasi Anda. Tanpa library yang tepat, komponen sensor SPI mungkin tidak akan terdeteksi sama sekali di daftar Pick Devices Proteus.
⚠️ Kesalahan Umum saat Implementasi SPI Multi-Slave
Ketika menghubungkan lebih dari satu perangkat SPI (misalnya sensor dan LCD sekaligus) ke satu mikrokontroler, kesalahan yang paling sering terjadi adalah lupa menonaktifkan Slave Select (SS) perangkat lain sebelum berkomunikasi dengan perangkat yang dituju. Karena MOSI, MISO, dan SCK dipakai bersama (shared bus), jika dua perangkat aktif secara bersamaan maka data yang diterima bisa bertabrakan dan menghasilkan pembacaan yang salah. Pastikan setiap perangkat memiliki pin SS terpisah dan program selalu mengatur pin SS ke HIGH (nonaktif) sebelum beralih berkomunikasi dengan perangkat lain, serta hanya menariknya ke LOW saat benar-benar akan mengirim atau menerima data dari perangkat tersebut.
🎯 Aplikasi Nyata Komunikasi SPI di Dunia Industri
Komunikasi SPI bukan hanya materi akademis, tetapi juga banyak digunakan dalam aplikasi nyata seperti modul kartu SD, layar TFT pada panel HMI sederhana, sensor tekanan presisi tinggi, hingga modul RFID. Kecepatan transfer data SPI yang tinggi membuatnya ideal untuk aplikasi yang membutuhkan update data cepat, seperti menampilkan grafik tren pada layar kecil atau membaca data dari sensor dengan sampling rate tinggi. Menguasai simulasi SPI di Proteus sebelum terjun ke hardware asli akan sangat membantu mengurangi risiko kesalahan wiring saat proyek benar-benar diimplementasikan secara fisik.




