Modul 3_LA 2_uP dan uC 2022

  

Modul III
Komunikasi





1. Jurnal [kembali]
    Melakukan Komunikasi secara SPI dimana ketika button master ditekan maka LED slave menyala dan ketika Button slave ditekan maka LED master akan menyala

2. Hardware [kembali]

Push Button
LED
 Arduino
Power Supply


3. Gambar Rangkaian [kembali]




4. Prinsip Kerja [kembali]

  1. MOSI (Master Output Slave Input), ini adalah sinyal output dari master device yang merupakan shift register dari master menuju input dari slave.
  2. MISO (Master Input Slave Output), ini adalah input dari master device untuk menerima data shift register dari slave device menuju master.
  3. SCK atau SCLK (Serial Clock), ini adalah clock yang dihasilkan master yang berguna menAndakan komuniaksi SPI dan untuk melakukan shifting terhadap shift register dari kedua device.
  4. SS’ (Slave Select), ini adalah pin yang digunakan untuk memilih slave mana yang akan diajak berkomunikasi oleh master. (dengan asumsi lebih dari satu slave device)
  1. Kedua device baik master maupun slave akan menempatkan data yang akan ditransfer ke dalam shift register mereka sebelum komunikasi serial dimulai.
  2. Master menghasilkan 8 pulsa untuk menggeser nilai setiap bit yang ada pada shift register baik slave maupun master. Setelah 8 clock selesai, master akan memberikan 1 bit informasi sebagai tAnda komunikasi dan sebaliknya dari slave ke master.
  3. Setelah 8 clock selesai, master akan menerima data dari slave yang sudah ada di shift register master dan slave akan menerima data dari master yang tersimpan di shift register slave device.



Prinsip kerja dari Arduino bisa kita gambarkan seperti di bawah ini.

cara kerja arduino


Alur kerjanya:
Pembacaan data oleh komponen input > data dikirim ke pin input > data masuk ke mikrokontroler > data diproses > data keluar dari Arduino >data dikirim ke pin output > data diteruskan ke komponen output.
Berdasarkan gambar dan keterangan di atas, kita bisa menyimpulkan bahwa cara kerja Arduino yaitu:

Tahap 1: Pembacaan data oleh komponen input

Hal pertama yang berlangsung adalah komponen input yang dihubungkan ke Arduino akan melakukan pembacaan atau pengukuran data yang jadi pemicu.

Misalnya berupa jarak, cahaya, getaran, atau suara.

Apa saja yang termasuk komponen input? Yaitu semua komponen yang dapat melakukan pengukuran maupun pembacaan data.

Termasuk semua jenis sensor. Entah itu sensor jarak, cahaya, maupun yang lainnya.

Tahap 2: Data dikirim ke pin input Arduino

Pin input adalah perantara yang menghubungkan antara Arduino dan komponen input.

Jadi, data yang didapatkan dari pengukuran dan pembacaan komponen input akan dikirim ke pin input Arduino.

Tahap 3: Data masuk ke mikrokontroler (inti Arduino)

Nantinya, data yang ada pada pin input Arduino akan dibawa ke mikrokontroler atau inti Arduino untuk masuk ke tahapan berikutnya. Yaitu tahap pemrosesan data.

Data yang masuk ke mikrokontroler akan diproses berdasarkan perintah atau program yang diberikan. Dalam tahapan ini pulalah diberikan instruksi akan seperti apa perintah yang akan dijalankan perangkat output nantinya.

Untuk memberikan perintah pada mikrokontroler Arduino, menggunakan bahasa pemrograman C dan melalui Software Arduino IDE.

Tahap 4: Data dikirim ke pin output Arduino

Setelah data diproses, maka selanjutnya data akan dikirim ke pin output Arduino.

Layaknya pin input, pin output Arduino juga berperan sebagai perantara yang menghubungkan antara Arduino dan perangkat output.

Perlu kamu ketahui bahwa rata-rata Arduino memiliki 14 pin yang dapat digunakan sebagai pin input maupun pin output.

Tahap 5: Data disalurkan ke komponen output

Data yang ada pada pin output Arduino, selanjutnya akan disalurkan ke komponen output.

Jadi, semua instruksi yang diberikan oleh mikrokontroler akan langsung dijalankan oleh komponen output seperti relay, lampu LED, buzzer, dan sebagainya.


CODINGAN
//SPI MASTER (ARDUINO) //SPI COMMUNICATION BETWEEN TWO ARDUINO //CIRCUIT DIGEST #include<SPI.h> //Library for SPI #define LED 7 #define ipbutton 2 int buttonvalue; int x;
void setup (void) { Serial.begin(115200); //Starts Serial Communication at Baud Rate 115200 pinMode(ipbutton,INPUT); //Sets pin 2 as input pinMode(LED,OUTPUT); //Sets pin 7 as Output SPI.begin(); //Begins the SPI commnuication SPI.setClockDivider(SPI_CLOCK_DIV8); //Sets clock for SPI communication at 8 (16/8=2Mhz) digitalWrite(SS,HIGH); // Setting SlaveSelect as HIGH (So master doesnt connnect with slave) } void loop(void) { byte Mastersend,Mastereceive; buttonvalue = digitalRead(ipbutton); //Reads the status of the pin 2 if(buttonvalue == HIGH) //Logic for Setting x value (To be sent to slave) depending upon input from pin 2 { x = 1; } else { x = 0; } digitalWrite(SS, LOW); //Starts communication with Slave connected to master Mastersend = x; Mastereceive=SPI.transfer(Mastersend); //Send the mastersend value to slave also receives value from slave if(Mastereceive == 1) //Logic for setting the LED output depending upon value received from slave { digitalWrite(LED,HIGH); //Sets pin 7 HIGH Serial.println("Master LED ON"); } else { digitalWrite(LED,LOW); //Sets pin 7 LOW Serial.println("Master LED OFF"); } delay(1000); }

Penjelasan Codingan :

Pertama Kita Deklarasikan Pin-pin yang akan dihubungkan ke arduino nantinya dan library spi untuk komunikasi  lalu pada void setup di lakukan pemanggilan fungsi pinMode(),serial begin(),spi.begin,set clock,dan milih slave nya

Fungsi pinMode() pada arduino adalah sebuah perintah yang fungsinya untuk mengkonfigurasi pin tertentu agar bekerja menjadi sebuah input atau output. pinMode() biasanya digunakan pada void setup() untuk melakukan konfigurasi pada suatu pin, di dalam pemrograman arduino perintah pinMode() akan sering kamu jumpai dan gunakan. dari codingan kita ingin menjadikan pin button sebagai mode INPUT_PULLUP dimana aplikasi input untuk pendeteksian tombol secara active LOW sebaiknya menggunakan INPUT_PULLUP karena akan jauh menghemat jalur PCB dan untuk logikanya tidak terpaku pada "1" dan "0"

void loop digunakan dalam arduino IDE untuk menjalankan perintah didalamnya secara berulang-ulang,dalam void loop ada variabel nilai yang merupakan nilai pembacaan dari button.

ketika button ditekan maka serial akan mencetak angka "1" yang nantinya akan dikirimkan ke arduino "slave" melalui komunikasi spi jika sebaliknya maka akan mencetak angka "2" melalui komunikasi spi

//SPI SLAVE (ARDUINO) //SPI COMMUNICATION BETWEEN TWO ARDUINO //CIRCUIT DIGEST //Pramoth.T #include<SPI.h> #define LEDpin 7 #define buttonpin 2 volatile boolean received; volatile byte Slavereceived,Slavesend; int buttonvalue; int x; void setup() { Serial.begin(9600); pinMode(buttonpin,INPUT); // Setting pin 2 as INPUT pinMode(LEDpin,OUTPUT); // Setting pin 7 as OUTPUT pinMode(MISO,OUTPUT); //Sets MISO as OUTPUT (Have to Send data to Master IN SPCR |= _BV(SPE); //Turn on SPI in Slave Mode received = false; SPI.attachInterrupt(); //Interuupt ON is set for SPI commnucation } ISR (SPI_STC_vect) //Inerrrput routine function { Slavereceived = SPDR; // Value received from master if store in variable slavereceived received = true; //Sets received as True } void loop() { if(received) //Logic to SET LED ON OR OFF depending upon the value recerived from master { if (Slavereceived==1) { digitalWrite(LEDpin,HIGH); //Sets pin 7 as HIGH LED ON Serial.println("Slave LED ON"); }else { digitalWrite(LEDpin,LOW); //Sets pin 7 as LOW LED OFF Serial.println("Slave LED OFF"); } buttonvalue = digitalRead(buttonpin); // Reads the status of the pin 2 if (buttonvalue == HIGH) //Logic to set the value of x to send to master { x=1; }else { x=0; } Slavesend=x; SPDR = Slavesend; //Sends the x value to master via SPDR delay(1000); } }


Penjelasan Codingan :

Pertama Kita Deklarasikan Pin-pin yang akan dihubungkan ke arduino nantinya dimana pin nya adalah 7 dan 2 serta library spi.h lalu pada void setup di lakukan pemanggilan fungsi pinMode(),serial begin(),spi.begin,set clock,dan address dari slave nya

Fungsi pinMode() pada arduino adalah sebuah perintah yang fungsinya untuk mengkonfigurasi pin tertentu agar bekerja menjadi sebuah input atau output. pinMode() biasanya digunakan pada void setup() untuk melakukan konfigurasi pada suatu pin, di dalam pemrograman arduino perintah pinMode() akan sering kamu jumpai dan gunakan. dari codingan kita ingin menjadikan pin LED sebagai mode Output/keluaran

void loop digunakan dalam arduino IDE untuk menjalankan perintah didalamnya secara berulang-ulang,dalam void loop ada variabel data yang mana nilainya merupakan nilai yang dikirimkan oleh "master" ketika data = 1 maka LED akan menyala dan beri keterangan bahwa LED menyala jika selain itu maka LED akan mati dan beri keterangan LED mati

Fungsi digitalWrite() pada arduino adalah salah satu perintah yang berfungsi untuk memberi nilai 1 atau 0 kepada pin digital yang ada pada arduino. 1/0 bisa juga disebut dengan nilai HIGH dan LOW ke pin digital.

5.. Video Praktikum [kembali]






6. Analisa [kembali]         

1. Analisa Pengaruh "SPI.setclockDivider (SPI_Cluck_DIV8); apabila nilai 8 diganti dengan nilai yang kin
JAWAB
    Fungsi DIV diatas berfungsi untuk membagi clock, tujuannya agar kecepatan clock bix disesuaikan terhadap perangkat/device yang digunakan. Divider yang tersedia adalah 2.4,8, 16, 32.64, dan 128 serta 256. Pada Arduino uno clocknya berkisar dinilai 16 MHz ketika 
div2 ->  clock = 8 MHz 
div 4 -> clock = 4 MHz 
div 8->  clock = 2 Mhz
Semakin kecil angka div akan membuat clock Makin besar membuat pengiriman data semakin cepat.

2. Analisa Pengaruh Menekan push button dan nyala LED terhadap master dan slave
JAWAB
    ketika button Master ditekan maka LED slave akan menyala dan ketika button slave ditekan Mika LED Master akan menyala. ini menunjukkan bahwa ada komunikasi antara Master dan slave

3. Analisa Perbedaan Rangkaian Pada Modul dengan Rangkaian saat Praktikum
JAWAB
    Perbedaan Rangkaian pada Modul di rangkaian dengan Sant praktikum adalah pada rangkaian tidak menghubungkan kaki 10 antara slave dan master dimana kaki ini berfungsi sebagai slave select(SS) untuk memilih slave yang akan dipakai dan diberikan instruksi oleh master

4. Analisa Pengaruh MISO terhadap output yang dihasilkan
JAWAB
Kaki MISO digunakan untuk membuat master sebagai input dan slave sebagai output jadik ketika master bisa untuk menerima data maka slave sebagai keluaran datanya. sehingga output yang dihasilkan berasal dari slave

7. Link Download [kembali]

Download Video Praktikum Disini
Download File Program Master Disini
Download File Program Slave disini
Download DataSheet Arduino disini
Dataheet LED disini
Dowload HTML Disini
Download Library Disini
Dataheet Push button disini

[Kembali ke daftar isi]

Tidak ada komentar:

Posting Komentar

Muhammad Sukry

Bahan Presenstasi Ini dibuat untuk  Mata Kuliah Mikroprocessor dan Mikrocontroller Semester Ganjil 2022-2023 Oleh : Muhammad Sukry 201095104...