Rabu, 28 Oktober 2020

Laporan 3 Percobaan 3





1. Komponen [Kembali]

Gambar1. Button hardware
Gambar2.LED Hardware

Gambar3. Potensiometer Hardware

Gambar 4 . Potensiometer

Gambar 5. LED

Gambar 6. Arduino

2.Rangkian Simulasi [Kembali]



3.Flowchart [Kembali]






4.Listing Program [Kembali]

//MASTER

#include <Wire.h>
#define SLAVE_ADDR 9 

int analogPin = 0;
int val = 0;

void setup() {
  Wire.begin();
}

void loop() {
 delay(50);
 val = map(analogRead(analogPin), 0, 1023, 255, 1);
 
 Wire.beginTransmission(SLAVE_ADDR);
 Wire.write(val);
 Wire.endTransmission();
 
}


//SLAVE

#include <Wire.h>
#define SLAVE_ADDR 9

int LED = 13;
int rd;
int br;

void setup() {
  pinMode(LED, OUTPUT);
  Wire.begin(SLAVE_ADDR);
  Wire.onReceive(receiveEvent);

  Serial.begin(9600);
  Serial.println("I2C Slave demo");
  
}

void receiveEvent(){
  rd = Wire.read();
  Serial.println(rd);
}
void loop() {
  delay(50);

  br = map(rd, 1, 255, 100, 2000);

  digitalWrite(LED, HIGH);
  delay(br);
  digitalWrite(LED, LOW);
  delay(br);
}

5.Video [Kembali]



6.Kondisi [Kembali]

ANALISIS PERCOBAAN 3 [I2C]:

1.Apakah kita dapat mengirim data sebanyak 9 bit? Jelaskan alasannya

Jawab:

Jika mengirim data, Master hanya dapat mengirimkan sejumlah byte (masing-masing 8 bit). Saat memuliah proses transmitting dari Master, 7 bit pertama sebagai alamat Slave yang akan dituju (Address frame), 1 bit kemudian sebagai R/W bit untuk memberitahukan ke Slave-slave apakah Master akan menerima atau mengirimkan data. Sedangkan bit ke-9, bit tersebut akan dikeluarkan oleh Slave sebagai tanda bahwa data telah diterima oleh receiver (ACK/NACK). Kemudian, Master akan menulis data 8 bit (Data frame) dan bit-9 oleh Slave sebagai sinyal acknowledge / ACK (berlogika 0) yang dikeluarkan Slave kembali untuk dapat menerima data selanjutnya hingga SDA menerima sinyal Not Acknowladge / NACK (berlogika 1) untuk mengakhirim transfer data.

2.Bagaimana cara master mengirimkan address ke slave? Berapa bit address yang dikirim? Berapa addres unik yang dapat tercipta oleh master?

Jawab:

dapat dijadikan slave hanya 127. Alamat 0 dipergunakan untuk General Call. Bila alamatdan   perintah,R/W,   yang   dikirimmaster   dapat   diterima   oleh   slavedanakanmembangkitkan   pulsa   LOW   (ACK),   pada   bus   SDA,   jika   perintah   tersebut   dapatdijalankan dan pulsa  HIGH (NACK) jika perintah tersebut  gagal.Sinyal  dasar  yang laindalam   I2C   Bus   adalah   sinyalacknowledgeyang   disimbolkan   dengan   ACK   Setelahtransfer   data   olehmasterberhasil   diterimaslave,   slaveakan   menjawabnya   denganmengirim   sinyalacknowledge,   yaitu   dengan   membuat   SDA   menjadi   “0”   selamasiklusclockke  9.  Ini  menunjukkan  bahwaSlavetelah  menerima  8  bit  data  dariMaster.Address  yang  dapat  tercipta  oleh  master  dari  kerja  I2C  bus  dapat  dibedakan  menjadiformat 7 bit addressing dan format 10 bit addressing.Address  byte  terdiri  dari  bagian  yang  tetap  dan  bagian  yang  dapat  diprogram,  bagianyang tetap merupakan bawaan dari IC, sedangkan yang dapat diprogram biasanya berupapin  address  pada  IC  yang  bersangkutan,  sebagai  contoh  IC  PCF8591,  memiliki  addressbyte  sbb  :  1  0  0  1  A2  A1  A0  ,  dimana  1001  adalah  bagian  yang  tetap  dan  A2,A1,A0adalah bagian yang dapat diprogram sesuai dengan kondisi logika pada pin IC PCF8591.Sinyal   Acknowledge   (ACK)   terjadi,Dari   Slave   ke   Master   Transmitter,   kemudianSesudah  address  byte  diterimaslave.Setiap  kali  Master  selesai  menerima  data  bytedengan  baik  Sinyal  Negative  Acknowledge  (NACK)  terjadi,  makadariSlave  ke  MasterTransmitter

7.Link Download [Kembali]

file rangkaian - download

file program master - download

file program slave - download

video penjelasan -download

file html - download

Selasa, 27 Oktober 2020

Laporan Akhir 2 Percoban 2





1. Komponen [Kembali]

Gambar1 . button hardware

Gambar2 . LED Hardware

Gambar3. Potensiometer

Gambar 4. LED

Gambar 5. Arduino









2.Rangkian Simulasi [Kembali]



3.Flowchart [Kembali]







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 [Kembali]


6.Kondisi [Kembali]

ANALISIS PERCOBAAN 2 [SPI[:

1. Apakah kit dapat menggunakan lebih dari 1 master? Jelaskan alasannya

Jawab:

Untuk  SPI,  hanyadapatmenggunakan  1  master  saja.  Halinidikarenakan  Master  padaSPI sebagaipengontrolkomunikasi serial sinkronpada SPI dimanadapatmengirimataumenerima data. Namun, SPI inidapatmemilikilebihdari 1 Slave dimanaterdapat SlaveSelect (SS) untukmemilih (mengontrol) Slave mana yang dipiliholeh Master.

 

2. Apakah port MISO harus digunakan? Jelaskan alasannya

Jawab:

Port   MISO   harus   digunakan,   karenaPort   MISO   pada   rangkaian   komunikasi   SPImerupakan  interkoneksi  master  dan  slave  yang  berguna  sebagai  input,  karena  masterinput  dan  slave  output.Disaatmentransfer  data  dari  master  ke  slave  sangat  perlu  portMISO,  agar  data  sampai  ke  slave.SesuaidenganPrinsipkerjanyaSPIsinyal  clockdialirkan    dari  master  menuju  slave  untuk  sinkronisasi,  lalu  master  dapat  memilih  slavemana yangakan dikirimkan data melalui pin slave select (SS), lalu master mengirim, dari slave  menuju  MOSI  dan  jika  dibutuhkan  respon  makan  slave  akan  mengirimkan  datakembali ke master melalui MISO.



7.Link Download [Kembali]

file rangkaian - download

file program master - download

file program slave - download

video rangkaian - download

file html - download

Laporan Akhir 1 Percobaan 1





1. Komponen [Kembali]

Gambar 1. button hardware


Gambar 2. button 

Gambar 2. LED Hardware


Gambar 4. LED

Gambar 5. arduino


2.Rangkian Simulasi [Kembali]



3.Flowchart [Kembali]





4.Listing Program [Kembali]

//MASTER
 
#define button 2  //Deklarasi pin 2 untuk button
 
void setup()     //Semua kode dalam fungsi ini dieksekusi sekali
{
  pinMode(button,INPUT_PULLUP);
  Serial.begin(9600); //Set baud rate 9600
}
 
void loop()   //Semua kode dalam fungsi ini dieksekusi berulang
{
  int nilai = digitalRead(button);
 
  //ditekan
  if(nilai == 0)
    {
      Serial.print("1");    
    }
  else
    {
      Serial.print("2");
    }
 
    delay(200);
}


//SLAVE

 
#define led 12  //Deklarasi pin 12 untuk LED
 
void setup()   //Semua kode dalam fungsi ini dieksekusi sekali
{
  pinMode(led,OUTPUT);   //Deklarasi LED sebagai output
  Serial.begin(9600);            //Set baud rate 9600
}
 
void loop()                         //Semua program dalam fungsi ini dieksekusi berulang
{
  if(Serial.available()>0)
  {
    int data = Serial.read();
      if(data=='1')  //Jika data yang dikirimkan berlogika
        {
          digitalWrite(led,HIGH);  //LED menyala
        }
      else
        {
          digitalWrite(led,LOW);  //LED mati
        }
       
  }
}

5.Video [Kembali]



6.Kondisi [Kembali]

ANALISIS PERCOBAAN 1 [UART]:

1. Apa yang terjadi jika komunikasi UART hanya menggunakan 1 habel saja, yang terhubung TX ke RX?

Jawab:

Dimana tujuan kabel pertamad ihubungkan dari Tx  Master ke Rx Slave adalah untuk komunikasiasinkron dari Master ke Slave, kemudiankabelkeduadihubungkandariTx Slave ke Rx Master sebagairespon darike Masteruntuk menandakanbahwa data telahmasukke Slave. Jikapadakomunikasi  UART  hanyamenggunakan  1  kabelsaja  yangterhubungdariTxMaster  ke  Rx  Slave,  makaakanterjadi  error.DikarenakanTx  Slave  tidakterhubungkeRx Master untukmenandakanatau meresponadanya data yang masukke Slave. Jadiolehkarena  itu  komunikasi

 2.Apakah dapat mengirim data sebanyak 12 bit? Jelaskan alasannya

Jawab:

Tidakbisa,  karena  pada  UART  hanya  bisa  mengirimkan  maksimum  sampai  11  bit  yangterdiri dari 1 bit start, 1 bit parity , dan 1 bit stop kemudian ditambah 8 bit data yang ingindikirimkan  totalnya  adalah  11  bit.  Dan  pada  UART  penerima,  3  data  bit  tambahan  iniakan dihapus, dan diambil 8 bit data saja.Kemudiandisetiap paket data yang di kirimkanberjamlah  9  bit.Jaditidak  dapat  mengirim  data  sebanyak12  bit.Dapat  dilihat4  modekerjakomunikasi UART ini, yaitua.Pertamamode 0, pada mode ini data seri di kirim dan diterima kaki Rx, pada kaki Txmenyalurkan    clock    yang    diperlukankomunikasi    data    sinkron.Datayangditransmisikan per 8 bit dengan baud ratenya tetap.b.Mode1, pada  mode 1  merupakan  komunikasi seri asinkron.Datadikirim  lewat  kakiTx dan d terima Rx.Dataditransmisikan per 10 bit, terdiri start1bit, data 8 bitdatadan stop 1 bit c.Mode2,  sama  dengan  mode  1,  mode  2  juga  merupakan  komunikasi  seri  asinkron.Datadikirim dari Tx diterima Rx.Jumlahdata yang di transmisikan  yaitu 1 bit start,8 bit data,1 data tambahan dan 1 bit stop, sehingga berjumlah 11 bit.d.Mode3, data dari kaki Tx dan diterima Rx.Datayang ditransmisikan 11 bit.Jadi,data 12 bit tidak bisa di kirimkan oleh UARTkarena jumlah datamaksimal 11 bit

 3. Apakah kita dapat menggunakan banyak slave? Jelaskan alasannya

Jawab:

c.Mode2,  sama  dengan  mode  1,  mode  2  juga  merupakan  komunikasi  seri  asinkron.Datadikirim dari Tx diterima Rx.Jumlahdata yang di transmisikan  yaitu 1 bit start,8 bit data,1 data tambahan dan 1 bit stop, sehingga berjumlah 11 bit.d.Mode3, data dari kaki Tx dan diterima Rx.Datayang ditransmisikan 11 bit.Jadi,data 12 bit tidak bisa di kirimkan oleh UARTkarena jumlah datamaksimal 11 bit


7.Link Download [Kembali]

file rangkaian - download

file program master -download

file program slave -download

video penjelasan - download

file html - download

Tugas Pendahuluan Modul 3





1.Kondisi [Kembali]

Situasi dan kondisi pada praktikum modul 3 ini. Dipilih percobaan 1 dengan kondisi 8. Yaitu membuat rangkaian UART dan ditambahkan resistor sebelum Button sebesar 1k ohm.

2.Rangkaian Silumasi [Kembali]


Gambar 1. Rankaian Percobaan 1

penjelasan rangkaian gambar 1
Kaki pin 2 dari master dihubungkan ke resistor dan button secara seri kemudian dilanjutkan ke ground. kaki pin txd master dihubungkan ke rxd slave, dan rxd master dihubungkan ke txd slave. Kemudian pada slave, kaki 12 dihubungkan ke Led. Setelah itu dibuat program pada master dan juga slave. Pada bagian master, saat button ditekan, maka akan berlogika 0 (karena terhubung ke ground). Saat button berlogika 0, maka akan menampilkan "1" pada serial monitor, dan ketika tampil "1", slave akan mendeteksi dan Led akan hidup. Ketika button tidak diteka, maka input 2 dari slave akan bernilai "1" karena yang kita gunakan adalaj perintah input pull_up. input_pullup akan berlogika 1 pada defaultnya. saat berlogika 1, maka akan ditampilkan angka "2" pada serial monitor. Kemduian slave akan mendeteksi dan Led mati.


3.Flowchart [Kembali] 

Gambar 1.fowchart program arduino master


Gambar 2.fowchart program arduino slave


4.Listing Program [Kembali]

MASTER

#define button 2  //Deklarasi pin 2 untuk button

void setup()     //Semua kode dalam fungsi ini dieksekusi sekali
{
  pinMode(button,INPUT_PULLUP); 
  Serial.begin(9600); //Set baud rate 9600
}

void loop()   //Semua kode dalam fungsi ini dieksekusi berulang
{
  int nilai = digitalRead(button);
  
  //ditekan
  if(nilai == 0)
    {
      Serial.print("1");     
    }
  else 
    {
      Serial.print("2"); 
    }

    delay(200);
}


SLAVE

#define led 12  //Deklarasi pin 12 untuk LED

void setup()   //Semua kode dalam fungsi ini dieksekusi sekali
{
  pinMode(led,OUTPUT);   //Deklarasi LED sebagai output
  Serial.begin(9600);            //Set baud rate 9600
}

void loop()                         //Semua program dalam fungsi ini dieksekusi berulang
{
  if(Serial.available()>0)
  {
    int data = Serial.read();
      if(data=='1')  //Jika data yang dikirimkan berlogika
        {
          digitalWrite(led,HIGH);  //LED menyala
        } 
      else
        {
          digitalWrite(led,LOW);  //LED mati
        }
        
  }
}

5.Video Simulasi [Kembali] 




Video penjelasan rangkaian percobaan 1

Kaki pin 2 dari master dihubungkan ke resistor dan button secara seri kemudian dilanjutkan ke ground. kaki pin txd master dihubungkan ke rxd slave, dan rxd master dihubungkan ke txd slave. Kemudian pada slave, kaki 12 dihubungkan ke Led. Setelah itu dibuat program pada master dan juga slave. Pada bagian master, saat button ditekan, maka akan berlogika 0 (karena terhubung ke ground). Saat button berlogika 0, maka akan menampilkan "1" pada serial monitor, dan ketika tampil "1", slave akan mendeteksi dan Led akan hidup. Ketika button tidak diteka, maka input 2 dari slave akan bernilai "1" karena yang kita gunakan adalaj perintah input pull_up. input_pullup akan berlogika 1 pada defaultnya. saat berlogika 1, maka akan ditampilkan angka "2" pada serial monitor. Kemduian slave akan mendeteksi dan Led mati.


6.Link Download [Kembali]

File Rangkaian - download

File Video -download

File html - download

File  Program master - download

File  Program slave- download

File Flowchart master - download

File Flowchart slave - download

File Library Arduino - download

Kamis, 01 Oktober 2020

Modul 3




Modul III
COMMUNICATION

1.Tujuan [Kembali]
a) Memahami prinsip kerja UART, SPI, dan I2C
b) Mengaplikasikan protokol komunikasi UART, SPI, dan I2C pada Arduino

2.Alat dan Bahan[Kembali]
a)   Modul Arduino
b)  Push Button
c)  LED

3.Dasar teori [Kembali]

A. Universal Asynchronous Receiver Transmitter (UART)

UART (Universal Asynchronous Receiver-Transmitter) adalah bagian perangkat keras komputer yang menerjemahkan antara bit-bit paralel data dan bit-bit serial. UART biasanya berupa sirkuit terintegrasi yang digunakan untuk komunikasi serial pada komputer atau port serial perangkat periperal.

Cara Kerja Komunikasi UART
Data dikirimkan secara paralel dari data bus ke UART1. Pada UART1 ditambahkan start bit, parity bit, dan stop bit kemudian dimuat dalam satu paket data. Paket data ditransmisikan secara serial dari Tx UART1 ke Rx UART2. UART2 mengkonversikan data dan menghapus bit tambahan, kemudia di transfer secara parallel ke data bus penerima.

B. Serial Peripheral Interface (SPI)

Serial Peripheral Interface ( SPI ) merupakan salah satu mode komunikasi serial synchrounous kecepatan tinggi yang dimiliki oleh ATmega 328. Komunikasi SPI membutuhkan 3 jalur yaitu MOSI, MISO, dan SCK. Melalui komunikasi ini data dapat saling dikirimkan baik antara mikrokontroller maupun antara mikrokontroller dengan peripheral lain di luar mikrokontroler.

MOSI : Master Output Slave Input Artinya jika dikonfigurasi sebagai master maka pin MOSI sebagai output tetapi jika dikonfigurasi sebagai slave maka pin MOSI sebagai input.

MISO : Master Input Slave Output Artinya jika dikonfigurasi sebagai master maka pin MISO sebagai input tetapi jika dikonfigurasi sebagai slave maka pin MISO sebagai output.
SCLK : Clock Jika dikonfigurasi sebagai master maka pin CLK berlaku sebagai output tetapi jika dikonfigurasi sebagai slave maka pin CLK berlaku sebagai input.
SS/CS : Slave Select/ Chip Select adalah jalur master memilih slave mana yang akan dikirimkan data.

Cara Kerja Komunikasi SPI

Sinyal clock dialirkan dari master ke slave yang berfungsi untuk sinkronisasi. Master dapat memilih slave mana yang akan dikirimkan data melalui slave select, kemudian data dikirimkan dari master ke slave melalui MOSI. Jika master butuh respon data maka slave akan mentransfer data ke master melalui MISO.
C. Inter Integrated Circuit (I2C)


Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua arah menggunakan dua saluran yang didisain khusus untuk mengirim maupun menerima data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya. 

Cara Kerja Komunikasi I2C
Pada I2C, data ditransfer dalam bentuk message yang terdiri dari kondisi start, Address Frame, R/W bit, ACK/NACK bit, Data Frame 1, Data Frame 2,  dan kondisi Stop.Kondisi start dimana saat pada SDA beralih dari logika high ke low sebelum SCL. Kondisi stop dimana saat pada SDA beralih dari logika low ke high sebelum SCL. R/W bit berfungsi untuk menentukan apakah master mengirim data ke slave atau meminta data dari slave. (logika 0 = mengirim data ke slave, logika 1 = meminta data dari slave).
ACK/NACK bit berfungsi sebagai pemberi kabar jika data frame ataupun address frame telah diterima receiver.

D. ARDUINO
Arduino adalah kit elektronik atau papan rangkaian elektronik open source yangdidalamnya 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.
Adapun spesifikasi dari Arduino Uno ini adalah sebagai berikut :


Microcontroller                                           ATmega328P
Operating Voltage                                      5 V
Input Voltage (recommended)                   7 – 12 V
Input Voltage (limit)                                  6 – 20 V
Digital I/O Pins                                          14 (of which 6 provide PWM output)
PWM Digital I/O Pins                                6
Analog Input Pins                                       6
DC Current per I/O Pin                              20 mA
DC Current for 3.3V Pin                            50 mA
Flash Memory                                            32 KB of which 0.5 KB used by bootloader
SRAM                                                        2 KB
EEPROM                                                   1 KB
Clock Speed                                               16 MHz
BAGIAN-BAGIAN ARDUINO UNO


POWER USB
Digunakan untuk menghubungkan Papan Arduino dengan komputer lewat koneksi USB.

POWER JACK
Supply atau sumber listrik untuk Arduino dengan tipe Jack. Input DC 5 - 12 V.

Crystal Oscillator
Kristal ini digunakan sebagai layaknya detak jantung pada Arduino.
Jumlah cetak menunjukkan 16000 atau 16000 kHz, atau 16 MHz.

Reset
Digunakan untuk mengulang program Arduino dari awal atau Reset.

Digital Pins I / O
Papan Arduino UNO memiliki 14 Digital Pin. Berfungsi untuk memberikan nilai logika ( 0 atau 1 ). Pin berlabel " ~ " adalah pin-pin PWM ( Pulse Width Modulation ) yang dapat digunakan untuk menghasilkan PWM.

Analog Pins
Papan Arduino UNO memiliki 6 pin analog A0 sampai A5. Digunakan untuk membaca sinyal atau sensor analog seperti sensor jarak, suhu dsb, dan mengubahnya menjadi nilai digital.

LED Power Indicator
Lampu ini akan menyala dan menandakan Papan Arduino mendapatkan supply listrik dengan baik


4.Percobaan [Kembali]