Pengontrol Alat Berbasis Port Serial

 

 

 

 

5.1 Konsep Komunikasi Serial

Pada PC / laptop standar, biasanya terdapat sebuah port untuk komunikasi serial. Pada prinsipnya, komunikasi serial ialah komunikasi dimana pengiriman data dilakukan per bit, sehingga lebih lambat dibandingkan komunikasi parallel seperti pada port printer yang mampu mengirim 8 bit sekaligus dalam sekali detak.  Beberapa contoh penerapan komunikasi serial ialah mouse, scanner dan sistem akuisisi data yang terhubung ke port serial COM1/COM2.

 

5.1.1  Port Komunikasi Serial

Komunikasi serial membutuhkan port sebagai saluran data.  Berikut tampilan port serial DB9 yang umum digunakan sebagai port serial

                                      Image Preview

 

Gambar 5.1 Port DB9 jantan

Image Preview

                                Gambar 5.2  Port DB9 betina

 

 

 

Untuk menghubungkan antara 2 buah PC, biasanya digunakan format null mode, dimana pin TxD dihubungkan dengan RxD pasangan, pin Sinyal ground (5) dihubungkan dengan SG di pasangan,  dan masing masing  pin DTR, DSR dan CD dihubung singkat, dan pin RTS dan CTS dihubung singkat di setiap devais.

 

 

5.1.3  Komunikasi Serial AT89S51/52

 

Mikrokontroler AT89S51/52 atau mikrokontroler standar lainnya mempunyai On Chip Serial Port yang dapat digunakan untuk komunikasi data serial secara Full Duplex sehingga Port Serial ini masih dapat menerima data pada saat proses pengiriman data terjadi. Untuk menampung data yang diterima atau data yang akan dikirimkan.  Keluarga MCS-51  mempunyai sebuah register yaitu SBUF yang terletak pada alamat 99H di mana register ini berfungsi sebagai buffer sehingga pada saat mikrokontroler ini membaca data yang pertama dan data kedua belum diterima secara penuh, maka data ini tidak akan hilang.

Pada kenyataannya register SBUF terdiri dari dua buah register yang memang menempati alamat yang sama yaitu 99H. Register tersebut adalah Transmit Buffer Register yang bersifat write only (hanya dapat ditulis) dan Receive Buffer Register yang bersifat read only (hanya dapat dibaca). Pada proses penerimaan data dari Port Serial, data yang masuk ke dalam Port Serial akan ditampung pada Receive Buffer Register terlebih dahulu dan diteruskan ke jalur bus internal pada saat pembacaan register SBUF sedangkan pada proses pengiriman data ke Port Serial, data yang dituliskan dari bus internal akan ditampung pada Transmit Buffer Register terlebih dahulu sebelum dikirim ke Port Serial. Pada Mikrokontroler keluarga MCS-51, vektor interupsi untuk komunikasi serial ialah 23H.  Penulis menyarankan Anda membaca buku penulis sebelumnya tentang pemrograman assembly untuk komunikasi serial berjudul ” Perancangan Sistem Dan Aplikasi Mikrokontroler”

Berikut contoh kode program komunikasi serial yang mengirimkan data karakter ’a’ ke port serial. Intinya di dalam komunikasi serial, gunakan register SBUF dan A sebagai berikut:

 


Terima.asm

 

$MOD51

ORG  00H

LJMP START

;interrupt penerimaan

;alamat dimulai pada 00H

ORG   23h

CLR    RI

MOV   A,SBUF ;perhatikan kode ini

                ;untuk terima data

MOV   P2,A ;P2 dihubungkan ke output/ LED trainer board

RETI

;interrupt diaktifkan dan serial berada pada mode 1

;dengan REN=1

START:         MOV      SP,#30h

               MOV      SCON,#50h

;inisialisasi baud rate 9600bps

MOV   TMOD,#20H

MOV   TL1,#0FDH

MOV   TH1,#0FDH

MOV   PCON,#00H

SETB TR1

SETB ES

SETB EA

SJMP $

END

 

Sedangkan jika Anda ingin mengirimkan data melalui serial port gunakan fungsi  MOV SBUF, A sebagai berikut :

 

Kirim.asm

 

$MOD51

ORG   00H

SJMP  MAIN

ORG   23H

ORG   30H

MAIN: MOV      TMOD,#20H

      MOV      TH1,#0F4H

      MOV      SCON,#50H

      SETB     TR1

      SET      ES

      SET      EA

      CLR      A

      MOV      A,#'a'

      MOV      SBUF,A ;perhatikan kode ini

                       ;untuk mengirim data

      SJMP     MAIN

END

 

 

 

 

 

Miliki naskah lengkap tentang komunikasi serial dan mikrokontroler 89S51 pada buku

 

Perancangan Sistem dan Aplikasi Mikrokontroler

 

 

 

 

Pesan ke Widodo@widodo.com atau desy@elexmedia.co.id

 

 

5.2 Pengontrol Alat berbasis port Serial

 

Anda dapat mengontrol sekumpulan alat berbasiskan PC melalui port serial, dengan bantuan mikrokontroler.  Kit yang dibutuhkan pada aplikasi ini terdiri dari:

1.      Kit Mikrokontroler Smart51 beserta kabel ISP Programmer

2.      Kit Relay Board dari Innovative Electronics

3.      Kabel serial (sudah diberikan jika memiliki kit Smart51).

 

Anda tentunya juga dapat membuat kit mikrokontroler yang sangat dikenal luas ini, rangkaian dan kabel ISP dapat Anda lihat pada buku penulis sebelumnya yaitu ”Membuat Robot Cerdas”. Sebagai tampilan interface program, digunakan Visual Studio .Net 2005. Penulis mengharapkan para pembaca tidak menggunakan software-software lama, karena membuat kita tidak maju.  Penguasaan software terbaru mutlak jika kita ingin memiliki daya saing.  Penulis juga menyarankan selain menguasai VB .Net, pembaca juga harus menguasai Java (termasuk J2EE) dan Visual C# .Net. Silahkan Anda mengunduh program Java di www.java.sun.com.

Penulis mengharapkan Anda juga membaca buku penulis sebelumnya berjudul “Pemrograman Visual Basic .Net 2005”.  Anda juga dapat mengunduh contoh-contoh program di situs penulis www.widodo.com.  Pada aplikasi ini,  penulis telah membuat sebuah file library bernama Mr_Widodo.dll yang menyediakan rutin-rutin komunikasi serial berbasis .Net.  Rutin-rutin ini akan Anda butuhkan sepanjang masa.

Langkah-langkahnya :

1.         Siapkan Sistem Operasi minimal Windows XP SP2 atau Windows 2003 Server dengan service pack.  Installah Visual Studio .Net 2005 yang biasanya dalam format DVD, lalu buat sebuah proyek bernama Serial.  Ada baiknya juga Anda menginstall software database Sql Server 2005, karena buat pengembangan selanjutnya, mungkin saja Anda ingin menyimpan data alat Anda pada database.

2.         Desain form sebagai berikut, dengan menempelkan beberapa label, button serta combobox.

            

         

 

 Gambar 5.4   Program yang sedang berjalan

Pada konsep pemrograman Berorientasi Objek, sebuah kelas berisi sekumpulan method (fungsi) dan variabel (properti). Kelas yang sudah ada dapat kita buat menjadi sebuah objek. Nah, objek tersebutlah yang dapat memanggil method atau mengeset variabel/propertinya.  Berikut rumus sapu jagat pada OOP.

 

’Buat objek serial dari kelas Mr_Widodo.KomunikasiSerial

Dim serial as New Mr_Widodo.KomunikasiSerial

‘Panggil method

Serial.KirimSerialData(“data”,port_serial)

‘Set properti

Serial.nama_variabel=”nilai”

 

 

3.         Anda harus menambahkan reference Mr_widodo.dll agar dapat menggunakan file tersebut.  Klik kanan pada Solution Explorer, lalu pilih Add Reference.  Pilih file Mr_widodo.dll yang telah Anda kopi ke suatu direktori di komputer Anda.  Ada baiknya file ini dimasukkan ke dalam folder bin proyek Anda, sehingga tidak hilang.

4.         Buat sebuah objek dari Mr_widodo.dll agar dapat menggunakan method-method pada kelas yang ada di .dll tersebut, berikut contoh kodenya:

 

 

Solusi Serial.sln

 

Public Class Form1

Dim nama_port As String

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

‘ Bismillah

‘Buat objek about untuk menampilkan pembuat .dll

‘Dim about As New Mr_Widodo.KomunikasiSerial

‘panggil fungsi tampilkanPort()

tampilkanPort()

Label4.Text = about.DisplayPembuat

End Sub

   

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        ' sendserialdata("a")

        Dim Serial As New Mr_Widodo.KomunikasiSerial

        Serial.KirimDataSerial("a", cbPort.Text)

        Label1.Text = "a"

End Sub

 

Sub tampilkanPort()

        Dim serial As New Mr_Widodo.KomunikasiSerial

         ‘menampilkan port

        cbPort.Items.Add(serial.getserialPortNames)

        cbPort.SelectedIndex = 0

End Sub

 

 

 

Private Sub Btnb_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click

        Dim Serial As New Mr_Widodo.KomunikasiSerial

        Serial.KirimDataSerial("b", cbPort.Text)

        Label1.Text = "b"

End Sub

 

Private Sub Btnc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click

        Dim Serial As New Mr_Widodo.KomunikasiSerial

        Serial.KirimDataSerial("c", cbPort.Text)

        Label1.Text = "c"

End Sub

 

Private Sub btncd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim Serial As New Mr_Widodo.KomunikasiSerial

        Serial.KirimDataSerial("cd", cbPort.Text)

        Label1.Text = "cd"

End Sub

 

Private Sub btnCD_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button18.Click

        Dim Serial As New Mr_Widodo.KomunikasiSerial

         ‘kirim data CD

        Serial.KirimDataSerial("CD", cbPort.Text)

        Label1.Text = "CD"

End Sub

End Class

 

 

Selanjutnya Anda dapat membuat program serial.asm yang akan diisikan ke dalam mikrokontroler 89S51/52 atau keluarganya sebagai berikut:

Serial.asm

$MOD51

CSEG 

      ORG      00H

      SJMP     SETING

      ORG      23H ;VEKTOR INTERUPSI SERIAL

      SJMP     COM

SETING:

      MOV SP,#30H

      MOV SCON,#50H

      MOV TMOD,#20H

      MOV TL1,#0FDH

      MOV TH1,#0FDH

      MOV PCON,#00H

      SETB TR1

      SETB ES

      SETB EA

STOP:

      SJMP     STOP

COM:

      JB       RI,TERIMA

      CLR      TI

      RETI

TERIMA:

      PUSH     PSW

      PUSH     ACC

      MOV      A,SBUF

      CLR      RI

LED1ON:

      CJNE     A,#'A',LED1OFF ;jika tidak sama lompat

      CLR      P2.0

      SJMP     EXIT

LED1OFF:

      CJNE     A,#'a' ,LED2ON

      SETB     P2.0

      SJMP     EXIT

LED4ON:

      CJNE     A,#'D' ,LED4OFF

      CLR      P2.3

      SJMP     EXIT

LED4OFF:      

      CJNE     A,#'d' ,LED5ON

      SETB     P2.3

      SJMP     EXIT

LED7ON:

      CJNE     A,#'G' ,LED7OFF

      CLR      P2.6

      SJMP     EXIT

LED7OFF:

      CJNE     A,#'g' ,LED8ON

      SETB     P2.6

      SJMP     EXIT

LED8ON:

      CJNE     A,#'H' ,LED8OFF

      CLR      P2.7

      SJMP     EXIT

LED8OFF:

      CJNE     A,#'h' ,MATISEMUA

      SETB     P2.7

      SJMP     EXIT

 

MATISEMUA:

      CJNE    A,#4344H,MATISEMUA1 ;KARAKTER CD

      SETB     P2.0

      SJMP     EXIT

     

MATISEMUA1:

      CJNE     A,#6364H,EXIT ;KARAKTER cd

      CLR      P2.0

      SJMP     EXIT

EXIT:

 

      MOV      SBUF,A

      POP      ACC

      POP      PSW

      RETI

SJMP  $

END

 

 

 

 

Kompilasi program diatas menggunakan ASM51.  Sehingga tercipta file Serial.hex.  Anda dapat mengisikan program Serial.hex ke dalam mikrokontroler Anda menggunakan software ATMEL ISP Programmer.

 

Pada proyek ini, penulis menggunakan Kit mikrokontroler  Smart51 dari e-Technology center.

 

 

 

 

 

 

 

 

 


  Gambar 5.7   Blok diagram Pengontrol alat berbasis port serial

Keluaran P2 pada mikrokontroler tersebut dihubungkan ke kit Relay board, sehingga relay tersebut dapat memutuskan/menyambungkan saluran listrik pada perangkat elektronika kita seperti TV, Garasi, AC dll. Jika Anda membeli paket lengkap kit ini, akan kami sertai contoh kode untuk login ke database Sql Server 2005, jadi hanya user yang memasukkan username dan password saja yang dapat mengakses form diatas. Berikut tampilan hasil pengontrolan alat melalui port serial:

 

             

 

              Gambar 5.8   Hasil kit pengontrol melalui port serial

 

Miliki Kit ini lengkap dengan kode assembly dan

VB .Net 2005 hanya Rp 600.000

 

 

Miliki naskah lengkap buku ini

12 Proyek Mikrokontroler untuk Pemula

 

 

 

 

 

 

Pesan ke Widodo@widodo.com atau desy@elexmedia.co.id