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,
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.
VCC
STROBE INT0 INT1
AUTOFD T0 T1 D0 P1.0 D1 P1.1 D2 P1.2 D3 P1.3 D4 P1.4 D5 P1.5 D6 P1.6 D7 P1.7 ACK BUSY PE P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 JP2 CONTROL BUS 1 2 3 4 5 6 7 8 9 10 JP1 PORT 1 1 2 3 4 5 6 7 8 9 10 P1 CONNECTOR DB25 13 25 12 24 11 23 10 22 9 21 8 20 7 19 6 18 5 17 4 16 3 15 2 14 1 Gambar 3
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.
Inisial Hardware
STB?
Ambil LPT Data Kirim Sinyal Busy
Kirim Data ke Serial Port Kondisi Busy selesai Serial Interrupt Paper Error? Set pin PE Tunggu data serial Tidak Paper Ready? Tidak Kembali dari Interrupt Tidak 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 EQU 01H KodePaperReady EQU 02H
Busy Bit INT1 STB Bit INT0 PE Bit T0 ACK Bit T1
Org ROM ;Reset Vector Ajmp Start ;
Org ROM+3H ;External Interrupt 0 Vector
Reti ;
Org ROM+0BH ;Timer 0 Interrupt Vector
Reti ;
Org ROM+13H ;External Interrupt 1 Vector
Reti ;
Org ROM+1BH ;Timer 1 Interrupt Vector
Reti ;
Org ROM+23H ;Serial Interrupt Vector
Reti ;
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 ;Tidak 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 RET
Serial_Out:
Clr ES ;Matikan Serial Interrupt CLR TI
MOV SBUF,A JNB TI,*
Setb ES ;Aktifkan kembali Serial Interrupt RET Serial_In: CLR RI JNB RI,* MOV A,SBUF Clr RI RET 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