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.
Prinsip
Kerja:
Pada
rangkaian terdapat dua buah Arduino Uno, yang sebelah kanan merupakan Master
sedangkan yang kiri adalah Slave. Pada pin Digital 10,11,12,13 saling terhubung
kedua belah 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:
#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);
}
}
6. Kondisi [kembali]
Percobaan 2 Kondisi 13: Ganti LED menjadi buzzer, tambahkan resistor sebelum buzzer sebesar 1k ohm
Analisa
1. Jelaskan transmisi data pada SPI dan gambakan timing diagram dari transmisi data pada SPI
Dalam
komunikasi SPI, dua atau lebih device yang terhubung yang salah satunya
akan bertindak sebagai Master dan yang lainnya akan bertindak sebagai Slave. Pengiriman
data dimulai dari LSB ke MSB. Data D0 pada MSB bergeser ke R7 pada LSB dan data
MSB bergeser ke kanan 1 bit melalui MOSI sehingga data R7 pada LSB masuk ke MSB
melalui MISO. SPI beroperasi berdasarkan shift register baik master device
maupun slave device, keduanya akan mempunyai 8 bit shift register. Untuk
memulai komunikasi, bus master melakukan konfigurasi clock, dengan catatan
frekuensi atau kecepatan transfer data antara SPI master device dan slave
device harus sama. Setiap satu clock SPI dilakukan, maka akan terjadi
komunikasi full duplex antara master device dengan slave device. Master
mengirimkan satu Bit pada line MISO, lalu slave akan membacanya. Setelah itu,
pada line MISO slave device akan mengirimkan data kembali ke master device dan
master akan membacanya. Urutan atau sekuen ini akan bertahan seperti di atas
meskipun kita tidak menggunakan komunikasi Full Duplex atau hanya menggunakan satu
line komunikasi saja (seperti simplex ). SPI menggunakan empat pin untuk
berkomunikasi. Yaitu MOSI, MISO, SCK dan SS.
- MOSI
berarti Master Output Slave Input, dimana pin ini digunakan sebagai Master
mengirim data dan Slave sebagai penerima data.
- MISO
berarti Master Input Slave Output, dimana pin ini digunakan sebagai Master
bertindak sebagai penerima data dan Slave sebagai pengirim data.
- SCK,
SPI Clock Line yang berarti clock yang digunakan untuk berkomunikasi
(Komunikasi synchronous).
- SS
artinya Slave Select. Jika SS bernilai 0 atau low maka Device bertindak sebagai
slave dan jika bernilai 1 atau high maka device bertindak sebagai Master.
Timing
Diagram:
2. Bagaimana cara menghubungkan rangkaian SPI saat menggunakan lebih dari satu slave?
Rangkaian
SPI dengan lebih dari satu slave dihubungkan secara parallel antara kabel
master dengan slave, lalu jalur SS (slave select ) digunkan untuk memilih slave
yang akan digunakan oleh master. Rangkaian SPI dapat menggunakan lebih
dari satu slave, yaitu maksimal 4 slave. Untuk penambahan slave lebih dari satu
(misal 2), maka perubahan yang dilakukan yaitu perubahan rangkaian dan juga
programnya. Jika menggunakan lebih dari 1 slave (multislave), maka terdapat 2
bentuk rangkaian yang dapat dibuat, yaitu Independent Slave Configuration
dan Daisy Chain Configuration.
File Rangkaian
Video Simulasi Rangkaian
Listing Program Master
Listing Program Slave
Flowchart
Library Arduino UNO
Datasheet Arduino UNO
HTML
Tidak ada komentar:
Posting Komentar