Laporan Akhir 2




a. 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. 


    b. Buzzer

Buzzer adalah sebuah komponen elektronika yang dapat mengubah sinyal listrik menjadi getaran suara. Buzzer dapat bekerja dengan baik dalam menghasilkan frekuensi kisaran 1-5 KHz hingga 100 KHz untuk aplikasi ultrasound. Tegangan operasional buzzer yang umumnya berkisar 3-12 V. Cara Kerja Buzzer yaitu egangan listrik yang mengalir ke buzzer akan menyebabkan gerakan mekanis, gerakan tersebut akan diubah menjadi suara atau bunyi yang dapat didengar oleh manusia.



    c. Push Button

Push Button adalah saklar yang berupa tombol dan berfungsi sebagai pemutus atau penyambung arus listrik dari sumber arus ke beban listrik. Push button memiliki kontak NC (normally close) dan NO (normally open). Prinsip kerja push button adalah pemutus dan penyambung aliran listrik. Namun dalam hal ini, ia tak bersifat mengunci. Jadi ia akan kembali ke posisi semua saat selesai ditekan. Saat push button ditekan, ia menjadi bernilai HIGH dan akan menghantarkan arus listrik. Sedangkan apabila dilepas, maka ia bernilai LOW dan memutus arus listrik.


2. Rangkaian Simulasi [Kembali]


Prinsip kerja:

Pada pin digital 10,11,12,13 saling terhubung kedua buah Arduino, kemudian pada pin 2 terhubung ke button dan buzzer. Terdapat Resistor sebesar 1k ohm disetiap kaki (pin 2) Arduino. Data yang dapat dikirimkan dari Master ke Slave (MOSI), maupun sebaliknya (MISO) merupakan bentuk communication-nya (dapat dilihat pada listing program). Adapun ketika button diPull-up, maka akan berlogika high, dan juga mengakibatkan Buzzer berlogika high (aktif/berbunyi). Namun sebelumnya kita perlu mengatur Operating voltage pada buzzer agar selalu lebih kecil daripada tegangan yang didapatnya.



-Master



-Slave



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);

  }

}




    Percobaan 2 Kondisi 13: Ganti LED menjadi buzzer, tambahkan resistor sebelum buzzer sebesar 1k ohm

    Analisa dan pembahasan

1. Jelaskan transmisi data pada SPI dan gambarkan timing diagram dari transmisi data pada SPI!

Jawab:

Transmisi data pada SPI merupakan transimisi data full duplex yang artinya pengiriman data dari master ke slave dan slave ke master terjadi dalam satu waktu atau hubungannya secara timbale balik. Saat satu kali clock, master mengirimkan data ke slave, lalu slave membaca data tersebut dan ditempatkan di slave. Begitupun sebaliknya dari slave data tersebut juga dikirimkan ke master dan master akan menempatkannya pada line tersebut.


2. Bagaimana cara menghubungkan rangkaian SPI saat menggunakan lebih dari satu slave?

Jawab:

Rangkaian SPI dapat menggunakan maksimal 4 slave. Apabila lebih dari satu slave, maka rangkaian dan listing program juga harus diubah atau ditambah.

Terdapat 2 cara yaitu:

a. Daisy Chain Configuration

Pada cara ini master memerlukan satu pin SS untuk berkomunikasi. Master akan mengirimkan sinyal LOW kepada slave untuk mengirimkan data yang berfungsi sebagai inisiasi komunikasi. Selanjutnya master akan mengirimkan data ke slave 1 melalui pin MOSI dan pin SCL juga menghasilkan clock pada saat yang bersamaan. Data yang sudah dikirim ke slave 1 diteruskan ke slave 2 dan seterusnya. Selama proses komunikasi berlangsung, logika pada pin SS tetap kondisi LOW. Master harus mengirimkan sinyal clock yang cukup hingga data sampai pada slave yang terakhir. Jika master ingin mendapatkan respon, ia harus mengirimkan sinyal clock hingga data kembali ke master.

b. Independent Slave Configuration

Kali ini pin SS terhubung ke slave yang berbeda-beda. Jika master ingin berkomunikasi dengan slave tertentu, master akan mengirimkan sinyal LOW ke slave tersebut. Setelah diberi logika LOW ke slave yang dituju, data  pada master akan dikirim ke slave melalui pin MOSI. Pada pin SLCK menghasilkan clock pada saat yang bersamaan. Respon akan diterima oleh master dengan cara mengirim lagi sinyal clock. Jadi data akan dikirim oleh slave melalui pin MISO.


Video Rangkaian-download

File Rangkaian-download

Listing Program Master-download

Listing Program Slave-download

Datasheet-download

Library-download


Tidak ada komentar:

Posting Komentar