Wireless Infrared Printer dengan DST-51 (Pengambilan Data dari Standard Parallel Port) Untuk merancang sebuah perangkat yang dapat mengirimkan data dari PC Parallel Port ke Printer secara wireless, maka diperlukan dua buah sistem di mana sistem pertama terhubung ke PC Parallel Port dan sistem kedua terhubung dengan Printer. Komunikasi wireless biasanya selalu dilakukan dengan menggunakan transmisi serial asinkron yaitu sebuah transmisi serial yang diawali dengan start bit dan stop bit. Maka dari itu, sistem yang terhubung pada Parallel Port PC harus dapat mengubah data parallel dari Parallel Port PC menjadi serial asinkron dan sistem yang terhubung pada Printer mengubah data serial asinkron menjadi parallel sesuai yang dibutuhkan oleh printer (Lihat Blok Diagram pada gambar 1). Dalam aplikasi ini diperlukan pengambilan data secara parallel dari PC ke sistem yang anda buat. Setelah data yang diambil dapat dimasukkan sistem rancangan, maka pada proses selanjutnya (untuk wireless printer) data tersebut dapat diteruskan secara serial untuk ditransmisikan secara wireless. Untuk melakukan antar muka antara PC Parallel Port dengan sistem di luar PC, terlebih dahulu harus diketahui fungsi-fungsi pin dari Parallel Port dan proses yang terjadi saat pengiriman data berlangsung. PC
IR-8510 Infrared Transceiver
DST-51
DST-51
IR-8510 Infrared Transceiver
PRINTER
Gambar 1 Blok Diagram Wireless Infrared Printer
Tabel 1, menunjukkan fungsi-fungsi tiap pin yang digunakan untuk antar muka dengan Parallel Port mode standard (SPP) di mana data bus hanya berfungsi sebagai output. Tabel 1 Pin Parallel Port yang dibutuhkan untuk SPP Mode Parallel Port
Deskripsi
Arah
1 2-9
STB D0 - D7
Output PC Output PC
10
ACK
Input PC
11
Busy
Input PC
12 19-24
PE GND
Input PC
Keterangan Aktif Low, menunjukkan bahwa data yang dikirimkan oleh PC telah siap untuk diambil di parallel port Data parallel yang dikeluarkan PC Sinyal yang dikirimkan oleh Printer yang menunjukkan bahwa sistem telah siap untuk menerima data. Sinyal yang dikirimkan oleh Printer yang menunjukkan bahwa sistem sedang sibuk Sinyal yang dikirimkan oleh printer saat kertas sedang tidak tersedia
Proses yang terjadi pada pengiriman data dengan Mode SPP adalah sebagai berikut: - PC memeriksa kondisi pin Busy dan PE. Apabila Pin Busy berkondisi low, maka printer tidak sibuk. Sedangkan bila kondisi PE high, maka kertas sedang
-
-
tidak siap. Untuk kondisi sibuk maupun kertas sedang tidak siap (Paper Error) maka PC harus menunggu hingga kondisi sibuk berakhir atau kertas telah siap. Setelah kondisi sibuk berakhir dan kertas telah siap, maka data akan dikirimkan ke D0 hingga D7 dengan diakhiri sebuah sinyal STB (aktif low) yang menandakan data telah siap di D0 hingga D7. Printer dapat mengambil data yang telah siap tersebut. Sinyal acknowledge diberikan oleh printer ke PC untuk memastikan bahwa printer telah siap untuk menerima data lebih lanjut.
Gambar 2 Timing Diagram SPP Mode
Setelah kondisi pin dan proses kerja diketahui, maka dengan menggunakan DST-51, sebuah sistem berbasis AT89C51, proses ini dapat dilakukan dengan menghubungkan I/O-I/Onya seperti pada gambar 3 di mana data bus dari Parallel Port terhubung ke Port 1. P1
JP2 1 14 2 15 3 16 4 17 5 18 6 19 7 20 8 21 9 22 10 23 11 24 12 25 13
STROBE AUTOFD D0
INT0 T0 P1.0
D1
P1.1
D2
P1.2
D3
P1.3
D4
P1.4
D5
P1.5
D6
P1.6
D7
P1.7
1 3 5 7 9
2 4 6 8 10
INT1 T1
CONTROL BUS
ACK BUSY VCC PE
CONNECTOR DB25
JP1 P1.0 P1.2 P1.4 P1.6
1 3 5 7 9
2 4 6 8 10
PORT 1
Gambar 3 Antar Muka DST-51 dengan PC Parallel Port
P1.1 P1.3 P1.5 P1.7
Untuk aplikasi ini data yang diterima dari Parallel Port akan dikirimkan ke serial port dengan menggunakan komunikasi UART berkecepatan transmisi 600 bps. Kecepatan yang aman digunakan untuk transmisi infrared dalam jarak yang cukup jauh di mana sinyal infrared dimodulasi dengan frekwensi carrier sebesar 40 KHz. Pada gambar 4 tampak dua buah flowchart di mana flowchart pertama adalah flowchart pada program utama dan flowchart kedua adalah flowchart dari serial interrupt. Pada awal flowchart program utama proses yang terjadi pada jalannya program diawali dengan inisial hardware di mana pada proses tersebut dilakukan inisial serial port sebagai 600 bps, mengaktifkan interrupt serial untuk menerima umpan balik dari bagian sistem yang terhubung ke printer. Umpan balik berupa data serial dengan kode tertentu ini dibutuhkan oleh sistem yang terhubung pada Parallel Port PC apabila kertas telah habis atau tidak terpasang dengan baik. Setelah proses inisialisasi selesai, maka program akan menunggu adanya sinyal strobe dari Parallel Port PC yang menandakan bahwa data telah siap. DST-51 akan mengambil data tersebut melalui Port 1 setelah sinyal strobe muncul dan dilanjutkan dengan pengiriman data secara serial melalui port serialnya. Selama pengiriman data serial, PC tidak diijinkan mengirimkan data berikutnya, oleh karena itu kondisi busy harus diset dengan mengaktifkan pin busy terlebih dahulu. Serial Interrupt
Paper Error?
Inisial Hardware
Set pin PE Tidak Tunggu data serial
STB?
Ambil LPT Data Kirim Sinyal Busy
Tidak Tidak
Paper Ready?
Kembali dari Interrupt
Kirim Data ke Serial Port
Kondisi Busy selesai
Gambar 4 Flowchart Pengambilan data dari Parallel Port
Setelah data terkirim secara asinkron melalui port serial, kondisi busy dinyatakan selesai dan program kembali menunggu munculnya sinyal strobe. Parallel Port PC yang mendeteksi selesainya kondisi busy akan mengirimkan data berikutnya dengan diiringi sinyal strobe. Bagian serial interrupt dilakukan apabila sistem yang terhubung pada printer mengirimkan umpan balik secara serial asinkron pula melalui media infrared. Pada saat umpan balik terjadi maka program utama akan terhenti dan menjalankan bagian serial interrupt. Perlu diperhatikan posisi pemancar dan penerima infrared yang terhubung pada sistem pemancar (sistem yang terhubung dengan Parallel Port PC)
agar pancaran infrared tidak mengenai penerimanya sendiri sehingga program terus menerus terinterrupt saat pengiriman data. Di bagian serial interrupt, data serial yang masuk akan diperiksa terlebih dahulu, apabila data tersebut merupakan kode paper error maka pengiriman data dari Parallel Port ke PC harus dihentikan dengan men-set kondisi pin PE. Kondisi tersebut dipertahankan hingga kode paper ready dikirimkan oleh sistem penerima (sistem yang terhubung pada printer) Listing Program .CODE ROM
EQU
2000H
KodePaperError KodePaperReady
EQU EQU
01H 02H
Busy STB PE ACK
INT1 INT0 T0 T1
Bit Bit Bit Bit Org Ajmp Org Reti Org Reti Org Reti Org Reti Org Reti
ROM Start ROM+3H
Acall Setb Setb Mov Setb Clr Clr Setb
Init_Serial EA ES P1,#0FFH STB Busy PE ACK
Clr Jb Mov Setb Acall Ajmp
Busy INT0,* A,P1 Busy Serial_Out Loop
ROM+0BH ROM+13H ROM+1BH ROM+23H
;Reset Vector ; ;External Interrupt 0 Vector ; ;Timer 0 Interrupt Vector ; ;External Interrupt 1 Vector ; ;Timer 1 Interrupt Vector ; ;Serial Interrupt Vector ;
Start: ;Inisial Serial Port ;Enable Serial Interrupt ; ;Set Port 1 sebagai input data printer ;Set STB sebagai input ;Printer sedang tidak sibuk ;Tidak ada Paper Error ;Acknowledge high
Loop:
Init_Serial: MOV SCON,#52H MOV TMOD,#20H MOV TH1,#0D0H MOV TCON,#040H MOV PCON,#00H Clr RI Clr TI RET
;Tunggu Sinyal Strobe dari PC ;Ambil data Parallel dari P1 ;Kirim ke Serial Port ;
; Mode 1 Ren ; T0 Mode 2, T1 Mode 2 ; 600 Baudrate ; T1 On, T0 Off ; ; Hapus Flag Receive ; Hapus Flag Transmit
Serial_Out: Clr ES CLR MOV JNB Setb ES RET Serial_In: CLR JNB MOV Clr RI RET
;Matikan Serial Interrupt TI SBUF,A TI,* ;Aktifkan kembali Serial Interrupt
RI RI,* A,SBUF
Serial_Interrupt: Clr ES Push PSW Mov A,SBUF ;Ambil Data Serial Cjne A,#KodePaperError,BukanPaperError Setb PE ;Set Paper Error, PC menunggu TungguReady: Acall Serial_In Cjne A,#KodePaperReady,TungguReady BukanPaperError: Pop PSW Setb ES Reti