• Tidak ada hasil yang ditemukan

Implementasi Protokol USB pada Pengontrol Mikro Atmega8 untuk Akuisisi Data Sinyal Elektrokardiogram.

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Protokol USB pada Pengontrol Mikro Atmega8 untuk Akuisisi Data Sinyal Elektrokardiogram."

Copied!
28
0
0

Teks penuh

(1)

i

IMPLEMENTASI PROTOKOL USB PADA PENGONTROL MIKRO ATMEGA8 UNTUK AKUISISI DATA SINYAL

ELEKTROKARDIOGRAM

Disusun Oleh :

Innocentio Aloysius Loe (0922045)

Jurusan Teknik Elektro, Fakultas Teknik

Universitas Kristen Maranatha

Jl. Prof. Drg. Suria Sumantri 65, Bandung 40164, Indonesia

ABSTRAK

Protokol USB diimplementasikan pada pengontrol mikro yang

sesungguhnya tidak mendukung komunikasi dengan protokol USB untuk

keperluan akusisi data. Pengontrol mikro yang digunakan dalam rancangan sistem

adalah Atmel AVR ATMEGA8 dengan basis firmware V-USB.

Pengujian dilakukan dengan instrumen elektrokardiogram (EKG) yang

dirancang sendiri, dengan konfigurasi pengukuran Limb Lead (LL) II. Data yang

didapat diolah untuk mengukur detak jantung menggunakan algoritma

Pan-Tompkins. Sinyal EKG serta hasil pengukuran detak jantung ditampilkan pada

suatu GUI (Graphical User Interface).

Hasil pengujian menunjukkan bahwa pengontrol mikro dapat dideteksi

sebagai USB device. Dari pengujian didapat kecepatan transmisi maksimum 24

kbps dengan error rate 0%. Keluaran sinyal EKG pada GUI sesuai dengan hasil

keluaran instrumen serta memiliki bentuk yang sesuai dengan bentuk umum

sinyal EKG LL II.

(2)

ii

USB PROTOCOL IMPLEMENTATION ON ATMEGA8 MICROCONTROLLER FOR DATA ACQUISITION OF

ELECTROCARDIOGRAM SIGNAL

Composed by :

Innocentio Aloysius Loe (0922045)

Department of Electrical Engineering, Faculty of Engineering

Maranatha Christian University

Jl. Prof. Drg. Suria Sumantri 65, Bandung 40164, Indonesia

ABSTRACT

USB protocol is implemented on a microcontroller which actually does not

support USB protocol communication. The microcontroller used in the system

design is Atmel AVR ATMEGA8, where V-USB is used as the base firmware.

The test is done with self-designed electrocardiogram (ECG) instrument

using Limb Lead (LL) II configuration. The acquired data is processed to measure

heart rate using Pan-Tompkins algorithm. Both the ECG signal and the measured

heart rate are displayed on a GUI (Graphical User Interface).

The result shows that the microcontroller is able to be detected as a USB

device. The maximum transmission rate is approximately 24 kbps with 0% error

rate. The displayed ECG signal on the GUI matched the instrument output with

waveforms that correspond to the common form of LL II ECG signal.

(3)

iii

DAFTAR ISI

HALAMAN JUDUL LEMBAR PENGESAHAN

PERNYATAAN ORISINALITAS LAPORAN PENELITIAN PERNYATAAN PUBLIKASI LAPORAN PENELITIAN

ABSTRAK ... i

ABSTRACT ... ii

Kata Pengantar... iii

DAFTAR ISI ... iv

DAFTAR GAMBAR ... viii

DAFTAR TABEL... x

BAB 1 PENDAHULUAN ... 1

1.1. Latar Belakang ... 1

1.2. Rumusan Masalah ... 2

1.3. Tujuan Pembahasan ... 2

1.4. Batasan Masalah ... 2

1.5. Sistematika Penulisan ... 3

BAB 2 DASAR-DASAR UNIVERSAL SERIAL BUS (USB) ... 5

2.1. Arsitektur Protokol USB ... 5

2.1.1. Topologi Jaringan ... 5

2.1.2. USB Host ... 6

2.1.3. USB Device ... 7

2.1.4. Tipe Aliran Data ... 8

2.2. Enumerasi USB Device ... 8

2.3. Klasifikasi USB Device ... 11

2.4. Human Interface Device (HID) ... 12

2.4.1. Antarmuka HID ... 12

2.4.2. Device Descriptor HID ... 13

2.4.3. HID Descriptor ... 14

(4)

iv

2.5. Dasar Komunikasi USB ... 14

2.5.1. Spesifikasi Elektrik Komunikasi USB ... 14

2.5.2. Sistem Transasksi Paket ... 16

2.5.3. HID USB Request ... 18

2.6. HID Control Transfer ... 19

2.6.1. Enumeration Control Transfer ... 20

2.6.2. HID Report Transfer ... 21

2.7. V-USB Driver API ... 22

BAB 3 DASAR-DASAR ELEKTROKARDIOGRAM (EKG) ... 23

3.1. Terminologi Pokok ... 23

3.2. Fisiologi Jantung Manusia dalam Kaitannya dengan EKG ... 24

3.3. Cara Pengambilan Sinyal EKG ... 26

3.3.1. Mean-Electrical Axis ... 26

3.3.2. Aturan Pembacaan EKG ... 27

3.3.3. Sistem Limb Lead II ... 27

3.4. Pembacaan Sinyal EKG Limb Lead II ... 28

3.5. Masalah Umum dalam Perancangan Instumen EKG ... 30

3.5.1. Tegangan Common Mode ... 30

3.5.2. Baseline Wander dan Motion Artifact ... 31

3.5.3. Sumber-sumber Noise ... 31

3.5.4. Grounding dan Right Leg Drive (RLD) ... 32

3.5.5. Isolasi Sistem Penguat ... 33

BAB 4 PERANCANGAN DAN REALISASI ... 35

4.1. Rancangan Umum ... 35

4.1.1. Diagram Blok Sistem ... 35

4.1.2. Flowchart Sistem ... 36

4.2. Perancangan Instrumen Elektrokardiogram ... 37

4.2.1. Pemilihan Elektroda ... 37

(5)

v

4.2.3. Regulasi Arus dan Prefiltering ... 38

4.2.4. Instrumentation Amplifier ... 40

4.2.5. Penanggulangan Baseline Wander ... 41

4.2.6. Right Leg Drive dan Shield Driver ... 43

4.2.7. Penguat Tingkat Kedua ... 47

4.2.8. Notch Filter ... 48

4.3. Perancangan Protokol USB pada Pengontrol Mikro ATMEGA8 ... 49

4.3.1. Spesifikasi yang Ingin Dicapai ... 49

4.3.2. Perancangan Perangkat Keras ... 50

4.3.3. Device-Side Software ... 51

4.4. Host-side Software ... 58

4.4.1. Notch Filter Digital ... 59

4.4.2. Highpass Filter Digital ... 62

4.4.3. Pengukuran Laju Detak Jantung... 63

4.4.4. Transmisi Data ... 64

4.4.5. Graphical User Interface (GUI) ... 66

BAB 5 HASIL DAN ANALISIS ... 67

5.1. Hasil dan Analisis Protokol USB ... 67

5.1.1. Deteksi USB-ECG Sebagai HID ... 67

5.1.2. Laju Transmisi Data ... 68

5.1.3. Performansi Transmisi Data ... 69

5.2. Hasil dan Analisis Instrumen Elektrokardiogram ... 69

5.2.1. Rasio CMR ... 69

5.2.2. Respon Frekuensi Penguat ... 70

5.2.3. Impedansi Masukan Penguat ... 72

5.2.4. Sinyal EKG pada Keluaran Penguat ... 73

5.2.5. Sinyal Keluaran Filter Digital ... 77

5.2.6. Perhitungan Laju Detak Jantung ... 80

(6)

vi

BAB 6 PENUTUP ... 84 6.1. Kesimpulan ... 84 6.2. Saran ... 84

DAFTAR PUSTAKA

LAMPIRAN A : USB Device Descriptor LAMPIRAN B : HID Report Descriptor

(7)

vii

DAFTAR GAMBAR

1. Gambar 2.1 Topologi Jaringan USB ... 6

2. Gambar 2.2 Skematik Konektor USB host ... 9

3. Gambar 2.3 Skema Low Speed dan High Speed USB Device ... 10

4. Gambar 2.4 Encoding NRZI ... 15

5. Gambar 2.5 Koneksi USB Low Speed Device ... 15

6. Gambar 3.1 Anatomi Jantung Manusia... 25

7. Gambar 3.2 Sistem mean-electrical axis ... 26

8. Gambar 3.3 Contoh skema pemasangan elektroda sistem Limb Lead II ... 28

9. Gambar 3.4 Contoh umum sinyal EKG Limb Lead II ... 29

10. Gambar 3.5 Model pengaruh jala-jala listrik dan stray capacitance ... 33

11. Gambar 3.6 Rangkaian ekuivalen common mode sistem Gambar 3.5 ... 34

12. Gambar 4.1 Diagram blok sistem analog ... 35

13. Gambar 4.2 Diagram blok sistem digital ... 36

14. Gambar 4.3 Flowchartsistem ... 36

15. Gambar 4.4 Elektroda 3M RedDot 2560 ... 37

16. Gambar 4.5 Model elektronika elektroda EKG ... 38

17. Gambar 4.6 Realisasi rangkaian prefilter keseluruhan ... 39

18. Gambar 4.7 Skematik INA114 ... 40

19. Gambar 4.8 Pengaturan penguatan pada INA114 ... 41

20. Gambar 4.9 Penggunaan integrator sebagai umpanbalik ... 42

21. Gambar 4.10 Aplikasi tegangan common mode untuk shield driver ... 43

22. Gambar 4.11 Rangkaian ekuivalen common mode sistem RLD ... 44

23. Gambar 4.12 Sistem RLD closed-loop ... 44

24. Gambar 4.13 Bode plot sistem RLD ... 45

25. Gambar 4.14 Realisasi rangkaian RLD... 46

26. Gambar 4.15 Sistem closed-loop RLD terkompensasi ... 46

27. Gambar 4.16 Bode plot sistem RLD terkompensasi ... 47

28. Gambar 4.17 Penguat tingkat kedua ... 47

(8)

viii

30. Gambar 4.19 Skematik perangkat keras ATMEGA8 ... 50

31. Gambar 4.20 Flowchart proses enumerasi USB device ... 55

32. Gambar 4.21 Flowchart Interrupt Service Routine INT0 ... 56

33. Gambar 4.22 Flowchart fungsi usbPoll ... 57

34. Gambar 4.23 Flowchart program utama device-side software ... 58

35. Gambar 4.24 Pergeseran frekuensi notch dari notch filter digital ... 60

36. Gambar 4.25 Notch filter digital dengan kompensasi model analog ... 60

37. Gambar 4.26 Respon frekuensi highpass filter digital ... 62

38. Gambar 4.27 Ilustrasi pemrosesan sinyal algoritma Pan-Tompkins ... 64

39. Gambar 4.28 Flowchart program host-side software ... 65

40. Gambar 4.29 Graphical User Interface (GUI) ... 66

41. Gambar 5.1 Deteksi USB-ECG sebagai HID ... 67

42. Gambar 5.2 Grafik rasio CMR ... 70

43. Gambar 5.3 Respon frekuensi penguat ... 71

44. Gambar 5.4 Impedansi masukan penguat ... 73

45. Gambar 5.5 Sinyal EKG diukur pada kondisi (a) ... 74

46. Gambar 5.6 Sinyal EKG dengan noise 50 Hz ... 75

47. Gambar 5.7 Sinyal noise 50 Hz muncul pada kondisi (b) ... 75

48. Gambar 5.8 Baseline wander akibat pernapasan ... 76

49. Gambar 5.9 Sinyal pada pengukuran kondisi (d) ... 76

50. Gambar 5.10 Respon frekuensi keseluruhan... 77

51. Gambar 5.11 Pengaruh filter digital pada kondisi (a) ... 78

52. Gambar 5.12 Pengaruh filter digital pada kondisi (b) ... 78

53. Gambar 5.13 Pengaruh filter digital pada kondisi (c) ... 79

54. Gambar 5.14 Pengaruh filter digital pada kondisi (d) ... 80

55. Gambar 5.15 Hasil implementasi algoritma Pan-Tompkins ... 80

56. Gambar 5.16 Hasil pengukuran laju detak jantung dalam BPM... 81

(9)

ix

DAFTAR TABEL

1. Tabel 2.1 Klasifikasi USB device berdasarkan device class ... 11

2. Tabel 2.2 Contoh Device Descriptor HID ... 13

3. Tabel 2.3 Format HID Descriptor ... 14

4. Tabel 2.4 PID Value yang mungkin pada Low-Speed USB Device... 16

5. Tabel 2.5 Penjelasan isi USB Request ... 18

6. Tabel 2.6 USB Request GET_DESCRIPTOR ... 19

7. Tabel 2.7 USB Request GET_REPORT ... 19

8. Tabel 4.1 Device Descriptor USB-ECG ... 51

9. Tabel 4.2 Configuration Descriptor USB-ECG ... 52

10. Tabel 4.3 Interface Descriptor USB-ECG ... 52

11. Tabel 4.4 HID Descriptor USB-ECG ... 53

12. Tabel 4.5 Report Descriptor USB-ECG ... 53

13. Tabel 5.1 Laju transmisi data USB-ECG ... 68

14. Tabel 5.2 Data pengukuran rasio CMR ... 69

15. Tabel 5.3 Data pengukuran respon frekuensi... 71

16. Tabel 5.4 Data pengukuran impedansi masukan penguat ... 72

(10)

1

Universitas Kristen Maranatha

BAB 1

PENDAHULUAN

Bab ini membahas tentang latar belakang masalah, perumusan masalah,

tujuan pembahasan, batasan masalah, dan sistematika penulisan tugas akhir.

1.1. Latar Belakang Masalah

Perkembangan teknologi pengontrol mikro pada masa sekarang sangat pesat,

sehingga dapat diaplikasikan dalam banyak bidang. Salah satu bidang yang umum

menggunakan pengontrol mikro adalah instrumentasi (pengukuran).

Dalam bidang instrumentasi, pengontrol mikro umumnya digunakan dalam

instrumen (alat ukur) untuk mengubah besaran terukur menjadi sinyal atau data

digital. Terkadang data tersebut perlu diproses lebih lanjut di komputer (misal

untuk ditampilkan dalam bentuk grafik, dicari hubungannya dengan data lain, dll.),

sehingga dibutuhkan suatu cara pengiriman (transmisi) data dari pengontrol mikro

ke komputer.

Protokol transmisi yang umum digunakan untuk komunikasi pengontrol

mikro ke komputer adalah protokol serial. Pengontrol mikro memiliki protokol

serial UART, sedangkan pada komputer terdapat protokol serial RS-232.

Kecepatan transmisi protokol ini maksimum 250 kbps dengan penggunaan daya

yang cukup besar (RS-232 membutuhkan tegangan positif dan negatif minimal 3

V).

Sejak protokol Universal Serial Bus (USB) dirilis pada tahun 1996,

penggunaan protokol serial RS-232 maupun UART semakin jarang

diperhitungkan dalam desain perangkat-perangkat keras. Protokol USB bisa

dikatakan jauh lebih unggul dari RS-232 maupun UART dengan kecepatan

transmisi hingga 480 Mbps dengan penggunaan daya yang jauh lebih kecil

(maksimum 500 mW pada tegangan 5 V).

Desain motherboard komputer maupun notebook sekarang umumnya sudah

tidak memiliki periferal serial RS-232 yang terintegrasi. Hanya tersedia konektor

(11)

BAB 1 PENDAHULUAN 2

Universitas Kristen Maranatha komunikasi pengontrol mikro dengan komputer karena tidak semua pengontrol

mikro memiliki periferal USB.

Salah satu pemecahan masalah ini adalah hadirnya USB-to-Serial Converter

sebagai antarmuka antara pengontrol mikro dengan komputer. Meskipun

demikian penambahan alat tersebut ke dalam desain suatu instrumen juga

menambah kebutuhan periferal serta biaya produksi. Dibutuhkan suatu cara

sehingga pengontrol mikro dapat melakukan komunikasi USB secara langsung

dengan komputer tanpa perlu menggunakan periferal tambahan dalam desain

instrumen.

Dalam tugas akhir ini akan dirancang suatu instrumen elektrokardiogram

(EKG) menggunakan pengontrol mikro Atmel AVR ATMEGA8 yang diharapkan

dapat melakukan transmisi data secara langsung dengan komputer melalui

komunikasi USB. Cara kerja protokol USB akan dipelajari dan kemudian

diimplementasikan dalam pemrograman pengontrol mikro sehingga dapat

dilakukan akuisisi data sinyal EKG ke dalam komputer.

1.2. Rumusan Masalah

Permasalahan yang dibahas dalam tugas akhir ini adalah “Bagaimana

merancang instrumen EKG dengan sistem akuisisi data menggunakan protokol

USB?”.

1.3. Tujuan Pembahasan

Tujuan pembahasan tugas akhir ini adalah “merealisasikan instrumen EKG

dengan sistem akuisisi data menggunakan protokol USB”.

1.4. Batasan Masalah

Batasan masalah tugas akhir ini adalah sebagai berikut :

1. Pengontrol mikro yang digunakan adalah Atmel AVR ATMEGA8.

2. USB device yang dirancang merupakan class HID (Human Interface

Device), low-speed device.

(12)

BAB 1 PENDAHULUAN 3

Universitas Kristen Maranatha 4. Akuisisi sinyal EKG hanya menggunakan tiga elektroda dengan

konfigurasi Limb Lead II.

5. Analisa yang dilakukan terhadap sinyal EKG adalah pengukuran laju

detak jantung saja.

1.5. Sistematika Penulisan

Laporan tugas akhir ini disusun dalam enam bab sebagai berikut :

1. BAB 1 PENDAHULUAN

Bab ini membahas tentang latar belakang masalah, perumusan

masalah, tujuan pembahasan, batasan masalah, dan sistematika penulisan

tugas akhir.

2. BAB 2 DASAR-DASAR UNIVERSAL SERIAL BUS (USB)

Bab ini membahas teori dasar protokol USB yang meliputi arsitektur,

klasifikasi peralatan USB, Human Interface Device (HID), proses transfer

data pada HID, serta firmware V-USB yang akan digunakan pada

perancangan.

3. BAB 3 DASAR-DASAR ELEKTROKARDIOGRAM (EKG)

Bab ini membahas teori dasar elektrokardiogram yang meliputi

terminologi dasar, fisiologi jantung, cara pengambilan sinyal, serta

masalah-masalah yang sering terjadi dalam perancangan instrumen EKG.

4. BAB 4 PERANCANGAN DAN REALISASI

Bab ini membahas proses perancangan dan realisasi alat yang

digunakan untuk melakukan akuisisi data sinyal elektrokardiogram serta

(13)

BAB 1 PENDAHULUAN 4

Universitas Kristen Maranatha 5. BAB 5 HASIL DAN ANALISIS

Bab ini berisi data pengamatan yang didapat dari hasil percobaan serta

analisa terhadap data-data tersebut. Analisa meliputi perfoma transmisi data

melalu protokol USB serta performansi instrumen dan algoritma

pemrosesan sinyal yang telah dirancang dan direalisasikan.

6. BAB 6 PENUTUP

Bab ini berisi kesimpulan yang diperoleh dari hasil percobaan serta

(14)

84

Universitas Kristen Maranatha

BAB 6

PENUTUP

Bab ini berisi kesimpulan yang diperoleh dari hasil percobaan serta

saran-saran yang dapat digunakan untuk acuan penelitian lebih lanjut.

6.1. Kesimpulan

Berdasarkan hasil dan analisa data yang didapat, diperoleh kesimpulan

berikut :

1. Kecepatan transmisi data yang mencapai 23,79 kbit/s memungkinkan

pengontrol mikro ATMEGA dengan firmware berbasis V-USB

digunakan untuk akuisisi sinyal-sinyal frekuensi rendah.

2. Alat yang dirancang dapat digunakan untuk akuisisi data sinyal EKG

dengan frekuensi sampling 200 Hz, sehingga hanya dapat digunakan

untuk analisa laju detak jantung.

3. Instrumen EKG yang dirancang masih rentan terhadap sumber-sumber

noise sehingga harus digunakan pada kondisi yang tepat.

6.2. Saran

Saran berikut dapat dijadikan bahan pertimbangan jika akan diadakan

penelitian lebih lanjut :

1. Implementasi V-USB sebagai communication class device (CDC)

untuk memungkinkan transmisi data yang lebih cepat.

2. Penggunaan process pipe untuk transfer data host software dengan

GUI untuk meningkatkan kecepatan pemrosesan data.

3. Perancangan instrumen EKG yang lebih baik agar tahan terhadap

(15)

Daftar Pustaka

[1]

Technology and Applications

Kaur, Singh, Ubhi, & Rani. 2011. “Digital Filteration of ECG Signal for Removal of Baseline Drift”. International Conference on Telecommunication

[2]

Kugelstadt, T. 2005. “Getting the most out of your instrumentation amplifier

design”. Texas Instrument Analog Applications Journal

[3]

M.W. Hann. “Ultra Low Power, 18 bit Precision ECG Data Acquistion

System”. Texas Instrument Precision Design

[4]

Merck, “Electrical Injuries”. 1997. Pennsylvania : Merck.

[5]

Ogata, K. 1970. “Modern Control Engineering”. New Jersey : Prentice Hall

[6]

Pan, J. Tompkins, W.J. 1985. “A Real-Time QRS Detection Algorithm”. IEEE

Transactions on Biomedical Engineering

[7]

Townsend, Neil. 2001. “Medical Electronics”

[8]

USB.org. 2000. “Universal Serial Bus Spesification”. USB.org

[9]

USB.org. 2001. “Device Class Definition for Human Interface Devices

(HID)”. USB.org [10]

Van Valkenburg, M.E. 1982. “Analog Filter Design”. Oxford University

Press

[11]

Winter, B.B. Webster, J.G. 1983. “Driven-Right-Leg Circuit Design”. IEEE

(16)

Lampiran A : USB Device Descriptor

Device Descriptor

Item Keterangan

bLength Panjang device descriptor, selalu 18 byte bDescriptorType Tipe 1 (device descriptor)

bcdUSB Versi USB (1.0, 1.1, atau 2.0) dala m BCD bDeviceClass Nilai tergantung pada kelas device

bDeviceSubClass Perincian kelas device bDeviceProtocol Kualifikasi kelas device bMaxPacketSize Jumlah data paket maksimum idVendor Identifikasi pembuat USB

idProduct Identifikasi produk USB berdasarkan pembuat bcdDevice Seri device dalam BCD

iManufacturer String descriptor pembuat USB iProduct String descriptor produk USB iSerialNumber String descriptor seri device bNumConfigurations Jumlah configuration descriptor

Configuration Descriptor

Item Keterangan

bLength Panjang configuration descriptor, selalu 9 byte bDescriptorType Tipe 2 (configuration descriptor)

wTotallength Panjang keseluruhan device descriptor bNumInterfaces Jumlah antarmuka yang didukung

bConfigurationValue Nilai untuk argumen request SET_CONFIG iConfiguration Indeks untuk string descriptor

bmAttributes Sifat khusus konfigurasi

bMaxPower Arus maksimum pada USB bus

Interface Descriptor

Item Keterangan

bLength Panjang interface descriptor, selalu 9 byte bDescriptorType Tipe 4 (interface descriptor)

bInterfaceNumber Indeks antarmuka

bAlternateSetting Aturan khusus pada antarmuka

bNumEndpoints Jumlah endpoint yang digunakan antarmuka bInterfaceClass Serupa dengan device descriptor

bInterfaceSubClass Serupa dengan device descriptor bInterfaceProtocol Serupa dengan device descriptor

(17)

Lampiran B : HID Report Descriptor

Report Descriptor disusun berdasarkan aturan USB.org, yang tersusun atas

tiga tipe item : Main, Global, dan Local. Main item meliputi Input, Output,

Feature, Collection, dan End Collection. Global dan Local item menjelaskan

properti Main item.

Contoh di bawah adalah HID Report Descriptor dari USB-ECG. Mengingat

ada banyak sekali konten report descriptor, maka pada bagian ini hanya diberikan

satu contoh saja. Rincian lengkap dari HID report descriptor dapat dilihat pada

http://www.usb.org/developers/hidpage.

0x06, 0x00, 0xFF, // USAGE_PAGE (Vendor Defined Page 1); Global Item

0x09, 0x01, // USAGE (Vendor Usage 1); Local Item

0xA1, 0x01, // COLLECTION (Application); Main Item

0x15, 0x00, // LOGICAL_MINIMUM (0); Global Item

0x26, 0xFF, 0x00, // LOGICAL_MAXIMUM (255); Global Item

0x75, 0x08, // REPORT_SIZE (8); Global Item

0x95, 0x02, // REPORT_COUNT (2); Global Item

0x09, 0x00, // USAGE (Undefined) ; Local Item

0xB2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf); Main Item

0xC0 // END_COLLECTION (Application); Main Item

Karena USB-ECG adalah custom device, maka digunakan USAGE dan

USAGE PAGE yang bersifat Vendor Defined. COLLECTION menandakan awal

dari suatu report data. Nilai report dibatasi dari 0 hingga 255.

Panjang report 8 bit, dengan count 2. Artinya dalam satu kali transmisi,

report buffer berisi 16 bit data. Karena fungsinya tidak spesifik, maka diberi

USAGE Undefined. Tipe report adalah FEATURE (bidirectional). END

(18)

Lampiran C : Skematik dan PCB USB-ECG

(19)

2) Realisasi Alat

3) Tes Alat

Hasil monitoring pada subyek, dilihat pada osiloskop dan GUI

USB-ECG

(20)

Lampiran D : Listing Program

1)

Device-side Software

#include <avr/io.h>

#include <avr/wdt.h>

#include <avr/interrupt.h>

#include <util/delay.h>

#include <avr/pgmspace.h>

#include "usbdrv.h"

#include "func_init.h"

/*---USB INTERFACE---*/

PROGMEM const char usbHidReportDescriptor[22] = { //22

0x06, 0x00, 0xff, // USAGE_PAGE (Vendor Defined

Page 1)

0x09, 0x01, // USAGE (Vendor Usage 1)

0xa1, 0x01, // COLLECTION (Application)

0x15, 0x00, // LOGICAL_MINIMUM (0)

0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255)

0x75, 0x08, // REPORT_SIZE (8)

0x95, 0x02, // REPORT_COUNT (2)

0x09, 0x00, // USAGE (Undefined)

0xb2, 0x02, 0x01, // FEATURE (Data,Var,Abs,Buf)

0xc0 // END_COLLECTION

};

static uchar bytesRemaining;

static int adc_w;

static uchar adc_h;

(21)

usbMsgLen_t usbFunctionSetup(uchar data[8])

{

usbRequest_t *rq = (void *)data;

if((rq->bmRequestType & USBRQ_TYPE_MASK) == USBRQ_TYPE_CLASS)

{ /* HID class request */

if(rq->bRequest == USBRQ_HID_GET_REPORT) {

bytesRemaining = 2;

return USB_NO_MSG;

}

}

return 0;

}

uchar usbFunctionRead(uchar *data, uchar len)

{

if(len > bytesRemaining)

len = bytesRemaining;

bytesRemaining -= len;

*(data) = adc_h;

*(data+1) = adc_l;

return len;

}

/*---MAIN LOOP---*/

int main(void) {

uchar i;

wdt_enable(WDTO_1S);

usbInit();

usbDeviceDisconnect();

i = 0;

while(--i) {

wdt_reset();

_delay_ms(1);

}

(22)

adc_init();

sei();

for(;;) {

wdt_reset();

usbPoll();

adc_w = read_adc();

adc_h = (adc_w >> 8);

adc_l = adc_w & 0xff;

}

return 0;

}

/* --- */

2)

Host-side Software

#include <stdlib.h>

#include <string.h>

#include <time.h>

#include "hiddata.h"

#include "../firmware/usbconfig.h"

#include "stdafx.h"

/*Kalau ada Error*/

static char *usbErrorMessage(int errCode)

{

static char buffer[80];

switch(errCode) {

case USBOPEN_ERR_ACCESS: return "Access to device denied";

case USBOPEN_ERR_NOTFOUND: return "Specified device not found";

case USBOPEN_ERR_IO: return "Communication error with

device";

default: sprintf(buffer, "Unknown USB error %d", errCode);

return buffer;

}

return NULL; /* not reached */

(23)

/*Cari USB Device dengan VID dan PID yang sesuai*/

static usbDevice_t *openDevice(void)

{

usbDevice_t *dev = NULL;

unsigned char rawVid[2] = {USB_CFG_VENDOR_ID}, rawPid[2] =

{USB_CFG_DEVICE_ID};

char vendorName[] = {USB_CFG_VENDOR_NAME, 0},

productName[] = {USB_CFG_DEVICE_NAME, 0};

int vid = rawVid[0] + 256 * rawVid[1];

int pid = rawPid[0] + 256 * rawPid[1];

int err;

if((err = usbhidOpenDevice(&dev, vid, vendorName, pid,

productName, 0)) != 0) {

fprintf(stderr, "1. Error finding %s: %s\n", productName,

usbErrorMessage(err));

return NULL;

}

else {

fprintf(stderr, "2. No Error\n");

return dev;

}

}

static int data_buff, bpm_buffer;

static void DataDump(char *buffer)

{

data_buff = (unsigned int)buffer[0]*256 + (unsigned int)buffer[1];

data_buff = Filter(data_buff);

bpm_buffer = PanTom(data_buff);

fprintf(stdout,"%d\n",data_buff);

(24)

int main(int argc, char **argv) {

clock_t start;

usbDevice_t *dev;

char buffer[3];

int err;

if(argc < 2) {

exit(1);

}

if((dev = openDevice()) == NULL) exit(1);

int len = sizeof(buffer);

if(strcasecmp(argv[1], "read") == 0) {

start = clock();

while(1) {

if (difftime(clock(),start) >= 5) {

if((err = usbhidGetReport(dev, 0, buffer, &len)) == 0) {

DataDump(buffer + 1);

BPM_count(bpm_buffer);

}

start = clock();

}

}

}

usbhidCloseDevice(dev);

return 0;

(25)

3)

Graphical User Interface

public int x_scale, y_scale, bpm;

public String bpm_buffer; pb_Graph.Image = imgGraph

(26)

private void bt_Start_Click(object sender, EventArgs e)

(27)

gpcPath.AddLine(x0 >> x_scale,

private void errorData(object sender, DataReceivedEventArgs e) {

if (e.Data.StartsWith("1")) {

if (MessageBox.Show("An error has occured. Reconnect USB- ECG and restart the application!", "Error",

MessageBoxButtons.OK, MessageBoxIcon.Error) ==

DialogResult.OK) IsStarted = false;

(28)

else {

proc.CancelErrorRead(); IsRec = true;

} }

private void Form1_FormClosing(object sender, FormClosingEventArgs e) {

if (IsStarted && proc.HasExited == false)

{

proc.CancelOutputRead();

proc.Kill();

} }

} }

Source code lengkap dengan linker dependencies dapat diakses pada CD Tugas

Referensi

Dokumen terkait

Oleh karena itu, sebaiknya PT PELNI Persero Direktorat SDM dan Umum perlu melakukan kegiatan yang dapat meningkatkan aset pengetahuan yang dimiliki oleh perusahaan, misalnya

TERESA BRICKFIELDS JALAN SULTAN

Keenam cara tersebut adalah (1) berpikir konstruktif ketika melihat dan mengalami suatu fenomena; (2) berpikir kritis terhadap peristiwa yang terjadi; (3) memaknai

• Mengisi data ADA atau TIDAK sarana pengendali • Kondisi Sarana Pengendalian : Pilih Memadai atau.

Federici dan Skaalvik (2011) dalam penelitiannnya terhadap 300 kepala sekolah di Norwegia yang dilakukannya menunjukan bahwa efikasi diri kepala sekolah memiliki

kerja sebanyak 520 orang. Pabrik ini terletak di Kota Yogyakarta bagian timur tepatnya di Kelurahan Sitimulyo, Kecamatan Piyungan, Kabupaten Bantul atau tepatnya Jalan

Husni Jalil, Eksistensi Otonomi Khusus Provinsi Nanggroe Aceh Darussalam Dalam Negara Kesatuan RI Berdasarkan UUD 1945 , CV.. antara pemerintah, pemerintahan provinsi

Hasil penelitian menunjukkan: (1) 21 pengrajin bata merah memiliki jumlah tanggungan kecil (2) 24 pengrajin mengeluarkan modal kecil untuk satu kali produksi (3)