LAPORAN TUGAS BESAR EL3014 SISTEM MIKROPROSESOR
Kelompok 03 Anggota: Khairunnisa (13212028) Tengku Ahmad Madya Putra (13212098)
1. JUDUL Pembaca Nominal Uang Kertas untuk Tuna Netra
2. SPESIFIKASI SISTEM
Menggunakan sensor cahaya LDR (light dependent resistor) dengan LED (light emitting diode) dan sensor warna TCS320, RGB sebagai referensi masukan.
Terdapat dua mode pembacaan, yaitu pembacaan uang dan pembacaan warna.
Keluaran suara dikeluarkan menggunakan PWM dan disaring dengan low-pass filter sebelum masuk ke audio amplifier.
Terdapat tiga buah sensor yang digunakan dan diletakkan pada posisi yang berbeda-beda.
Mampu membaca nominal uang dengan empat buah kemungkinan peletakan.
Mampu membaca delapan warna, yaitu putih, hitam, merah, jingga, kuning, hijau, biru, dan ungu.
3. DESAIN RANGKAIAN 3.1
SKEMA RANGKAIAN
3.2
CARA KERJA RANGKAIAN
Secara umum ialah sebagai berikut. Uang diletakkan pada sensor yang dibaca oleh mikroprosesor. Hasil pembacaan kemudian dikeluarkan oleh speaker berupa suara (yang menyatakan nominal uang atau warna) yang berasal dari SD card. Sebelum suara keluar, terlebih dahulu diproses oleh low-pass filter dan audio amplifier.
ATMega328p (Arduino Pro Mini 5V 16MHz) Memiliki ukuran yang kecil sehingga dapat menghemat ruang untuk komponen lainnya. Mikrokontroler ini berfungsi sebagai ‘otak’ dari alat, mulai dari pengambilan data hingga pengeluaran suara.
Baterai Li dan Charger Baterai digunakan sebagai penyuplai daya pada sistem. Dapat diisi ulang menggunakan charger smartphone via kabel USB sehingga dapat dibawa.
Tombol dan Switch Terdapat tiga tombol dan satu switch pada rangkaian ini. Switch digunakan untuk menghidupkan dan mematikan alat. Tiga tombol memiliki fungsi masing-masing, yaitu sebagai ganti mode, start, dan cek baterai. Tombol ganti mode berfungsi untuk mengganti mode kerja alat, apakah membaca nominal uang atau membaca warna. Tombol start berfungsi untuk memulai pembacaan. Sedangkan tombol cek baterai berfungsi membunyikan buzzer jika baterai belum habis.
Sensor Cahaya LDR dan Modul TCS320 Sensor LDR menangkap cahaya yang dipantulkan oleh warna primer dimana sumber cahaya yang digunakan berasal dari LED merah, hijau, dan biru. Prinsip kerja LDR ialah resistansinya akan berubah seiring dengan perubahan intensitas cahaya yang mengenainya. Nilai resistansi tersebut dikirim ke mikrokontroler untuk dibandingkan dan dibaca.
Low-pass Filter
Resistor dan kapasitor dirancang sedemikian rupa agar filter meloloskan frekuensi di bawah 20 kHz (sesuai dengan batas pendengaran manusia).
Audio Amplifier Audio amplifier memiliki penguat awal sebagai penyangga. Kemudian dilakukan tone control untuk menyamakan suara yang dihasilkan pada speaker agar sesuai dengan aslinya (yang disimpan dalam SD Card). Prinsipnya dengan mengatur nilai resonator pada rangkaian filter. Akhirnya dilakukan penguat akhir yang bertujuan memperkuat sinyal dari pengatur nada agar menggetarkan membran speaker. Setelah itu, suara dikeluarkan oleh speaker. Di sini juga terdapat kontrol volume dengan memanfaatkan potensio.
SD Audio Player SD audio player ini dibuat dengan mikrokontroler dan sebuah SD card. SD card digunakan untuk menyimpan file WAV yang berisi suara fokal untuk setiap nominal uang dan warna yang dapat dideteksi alat.
4. IMPLEMENTASI RANGKAIAN 4.1
LAYOUT PCB
4.2
PENJELASAN TEKNIK YANG DIGUNAKAN
Digunakan teknik true hole dan rangkaian diperoleh dengan cara disolder. Selain itu, PCB yang digunakan ialah dua layer dan menggunakan beberapa kabel jumper karena keterbatasan ruang. Mikroprosesor yang digunakan Arduino Pro Mini karena pin lebih banyak dan ukurannya lebih kecil. Sensor warna menggunakan LDR karena memiliki sifat berubahnya nilai resistansi tergantung pada cahaya. Selain itu, LDR tidak mempunyai sensitivitas yang sama untuk setiap panjang gelombang cahaya yang jatuh padanya. Serta, LDR berharga lebih murah. Pembacaan nominal uang menggunakan sensor cahaya karena tiap uang dengan nominal berbeda memiliki warna yang berbeda pula sehingga cahaya LDR warna cocok digunakan. Selain itu, keluaran berupa suara karena alat berikut ditujukan kepada tuna netra. Pembacaan warna maupun nominal uang yang disimpan ke dalam register adalah pembacaan setiap ke-250. Dipilih angka tersebut karena saat sampel diambil dan digambar dalam grafik, sekitar sampel ke-250 pembacaan warna bernilai cukup stabil. Dapat dilihat di bawah ini:
Pembacaan Ungu 300
250
200
150
100
50
1 27 53 79 105 131 157 183 209 235 261 287 313 339 365 391 417 443 469 495 521 547 573 599 625 651 677 703 729 755 781 807 833 859 885 911 937 963 989
0
R0
G0
B0
Sebelum suara dikeluarkan, digunakan low-pass filter terlebih dahulu yang menyaring suara di bawah 20 kHz sesuai dengan batas pendengaran manusia.
5. IMPLEMENTASI SOFTWARE 5.1
FLOWCHART MULAI
LED merah nyala
Inisialisasi
Cek tombol start
Tombol start belum ditekan
Tombol start ditekan Mulai membaca warna
`
Power down
250x baca merah dengan ADC Ambil pembacaan merah ke-250
Jalankan sensor cahaya
LED hijau nyala
Hasil dibandingkan dengan data referensi
250x baca hijau dengan ADC
Putar suara sesuai hasil
Ambil pembacaan hijau ke-250
LED biru nyala
250x baca hijau dengan ADC
Ambil pembacaan biru ke-250
Keluaran R, G, B
BLOK DIAGRAM Volume
Panel tombol
Kontrol
Kontrol mode
Masukan
Potensio
Sensor cahaya LDR 1 Sensor cahaya LDR2
Mikrokontroler ATMega8
Sensor cahaya LDR 3
Low-pass filter
Audio amplifier
Keluaran suara
5.2
Penyimpanan
Sensor cahaya TCS320
SD card
5.3
CARA KERJA PROGRAM 1. Inisiasi: Inisiasi register untuk melakukan pembacaan. ADC mulai dijalankan dengan prescaler 128, mode auto-trigger dengan sumber trigger berasal dari Timer/Counter0 Compare Match A. Timer/Counter0 diset agar Compare Match A terjadi setiap 1 ms. Timer/Counter1 diset pada mode normal dengan Input Capture ISR dinyalakan. Modul TCS230 dinyalakan.
Baca Nominal Uang a. Merah LDR1: Input Capture ISR digunakan untuk menghitung rising-edge yang terjadi pada keluaran TCS230. ISR ADC terjadi setiap 1 ms. Pada ISR ADC pertama kali, LED merah dinyalakan, ADC yang dibaca adalah LDR1 (channel 7), dan modul TCS230 membaca warna merah. b. Merah LDR2: Setelah ISR ADC terjadi sebanyak 250 kali (250 ms), hasil baca LDR dan modul TCS230 disimpan dalam tabel read, masing-masing di baris ke-0 dan ke-1. Kemudian, channel ADC diubah menjadi LDR2 (channel 0). Counter untuk TCS230 direset. c. Hijau LDR1: Setelah ISR ADC terjadi sebanyak 500 kali (500 ms), hasil baca LDR dan modul TCS230 disimpan dalam tabel read, masing-masing di baris ke-2 dan ke-3. Kemudian, channel ADC diubah menjadi LDR1 (channel 7) dan LED yang dinyalakan diganti menjadi LED hijau. Counter untuk TCS230 direset. d. Hijau LDR2: Setelah ISR ADC terjadi sebanyak 750 kali (750 ms), hasil baca LDR dan modul TCS230 disimpan dalam tabel read, masing-masing di baris ke-4 dan ke-5. Kemudian, channel ADC diubah menjadi LDR2 (channel 0). Counter untuk TCS230 direset.
e. Biru LDR1: Setelah ISR ADC terjadi sebanyak 1000 kali (1000 ms), hasil baca LDR dan modul TCS230 disimpan dalam tabel read, masing-masing di baris ke-6 dan ke-7. Kemudian, channel ADC diubah menjadi LDR1 (channel 7) dan LED yang dinyalakan diganti menjadi LED biru. Counter untuk TCS230 direset. f. Biru LDR2: Setelah ISR ADC terjadi sebanyak 1250 kali (1250 ms), hasil baca LDR dan modul TCS230 disimpan dalam tabel read, masing-masing di baris ke-8 dan ke-9. Kemudian, channel ADC diubah menjadi LDR2 (channel 0). Counter untuk TCS230 direset. g. Berhenti Baca: Setelah ISR ADC terjadi sebanyak 1500 kali (1500 ms), hasil baca LDR dan modul TCS230 disimpan dalam tabel read, masing-masing di baris ke-10 dan ke-11. LED, ADC, modul TCS230, Timer0, dan Timer1 dimatikan. Diberikan flag untuk mulai membandingkan hasil baca dengan tabel referensi pada fungsi utama. h. Bandingkan: Hasil yang disimpan pada tabel read dibandingkan dengan tabel referensi. Pembandingan dilakukan dengan menghitung selisih antara tabel read dan tabel referensi untuk setiap nominal uang, kemudian selisih terbesar diambil. Setelah itu, diambil selisih terkecil dari sekumpulan selisih tersebut. Jika selisih terkecil tersebut lebih besar dari 15, maka disimpulkan bahwa input kertas yang dimasukkan bukan uang rupiah. Jika tidak, maka ditentukan nominal uang berdasarkan tabel yang menghasilkan selisih terkecil. i. Keluarkan: Diputar file WAV yang menyebutkan nominal uang sesuai dengan hasil pembandingan.
Baca Warna a. Merah LDR3: Input Capture ISR digunakan untuk menghitung rising-edge yang terjadi pada keluaran TCS230. ISR ADC terjadi setiap 1 ms. Pada ISR ADC pertama kali, LED merah dinyalakan, ADC yang dibaca adalah LDR3 (channel 7), dan modul TCS230 membaca warna merah. b. Hijau LDR3: Setelah ISR ADC terjadi sebanyak 250 kali (250 ms), hasil baca LDR dan modul TCS230 disimpan dalam tabel read, masing-masing di baris ke-0 dan ke-1. Kemudian, channel ADC diubah menjadi LDR3 (channel 7) dan LED yang dinyalakan diganti menjadi LED hijau. Counter untuk TCS230 direset. c. Biru LDR3: Setelah ISR ADC terjadi sebanyak 500 kali (500 ms), hasil baca LDR dan modul TCS230 disimpan dalam tabel read, masing-masing di baris ke-2 dan ke-3. Kemudian, channel ADC diubah menjadi LDR3 (channel 7) dan LED yang dinyalakan diganti menjadi LED biru. Counter untuk TCS230 direset.
d. Berhenti Baca: Setelah ISR ADC terjadi sebanyak 750 kali (750 ms), hasil baca LDR dan modul TCS230 disimpan dalam tabel read, masing-masing di baris ke-4 dan ke-5. LED, ADC, modul TCS230, Timer0, dan Timer1 dimatikan. Diberikan flag untuk mulai membandingkan hasil baca dengan tabel referensi pada fungsi utama. e. Bandingkan: Hasil yang disimpan pada tabel read dibandingkan dengan referensi. Pembandingan dilakukan dengan menghitung selisih antara tabel read dan referensi untuk setiap warna, kemudian dihitung selisih. Dari perbandingan tersebut, diperoleh warna yang sesuai. f. Keluarkan: Diputar file WAV yang menyebutkan warna sesuai dengan hasil pembandingan. Adapun tabel referensi untuk nominal uang ialah sebagai berikut: const uint8_t Rp1000_1[] PROGMEM = {179, 39,160, 40,186,35,161,34,197, 44,181, 45}; const uint8_t Rp1000_2[] PROGMEM = {177, 91,181, 91,184,62,175,63,191, 72,186, 73}; const uint8_t Rp1000_3[] PROGMEM = {172, 80,177, 83,182,55,167,55,195, 64,190, 64}; const uint8_t Rp1000_4[] PROGMEM = {169, 46,159, 48,182,40,159,41,199, 51,180, 51}; const uint8_t Rp2000_1[] PROGMEM = {171, 55,164, 56,175,39,159,39,193, 48,176, 48}; const uint8_t Rp2000_2[] PROGMEM = {170, 84,176, 84,183,62,171,62,195, 77,192, 77}; const uint8_t Rp2000_3[] PROGMEM = {182, 61,170, 62,191,46,168,46,202, 60,186, 60}; const uint8_t Rp2000_4[] PROGMEM = {178, 58,169, 58,186,41,164,41,204, 50,181, 50}; const uint8_t Rp5000_1[] PROGMEM = {168, 63,158, 63,188,41,158,41,197, 46,179, 46}; const uint8_t Rp5000_2[] PROGMEM = {169,100,167,102,180,66,168,66,193, 76,192, 76}; const uint8_t Rp5000_3[] PROGMEM = {168, 92,170, 91,191,58,166,58,194, 66,192, 66}; const uint8_t Rp5000_4[] PROGMEM = {166, 61,159, 61,179,43,157,43,202, 48,182, 48}; const uint8_t Rp10000_1[] PROGMEM = {170, 43,159, 42,184,35,155,35,191, 52,169, 52}; const uint8_t Rp10000_2[] PROGMEM = {177, 100, 170, 98, 189, 71, 165, 71, 186, 102, 173, 100}; const uint8_t Rp10000_3[] PROGMEM = {176, 99,173, 99,184,71,172,71,187, 99,184, 97}; const uint8_t Rp10000_4[] PROGMEM = {174, 52,157, 52,183,38,153,38,196, 55,170, 55}; const uint8_t Rp20000_1[] PROGMEM = {192, 33,164, 33,195,30,159,30,200, 40,174, 40}; const uint8_t Rp20000_2[] PROGMEM = {188, 81,178, 80,194,62,164,62,192, 75,184, 74}; const uint8_t Rp20000_3[] PROGMEM = {182, 75,176, 75,190,54,164,55,197, 65,181, 66};
const uint8_t Rp20000_4[] PROGMEM = {173, 45,161, 45,172,40,156,41,197, 55,177, 54}; const uint8_t Rp50000_1[] PROGMEM = {192, 38,164, 38,193,37,157,38,194, 57,174, 57}; const uint8_t Rp50000_2[] PROGMEM = {173, 72,186, 71,175,57,172,57,182, 76,180, 76}; const uint8_t Rp50000_3[] PROGMEM = {194, 68,184, 68,196,52,177,53,193, 69,180, 69}; const uint8_t Rp50000_4[] PROGMEM = {189, 41,163, 40,193,38,156,38,203, 59,175, 58}; const uint8_t Rp100000_1[] PROGMEM = {161, 73,157, 73,181,43,156,43,193, 54,175, 54}; const uint8_t Rp100000_2[] PROGMEM = {158, 81,161, 81,175,52,170,52,192, 66,185, 66}; const uint8_t Rp100000_3[] PROGMEM = {164, 78,171, 78,193,45,171,45,200, 60,194, 60}; const uint8_t Rp100000_4[] PROGMEM = {175, 56,160, 56,206,29,160,29,206, 40,178, 41}; const uint8_t* const refer[] PROGMEM = {Rp1000_1, Rp1000_2, Rp1000_3, Rp1000_4, Rp2000_1, Rp2000_2, Rp2000_3, Rp2000_4, Rp5000_1, Rp5000_2, Rp5000_3, Rp5000_4, Rp10000_1, Rp10000_2, Rp10000_3, Rp10000_4, Rp20000_1, Rp20000_2, Rp20000_3, Rp20000_4, Rp50000_1, Rp50000_2, Rp50000_3, Rp50000_4, Rp100000_1,Rp100000_2,Rp100000_3,Rp100000_4};
Dan untuk referensi warna oleh tabel berikut: Warna Putih Hitam Merah Jingga Kuning Lime Hijau Tua Aqua Biru Tua Ungu
R 123 204 121 119 118 119 189
Nilai G 142 215 198 131 125 138 164
B 184 234 221 114 101 122 210
172 189
158 194
182 191
126
190
184
6. PENGUJIAN DAN ANALISA 6.1
PENGUJIAN
Baca Uang Nominal Uang Rp1000,00
Posisi Peletakan 1
Kali Coba 1
Keluaran Suara Seribu Rupiah
2
3
4
Rp2000,00
1
2
3
4
Rp5000,00
1
2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3
Seribu Rupiah Seribu Rupiah Seratus Ribu Rupiah Seribu Rupiah Dua Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Seribu Rupiah Seribu Rupiah Seribu Rupiah Seribu Rupiah Seribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Dua Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Sepuluh Ribu Rupiah Seribu Rupiah Lima Ribu Rupiah Lima Ribu Rupiah
2
3
4
Rp10000,00
1
2
3
4
Rp20000,00
1
4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
Lima Ribu Rupiah Seribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Lima Ribu Rupiah Lima Ribu Rupiah Lima Ribu Rupiah Lima Ribu Rupiah Lima Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Puluh Ribu Rupiah Sepuluh Ribu Rupiah Sepuluh Ribu Rupiah Sepuluh Ribu Rupiah Sepuluh Ribu Rupiah Sepuluh Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah
2
3
4
Rp50000,00
1
2
3
4
Rp100000,00
1
2
1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2
Sepuluh Ribu Rupiah Sepuluh Ribu Rupiah Sepuluh Ribu Rupiah Sepuluh Ribu Rupiah Sepuluh Ribu Rupiah Dua Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Lima Puluh Ribu Rupiah Lima Puluh Ribu Rupiah Lima Puluh Ribu Rupiah Lima Puluh Ribu Rupiah Lima Puluh Ribu Rupiah Lima Puluh Ribu Rupiah Lima Puluh Ribu Rupiah Lima Puluh Ribu Rupiah Lima Puluh Ribu Rupiah Lima Puluh Ribu Rupiah Lima Puluh Ribu Rupiah Lima Puluh Ribu Rupiah Lima Puluh Ribu Rupiah Lima Puluh Ribu Rupiah Lima Puluh Ribu Rupiah Lima Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Lima Puluh Ribu Rupiah Lima Puluh Ribu Rupiah Dua Puluh Ribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Dua Puluh Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah
3
4
3 4 5 1 2 3 4 5 1 2 3 4 5
Dua Ribu Rupiah Dua Ribu Rupiah Dua Ribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah Seratus Ribu Rupiah
Baca Warna Warna Putih
Hitam
Merah
Jingga
Kuning
Kali Coba 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4
Keluaran Suara Putih Putih Putih Putih Putih Hitam Hitam Hitam Hitam Hitam Merah Merah Merah Merah Merah Tidak Terdeteksi Tidak Terdeteksi Tidak Terdeteksi Tidak Terdeteksi Tidak Terdeteksi Kuning Kuning Kuning Kuning
Hijau
Biru
Ungu
Aqua
Lime
6.2
5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
Kuning Hijau Hijau Hijau Hijau Hijau Biru Biru Biru Biru Biru Ungu Ungu Ungu Ungu Ungu Tidak Terdeteksi Tidak Terdeteksi Tidak Terdeteksi Tidak Terdeteksi Tidak Terdeteksi Tidak Terdeteksi Tidak Terdeteksi Tidak Terdeteksi Biru Biru
MASALAH YANG DIHADAPI
Sensitivitas sensor masih rendah. Range nilai yang diperoleh tipis sehingga beberapa sulit dibandingkan.
6.3
FOTO ALAT
7. KESIMPULAN Alat dapat membedakan uang kertas dengan nominal Rp1000, Rp2000, Rp5000, Rp10000, Rp20000, Rp50000, dan Rp100000, serta hasil pembacaan dikeluarkan dalam bentuk suara. Demikian pula dapat membaca delapan buah warna, yaitu, putih, hitam, merah, jingga, kuning, hijau, biru, dan ungu.
8. REFERENSI [1]
http://shinta-main-jp.blogspot.jp/2011/05/b041-sd-card-module.html
[2]
http://elm-chan.org/works/sd8p/report.html
[3]