Senin, 29 April 2024

Laporan Akhir 2 - Modul 3

  





Percobaan 4

Komunikasi UART

1. Foto Hardware dan Diagram Blok [Kembali]

a. Hardware



1. Arduino Uno
Spesifikasi: 



2. LCD
Spesifikasi: 
  • Tampilan 2 baris @ 16 karakter, 5 x 8 pixel
  • Display controller: HD44780 (standar industri LCD)
  • Dilengkapi lampu latar warna biru/hijau/kuning
  • Sudut pandang lebar dengan tingkat kontras yang dapat diatur dan terlihat jelas
  • Tegangan kerja: 5V DC
  • Dimensi modul: 80 x 36 x 12 mm
  • Dimensi layar tampilan: 64,5 mm x 16 mm

3. Keypad




Spesifikasi: 
- 16 input digital
- Layout 4x5 dengan 20 tombol
- Support tegangan 0-5V DC

b. Diagram Blok



2. PROSEDUR PERCOBAAN [Kembali]

  • Rangkai semua komponen 
  • Buat program di aplikasi arduino IDE
  • Setelah selesai masukkan program ke arduino 
  • Jalankan program pada simulasi dan cobakan dengan modul


3. RANGKAIAN SIMULASI DAN PRINSIP KERJA[Kembali]



Prinsip Kerja :

Master Arduino:

Pada program master arduino Pada kode master Arduino, prinsip kerjanya adalah membaca input dari keypad menggunakan library Keypad dan mengirimkan data yang diperoleh melalui komunikasi serial. Setelah mendefinisikan konfigurasi keypad dan inisialisasi komunikasi serial, program berjalan di dalam loop() dengan melakukan pemantauan terhadap input dari keypad. Ketika tombol ditekan, nilai yang dikodekan dari tombol tersebut dibaca dan dikirim melalui Serial.write(). Proses ini diulang dengan penundaan singkat untuk terus memantau input dari keypad.

Slave Arduino:

Pada program slave arduino, prinsip kerjanya adalah menerima data yang dikirimkan oleh master melalui komunikasi serial, dan menampilkan data tersebut pada layar LCD. Setelah menginisialisasi komunikasi serial dan LCD, program berjalan di dalam loop() dengan menampilkan pesan "Tombol :" pada layar LCD. Jika data tersedia di port serial, maka data tersebut dibaca menggunakan Serial.read(). Kemudian, karakter yang diterima akan ditampilkan pada layar LCD. Proses ini terus berjalan, sehingga layar LCD akan menampilkan karakter yang dikirim oleh master melalui komunikasi serial.

4. FLOWCHART DAN LISTING PROGRAM [Kembali]

a. Flowchart



b. Listing Program

Master Arduino

// MASTER
#include <Keypad.h>
const byte ROWS = 4;
const byte COLS = 3;
// Array to represent keys on keypad
char hexaKeys[ROWS][COLS] = {
 {'1', '2', '3'},
 {'4', '5', '6'},
 {'7', '8', '9'},
 {'*', '0', '#'}
};
byte rowPins[ROWS] = {7, 6, 5, 4};
byte colPins[COLS] = {8, 9 , 10};
// Create keypad object
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup()
{
Serial.begin(9600);
}
void loop()
{
 char customKey = customKeypad.getKey();
 if (customKey)
 {
 Serial.write(customKey);
 }
 delay(20);
}


Slave Arduino

//SLAVE
#include <LiquidCrystal.h>
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);
char message;
void setup()
{
 Serial.begin(9600);
 lcd.begin(16, 2);
}
void loop()
{
 lcd.setCursor(0, 0);
 lcd.print("Tombol :");
 if (Serial.available())
{
 message = Serial.read();
 if (message)
 {
 lcd.print(message);
 }
}
}

5. KONDISI [Kembali]
  

Modul 3 - Percobaan 4 Komunikasi UART


6. VIDEO RANGKAIAN [Kembali]




7. ANALISA [Kembali]






8. LINK DOWNLOAD [Kembali]

HTML                                       klik disini

Program Arduino Master          klik disini

Program Arduino Slave            klik disini

Video Percobaan                      klik disini

Datasheet Arduino                    klik disini 

Download Datasheet Keypad  klik disini

Download Datasheet LCD        klik disini











Laporan Akhir 1 - Modul 3

  





Percobaan 2

Komunikasi SPI Menggunakan Arduino

1. Foto Hardware dan Diagram Blok [Kembali]

a. Hardware

 

    1. Arduino Uno


Spesifikasi Arduino Uno:


2. Dipswitch
Spesifikasi:
Slide Type, Tin Plated, SPST DIP Switch Series
Spesifikasi Teknis:
- Contact Resistance = 50 - 100 M{o}
- Contact Rating = 24VDC, 25mA at Make & Brake
50VDC, 100mA at Steade State

3. Seven Segment


Spesifikasi: 
- Jumlah digit 1 - Warna : Red Super Bright - Common : Anoda - Dimensi : 5" (inch)

b. Diagram Blok





2. PROSEDUR PERCOBAAN [Kembali]

  • Rangkai semua komponen 
  • Buat program di aplikasi arduino IDE
  • Setelah selesai masukkan program ke arduino 
  • Jalankan program pada simulasi dan cobakan dengan modul


3. RANGKAIAN SIMULASI DAN PRINSIP KERJA[Kembali]






Prinsip Kerja :

Master Arduino:

Pada program master arduino, prinsip kerja utamanya adalah mengontrol komunikasi SPI antara master dan slave, serta membaca nilai dari dip switch untuk menentukan nilai yang akan dikirimkan ke slave. Pertama, diatur pin-pin yang terhubung dengan dip switch sebagai input pull-up. Kemudian, inisialisasi komunikasi Serial dan SPI dilakukan di dalam setup(). Komunikasi SPI diatur pada mode slave dengan memastikan pin SS (Slave Select) tetap tinggi sehingga tidak ada koneksi dengan slave pada awalnya. Pada loop(), nilai dari dip switch dibaca dan dipilih nilai yang akan dikirim ke slave. SS kemudian diturunkan untuk memulai komunikasi dengan slave, nilai dipilih dikirimkan ke slave menggunakan SPI.transfer(), dan nilai dari slave juga diterima melalui SPI.transfer(). Ada penundaan 1 detik sebelum proses berulang kembali.

Slave Arduino:

Pada program slave arduino, kode mengatur tampilan tujuh segmen berdasarkan nilai yang diterima dari master. Pada setup(), komunikasi Serial diinisialisasi dan pin-pin segment ditetapkan sebagai output. Mode SPI diatur pada mode slave dan interupsi SPI diaktifkan untuk mengatasi data yang diterima dari master. Di dalam loop(), nilai yang diterima dari master digunakan untuk menampilkan karakter pada tujuh segmen. Fungsi displayCharacter() digunakan untuk menetapkan pola pencahayaan pada segmen-segmen berdasarkan nilai yang diterima dari master. Proses ini diulang setelah penundaan 1 detik untuk menampilkan karakter yang baru.


4. FLOWCHART DAN LISTING PROGRAM [Kembali]

a. Flowchart
Master Arduino



Slave Arduino





b. Listing Program

Master Arduino

//Master Arduino
#include<SPI.h> //Library for SPI
int dip[] = {2,3,4,5,6,7,8,9};
int dipvalue[] = {};
void setup (){
 Serial.begin(9600); //Starts Serial Communication at Baud Rate 115200
 for(int i = 0; i < 8; i++){
 pinMode(dip[i], INPUT_PULLUP);
 }
 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;
 int x = 1;
 for(int i = 0; i < 8; i++){
 dipvalue[i] = digitalRead(dip[i]);
 if(dipvalue[i] == LOW){
 x = dip[i];
 }
 }
 digitalWrite(SS, LOW); //Starts communication with Slave connected to master
Mastersend = x;
 Serial.println(Mastersend);
 SPI.transfer(Mastersend); //Send the mastersend value to slave also receives value from slave
 delay(1000);
}


Slave Arduino

//Slave Arduino:
#include<SPI.h>
const int segmentPins[] = {9, 8, 7, 6, 5, 4, 3, 2};
volatile boolean received = false;
volatile byte Slavereceived;
int index;
void setup(){
 Serial.begin(9600);
 for (int i = 0; i < 8; i++) {
 pinMode(segmentPins[i], OUTPUT);
 }
 SPCR |= _BV(SPE); //Turn on SPI in Slave Mode
 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(){
 Serial.println(Slavereceived);
 if(received){//Logic to SET LED ON OR OFF depending upon the value recerived from master
 displayCharacter(Slavereceived);
 delay(1000);
 }
}
void displayCharacter(int ch) {
 byte patterns[10][7] = {
 {0, 0, 0, 0, 0, 0, 1}, // 0
 {1, 0, 0, 1, 1, 1, 1}, // 1
 {0, 0, 1, 0, 0, 1, 0}, // 2
 {0, 0, 0, 0, 1, 1, 0}, // 3
 {1, 0, 0, 1, 1, 0, 0}, // 4
 {0, 1, 0, 0, 1, 0, 0}, // 5
 {0, 1, 0, 0, 0, 0, 0}, // 6
 {0, 0, 0, 1, 1, 1, 1}, // 7
 {0, 0, 0, 0, 0, 0, 0}, // 8
 {0, 0, 0, 0, 1, 0, 0} // 9
 };
if ((ch >= 0 && ch <= 9)) {
 // Get the digit index (0-9) from the character
 int index = ch;
 // Write the pattern to the segment pins
 for (int i = 0; i < 7; i++) {
 digitalWrite(segmentPins[i], patterns[index][i]);
 }
 }
}

5. KONDISI [Kembali]
  

Modul 3 - Percobaan 2 Komunikasi SPI Menggunakan Arduino

6. VIDEO RANGKAIAN [Kembali]






7. ANALISA [Kembali]





8. LINK DOWNLOAD [Kembali]

HTML                                   klik disini

Program Arduino Master      klik disini

Program Arduino Slave        klik disini

Video Percobaan                 klik disini

Datasheet Arduino               klik disini 

Datasheet Dipswitch            klik disini

Datasheet Seven Segment   klik disini










MODUL 4

  [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI     1. Pendahuluan     2. Tujuan     3. Alat dan Bahan     4. Dasar Teori     5. Perc...