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.








