Laporan Akhir Modul 3 :  Percobaan 2




Komunikasi SPI
(Laporan Akhir Percobaan 2)

1. Komponen [Kembali] 

1. Arduino



Gambar 1. Arduino


    Arduino adalah kit elektronik atau papan rangkaian elektronik open source yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel. Arduino yang kita gunakan dalam praktikum ini adalah Arduino Uno yang menggunakan chip AVR ATmega 328P. Dalam memprogram Arduino, kita bisa menggunakan komunikasi serial agar Arduino dapat berhubungan dengan komputer ataupun perangkat lain. 

2. LED

Gambar 2. LED


    
Light Emitting Diode atau sering disingkat dengan LED adalah komponen elektronika yang dapat memancarkan cahaya monokromatik ketika diberikan tegangan maju. LED merupakan keluarga Dioda yang terbuat dari bahan semikonduktor. Warna-warna Cahaya yang dipancarkan oleh LED tergantung pada jenis bahan semikonduktor yang dipergunakannya. LED juga dapat memancarkan sinar inframerah yang tidak tampak oleh mata seperti yang sering kita jumpai pada Remote Control TV ataupun Remote Control perangkat elektronik lainnya.

3. Push Button

Gambar 3. Push Button


    
Saklar tekan yang berfungsi sebagai pemutus atau penyambung arus listrik dari sumber arus ke beban listrik. Suatu sistem saklar tekan push button terdiri dari saklar tekan start, stop reset dan saklar tekan untuk emergency. Push button memiliki kontak NC (normally close) dan NO (normally open). Prinsip kerja Push Button adalah apabila dalam keadaan normal tidak ditekan maka kontak tidak berubah, apabila ditekan maka kontak NC akan berfungsi sebagai stop (memberhentikan) dan kontak NO akan berfungsi sebagai start (menjalankan) biasanya digunakan pada sistem pengontrolan motor – motor induksi untuk menjalankan mematikan motor pada industri – industri.

2. Rangkaian Simulasi [Kembali]


Gambar 4. Rangkaian Simulasi

3. Flowchart [Kembali]  

Gambar 5. Flowchart Master



Gambar 6. Flowchart Slave

4. Listing program [Kembali]

MASTER


#include <SPI.h> //Deklarasi library SPI
#define button 2
void setup (void) {
  pinMode(button, INPUT_PULLUP);
  Serial.begin(115200 ); //Set baud rate 115200
  digitalWrite(SS, HIGH);
  // disable Slave Select
  SPI.begin ();
  SPI.setClockDivider(SPI_CLOCK_DIV8); //divide the clock by 8
}
void loop (void) {
  char c;
  int nilai=digitalRead(button);
  if(nilai==0){
   digitalWrite(SS, LOW); //enable Slave Select
  // send test string
  for (const char * p = "Hello, world!\r" ; c = *p; p++)
  {
    SPI.transfer (c);
    Serial.print(c);
  }
  digitalWrite(SS, HIGH); // disable Slave Select
  delay(2000);
  }
}





SLAVE


#include <SPI.h>
#define led 2

char buff [50];
volatile byte indx;
volatile boolean process;

void setup (void) {
  Serial.begin (115200);
  pinMode(led, OUTPUT); // have to send on master in so it set as output
  SPCR |= _BV(SPE); // turn on SPI in slave mode
  indx = 0; // buffer empty
  process = false;
  SPI.attachInterrupt(); // turn on interrupt
}

ISR (SPI_STC_vect) // SPI interrupt routine
{
  byte c = SPDR; // read byte from SPI Data Register
  if (indx < sizeof buff) {
    buff [indx++] = c; // save data in the next index in the array buff
    if (c == '\r') //check for the end of the word
      process = true;
  }
}
void loop (void) {
  if (process) {
    digitalWrite(led, HIGH);
    process = false; //reset the process
    Serial.println (buff); //print the array on serial monitor
    indx = 0; //reset button to zero
    delay(1000);
  }
  else
  {
    digitalWrite(led, LOW);
  }

}

5. Video Simulasi [Kembali]  



6. Analisa dan Pembahasan [Kembali]

1. Bisakah pada SPI menggunakan lebih dari 1 master? Jelaskan beserta alasannya!

Jawab:

    Pada SPI tidak dapat menggunakan lebih dari 1Master, karena pada SPI ini hanya dapat menggunakan 1 Master saja namun dapat menggunakan Slave lebih dari 1. Hal ini karena Master pada SPI berfungsi untuk mengontrol komunikasi serial sinkron, dimana dapat mengirim dan menerima data.


2. Jelaskan pengaruh input pullup dan pulldown pada rangkaian !

Jawab :

    Pengaruh input pullup dan pulldown pada rangkaian SPI ini ada pada button sebagai data yang akan dibaca oleh Mikrokontroler Master yang kemudian akan mengirimkan paket data (bit-bit) ke Slave. Berdasarkan program Arduino yang dibuat, ketika button dalam keadaan pullup, maka button akan menerima logika LOW dari Arduino

(bernilai 0) sehingga ketika terbaca oleh Master, Master akan mengirimkan paket data “1” dimana pada Slave ketika menerima data “1” berarti LED hidup (berlogika HIGH). Sedangkan ketika pulldown, button akan menerima logika HIGH (bernilai 1) sehingga ketika terbaca oleh Master selain dari nilai 0, Master akan mengirimkan data “2” dimana pada Slave ketika menerima data selain dari “1” berarti LED mati (berlogika LOW).


3. Jelaskan prinsip kerja SPI pada rangkaian !

Jawab :

    Pada rangkain SPI ini menggunakan 2 buah arduino yang masing-masing berfungsi untuk Master dan Slave. Komunikasi ini dilakukan dengan menghubungkan mosi dari master dengan mosi dari slave, miso dari slave dengan miso dari master, sclk dari master dengan sclk dari slave, dan ss dari slave dengan ss master. Push button berfungsi sebagai input pullup dari master, artinya apabila push button ditekan maka akan berlogika low (0) dan apabila diangkat maka akan berlogika high (1). Saat master mengirimkan logika low ke slave maka LED akan hidup dan mati secara bergantian dengan jeda 1000 ms atau 1 s. Sedangkan saat master mengirimkan logika high ke slave maka LED akan mati.


7. Link Download [Kembali]

Download HTML [Klik Disini]
Download Rangkaian [Klik Disini]
Download Listing Program [Klik Disini]
Download Vidio [Klik Disini]
Download library Arduino uno [Klik Disini]
Download datasheet Arduino [Klik Disini]
Download datasheet LED [Klik Disini]
Download datasheet Push Button [Klik Disini]


Tidak ada komentar:

Posting Komentar