• Tidak ada hasil yang ditemukan

BAB V KESIMPULAN DAN SARAN

5.2. Saran

Penelitian ini masih memiliki beberapa kekurangan. Untuk mengatasi kekurangan tersebut dan agar tidak terjadi lagi kesalahan yang sama pada penelitian-penelitian selanjutnya maka diperlukan beberapa saran sebagai berikut :

1. Penggunaan RFID lebih effisien karena untuk setiap tap kartu tidak membutuhkan waktu lebih dari 1 detik.

2. Perbaikan pada konfigurasi hardware agar alat dapat bekerja secara langsung ketika dihubungkan dengan komputer.

3. Pembuatan database lebih didetailkan lagi, karena dalam penelitian masih dapat dibilang sederhana dalam pembuatan database-nya.

77

DAFTAR PUSTAKA

[1] Adam, W., Sagala, L., 2014, Sistem Absensi Pegawai Menggunakan Teknologi RFID, http://ejournal.lpkia.ac.id/files/students/essays/journals/301.pdf, diakses 25 September 2016.

[2] Setiawan, E. B. dan Kurniawan, B., 2015, Perancangan Sistem Absensi Kehadiran Perkuliahan dengan Menggunakan Radio Frequency Identification (RFId), Vol.1, no.2.

[3] Ardaninggar, E. A., 2016, Sistem Keamanan Portal Perumahan Berbasis RFID, Tugas Akhir, Jurusan Teknik Elektro, FST, Universitas Sanata Dharma, Yogyakarta. [4] Harsono, B., Liman J., dan Djohan N, 2012, Aplikasi RFID Sebagai Pengaman Pintu

Masuk, vol.01, no.01, Jan-Maret 2012, hal 2-6.

[5] Saputro, E, 2016, Rancang Bangun Pengaman Pintu Otomatis Menggunakan E-KTP Berbasis Mikrokontroler ATMega328, Tugas Akhir, Jurusan Teknik Elektro, Fakultas Teknik, Universitas Negeri Semarang, Semarang.

[6] Kristanto N. Y., 2014, Otomatisasi Alat Presensi Berteknologi RFID Berbasis Arduino Mega 2560 R3, Tugas Akhir, Jurusan Teknik Elektro, FST, Universitas Sanata Dharma, Yogyakarta.

[7] ----, 2011, Apa dan Mengapa e-KTP, http://www.e-ktp.com/2011/06/hello-world/, diakses 25 September 2016

[8] ----, 2013, Press Release e-KTP Pusat Teknologi Informasi dan Komunikasi-BPPT, http://www.bppt.go.id/berita/press-release/press-release-2013/1664-press-release- pusat-teknologi-informasi-dan-komunikasi-bppt, diakses 25 September 2016

[9] ----, 2011, Fungsi dan Kegunaan e-KTP, http://www.e-ktp.com/2011/06/fungsi-dan- kegunaan-e-ktp/, diakses 26 September 2016

[10] ----, ----, Struktur e-KTP, http://disdukcapil.natunakab.go.id/index.php?, diakses 27 September 2016

[11] ----, 2011, Seperti Apa Bentuk e-KTP?, http://www.e-ktp.com/2011/04/bentuk- gambar-foto-e-ktp/, diakses 27 September 2016

[12] ---, 2005, Data Sheet ISO/IEC 14443/ RFID, Atmel

[13] PN532 NFC RFID Module User Guide, www.elechouse.com, diakses 26 November 2016

[15] Swastika, W., 2008, VB & MySQL Proyek Membuat Program General Ledger Seri 1, Dian Rakyat, Jakarta.

[16] Madcoms, 2003, DataBase Visual Basic 6.0 dan SQL, Madcoms-Andi, Yogyakarta. [17] ---, 2012, Diktat Pemrograman Antarmuka, Universitas Sanata Dharma,

Yogyakarta.

[18] Putra, D., 2009, Sistem Biometrika: Konsep Dasar, Teknik Analisis Citra dan Tahapan Membangun Aplikasi Sistem Biometrika, Andi Offset, Yogyakarta.

[19] ----, ----, Modul sensor sidik jari finger print fingerprint ZFM208SA, https://www.indo-ware.com/produk-3493-modul-sensor-sidik-jari-finger-print-

fingerprint.html, diakses 25 September 2016

[20] ---, 2014, Data Sheet Atmel ATmega640/V-1280/V-1281/V-2560/V-2561/V, Atmel

[21] ----, ----, Arduino Mega, https://www.arduino.cc/en/Main/ArduinoBoardMega, diakses 1 Desember 2016

[22] ----, ----, LCD, http://www.engineersgarage.com/electronic-components/16x2-lcd- module-datasheet, diakses 2 Desember 2016

[23] ----, ----, Pengertian LED (Light Emitting Diode) dan Cara Kerjanya, http://teknikelektronika.com/pengertian-led-light-emitting-diode-cara-kerja/, diakses 5 Desember 2016

[24] ----, ----, Pengertian Piezoelectric Buzzer dan Cara Kerjanya, http://teknikelektronika.com/pengertian-piezoelectric-buzzer-cara-kerja-buzzer/, diakses 5 Desember 2016

79

LAMPIRAN 1

Blok Diagram Sistem

&

Blok Diagram Sistem

Gambar L1.1. Revisi Blok Diagram Sistem.

Rankaian Keseluruhan Sistem

Gambar L1.2. Revisi Rangakaian Sistem. Mikrokon troler Laptop/ PC e-KTP Reader e-KTP Sensor Sidik Jari LCD Database Jari Telunjuk

LAMPIRAN 2

Flowchart Perangkat Lunak

Gambar L2.1. Revisi Flowchart Perangkat Lunak.

Flowchart Mikrokontroler

Flowchart Pengenalan Tag RFID

Gambar L2.3. Revisi Pengenalan Tag RFID.

Flowchart Pengenalan Sidik Jari

Flowchart pada Laptop

Gambar L2.5. Revisi Alur Pada Laptop

Flowchart Pengisian Data Dosen

Flowchart Pengisian Data Mahasiswa

Gambar L2.7. Revisi Pengisian Data Mahasiswa.

Flowchart Pengisian Data Matakuliah

Flowchart Pengisian KRS Mahasiswa

Gambar L2.9. Alur Pengisian KRS Mahasiswa.

Flowchart Presensi Dosen

Flowchart

Record Keluar Dosen

Gambar L2.11. Revisi Alur Record Keluar Dosen.

Flowchart Presensi Mahasiswa

Flowchart Sistem Presensi

LAMPIRAN 3

Program Arduino (Full Program

Program Full Presensi

1. //Program Utama 2. //Nana Natalianto 3. //135114016

4. //Program Baca data rfid

5. #include <LiquidCrystal.h> //library lcd 16x2

6. #include <PN532_HSU.h> //library komunikasi HSU PN532 7. #include <PN532.h> //library PN532

8. PN532_HSU pn532hsu(Serial1); 9. PN532 nfc(pn532hsu);

10. // Program Terpisah membaca ID sidik jari

11. #include <Adafruit_Fingerprint.h> //librari Fingerprint 12. #include <SoftwareSerial.h> //librari komunikasi serial 13. int getFingerprintIDez(); //data Id dalam format integer 14. // pin #10 masukan dari sensor (kabel hijau)

15. // pin #11 keluaran dari sensor (kabel putih)

16. SoftwareSerial mySerial(10, 11); //Pin arduino sebagai komunikasi serial 17. Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

18. LiquidCrystal lcd(9, 8, 5, 4, 3, 2); //pin yang digunakan lcd 19. boolean kartu = 1; //Inisialisasi kartu

20. void setup (void){ 21. Serial.begin(115200); 22. lcd.begin(16, 2); 23. lcd.clear(); 24. lcd.setCursor(0, 0); 25. lcd.print("Sistem Presensi"); 26. lcd.setCursor(0, 1); 27. lcd.print("Nana---1316"); 28. delay(1000); 29. lcd.clear(); 30. lcd.setCursor(0, 0); 31. lcd.print("---Inisialisai--"); 32. lcd.setCursor(1, 0); 33. lcd.print("Reader+Fingerprt"); 34. delay(500); 35. lcd.clear(); 36. lcd.print("---Sistem OK!---"); 37. delay(500);

38. //Indikator led dan buzzer

39. pinMode(46, OUTPUT); //output led merah 40. pinMode(44, OUTPUT); //output led hijau 41. pinMode(40, OUTPUT); //output led buzzer 42. //pengaturan RFID reader

43. nfc.begin();

44. uint32_t versiondata = nfc.getFirmwareVersion(); 45. if (! versiondata){

46. //Serial.print("Didn't find PN53x board"); 47. while (1); // hal}

48. //Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); 49. nfc.setPassiveActivationRetries(0xFF);

50. nfc.SAMConfig();

51. //Pengaturan fingerprint sensor 52. // data rate untuk sensor serial port 53. finger.begin(57600);

54. //verivikasi Fingerprint 55. if (finger.verifyPassword()){

56. //Serial.println("Found fingerprint sensor!"); } 57. else{

58. //Serial.println("Did not find fingerprint sensor :("); 59. while (1);}

60. }//setup

61. void loop(void){

62. while (kartu == 1) // inisialisasi kartu terlebih dahulu dibaca{ 63. digitalWrite(46, HIGH); //led merah standby

64. lcd.clear();

65. lcd.print("Tap-kan Kartu !"); 66. //delay(1000);

67. boolean success;

68. uint8_t uid[] = {0, 0, 0, 0, 0, 0, 0}; // Data penyimpanan UID

69. uint8_t uidLength; //panjang data UID (4 atau 7 bytes dari kartu tipe ISO14443A)

70. success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);

71. if (success){

72. nfc.PrintHex(uid, uidLength);

73. Serial.print("");//Serial.print(uid[i], HEX); 74. digitalWrite(44, HIGH); //led hijau menyala 75. digitalWrite(40, HIGH); //buzzer bunyi 76. delay(200);

77. digitalWrite(46, LOW); //led merah mati 78. delay(500);

79. digitalWrite(46, HIGH); //led merah menyala 80. delay(500);

81. digitalWrite(44, LOW); //led hijau mati 82. digitalWrite(40, LOW); //buzzer mati 83. lcd.clear(); 84. lcd.print("Kartu Terdeteksi"); 85. delay(500); 86. lcd.clear(); 87. lcd.setCursor(6, 0); 88. lcd.print("Lihat"); 89. lcd.setCursor(5, 1); 90. lcd.print("Komputer"); 91. delay(500);

92. // waktu tunggu untuk tap fingerprint 93. delay(500);

95. while (kartu == 0) //Jika kartu tidak terdeteksi{ 96. getFingerprintIDez(); //mpengambilan data id jari 97. delay(50);

98. digitalWrite(46, HIGH); //led merah standby 99. lcd.clear();

100. lcd.print("Tempelkan Jari !");} 101. }//loop

102. // Proses dari program getFingerprintIDez(); 103. uint8_t getFingerprintID(){ 104. uint8_t p = finger.getImage(); 105. switch (p){ 106. case FINGERPRINT_OK: 107. lcd.clear(); 108. lcd.print("Image Taken"); 109. delay(1000); 110. break; 111. case FINGERPRINT_NOFINGER: 112. Serial.println("No finger detected"); 113. return p; 114. case FINGERPRINT_PACKETRECIEVEERR: 115. Serial.println("Communication error"); 116. return p; 117. case FINGERPRINT_IMAGEFAIL: 118. Serial.println("Imaging error"); 119. return p; 120. default: 121. Serial.println("Unknown error"); 122. return p;} 123. // OK success! 124. p = finger.image2Tz(); 125. switch (p){ 126. case FINGERPRINT_OK: 127. lcd.clear(); 128. lcd.print("Converted"); 129. delay(1000); 130. break; 131. case FINGERPRINT_IMAGEMESS: 132. Serial.println("Image too messy"); 133. return p;

134. case FINGERPRINT_PACKETRECIEVEERR: 135. Serial.println("Communication error");

136. return p;

137. case FINGERPRINT_FEATUREFAIL:

138. Serial.println("Could not find fingerprint features"); 139. return p;

140. case FINGERPRINT_INVALIDIMAGE:

141. Serial.println("Could not find fingerprint features"); 142. return p;

144. Serial.println("Unknown error"); 145. return p;} 146. // OK converted! 147. p = finger.fingerFastSearch(); 148. if (p == FINGERPRINT_OK){ 149. lcd.clear(); 150. lcd.print("Jari Cocok"); 151. delay(1000);} 152. else if (p == FINGERPRINT_PACKETRECIEVEERR){ 153. Serial.println("Communication error"); 154. return p;} 155. else if (p == FINGERPRINT_NOTFOUND){ 156. Serial.println("Did not find a match");

157. return p;} 158. else{ 159. Serial.println("Unknown error"); 160. return p;} 161. // found a match! 162. Serial.print("#"); Serial.print(finger.fingerID);

163. //Serial.print(" with confidence of "); Serial.println(finger.confidence);} 164. // returns -1 if failed, otherwise returns ID #

165. int getFingerprintIDez(){ 166. uint8_t p = finger.getImage(); 167. if (p != FINGERPRINT_OK) return -1; 168. p = finger.image2Tz(); 169. if (p != FINGERPRINT_OK) return -1; 170. p = finger.fingerFastSearch(); 171. if (p != FINGERPRINT_OK) return -1; 172. // found a match! 173. Serial.print("#"); Serial.print(finger.fingerID); 174. digitalWrite(44, HIGH); //led hijau menyala sesaat 175. digitalWrite(40, HIGH); //buzzer bunyi sesaat 176. digitalWrite(46, LOW); //led merah mati sesaat 177. delay(250);

178. digitalWrite(46, HIGH); //led merah menyala 179. delay(250);

180. digitalWrite(44, LOW); //led hijau mati 181. digitalWrite(40, LOW); //buzzer mati 182. lcd.clear(); 183. lcd.print("Jari Terdeteksi"); 184. delay(500); 185. lcd.clear(); 186. lcd.setCursor(6, 0); 187. lcd.print("Lihat"); 188. lcd.setCursor(5, 1); 189. lcd.print("Komputer"); 190. delay(500); 191. lcd.clear(); 192. lcd.print("--Terima Kasih--");

193. delay(500);

194. //Serial.print(" with confidence of "); Serial.println(finger.confidence); 195. kartu=1; //kembali dari awal untuk membaca data

LAMPIRAN 4

Presensi Dosen

A.

Presensi Awal

1. 'Deklarasi untuk inisialisasi koneksi dan tabel yang digunakan 2. Option Explicit

3. Dim TA_Presensi As New ADODB.Connection 4. Dim Rsdosen As ADODB.Recordset

5. Dim Rsmatakuliah As ADODB.Recordset 6. Dim Rspresensidsn As ADODB.Recordset 7. 'Deklarasi variabel untuk timer2

8. Dim i As Integer 9. Public Sub BukaDB()

10. 'Pengaturan koneksi dan tabel database yang digunakan 11. Set TA_Presensi = New ADODB.Connection

12. TA_Presensi.CursorLocation = adUseClient 13. Set Rsdosen = New ADODB.Recordset 14. Set Rsmatakuliah = New ADODB.Recordset 15. Set Rspresensidsn = New ADODB.Recordset

16. TA_Presensi.Open "Provider=MSDASQL.1;Persist Security Info=False;Data Source=TA_Presensi"

17. End Sub

18. Private Sub Form_Load()

19. 'Pengaturan form awal dijalankan 20. Call BukaDB 21. Adodc1.ConnectionString = TA_Presensi 22. Adodc1.RecordSource = "dosen" 23. Adodc2.ConnectionString = TA_Presensi 24. Adodc2.RecordSource = "matakuliah" 25. Adodc3.ConnectionString = TA_Presensi 26. Adodc3.RecordSource = "presensidsn" 27. Adodc3.Refresh

28. Set Form2.DataGrid1.DataSource = Form1.Adodc3 29. 'Set Form5.DataGrid1.DataSource = Form1.Adodc3 30. Text1.MaxLength = 30 31. Call KondisiAwal 32. 'Pengaturan Timer 33. Form2.Timer2.Enabled = False 34. Form5.Timer2.Enabled = False 35. Timer2.Enabled = False 36. Timer3.Enabled = False 37. End Sub

38. Private Function COMCheckPort(Port As Long) As Boolean 39. On Error GoTo OpenCom_Error

40. MSComm1.CommPort = Port

41. If MSComm1.PortOpen = True Then 42. COMCheckPort = False

43. Exit Function 44. Else

46. MSComm1.PortOpen = False 47. COMCheckPort = True 48. Exit Function 49. End If 50. OpenCom_Error: 51. COMCheckPort = False 52. End Function

53. Private Function GetFirstAvailableCOMPort() As Long 54. 'Pencarian COMPoert Laptop

55. Dim Port As Long 56. For Port = 1 To 20

57. If COMCheckPort(Port) = True Then 58. GetFirstAvailableCOMPort = Port 59. Exit Function 60. End If 61. Next Port 62. GetFirstAvailableCOMPort = 0 63. End Function

64. Private Sub Form_Activate()

65. 'Inisilaisasi koneksi VB dengan Arduino 66. With MSComm1

67. 'non aktifkan dulu serial port

68. If .PortOpen Then .PortOpen = False 69. Dim nPort As Long

70. nPort = GetFirstAvailableCOMPort() 71. 'set serial port yang ingin digunakan 72. .CommPort = nPort

73. 'set baud rate,parity,databits,stopbits 74. .Settings = "115200,N,8,1"

75. 'set DTR and RTS 76. .DTREnable = True 77. .RTSEnable = True

78. 'aktifkan event oncomm event 79. .RThreshold = 1

80. 'non aktifkan event oncomm 81. .SThreshold = 0

82. 'aktifkan serial port 83. .PortOpen = True 84. End With 'MSComm1 85. 'Set Variabel timer 86. i = 1

87. Form2.Timer2.Enabled = False 88. Form5.Timer2.Enabled = False 89. End Sub

90. Sub KondisiAwal()

91. 'Kondisi untuk textbox saat digunakan 92. Text1 = ""

93. Text2 = "" 94. Text3 = ""

95. Text4 = "" 96. Text5 = "" 97. End Sub

98. Private Sub Command1_Click()

99. 'Mengembalikan kondisi textbox ke kondisi awal (tombol reset) 100. Text1.Text = "" 101. Text2.Text = "" 102. Text3.Text = "" 103. Text4.Text = "" 104. Text5.Text = "" 105. Form_Activate 106. Text1.SetFocus 107. End Sub

108. Private Sub Command2_Click() 109. 'Tombol keluar

110. End 111. End Sub

112. Private Sub Text1_Change() 113. 'Cek data tabel dosen

114. Call BukaDB

115. Set Rsdosen = New ADODB.Recordset 116. Rsdosen.Open "SELECT * FROM dosen " _ 117. & "WHERE IDDosen='" & Text1.Text & "'", _ 118. TA_Presensi, adOpenDynamic, adLockOptimistic 119. 'Jika di temukan datanya

120. If Not Rsdosen.EOF Then

121. 'Tampilkan nama,alamat,jurusan pada textbox 122. Text2.Text = Rsdosen!NamaDsn

123. Text3.Text = Rsdosen!NIP 124. Timer3.Enabled = False 125. 'Jika data tidak di temukan 126. Else 127. Text1.SetFocus 128. Timer3.Enabled = True 129. Exit Sub 130. End If 131. End Sub

132. Private Sub Text3_Change() 133. 'Cek data tabel matakuliah 134. Call BukaDB

135. Set Rsmatakuliah = New ADODB.Recordset

136. Rsmatakuliah.Open "SELECT * FROM matakuliah " _ 137. & "WHERE Dosen_NIP='" & Text3.Text & "'", _ 138. TA_Presensi, adOpenDynamic, adLockOptimistic 139. 'Jika di temukan datanya

140. If Not Rsmatakuliah.EOF Then

141. 'Tampilkan Kode_MK dan Nama_MK pada textbox 142. Text4.Text = Rsmatakuliah!Kode_MK

144. 'Menampilkan sebagian data form1 pada form2 145. Form2.Label7 = Form1.Text2.Text

146. Form2.Label8 = Form1.Text3.Text 147. Form2.Label9 = Form1.Text4.Text 148. 'Validasi dan menyimpan data 149. Call BukaDB

150. Set Rspresensidsn = New ADODB.Recordset

151. Rspresensidsn.Open "SELECT * FROM presensidsn WHERE NamaDsn='" & Text2.Text & "'", TA_Presensi, adOpenDynamic, adLockOptimistic

152. If Not Rspresensidsn.EOF Then

153. MsgBox "Tidak Dapat Presensi Lagi..!", vbCritical, "Peringatan" 154. Call KondisiAwal

155. Form_Activate

156. Timer2.Enabled = False 157. Exit Sub

158. Else

159. Dim TambahPD As String

160. TambahPD = "Insert Into presensidsn values ('" & Form1.Label7 & "','" & Form1.Label8 & "', '" & Form1.Text4 & "', '" & Form1.Text5 & "','" & Form1.Text2 & "', '" & Form1.Text3 & "')"

161. TA_Presensi.Execute TambahPD

162. MsgBox "Data Berhasil Ditambah", vbInformation, "Pemberitahuan" 163. Form_Activate

164. Timer2.Enabled = True 165. End If

166. 'Jika tidak di temukan 167. Else

168. Exit Sub 169. End If 170. End Sub

171. Private Sub MSComm1_OnComm()

172. 'Kondisi MSComm untuk komunikasi VB dan Arduino 173. Dim strInput As String

174. With MSComm1 175. 'test event data masuk 176. Select Case .CommEvent 177. Case comEvReceive

178. 'tampilkan data dari Arduino 179. strInput = .Input

180. Text1.SelText = strInput 181. End Select

182. End With 'MSComm1 183. End Sub

184. Private Sub Timer1_Timer() 185. 'Pengaturan waktu dan tanggal

186. Label7.Caption = Format(Now, "hh:mm:ss")

187. Label8.Caption = Format(Date, "dddd,d mmmm yyyy") 188. End Sub

190. i = i + 1

191. If i = 5 Then 'waktu 5 detik 192. End If

193. 'Menampilkan Form2 untuk tabel presensi 194. Form2.Show 'Tampilkan form2 data presensi 195. Unload Me 'Tidak tampil form1 halaman utama 196. End Sub

197. Private Sub Timer3_Timer() 198. i = i + 1

199. If i = 10 Then 'waktu 10 detik 200. Call KondisiAwal

201. End If 202. End Sub

B.

Record Keluar

1. Private Sub Text1_Change() 2. 'Cek data tabel dosen

3. Call BukaDB

4. Set Rsdosen = New ADODB.Recordset 5. Rsdosen.Open "SELECT * FROM dosen " _ 6. & "WHERE IDDosen='" & Text1.Text & "'", _ 7. TA_Presensi, adOpenDynamic, adLockOptimistic 8. 'Jika di temukan datanya

9. If Not Rsdosen.EOF Then

10. 'Tampilkan nama,alamat,jurusan pada textbox 11. Text2.Text = Rsdosen!NamaDsn

12. Text3.Text = Rsdosen!NIP 13. Timer2.Enabled = True 14. Timer3.Enabled = False 15. 'Jika tidak di temukan 16. Else 17. Text1.SetFocus 18. Timer3.Enabled = True 19. Exit Sub 20. End If 21. End Sub

22. Private Sub Text3_Change() 23. 'Cek data tabel matakuliah 24. Call BukaDB

25. Set Rsmatakuliah = New ADODB.Recordset

26. Rsmatakuliah.Open "SELECT * FROM matakuliah " _ 27. & "WHERE Dosen_NIP='" & Text3.Text & "'", _ 28. TA_Presensi, adOpenDynamic, adLockOptimistic 29. 'Jika di temukan datanya

30. If Not Rsmatakuliah.EOF Then

31. 'Tampilkan Kode_MK dan Nama_MK pada textbox 32. Text4.Text = Rsmatakuliah!Kode_MK

33. Text5.Text = Rsmatakuliah!Nama_MK 34. 'Jika tidak di temukan

35. Else 36. Exit Sub 37. End If 38. End Sub

39. Private Sub Timer2_Timer() 40. i = i + 1

41. If i = 10 Then 'waktu 10 detik 42. End If

43. 'Proses penyimpanan hasil presensi dalam Format .xls 44. Dim oExcel As Object

45. Dim oBook As Object 46. Dim oSheet As Object

47. Set oExcel = CreateObject("Excel.Application") 48. Set oBook = oExcel.Workbooks.Add

49. Dim DataArray(1 To 500, 1 To 100) As Variant 50. Dim r As Integer

51. Dim NumberOfRows As Integer 52. 'Menyimpan presensi dosen

53. NumberOfRows = Form1.Adodc3.Recordset.RecordCount 54. Form1.Adodc3.Recordset.MoveFirst 55. For r = 1 To NumberOfRows 56. DataArray(r, 1) = Form1.Adodc3.Recordset.Fields("Jam") 57. DataArray(r, 2) = Form1.Adodc3.Recordset.Fields("Tanggal") 58. DataArray(r, 3) = Form1.Adodc3.Recordset.Fields("Matakuliah_Kode_MK") 59. DataArray(r, 4) = Form1.Adodc3.Recordset.Fields("Nama_MK") 60. DataArray(r, 5) = Form1.Adodc3.Recordset.Fields("NamaDsn") 61. DataArray(r, 6) = Form1.Adodc3.Recordset.Fields("Dosen_NIP") 62. Form1.Adodc3.Recordset.MoveNext

63. NextSet oSheet = oBook.Worksheets(1) 64. oSheet.Range("A1:F1").Font.Bold = True

65. oSheet.Range("A1 :F1").Value = Array("Jam", "Tanggal", "Matakuliah_Kode_MK", "Nama_MK", "NamaDsn", "Dosen_NIP")

66. oSheet.Range("A2").Resize(NumberOfRows, 100).Value = DataArray 67. 'Meyimpan presensi mahasiswa Form2

68. NumberOfRows = Form2.Adodc2.Recordset.RecordCount 69. Form2.Adodc2.Recordset.MoveFirst 70. For r = 1 To NumberOfRows 71. DataArray(r, 1) = Form2.Adodc2.Recordset.Fields("Jam") 72. DataArray(r, 2) = Form2.Adodc2.Recordset.Fields("Tanggal") 73. DataArray(r, 3) = Form2.Adodc2.Recordset.Fields("Matakuliah_Kode_MK") 74. DataArray(r, 4) = Form2.Adodc2.Recordset.Fields("Nama_MK") 75. DataArray(r, 5) = Form2.Adodc2.Recordset.Fields("NamaMhs") 76. DataArray(r, 6) = Form2.Adodc2.Recordset.Fields("Mahasiswa_NIM") 77. Form2.Adodc2.Recordset.MoveNext 78. Next

79. Set oSheet = oBook.Worksheets(1) 80. oSheet.Range("I1:N1").Font.Bold = True

81. oSheet.Range("I1 :N1").Value = Array("Jam", "Tanggal", "Matakuliah_Kode_MK", "Nama_MK", "NamaMhs", "Mahasiswa_NIM")

82. oSheet.Range("I2").Resize(NumberOfRows, 100).Value = DataArray

83. oBook.SaveAs "E:\Report Presensi" & Format(Date, "DDMMYY") & Format(Time, "HHMMSS") & ".xls"

84. oExcel.Quit

85. Form1.Adodc3.Recordset.MoveFirst

86. MsgBox "Data Berhasil Disimpan", 64, "Info" 87. 'Hapus datagrid1 Form2

88. Dim hapus As Integer

89. For hapus = 1 To Form1.Adodc3.Recordset.RecordCount 90. Form1.Adodc3.Recordset.MoveFirst

91. Form1.Adodc3.Recordset.Delete 92. Form1.Adodc3.Recordset.Update 93. Form1.Adodc3.Recordset.MoveNext 94. Next hapus

95. 'Hapus datagrid2 Form2

96. For hapus = 1 To Form2.Adodc2.Recordset.RecordCount 97. Form2.Adodc2.Recordset.MoveFirst 98. Form2.Adodc2.Recordset.Delete 99. Form2.Adodc2.Recordset.Update 100. Form2.Adodc2.Recordset.MoveNext 101. Next hapus 102. 'Mengatur form

103. Form1.Show 'Tampilkan form1 104. Unload Me 'Tidak tampil form6 105. End Sub

106. Private Sub Timer3_Timer() 107. i = i + 1

108. If i = 10 Then 'waktu 10 detik 109. Call KondisiAwal

110. Text1.SetFocus 111. End If

Presensi Mahasiswa

1. 'Deklarasi untuk inisialisasi koneksi dan tabel yang digunakan 2. Option Explicit

3. Dim TA_Presensi As New ADODB.Connection 4. Dim Rspresensimhs As ADODB.Recordset 5. Dim Rskrs_mhs As ADODB.Recordset 6. 'Deklarasi variabel untuk timer2

7. Dim i As Integer 8. Public Sub BukaDB()

9. 'Pengaturan koneksi dan tabel database yang digunakan 10. Set TA_Presensi = New ADODB.Connection

11. Set Rskrs_mhs = New ADODB.Recordset 12. Set Rspresensimhs = New ADODB.Recordset 13. TA_Presensi.CursorLocation = adUseClient

14. TA_Presensi.Open "Provider=MSDASQL.1;Persist Security Info=False;Data Source=TA_Presensi"

15. End Sub

16. Private Sub Command2_Click() 17. Dim hapus As Integer

18. For hapus = 1 To Adodc2.Recordset.RecordCount 19. Form2.Adodc2.Recordset.MoveFirst 20. Form2.Adodc2.Recordset.Delete 21. Form2.Adodc2.Recordset.Update 22. Form2.Adodc2.Recordset.MoveNext 23. Next hapus 24. End Sub

25. Private Sub Form_Load()

26. 'Kondisi form saat mulai dijalankan 27. Text1.MaxLength = 30

28. Call KondisiAwal

29. 'Inisialisasi semua variabel dan Timer 30. Form5.Timer2.Enabled = False 31. Timer2.Enabled = True 32. Timer3.Enabled = False 33. Timer4.Enabled = False 34. i = 1 35. End Sub

36. Private Function COMCheckPort(Port As Long) As Boolean 37. On Error GoTo OpenCom_Error

38. MSComm1.CommPort = Port

39. If MSComm1.PortOpen = True Then 40. COMCheckPort = False

41. Exit Function 42. Else 43. MSComm1.PortOpen = True 44. MSComm1.PortOpen = False 45. COMCheckPort = True 46. Exit Function 47. End If 48. OpenCom_Error: 49. COMCheckPort = False 50. End Function

51. Private Function GetFirstAvailableCOMPort() As Long 52. 'Pencarian COMPoert Laptop

53. Dim Port As Long 54. For Port = 1 To 20

55. If COMCheckPort(Port) = True Then 56. GetFirstAvailableCOMPort = Port 57. Exit Function 58. End If 59. Next Port 60. GetFirstAvailableCOMPort = 0 61. End Function

62. Private Sub Form_Activate()

63. 'Koneksi datagrid dengan vb presensi dosen 64. Call BukaDB

65. Form1.Adodc3.ConnectionString = TA_Presensi 66. Form1.Adodc3.RecordSource = "presensidsn" 67. Form1.Adodc3.Refresh

68. Set DataGrid1.DataSource = Form1.Adodc3 69. 'Koneksi datagrid dengan vb presensi mahasiswa 70. Call BukaDB

71. Adodc2.ConnectionString = TA_Presensi 72. Adodc2.RecordSource = "Presensimhs" 73. Adodc2.Refresh

74. Set DataGrid2.DataSource = Adodc2 75. 'Inisilaisasi koneksi VB dengan Arduino 76. With MSComm1

77. 'non aktifkan dulu serial port

78. If .PortOpen Then .PortOpen = False 79. Dim nPort As Long

80. nPort = GetFirstAvailableCOMPort() 81. 'set serial port yang ingin digunakan 82. .CommPort = nPort

84. .Settings = "115200,N,8,1" 85. 'set DTR and RTS

86. .DTREnable = True 87. .RTSEnable = True

88. 'aktifkan event oncomm event 89. .RThreshold = 1

90. 'non aktifkan event oncomm 91. .SThreshold = 0

92. 'aktifkan serial port 93. .PortOpen = True 94. End With 'MSComm1

95. 'Inisialisasi semua variabel dan Timer 96. i = 1

97. Timer2.Enabled = True

98. Form5.Timer2.Enabled = False 99. End Sub

100. Sub KondisiAwal()

101. 'Kondisi untuk textbox saat digunakan 102. Text1 = "" 103. Text2 = "" 104. Text3 = "" 105. Text4 = "" 106. Text5 = "" 107. End Sub

108. Private Sub Command1_Click()

109. 'Mengembalikan kondisi textbox ke kondisi awal (tombol reset) 110. Text1.Text = "" 111. Text2.Text = "" 112. Text3.Text = "" 113. Text4.Text = "" 114. Text5.Text = "" 115. Form_Activate 116. Text1.SetFocus 117. End Sub

118. Private Sub Text1_Change() 119. 'Menampilkan data tabel krs_mhs 120. Call BukaDB

121. Set Rskrs_mhs = New ADODB.Recordset

122. Rskrs_mhs.Open "SELECT * FROM krs_mhs " _

123. & "WHERE IDMahasiswa='" & Text1.Text & "' and Matakuliah_Kode_MK='" & Label9.Caption & "'", _

124. TA_Presensi, adOpenDynamic, adLockOptimistic 125. 'Jika di temukan datanya

126. If Not Rskrs_mhs.BOF Then 127. 'Tampilkan data pada textbox 128. Text2.Text = Rskrs_mhs!NamaMhs 129. Text3.Text = Rskrs_mhs!Mahasiswa_NIM 130. Text4.Text = Rskrs_mhs!Matakuliah_Kode_MK 131. Text5.Text = Rskrs_mhs!Nama_MK

132. 'validasi data kembar dan simpan data 133. Call BukaDB

134. Set Rspresensimhs = New ADODB.Recordset

135. Rspresensimhs.Open "SELECT * FROM presensimhs WHERE NamaMhs='" & Text2.Text & "'", TA_Presensi, adOpenDynamic, adLockOptimistic

136. If Not Rspresensimhs.EOF Then

137. MsgBox "Tidak Dapat Presensi Lagi..!", vbCritical, "Peringatan" 138. Call KondisiAwal

139. Text1.SetFocus 140. Exit Sub 141. Else

142. Dim TambahPM As String

143. TambahPM = "Insert Into presensimhs values ('" & Label10 & "', '" & Label11 & "','" & Text4 & "','" & Text5 & "', '" & Text2 & "','" & Text3 & "')"

144. TA_Presensi.Execute TambahPM

145. MsgBox "Data Berhasil Ditambah", vbInformation, "Pemberitahuan" 146. Call KondisiAwal

147. Text1.SetFocus 148. Adodc2.Refresh

149. Set DataGrid2.DataSource = Adodc2 150. End If

151. 'Jika tidak di temukan 152. Else 153. Text1.SetFocus 154. Timer4.Enabled = True 155. Exit Sub 156. End If 157. Timer4.Enabled = False 158. End Sub

159. Private Sub MSComm1_OnComm()

160. 'Kondisi MSComm untuk komunikasi VB dan Arduino 161. Dim strInput As String

162. With MSComm1 163. 'test event data masuk 164. Select Case .CommEvent 165. Case comEvReceive

167. strInput = .Input

168. Text1.SelText = strInput 169. End Select

170. End With 'MSComm1 171. End Sub

172. Private Sub Timer1_Timer()

173. 'Pengaturan waktu dan tanggal pada label 174. Label10.Caption = Format(Now, "hh:mm:ss")

175. Label11.Caption = Format(Date, "dddd,d mmmm yyyy") 176. End Sub

177. Private Sub Timer2_Timer() 178. i = i + 1

179. If i = 30 Then 'waktu 30 detik

180. MsgBox "Waktu Sudah Habis", vbInformation, "Pemberitahuan" 181. Unload Me 'Menutup Form2

182. Form3.Show 'Menampilkan Form3 183. End If

184. End Sub

185. Private Sub Timer3_Timer() 186. i = i + 1

187. If i = 5 Then 'waktu 5 detik 188. Call KondisiAwal

189. End If 190. End Sub

191. Private Sub Timer4_Timer() 192. i = i + 1

193. If i = 20 Then 'waktu 20 detik 194. Call KondisiAwal

195. End If 196. End Sub

LAMPIRAN 5

Data Percobaan Presensi, Input,

Tabel L5.1. Presensi D. G. A. Putra Agastya No.ID : 04 61 75 8A C9 2E 80#8 Percobaan Ke : ID e-KTP 04 61 75 8A C9 2E 80 ID Sidik Jari #8 Presensi 1 Lengkap Lengkap  2 Lengkap Lengkap  3 Lengkap Lengkap  4 Lengkap Lengkap  5 Lengkap Lengkap  6 Lengkap Lengkap  7 Lengkap Lengkap  8 Lengkap Lengkap  9 Lengkap Lengkap  10 Lengkap Lengkap  11 Lengkap Lengkap  12 Lengkap Lengkap  13 Lengkap Lengkap  14 Lengkap Lengkap  15 Lengkap Lengkap  16 Lengkap Lengkap  17 Lengkap Lengkap  18 Lengkap Lengkap  19 Lengkap Lengkap  20 Lengkap Lengkap 

Presensi dilakukan sebanyak 20 kali dan hasil dapat dilihat pada tabel diatas dan untuk persentase keberhasilan sebagai berikut :

Data ID e-KTP : (20/20)*100% = 100%

Dalam dokumen Sistem presensi perkuliahan menggunakan RFID (Halaman 97-149)

Dokumen terkait