Saat Sobat membaca postingan
ini,aku harap sobat sudah membaca postingan sebelumnya yang berjudul Membuat Pintu Akses Sederhana Versi 1 Dengan AT89C2051 DanAt93C46.
Pada kesempatan kali ini aku ingin
menambahkan fasilitas komunikasi serial sesuai standar RS-232. Seperti sobat
ketahui pada rangkaian sudah dilengkapi dengan rangkaian yang mendukung untuk
tujuan itu. Pada postingan sebelumnya fasilitas ini belum dibahas untuk
mengurangi panjang tulisan.
Sebelum kita menambahkan fasilitas
komunikasi serial pada panel pintu akses, ada baiknya sobat semua memahami garis
besar keuntungan yang bisa diperoleh dengan penambahan fasilitas ini, antara
lain:
1.
Yang
jelas panel pintu akses sederhana yang dibuat bisa terhubung ke komputer atau
PC. Dengan bisa terhubung ke komputer tentu banyak hal bisa dilakukan terutama
dalam hal pengoperasian yang berkaitan dengan manajemen akses.
2.
Seperti
diketahui panel yang dibuat juga sudah dilengkapi dengan sakelar DIP yang
berguna untuk menetapkan nomor identitas dari sebuah panel. Dengan identitas
yang dapat diatur dan berbeda satu sama lain maka berarti panel yang buat dapat
dihubungkan pada sebuah jaringan di mana terdiri dari beberapa panel akses
sejenis dan semuanya terhubung pada sebuah system monitoring yang dikendalikan
melalui system aplikasi manajemen akses yang dijalankan pada PC.
3.
Manajemen
akses itu sendiri apa sih? Tentu
beberapa dari sobat ada yang bertanya seperti itu. Manajemen akses adalah
sebuah aplikasi yang dijalankan pada sebuah PC yang berguna untuk mengatur dan
memonitoring satu atau lebih panel pintu akses. Bahkan bukan hanya panel akses
saja, sebuah system manajemen akses yang kompleks memiliki kemampuan tidak saja
mengelola pintu akses tetapi juga alarm system, kamera dan lain-lain sesuai
kebutuhan.
4.
Berkaitan
dengan panel pintu akses sederhana yang kita buat maka system manajemen akses
dapat digunakan untuk mengelola panel dalam hal pemrograman kartu RFID baik
menambah atau menghapus. Pengelolaan juga meliputi monitoring transaksi yaitu
merekam semua aktifitas yang berkaitan dengan penggunaan sebuah panel seperti
buka dan tutup pintu termasuk jika ada fasilitas alarm. Lebih dari itu system
manajemen akses juga bisa mengendali panel dari jarak jauh.
5.
Mengenai
manajemen akses yang dioperasikan pada PC, aku akan buatkan meski sederhana dan
dibuat menggunakan Visual Basic. Tapi aku harap sobat bisa menunggu pada
kesempatan postingan selanjutnya yang tentu berkaitan dengan topik pintu akses
sederhana.
Nah, sekarang kita lanjutkan
mengenai topik penambahan fasilitas komunikasi pada panel pintu akses sederhana
yang kita buat. Penambahan ini berkaitan dengan penambahan aplikasi perangkat
lunak yang akan dijalankan pada mikrokontroler karena secara hardware atau
perangkat keras memang sudah tersedia namun tanpa aplikasi perangkat lunak
semua itu tidaklah berfungsi.
Agar panel pintu akses sederhana
kita dapat berkomunikasi maka perlu ditambahkan beberapa baris yang berkaitan
dengan fasilitas komunikasi serial. Agar sobat tidak bingung di mana harus
melakukan perubahan baris perintah maka aku tuliskan seluruh baris perintahnya
namun aku bedakan dari warna tulisannya. Warna tulisan biru menunjukkan baris
perintah yang ada pada versi sebelumnya dan warna hitam adalah perintah
tambahan atau penggantinya.
$mod51
NomorUnit data p1
PinProgram bit p1.4
DIO bit p1.5
CLK bit p1.6
RST bit p1.7
DoorSensor bit p3.2
DoorExit bit p3.3
WiegandData0 bit p3.4
WiegandData1 bit p3.5
DoorRelay bit p3.7
DataHeksa data 08h
Parameter di atas adalah versi terdahulu. Untuk keperluan
komunikasi serial kita perlu menambahkan beberapa parameter berikut:
RegSerial data 0dh
DataSerial data 10h
Bendera data 20h
Fail bit Bendera.0
BitSerial bit Bendera.1
BitTambah bit Bendera.2
BitHapus bit Bendera.3
BitPulseOpen bit Bendera.4
BitBypass bit Bendera.5
RegStack data 30h
Selanjutnya untuk awal program sobat perlu
menginisialisasikan beberapa register. Pada register TH1 dan TL1 ditetapkan
kecepatan data serial pada 1200 bps. Kecepatan ini dipilih untuk tujuan agar
kestabilan data tetap terjaga pada jarak antara panel dan PC lebih jauh.
org 0h
mov sp,
#RegStack-1
mov pcon,
#0
mov scon,
#50h
mov tmod,
#20h
mov tl1,
#0e8h
mov th1,
#0e8h
mov ie,
#10h
setb tr1
ajmp AppDefault
Komunikasi serial dari PC ke Panel dimulai
pada alamat perintah berikut ini:
org 23h
push acc
push b
push 0
push 1
push 2
push dpl
push dph
mov a, sbuf
clr ri
jb BitTambah, SerialData
jb BitHapus, SerialData
jb BitSerial,
KodeSerial1
xch a,
b
mov a,
NomorUnit
anl a,
#0fh
xrl a,
b
jnz KeluarSerial
setb BitSerial
ajmp KeluarSerial
KodeSerial1:
cjne a,
#'A', KodeSerial2
setb BitTambah
ajmp SetSerial
KodeSerial2:
cjne a,
#'D', KodeSerial3
setb BitHapus
SetSerial:
mov RegSerial,
#DataSerial
ajmp KeluarSerial
KodeSerial3:
mov a,
Bendera
anl a,
#1
mov Bendera,
a
cjne a,
#'P', KodeSerial4
setb BitPulseOpen
ajmp KeluarSerial
KodeSerial4:
cjne a,
#'B', KodeSerial5
setb BitBypass
ajmp KeluarSerial
KodeSerial5:
cjne a,
#'U', KeluarSerial
ResetSerial:
mov a, Bendera
anl a, #1
mov Bendera, a
KeluarSerial:
pop dph
pop dpl
pop 2
pop 1
pop 2
pop b
pop acc
reti
SerialData:
mov r0, RegSerial
mov @r0, a
cjne r0, #DataSerial+2, SerialBerikut
ajmp ProsesSerial
SerialBerikut:
inc RegSerial
ajmp KeluarSerial
ProsesSerial:
mov dptr, #0
mov r2, #32
jb BitTambah, TambahKartu
HapusKartu:
mov r0,
#DataSerial
mov r1,
#3
HapusBerikut:
inc dptr
acall AT93C46_READ
xch a,
b
mov a,
@r0
inc r0
xrl a,
b
jnz Hapuskan
djnz r1,
HapusKartu
mov a,
dpl
dec a
dec a
dec a
dec a
mov dpl,
a
acall AT93C46_EWEN
mov a,
#255
acall AT93C46_WRITE
acall
AT93C46_EWDS
ajmp ResetSerial
Hapuskan:
inc dptr
djnz r1,
Hapuskan
djnz r2,
Hapuskan
ajmp ResetSerial
TambahKartu:
acall AT93C46_READ
mov r1,
#3
cpl a
jz Tambahkan
TambahBerikut:
inc dptr
djnz r1,
TambahBerikut
inc dptr
djnz r2,
TambahKartu
ajmp ResetSerial
Tambahkan:
acall AT93C46_EWEN
mov a,
#9
LoopPenambahan:
acall AT93C46_WRITE
inc dptr
mov a,
@r0
inc r0
djnz r1,
LoopPenambahan
acall
AT93C46_EWDS
ajmp KeluarSerial
Nah, aplikasi serial dari PC ke panel
selesai sampai disini. Namun beberapa bit yang mungkin aktif dalam proses di
atas akan dikerjakan pada baris-baris berikut. Sementara komunikasi dari panel
ke PC menggunakan subrutin KirimSerial seperti berikut ini:
KirimSerial:
clr ea
mov sbuf,
a
jnb ti, $
clr ti
setb ea
ret
AppDefault:
acall ResetChip
jnb PinProgram, DefaultUnit
ajmp AppMulai
DefaultUnit:
mov r5, #20
Default1:
mov r6, #200
Default2:
mov r7, #250
clr DoorRelay
TungguPinProgram:
jb PinProgram, AppMulai
djnz r7, TungguPinProgram
djnz r6, Default2
djnz r5, Default1
clr DoorRelay
jnb PinProgram, $
acall AT93C46_EWEN
acall AT93C46_ERAL
acall AT93C46_EWDS
setb DoorRelay
AppMulai:
jnb PinProgram, AppProgram
jb BitBypass,
AppMulai
jb BitPulseOpen,
AppBukaPintu
jnb DoorSensor, AppMulai
jnb DoorExit, AppBukaPintu
jnb WiegandData0, AppBacaKartu
jnb WiegandData1, AppBacaKartu
ajmp AppMulai
Pada AppMulai di atas, sobat perlu
menambahkan 2 baris perintah untuk memeriksa BitBypass dan BitPulseOpen yang
mungkin saja aktif pada saat terjadi interupsi serial dari PC.
SubProgram:
clr DoorRelay
ajmp AppProgram
SubBukaPintu:
ajmp AppBukaPintu
SubBacaKartu:
ajmp AppBacaKartu
AppProgram:
jb PinProgram, AppMulai
jnb WiegandData0, ProgramKartu
jnb WiegandData1, ProgramKartu
ajmp AppProgram
ProgramKartu:
mov r1, #DataHeksa
acall Wiegand
acall CekWiegand
jnz PrgMemori
ajmp AppProgram
PrgMemori:
mov dph, #0
mov dpl, #0
mov r7, #32
PrgIsiMemori:
acall AT93C46_READ
mov r6, #3
cpl a
jnz PrgIsiMemoriBerikut
setb DoorRelay
mov r0, #DataHeksa
acall AT93C46_EWEN
mov a, #9
PrgSimpanKartu:
acall AT93C46_WRITE
inc dptr
mov a, @r0
inc r0
djnz r6, PrgSimpanKartu
acall AT93C46_EWDS
acall Pulsa1Detik
ajmp SubProgram
PrgIsiMemoriBerikut:
inc dptr
djnz r6, PrgIsiMemoriBerikut
inc dptr
djnz r7, PrgIsiMemori
ajmp AppProgram
AppBukaPintu:
clr DoorRelay
acall Pulsa5Detik
setb DoorRelay
jnb BitPulseOpen,
ResponBukaPintu
clr BitPulseOpen
ajmp AppMulai
Pada rutin AppBukaPintu juga memerlukan
penambahan beberapa baris perintah untuk memeriksa dan mereset BitPulseOpen. Jika perintah membuka
pintu bukan merupakan perintah dari PC maka panel akan mengirimkan informasi dengan
rutin ResponBukaPintu.
ResponBukaPintu:
mov a,
NomorUnit
anl a,
#0fh
acall KirimSerial
mov a,
#'P'
acall KirimSerial
ajmp AppMulai
AppBacaKartu:
acall Wiegand
acall CekWiegand
jnz BacaMemori
ajmp AppMulai
BacaMemori:
mov dph, #0
mov dpl, #0
mov r7, #32
BacaIsiMemori:
acall AT93C46_READ
cpl a
jnz BacaMemoriBerikut
mov r6,
#4
ajmp CekIsiBerikut
Pada rutin BacaIsiMemori ada perubahan
sebanyak 2 baris menggantikan perintah sebelumnya AJMP AppMulai.
BacaMemoriBerikut:
mov r0, #DataHeksa
mov r6, #3
CekIsiMemori:
inc dptr
acall AT93C46_READ
xch a, b
mov a, @r0
xrl a, b
jnz CekIsiBerikut
djnz r6, CekIsiMemori
mov a,
NomorUnit
anl a,
#0fh
acall KirimSerial
mov a,
dpl
dec a
dec a
dec a
dec a
mov dpl,
a
mov r6,
#4
ResponBacaKartu:
acall AT93C46_READ
acall KirimSerial
inc dptr
djnz r6,
ResponBacaKartu
setb BitPulseOpen
ajmp AppBukaPintu
Sobat perlu menambahkan beberapa perintah
di atas yang menginformasikan bahwa akses diterima. Sementara jika kartu yang
digunakan ditolak juga akan diinformasikan melalui komunikasi serial ke PC
dengan penambahan beberapa baris berikut:
CekIsiBerikut:
inc dptr
djnz r6, CekIsiBerikut
djnz r7, BacaIsiMemori
mov a,
NomorUnit
anl a,
#0fh
acall KirimSerial
mov a,
#1
acall KirimSerial
mov r0,
#DataHeksa
mov r6,
#3
ResponKartuSalah:
mov a,
@r0
inc r0
acall KirimSerial
djnz r6,
ResponKartuSalah
ajmp AppMulai
Pulsa5Detik:
mov r5, #50
ajmp PulsaReg6
Pulsa1Detik:
mov r5, #10
PulsaReg6:
mov r6, #200
PulsaReg7:
mov r7, #250
djnz r7, $
djnz r6, PulsaReg7
djnz r5, PulsaReg6
ret
CekWiegand:
mov r0, #DataHeksa
mov r7, #3
CekIsiWiegand:
mov a, @r0
jnz CekWiegandOK
inc r0
djnz r7, CekIsiWiegand
CekWiegandOK:
ret
$include (c:\tesasm\wiegand.txt)
$include (c:\tesasm\93C46_8.txt)
end
Nah, program kita sudah selesai dan panel
pintu akses sederhana sudah memiliki fasilitas komunikasi serial. Banyak hal
memang bisa dilakukan dengan menambah beberapa perintah kepada mikrokontroler.
Dari rangkaian yang sama nanti akan aku kembangkan dengan beberapa fasilitas
lain yang mungkin dapat membuat panel kita lebih bergengsi terutama dari sisi
fasilitas.
Dengan panel di atas kita bisa mendapatkan
fasilitas yang lebih dibandingkan dengan produk pintu akses sejenis yang ada di
pasaran. Sobat boleh membandingkannya, karena aku sudah melakukan itu.
Sebagai tambahan, ada kepuasan tersendiri
manakala perangkat kita bisa berfungsi dengan baik dan tahan lama meski dengan
harga yang sangat murah dalam pembuatannya.
Pada kesempatan berikutnya akan aku
posting-kan juga sebuah aplikasi Manajemen Akses Sederhana yang dibuat
menggunakan Visual Basic.
Udah ya, makasih udah baca
postingan aku. Semoga bisa
bermanfaat, sukur-sukur bisa diterapkan di rumah sobat semua.
Salam....
Tidak ada komentar:
Posting Komentar