BAB 1-5 - thesis.binus.ac.idthesis.binus.ac.id/doc/Bab3/2009-2-00424-SK Bab 3.pdf · apabila nilai...
Transcript of BAB 1-5 - thesis.binus.ac.idthesis.binus.ac.id/doc/Bab3/2009-2-00424-SK Bab 3.pdf · apabila nilai...
61
BAB 3
PERANCANGAN SISTEM
MP3 player dengan RFID dirancang untuk mendeteksi RFID Tag dan membaca
data pada RFID tag. Data dari RFID tag merupakan nama file audio yang harus
dimainkan oleh MP3 player dengan RFID. Data yang ditulis ke RFID tag merupakan
nama dari file audio sebanyak 8 karakter. Karakter pertama dari nama file merupakan
kode untuk jenis objek, tetapi pada percobaan penelitian karakter pertama hanya
menggunakan karakter M. Karakter ke 2 sampai ke 7 merupakan nomor objek.
Sedangkan karakter ke 8 merupakan karakter penanda bahasa. Pada penelitian karakter
ke 8 diberi angka 0 untuk menandakan bahwa file audio dan text yang dibaca
menggunakan bahasa Indonesia. Apabila karakter ke 8 diberi angka 1 maka file audio
dan text yang dibaca menggunakan bahasa Inggris. Karakter ke 9 sampai karakter ke 11
merupakan extension dari file. Karakter ke 9 sampai dengan karakter ke 11 tidak ditulis
ke RFID tag.
Data yang ditulis ke RFID tag merupakan nama file dengan format 8.3 dengan 3
karakter extension tidak ditulis ke RFID tag dan karakter ke 8 yang menandakan bahasa
akan diberi karakter spasi. Dan pada saat dibaca karakter ke 8 dari nama file yang dibaca
akan diganti dengan kode bahasa. Nilai dari kode bahasa tergantung dari pilihan user,
dan user dapat melihat kode bahasa yang dipilih melalui LCD. Setelah karakter ke 8
diganti dengan kode bahasa, mikrokontroler akan mencari file audio dan text pada SD
card. Apabila file audio berhasil ditemukan maka mikrokontroler akan membaca file
secara keseluruhan dan melakukan streaming ke MP3 decoder. Dan apabila tidak
62
ditemukan, mikrokontroler akan menampilkan kalimat ‘File tidak ditemukan’ ke LCD.
Setelah file audio ditemukan mikrokontroler akan mencari file text pada SD card.
Apabila file text berhasil ditemukan maka isi dari file text tersebut akan ditampilkan
melalui LCD, dan apabila tidak ditemukan maka mikrokontroler hanya akan memainkan
file audio saja.
Perancangan sistem ini secara umum dapat dibagi kedalam dua bagian, yaitu
perancangan perangkat keras dan perancangan piranti lunak. Perancangan perangkat
keras terdiri dari perancangan berbagai komponen elektronik yang digunakan dalam
sistem. Perancangan piranti lunak terdiri dari perancangan program yang digunakan
dalam sistem.
3.1 Perancangan Perangkat Keras
Perancangan perangkat keras pada sistem terdiri dari gabungan beberapa modul -
modul yang dapat dilihat pada gambar 3.1.
Gambar 3.1 Diagram Blok Perangkat Keras Sistem
63
Penjelasan mengenai bagian – bagian dari diagram blok:
1. Penggunaan kabel serial DB-9 sebagai penghubung antara PC dengan MAX
3232 yang digunakan sebagai pengubah level sinyal RS232 (-12 s.d. +12 V)
ke dalam logic TTL (0 s.d. +3.3 V).
2. Setelah sinyal sudah dikonversi melalui MAX3232, maka dapat dilakukan
Komunikasi PC dengan mikrokontroler secara dua arah mengunakan UART
(Universal Asynchronous Receive Transmit).
3. Komunikasi RFID dengan mikrokontroler secara dua arah menggunakan
I2C.
4. Push button digunakan sebagai input pada mikrokontroler.
5. Komunikasi VS1002D dengan mikrokontroler secara dua arah mengunakan
SPI (Serial Peripheral Interface).
6. Komunikasi LCD LPH 7779 dengan mikrokontroler secara satu arah
menggunakan SPI (Serial Peripheral Interface).
7. Komunikasi MMC atau SD card dengan mikrokontroler secara dua arah
menggunakan SPI (Serial Peripheral Interface).
Sistem dikondisikan dalam keadaan standby dan siap untuk menerima instruksi
dari PC yang dirancang untuk melakukan pembacaan atau penulisan tag RFID melalui
serial port, setelah mendapat instruksi dari PC maka mikrokontroler AVR akan
memproses data dari modul RFID. RFID berkomunikasi secara dua arah dengan
mikrokontroler AVR menggunakan jalur I2C sehingga RFID dapat melakukan
pembacaan atau penulisan pada tag RFID. Sedangkan jika sistem tidak dihubungkan ke
PC, sistem akan standby sampai modul RFID mendeteksi adanya tag RFID, ketika
64
modul RFID mendeteksi adanya tag RFID, mikrokontroler AVR akan menginstruksikan
modul RFID untuk melakukan pembacaan pada tag RFID dan mikrokontroler
menginstruksikan pembacaan data pada MMC atau SD card dan membandingkan data
yang ada pada tag RFID dengan data yang ada pada MMC atau SD card, jika data yang
terdapat pada tag RFID sesuai dengan data yang ada pada MMC atau SD card, maka
mikrokontroler akan membaca data yang berupa file yang berformat .MP3 dan .txt di
dalam MMC atau SD card, dan Mikrokontroler memerintahkan modul VS1002D untuk
melakukan streaming file yang berformat .MP3 dan akan menampilkan isi file yang
berformat .txt pada LCD LPH7779.
3.1.1 Modul Mikrokontroler
Gambar 3.2 Modul Mikrokontroler
65
Dalam sistem ini mikrokontroler AVR ATMega 32L berfungsi sebagai
kontroler dari sistem, pada sistem akan dilakukan pemrosesan antara lain
memproses input yang berasal dari push button, RFID, MMC atau SD card,
VS1002D, interface PC, dan menampilkan output LCD.
3.1.2 Modul RFID
Gambar 3.3 Modul RFID
Dalam sistem, RFID berkomunikasi dengan mikrokontroler AVR untuk
melakukan tugas pembacaan tag RFID dan penulisan tag RFID. Jenis komunikasi
yang digunakan adalah I2C dengan menggunakan pin SDA dan SCL pada
mikrokontroler AVR. Untuk supply tegangan digunakan tegangan 3.3 V sebagai
sumber tegangan RFID, dan terdapat tag indikator yang memang dipasang untuk
mengetahui jika RFID reader mendeteksi adanya tag. Karena pin RFIDOUT pada
modul RFID berfungsi sebagai tag Indikator, ketika RFID mendeteksi adanya tag,
maka Pin RFIDOUT akan berlogika low‘0’ dan menyebabkan tegangan yang
melalui resistor akan turun menuju katoda LED sehingga LED tersebut menyala,
jika RFID tidak mendeteksi adanya tag, maka pin RFIDOUT akan berlogika high
66
’1’ dan menyebabkan tegangan pada anoda LED tidak akan mengalir menuju
katoda.
3.1.3 Modul MAX3232
Gambar 3.4 Modul MAX3232
Komunikasi serial antara komputer dengan mikrokontroler AVR dikerjakan
melalui IC MAX3232 yang berfungsi sebagai pengubah tegangan dari PC menuju
mikrokontroler AVR, yaitu dari logic RS232 (-12 s.d. +12 V) ke dalam logic TTL
(0 s.d. +3.3 V). Komunikasi dikerjakan melalui pin TX dan RX dimana RX1
(R1IN) yang terkoneksi ke PC berfungsi untuk mengirimkan data dari PC dan
diterima oleh RX (R1OUT) yang terkoneksi dengan mikrokontroler AVR yang
berfungsi sebagai penerima dan begitu juga sebaliknya dengan TX (T1IN) yang
terkoneksi ke mikrokontroler AVR dengan TX1 (T1OUT) yang terkoneksi ke PC.
Data yang dikirim dalam format 8 bit data dengan LSB dikirim terlebih dahulu,
serta 1 start bit (berlogika 0) dan 1 stop bit (berlogika 1). Untuk pengaturan
baudrate yang digunakan tergantung dari nilai clock yang digunakan pada
mikrokontroler AVR dan nilai baudrate antara AVR (U11) dengan PC harus
disamakan. Nilai clock mikrokontroler pada sistem sebesar 8MHz, untuk
67
menghitung nilai baudrate dan UBRR (USART Baudrate Register) didapat melalui
persamaan: 1
16
)1(16
−=
+=
BaudFoscUBRR
UBRRFoscBaud
3.1.4 Modul LCD LPH 7779
Gambar 3.5 Modul Breakout LCD LPH 7779 dan Backlight LCD
Modul LCD yang digunakan memiliki tampilan 48 baris x 84 kolom dengan
konsumsi daya rendah. Modul LCD ini dihubungkan dengan mikrokontroler AVR
yang bertujuan sebagai output tampilan. Untuk mengakses LCD LPH7779, maka
harus meng-set fungsi-fungsi pin pada LCD tersebut. Karena LCD LPH7779
hanya berkomunikasi dengan cara SPI (Serial Peripheral Interface).
Mikrokontroler AVR sebagai master harus memberikan clock kepada slave yang
berupa LCD LPH7779 melalui pin SCK pada LCD LPH7779. Mikrokontroler
AVR sebagai master akan mengirimkan instruksi atau data menuju slave input
LCD LPH7779 melalui pin serial MOSI. Pin LCD CS untuk mengaktifkan LCD
tersebut, maka mikrokontroler AVR harus meng-set pin LCD CS dengan logika
68
low ‘0’ sedangkan untuk menonaktifkan, maka mikrokontroler AVR harus meng-
set pin LCD CS dengan logika high‘1’. Pin LCD D/C mempunyai fungsi untuk
menentukan apakah data atau instruksi yang akan dikirim mikrokontroler AVR ke
LCD LPH7779 melalui pin MOSI, untuk mengirimkan instruksi pada LCD
LPH7779 maka mikrokontroler AVR harus meng-set pin LCD D/C dengan logika
low ‘0’, sedangkan untuk mengirimkan data maka harus meng-set pin LCD D atau
C dengan logika high ‘1’. Pin LCD Res digunakan untuk me-reset LCD LPH7779,
untuk me-reset LCD LPH7779 maka mikrokontroler AVR harus meberikan logika
low ‘0’.
3.1.5 Modul MMC Atau SD Card
Gambar 3.6 Modul Breakout MMC Atau SD Card
Modul MMC atau SD card pada sistem digunakan sebagai media
penyimpanan file yang berformat .MP3 dan .txt. Mikrokontroler AVR memberikan
instruksi atau data melalui komunikasi SPI (Serial Peripheral Interface).
Mikrokontroler AVR sebagai master akan mengirimkan instruksi atau data menuju
slave input MMC atau SD card melalui pin serial MOSI. Pin serial MISO
berfungsi sebagai pin slave output berupa data yang dikirimkan dari MMC atau
SD card sebanyak 512 Byte yang akan masuk ke dalam mikrokontroler AVR.
69
Mikrokontroler AVR sebagai master harus memberikan clock kepada slave MMC
atau SD card melalui pin SCK. Mikrokontroler AVR harus memilih slave yang
aktif, untuk mengaktifkan MMC atau SD card pada pin MMC CS, mikrokontroler
AVR harus memberikan logika low‘0’, sedangkan untuk menonaktifkan MMC
atau SD card, mikrokontroler harus memberikan logika high‘1’ pada pin MMC
CS.
3.1.6 Modul VS1002D
Gambar 3.7 Modul Breakout VS1002D
Pada sistem ini modul VS1002D yang berfungsi sebagai MP3 decoder dan
digunakan untuk streaming file yang berformat .MP3. Mikrokontroler AVR
memberikan instruksi atau data melalui komunikasi SPI (Serial Peripheral
Interface). Mikrokontroler AVR sebagai master akan mengirimkan instruksi atau
data menuju slave input VS1002 melalui pin serial MOSI, pada saat melakukan
streaming, data yang diproses sebanyak 32 Byte. Pin serial MISO berfungsi
sebagai pin slave output berupa data yang dikirimkan dari VS1002D yang akan
masuk ke dalam mikrokontroler AVR. Mikrokontroler AVR sebagai master harus
memberikan clock kepada slave VS1002D melalui pin SCK. Mikrokontroler AVR
70
harus memilih slave yang aktif, untuk mengaktifkan VS1002D pada pin VS_SS,
mikrokontroler AVR harus memberikan logika low‘0’, sedangkan untuk
menonaktifkan VS_SS, mikrokontroler harus memberikan logika high‘1’ pada pin
VS_SS. Pin DREQ berfungsi untuk mengetahui status busy, pin DREQ akan
berlogika low ‘0’ jika busy, sedangkan pin DREQ akan berlogika high‘1’ jika
tidak busy. Pin RST digunakan untuk me-reset VS1002D, untuk me-reset
VS1002D maka mikrokontroler AVR harus memberikan logika low‘0’. Pin
RIGHT, merupakan output yang digunakan untuk speaker earphone bagian kanan,
Pin LEFT, merupakan output yang digunakan untuk speaker earphone bagian kiri,
Pin GBUF, merupakan ground yang dihubungkan dengan ground earphone.
3.1.7 Modul Push Button
Gambar 3.8 Modul Push Button
Push button dalam sistem dibuat secara aktif low untuk digunakan sebagai
input-an ke dalam mikokontroler AVR, yang masing-masing berfungsi sebagai
pengesetan bahasa, play atau pause pada saat sistem sedang memainkan file audio,
71
dan pengesetan suara, VOLUP untuk membesarkan suara, dan VOLDOWN untuk
mengecilkan suara ketika sistem sedang memainkan file audio.
3.2 Perancangan Piranti Lunak
Perancangan piranti lunak merupakan salah satu bagian dari sistem yang dibuat.
Perancangan piranti lunak pada sistem dibagi menjadi dua bagian yaitu perancangan
program untuk menghubungkan mikrokontroler dengan PC menggunakan Microsoft
Visual Studio 2005 dan perancangan program pada mikrokontroler AVR menggunakan
Code Vision AVR dengan bahasa C.
3.2.1 Perancangan Program Pada Mikrokontroler
Pada bagian ini perancangan program dibagi menjadi beberapa bagian
seperti perancangan program untuk berkomunikasi dengan PC secara serial
USART, RFID, VS1002, LCD, dan SD Card.
72
A. Diagram Alir Serial USART
Gambar 3.9 Diagram Alir Serial USART receive interrupt
Fungsi serial USART ini untuk menerima dan mengirimkan data dari
PC menuju mikrokontroler dan sebaliknya. Mikrokontroler berperan untuk
melakukan pembacaan dan penulisan tag RFID, lalu mentransmisikan data
tersebut menuju PC.
Setiap terjadi USART receive interrupt, maka data tersebut akan di-
buffer terlebih dahulu menuju variabel data. Data yang dikirimkan oleh PC
adalah data berupa karakter, untuk menghitung banyaknya data yang
73
dikirimkan oleh PC maka dibutuhkan sebuah counter. Ketika kondisi nilai
counter lebih besar sama dengan 11, maka data tesebut akan disimpan ke
variabel string udata, lalu apabila index pertama dari variabel udata bernilai
1, maka PC meminta mikrokontroler untuk membaca data pada tag RFID
dan mengirim data tag RFID yang sudah dibaca menuju PC. Sedangkan
apabila nilai index pertama dari variabel udata bernilai tidak sama dengan 1,
maka PC meminta mikrokontroler untuk melakukan penulisan data pada tag
RFID dari variabel udata dan mengirimkan informasi bahwa data berhasil
ditulis pada tag RFID atau tidak berhasil ditulis pada tag RFID.
B. Diagram Alir RFID Write
Gambar 3.10 Diagram Alir RFID Write
74
Fungsi RFID Write berfungsi untuk menulis data pada tag RFID, agar
dapat berkomunikasi dengan RFID, mikrokontroler harus berkomunikasi
secara I2C dengan RFID reader. Ketika fungsi RFID write dijalankan, RFID
reader akan mengecek apakah terdapat tag RFID, lalu RFID reader akan
memberitahu mikrokontroler dengan memberikan status select card dan
memberikan jenis tag yang berada pada RFID reader, jika status select card
sama dengan 0 atau berhasil, mikrokontroler akan meminta RFID reader
untuk login menuju sector yang ingin ditulis, lalu RFID reader akan
memberitahukan hasil dari login sector pada mikrokontroler yang berupa
status login sector, jika status login sector sama dengan 0x02 atau berhasil,
RFID reader akan menulis data sebanyak 11 karakter pada block yang
diinginkan, dan RFID reader akan memberitahukan mikrokontroler yaitu
status write data block, jika status write data block sama dengan 0 atau
berhasil, RFID reader akan mengirimkan kembali data yang sudah ditulis
menuju mikrokontroler sebagai konfirmasi bahwa data telah ditulis pada tag
RFID.
75
C. Diagram Alir RFID Read
Gambar 3.11 Diagram Alir RFID Read
Fungsi RFID read berfungsi untuk membaca data pada tag RFID. Agar
dapat berkomunikasi dengan RFID baik untuk melakukan pembacaan
maupun penulisan pada tag RFID, mikrokontroler harus berkomunikasi
secara I2C dengan RFID reader. Ketika fungsi RFID Read dijalankan, RFID
76
reader akan mengecek apakah terdapat tag RFID pada RFID reader, lalu
RFID reader akan memberitahukan mikrokontroler dengan memberikan
status select card dan memberikan jenis tag yang berada pada RFID reader,
jika status select card sama dengan 0 atau berhasil, mikrokontroler akan
meminta RFID reader untuk login menuju sector yang ingin dibaca, lalu
RFID reader akan memberitahukan hasil dari login sector pada
mikrokontroler yang berupa status login sector, jika status login sector sama
dengan 0x02 atau berhasil, RFID reader akan membaca data pada block
yang diinginkan, dan RFID reader akan memberitahukan mikrokontroler
yaitu status read data block, jika status read data block sama dengan 0 atau
berhasil, RFID reader akan mengirimkan data yang sudah dibaca menuju
mikrokontroler, dan memberikan nilai balik return 1 pada fungsi Read Tag .
D. Diagram Alir LCD Write
Gambar 3.12 Diagram Alir LCD Write
77
Fungsi LCD Write berfungsi untuk mengirimkan data dari
mikrokontroler menuju LCD, baik mengirimkan data ataupun mengirimkan
instruksi sebesar 8 bit. Komunikasi mikrokontroler dengan LCD
mengunakan komunikasi SPI (Serial Peripheral Interface), dimana
mikrokontroler sebagai master atau pengendali. Pertama mikrokontroler
mengaktifkan LCD_SS dengan memberi logika low ‘0’, kemudian
mikrokontroler memilih data atau instruksi yang akan diberikan menuju
LCD dengan memberikan nilai logika pada LCD_DC, jika mikrokontroler
memilih memberikan data yang berupa karakter kepada LCD,
mikrokontroler tersebut harus memberikan nilai logika high ‘1’ pada
LCD_DC, kemudian mikrokontroler memberikan data yang kemudian akan
ditampilkan. Mikrokontroler juga dapat memberikan instruksi untuk
melakukan pengaturan – pengaturan pada LCD seperti pengaturan kontras,
posisi LCD, normal mode dan lain - lain. dengan memberikan nilai logika
low ‘0’ pada LCD_DC, kemudian memasukan 8 bit nilai instruksinya.
78
E. Diagram Alir VS1002D Write
Gambar 3.13 Diagram Alir VS1002D Write
Fungsi VS1002 Write berfungsi untuk menulis perintah pada register
dan menulis data pada VS1002D. Dengan tahap pengecekan DREQ, apabila
DREQ berlogika low, maka VS1002D berstatus busy dan tidak dapat
menerima perintah atau data, sedangkan jika DREQ berlogika high, maka
VS1002D dapat menerima perintah atau data. Untuk mengirimkan perintah
pada VS1002D maka pin XDCS harus diberi logika high sementara pin
VS1002SS diberi logika low. Pengiriman perintah pada VS1002D dilakukan
untuk mengatur nilai register pada VS1002D seperti register clock, volume,
mode, dan lain-lain. Proses VS_Write dijalankan dengan mengirimkan
79
perintah write 1 byte dengan nilai 0x02 diikuti dengan alamatnya registernya
sepanjang 8 bit, dan lebar datanya 16 bit.
F. Diagram Alir VS1002D Write Data
SD_Buffer [512]
Count=0i=0
VS1002SS=1XDCS=0Count++
VS1002 Write Data (SD_Buffer[count])
i++
i=0
Count<512
Y
T
Y
T
i<=31T
Y
DREQ!=1
Gambar 3.14 Diagram Alir VS1002D Write Data
80
Fungsi VS1002 Write data berfungsi untuk melakukan streaming data
berformat MP3 yang dimulai dari header file MP3 dan data raw file MP3,
dari SD Card yang di-buffer sebanyak 512 Byte, data tersebut akan di –
stream menuju VS1002D, data tersebut dikirim sebanyak per 32 Byte dan
setiap pengiriman data sebanyak 32 byte, pin DREQ harus dicek, apabila pin
DREQ berlogika low, maka VS1002D berstatus busy dan tidak dapat
menerima perintah atau data, sedangkan jika pin DREQ berlogika high,
maka VS1002D dapat menerima instruksi untuk melakukan pengesetan
volume, bass, dan lain – lain, atau dapat menerima data raw untuk
streaming. Untuk melakukan streaming, data raw dikirimkan dengan
memberikan logika low pada pin XDCS.
G. Diagram Alir VS1002D Read
Gambar 3.15 Diagram Alir VS1002D read
Fungsi VS1002 Read berfungsi untuk membaca data yang berada pada
register VS1002D. Untuk menjalankan fungsi VS1002D Read pin DREQ
81
harus dicek terlebih dahulu, apabila DREQ berlogika low, maka VS1002
berstatus busy dan tidak dapat menerima perintah atau data, sedangkan jika
DREQ berlogika high, maka VS1002D dapat menerima instruksi yang
berupa perintah pembacaan yang digunakan untuk membaca isi nilai register
pada VS1002D, misalkan pada saat melakukan penulisan nilai clock ,
volume, sample rate, dan mode register setelah itu dapat dilihat apakah nilai
yang ada pada register sudah sesuai dengan nilai yang diset. Untuk
melakukan perintah pembacaan, maka harus memberi perintah read 1 byte
dengan nilai 0x03 diikuti dengan alamat register yang akan dibaca dan
selanjutnya VS1002D akan mengirimkan data yang ingin dibaca.
H. Diagram Alir Inisialisasi SD card
Untuk mengakses SD card proses inisialisasi harus dilakukan. Proses
inisialisasi SD card yang wajib dilakukan adalah reset dan INIT. Sedangkan
proses Set Block Length tidak wajib dilakukan karena nilai standar yang
biasa digunakan adalah 512 Bytes.
82
Gambar 3.16 Diagram Alir Inisialisasi SD card
Tahap pertama yang dilakukan pada proses inisialisasi adalah reset.
Sebelum memberikan perintah reset pada SD card, pin SD_Card_SS harus
diberi logika high lalu SD card harus diberi data dummy dengan cara
mengirimkan 10 data bernilai 0xFF atau 80 clock. Lalu SD_Card_SS harus
diberi logika low. Kemudian perintah reset dapat dijalankan dengan
mengirimkan perintah reset yang bernilai 0x40 diikuti dengan 4 bytes
argument dengan nilai 0x00 dan 1 byte cyclic redundancy check (CRC)
dengan nilai 0x95. Lalu mikrokontroler harus mengecek apakah respon dari
SD card bernilai 0x01 dengan membaca data dari SD card melalui pin
83
MISO. Apabila respon yang diberikan SD card tidak bernilai 0x01, maka
proses reset SD card harus diulang dari awal. dan apabila respon yang
diberikan SD card bernilai 0x01 maka proses reset SD card telah berhasil.
Lalu proses SD card INIT dilakukan dengan mengirimkan perintah
INIT yang bernilai 0x41 diikuti dengan 4 bytes argument yang bernilai 0x00
dan 1 byte CRC dengan nilai 0xFF. Lalu mikrokontroler harus mengecek
apakah respon dari SD card bernilai 0x00. Apabila respon yang diberikan
SD card tidak bernilai 0x00 maka proses SD card INIT harus diulang dari
awal, dan apabila respon yang diberikan bernilai 0x00 maka proses SD card
INIT telah berhasil.
Proses selanjutnya adalah proses SD card Set Block Length. Proses SD
card Set Block Length tidak harus dijalankan, karena standar nilai block
length pada SD card adalah 512 bytes. Proses ini dilakukan hanya untuk
memastikan nilai block length pada SD card bernilai 512 bytes. Proses SD
card Set Block Length dijalankan dengan mengirimkan perintah Set Block
Length yang bernilai 0x50 diikuti dengan 4 bytes argument bernilai 0x00
dan 1 byte CRC dengan nilai 0xFF. Apabila respon yang diberikan SD card
tidak bernilai 0x00 maka proses SD card Set Block Length harus diulang
dari awal, dan apabila respon yang diberikan bernilai 0x00 maka proses SD
card Set Block Length telah berhasil.
Setelah tiga proses inisialisasi SD card telah berhasil dilakukan maka
mikrokontroler harus mengirimkan 1 byte data dummy dengan nilai 0xFF
84
atau 8 clock. Dan untuk menghentikan komunikasi mikrokontroler dengan
SD card maka pin SD_Card_SS harus diberi logika high.
I. Diagram Alir Pembacaan SD card
Untuk pembacaan data pada alamat tertentu di SD card ada beberapa
tahap yang harus dilakukan. Jumlah data yang dibaca tergantung dari nilai
Set Block Length pada saat inisialisasi. Standar nilai dari Set Block Length
adalah 512 bytes.
85
Gambar 3.17 Diagram Alir Pembacaan SD card
Proses SD card Read dimulai dengan memberikan logika low pada
SD_Card_SS. Selanjutnya variabel count1 diberi nilai 0. Lalu perintah read
yang bernilai 0x51 dikirimkan diikuti dengan 4 bytes argument yang bernilai
86
alamat dari SD card yang ingin dibaca dan 1 byte CRC yang bernilai 0xFF.
Setelah pengiriman perintah read, count2 diberi nilai 0. Selanjutnya
mikrokontroler harus melihat apakah respon dari SD card bernilai 0x00.
Apabila respon dari SD card tidak bernilai 0x00 maka pembacaan respon
dari SD card diulang hingga 10 kali dengan menghitung jumlah
pengulangan menggunakan variabel count2. Apabila setelah 10 kali
pembacaan respon nilai dari respon SD card tidak ada yang bernilai 0x00,
maka pengiriman perintah read pada SD card akan diulang. Berdasarkan
pendapat tim Innovative Electronic (2007, p3) pengulangan pengiriman
perintah SD card diulang hingga 250 kali dengan menghitung jumlah
pengulangan menggunakan variabel count1. Apabila hingga 250 kali
pengulangan respon dari SD card tidak ada yang bernilai 0x00 maka proses
SD card Read gagal.
Apabila respon dari SD card bernilai 0x00, maka proses SD card Read
dapat dilanjutkan ke pembacaan respon yang kedua dari SD card yang
bernilai 0xFE. Respon kedua dari SD card yang bernilai 0xFE merupakan
tanda bahwa SD card telah siap mengirimkan data yang diminta.
Berdasarkan pendapat tim Innovative Electronic (2007, p3) apabila respon
dari SD card tidak bernilai 0xFE maka pembacaan respon dari SD card
diulang hingga 9*250 kali dengan menghitung jumlah pengulangan
menggunakan variabel count3. Apabila setelah 9*250 kali pembacaan respon
dari SD card tidak bernilai 0xFE, maka proses SD card Read gagal.
87
Dan apabila respon yang diberikan SD card sudah bernilai 0xFE maka
proses SD card Read dapat dilanjutkan ke pembacaan data sebanyak 512
bytes dengan menggunakan variabel array SD_buffer dengan variabel
count4 digunakan untuk menghitung jumlahnya data. Setelah 512 bytes data
dikirimkan maka SD card akan mengirimkan 2 bytes CRC di mana nilai dari
2 bytes CRC tersebut tidak perlu diperhatikan. Setelah penerimaan 2 bytes
CRC dilakukan maka proses SD card telah sukses dijalankan.
J. Diagram Alir Pencarian File
Pada penelitian file yang dapat ditemukan hanya pada root directory.
Ukuran dari root directory adalah 512 entries * 32 bytes. Untuk mencari
sebuah file pada root directory mikrokontroler harus mencari nama file pada
root directory lalu menghitung cluster pertama dari file tersebut dengan
melihat byte ke 27 dan ke 28 dari byte pertama file tersebut ditemukan.
88
Gambar 3.18 Diagram Alir Pencarian file
Proses Search File’s Cluster dijalankan dengan memberi nilai 0 pada
variabel count dan count2. Variabel count2 digunakan sebagai indeks untuk
menunjuk data pada variabel array File_Digit dimana variabel File_Digit
89
merupakan variabel yang menyimpan nama file yang dicari. Selanjutnya
mikrokontroler harus membaca data sebanyak 512 bytes pada alamat awal
root directory dan menyimpan 512 bytes data tersebut ke dalam variabel
array SD_buffer. Lalu variabel count1 dan count3 diberi nilai 0. Variabel
count1 digunakan untuk menunjuk indeks pada SD_buffer. data pada
SD_buffer akan dicocokkan dengan karakter pertama dari nama file yang
dicari. Apabila data pada SD_buffer ada yang cocok dengan karakter
pertama pada file yang dicari maka byte selanjutnya pada SD_buffer
dicocokkan menggunakan count3 sebagai indeks dari SD_buffer. Apabila 10
data selanjutnya dari SD_buffer juga cocok dengan karakter selanjutnya
pada File_Digit maka file ditemukan dan cluster pertama dari file yang dicari
dapat ditemukan pada byte ke 27 dan ke 28 dari byte pertama pada
SD_buffer yang cocok dengan File_Digit.
Apabila data pada SD_buffer tidak cocok dengan File_Digit maka
count1 dan count3 akan terus ditambah hingga nilainya 511, apabila count1
dan count3 telah melebihi 511 maka mikrokontroler harus kembali membaca
dari SD card dengan alamat pembacaan merupakan alamat awal root
directory ditambah dengan nilai pada variabel count, di mana sebelum
ditambah dengan alamat awal root directory nilai variabel count harus
ditambah terlebih dahulu dengan Number of Root Entries yang bernilai 512.
Setelah itu proses pencarian diulang dari awal. Proses Search File’s Cluster
diulang hingga nilai count sama dengan Number of Root Entries * 32.
90
K. Diagram Alir Keseluruhan Sistem
MP3 Player dengan RFID
Microcontroller InitializationSD Card InitializationVS1002 Initialization
RFID InitializationLCD Initialization
Print tampilan awal LCDDengan status Play/
Pause, Language, dan Volume yang terakhir
(Standby)
Ada Tag? Play / Pause VOL UP? VOL DOWN?Language?
1
Baca data Tag
Ganti karakter ke 8 dengan kode bahasa dan
menambahkan 3 karakter MP3 ke
data tag yang dibaca
Cari file MP3
File ada?
Ganti 3 karakter MP3 dengan TXT.
Cari file textMainkan MP3
Dan tampilkan isi file text ke LCD
bila ada
Tampilkan“File tidak ditemukan”
ke LCD
1
1
1
Ganti kode bahasaGanti status Play/Pause
Apabila ada MP3 yang sedang
dimainkan maka MP3 akan dipause.
Apabila tidak ada maka tidak
berpengaruh apapun
1
Turunkan nilai register Volume pada VS1002
dengan kelipatan yang telah
ditentukan dan ubah status volume pada
mikrokontroler
1
Naikkan nilai register Volume pada
VS1002 dengan kelipatan yang telah ditentukan dan ubah status volume pada
mikrokontroler
1
Y
T
Y
T T TT T
Y YY Y
1 11 1 1
Gambar 3.19 Diagram Alir Keseluruhan Sistem
91
Pada awal sistem akan melakukan proses inisialisasi setelah itu maka
sistem dalam keadaan standby, menunggu adanya RFID tag. Ketika RFID
tag terdeteksi, maka RFID reader akan membaca data yang berada pada
RFID tag dan mengirimkan data yang telah dibaca menuju mikrokontroler,
lalu mikrokontroler akan merubah karakter kedelapan pada data tag yang
sudah dibaca oleh RFID reader dengan kode bahasa dan menambahkan
extension file .MP3, sehingga data tersebut menjadi sebuah nama file.
Kemudian mikrokontroler akan mencari file .MP3 pada SD card, apabila
ditemukan, maka file .MP3 akan dimainkan setelah itu extension dari file
akan kembali dirubah yang awalnya ber-extension .MP3 menjadi .txt.
Kemudian mikrokontroler akan mencari file txt pada SD card, apabila
ditemukan maka file .txt akan ditampilkan pada LCD. Apabila file .MP3
tidak ditemukan maka LCD akan menampilkan kalimat ‘File tidak
ditemukan’.
Sedangkan apabila tombol Play/Pause ditekan maka status Play/Pause
pada mikrokontroler akan berubah sesuai dengan status sebelumnya. Apabila
pada saat ditekan ada file audio yang sedang dimainkan maka file audio
tersebut akan di-pause. Sedangkan apabila tidak ada file audio yang sedang
dimainkan maka penekanan tombol Play/Pause tidak akan berpengaruh
apapun.
Penekanan tombol Language hanya akan mengganti status kode bahasa.
Status kode bahasa hanya akan berpengaruh pada file audio yang akan
dimainkan selanjutnya.
92
Sedangkan penekanan tombol VOL UP atau VOL DOWN akan
memerintahkan mikrokontroler untuk mengubah nilai register Volume pada
VS1002D. Apabila diberikan perintah VOL UP maka nilai register Volume
dikurangi, sementara apabila diberikan perintah VOL DOWN maka nilai
register Volume akan ditambah.
3.2.2 Perancangan Program Untuk Menghubungkan Mikrokontroler Dengan
PC
Perancangan program untuk menghubungkan PC dengan mikrokontroler
menggunakan komunikasi serial, secara umum program pada PC berfungsi sebagai
penghubung antara user dengan mikrokontroler, card reader, dan RFID. Antara
lain, perintah untuk membaca tag RFID, perintah untuk menulis tag RFID,
perintah untuk menambahkan dan menghapus file pada SD Card.
Gambar 3.20 Tampilan User Interface Utama
93
Gambar 3.21 User Interface untuk Pemilihan File
Secara umum program pada komputer berfungsi sebagai penghubung antara
user dengan RFID. Perintah-perintah yang ada pada program ini adalah membaca
isi tag, menambahkan, dan mengurangi data pada memory card. Adapun fungsi
dari setiap bagian pada program interface adalah sebagai berikut :
1. Pilihan untuk memilih letak memory card
2. Tombol untuk membaca isi tag
3. Tombol untuk menambah file
4. Tombol untuk keluar dari program
5. Tombol untuk menghapus file
6. Tampilan informasi tag
7. Tampilan informasi memory card
8. Tampilan file .MP3 yang terdapat pada memory card
9. Tombol untuk memilih file .txt yang berbahasa Indonesia
10. Tombol untuk memilih file .txt yang berbahasa Inggris
11. Tombol untuk memilih file .MP3 yang berbahasa Indonesia
12. Tombol untuk memilih file .MP3 yang berbahasa Inggris
94
13. Tombol untuk menyimpan konfigurasi
14. Tombol untuk batal
Perintah ‘Cek’ berfungsi untuk untuk membaca nomor seri dan data dari
tag yang terdeteksi. Fungsi ini juga dapat dipakai untuk mendeteksi adanya tag.
Perintah ‘Tambah file’ berfungsi untuk memasukan data berupa file .MP3
dan .txt kedalam memory card. Kemudian melakukan penulisan data ke tag. Data
yang di masukkan kedalam tag adalah nama file yang di masukkan oleh user.
Perintah ‘Hapus file’ berfungsi untuk menghapus data berupa file .MP3 dan
.txt yang terdapat pada memory card. Data yang akan dihapus harus di pilih dahulu
oleh user.
Perintah ‘Browse’ yang terdapat pada gambar 3.21 berfungsi untuk memilih
file yang akan dimasukkan ke dalam memory card.
95
A. Diagram Alir Umum Menghubungkan Mikrokontroler Dengan PC
StandbyForm List File
Button Check Tag
1
1
T
Y
Read Tag
Send Message“No Tag”Have Tag
T
Y
PrintTag TypeTag SN
Tag Data
1
Button Exit
1
T
Y
End
Button Delete File
T
1
Y
Select List File Send Message“No File Selected”
ConfirmationDelete file
Y
T
Delete File
1
Y
T
Message File Deleted
Button AddFile
1
T
Y
Form Browse File
Browse File .mp3& File .txt
T
Y
Write Tag with Name File
Write Status = 0
Copy file to SD Card
Message“Write Failure”
Y
T
1
1
Match File
Y
T
Message“File Not Match”
Gambar 3.22 Diagram Alir Umum Menghubungkan Mikrokontroler Dengan PC
Perintah membaca tag RFID berfungsi untuk meminta mikrokontroler
untuk mengecek ada tidaknya tag RFID, kemudian bila tag tidak terdeteksi
maka program akan menampilkan pesan bahwa tag RFID tak terdeteksi dan
bila tag RFID terdeteksi maka program akan meminta mikrokontroler
memerintah RFID reader untuk membaca isi tag RFID dan kemudian
96
program menunggu data tag RFID diberikan oleh mikrokontroler melalui
komunikasi serial. Setelah mendapatkan respon dari RFID_PC maka
program akan menampilkannya.
Perintah menulis tag berfungsi untuk meminta user memasukkan
inputan apa yang mau ditulis pada tag dan kemudian memerintahkan
mikrokontroler mencek ada tidaknya tag RFID, bila tidak terdeteksi maka
program akan menampilkan pesan bahwa tag RFID tak terdeteksi dan bila
tag RFID terdeteksi maka program akan meminta mikrokontroler
memerintah RFID reader untuk menulis isi tag RFID dan kemudian
menunggu respon dari status penulisan tag RFID yang akan dikirimkan
menuju PC.
Perintah untuk menambahkan file pada SD Card berfungsi untuk
meminta user menambahkan file yang berformat .MP3 yang berfungsi
sebagai file audio dan file yang berformat .txt yang berfungsi sebagai file
sinopsis dan PC akan meminta card reader untuk meng – copy file yang
sudah dipilih kedalam SD card. Sedangkan perintah menghapus file pada SD
card berfungsi untuk, PC akan meminta card reader menghapus file
berformat .MP3 dan file yang berformat .txt pada SD card.
3.3 Rancang Bangun Sistem
Casing pada sistem terbuat dari bahan acrylic berbentuk balok yang dapat di buka
pada salah satu sisinya untuk penggantian baterai dan perbaikan alat apabila terjadi
kerusakan.