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 DST-51 IR-8510 Infrared Transceiver 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 Keterangan 1 STB Output PC Aktif Low, menunjukkan bahwa data yang dikirimkan oleh PC telah siap untuk diambil di parallel port 2-9 D0 - D7 Output PC Data parallel yang dikeluarkan PC 10 ACK Input PC Sinyal yang dikirimkan oleh Printer yang menunjukkan bahwa sistem telah siap untuk menerima data. 11 Busy Input PC Sinyal yang dikirimkan oleh Printer yang menunjukkan bahwa sistem sedang sibuk 12 PE Input PC Sinyal yang dikirimkan oleh printer saat kertas sedang tidak tersedia 19-24 GND 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 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 JP2 STROBE INT0 INT1 AUTOFD T0 1 2 T1 D0 P1.0 3 4 5 6 D1 P1.1 7 8 9 10 D2 P1.2 D3 P1.3 D4 P1.4 D5 P1.5 D6 P1.6 D7 P1.7 ACK BUSY PE CONNECTOR DB25 CONTROL BUS JP1 VCC P1.0 1 2 P1.1 P1.2 3 4 P1.3 P1.4 5 6 P1.5 P1.6 7 8 P1.7 9 10 PORT 1 Gambar 3 Antar Muka DST-51 dengan PC Parallel Port
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 STB? Tunggu data serial Paper Ready? Ambil LPT Data Kirim Sinyal Busy Kirim Data ke Serial Port Kembali dari Interrupt 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 KodePaperError KodePaperReady EQU 2000H EQU 01H EQU 02H Busy STB PE ACK Bit INT1 Bit INT0 Bit T0 Bit T1 Org ROM ;Reset Vector Ajmp Start ; Org ROM+3H ;External Interrupt 0 Vector Org ROM+0BH ;Timer 0 Interrupt Vector Org ROM+13H ;External Interrupt 1 Vector Org ROM+1BH ;Timer 1 Interrupt Vector Org ROM+23H ;Serial Interrupt Vector Start: Acall Init_Serial ;Inisial Serial Port Setb EA ;Enable Serial Interrupt Setb ES ; Mov P1,#0FFH ;Set Port 1 sebagai input data printer Setb STB ;Set STB sebagai input Clr Busy ;Printer sedang tidak sibuk Clr PE ; ada Paper Error Setb ACK ;Acknowledge high Loop: Clr Busy Jb INT0,* ;Tunggu Sinyal Strobe dari PC Mov A,P1 ;Ambil data Parallel dari P1 Setb Busy Acall Serial_Out ;Kirim ke Serial Port Ajmp Loop ; Init_Serial: MOV SCON,#52H ; Mode 1 Ren MOV TMOD,#20H ; T0 Mode 2, T1 Mode 2 MOV TH1,#0D0H ; 600 Baudrate MOV TCON,#040H ; T1 On, T0 Off MOV PCON,#00H ; Clr RI ; Hapus Flag Receive Clr TI ; Hapus Flag Transmit
Serial_Out: Clr ES CLR MOV JNB Setb ES Serial_In: CLR JNB MOV Clr RI TI SBUF,A TI,* RI RI,* A,SBUF ;Matikan Serial Interrupt ;Aktifkan kembali Serial Interrupt 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