Wednesday

Komunikasi Serial Menggunakan Mikrokontroler Atmel AVR ATmega atau ATTiny

Mikrokontroler Atmega 8A

Mikrokontroler keluarga AVR seperti ATMega, ATTiny, XMega adalah mikrokontroler yang memiliki banyak fitur dalam 1 chip, sehingga sangat memudahkan pemrogramanya.

Fitur komunikasi mikrokontroler dengan device lain (dengan mikrokontroler lain, computer, eeprom external, sd card, gps, dll) saat ini sangat dimudahkan, terlebih lagi tidak memboroskan penggunaan pin I/O

Beberapa jenis komunikasi yang didukung mikrokontroler keluarga AVR antara lain :
- ISP
- USART ( Serial RS232 )
- Two Wire Serial Interface ( I2C )


Komunikasi USART atau dikenal dengan Serial adalah salah satu protokol komunikasi mikrokontroler  yang banyak dipergunakan untuk komunikasi dengan computer, karena kemudahan setting dan instalasinya.

Apakah komunikasi langsung antara mikrokontroler dan computer dapat dilakukan? jawabnya Bisa... tapi mengapa banyak peralatan seperti modem, ponsel, bluetooth, data logging , barcode masih menggunakan hubungan serial (com)?

Alasan penggunaan komunikasi serial (com) adalah, dari saat computer menggunakan windows untuk pertama kalinya, sampai dengan windows terbaru, protokol serial tidak pernah berubah, bandingkan dengan protokol usb, akan berubah untuk setiap versi windows, sehingga peralatan akan dengan mudah diaplikasikan pada computer dengan os windows pada berbagai versi


USB to Serial  (TTL) Nokia DKU-5
Tapi bila  peralatan seperti modem, ponsel, bluetooth, data logging , barcode menggunakan komunikasi serial, mengapa ditancapkan pada port usb? bukan pada port serial (com)?
Memang peralatan tersebut ditabcapkan pada port usb, akan tetapi hubungan pada software pada computer adalah komunikasi serial, bisa dilihat pada device manager, port usb hanya sebagai jalur keluar masuk dimana data usb tsb ditangani oleh driver dan diubah menjadi data serial (com).

Syarat komunikasi serial dapat dilakukan dengan benar antara mikrokontroler dengan computer adalah :
- clock
- port serial
- data bits
- stop bits
- parity bit

Komunikasi serial dapat dilakukan dengan Full Duplex ( Tx dan Rx  dapat dilakukan dalam waktu bersamaan )

Banyak Aplikasi yang dapat dibuat bila mikrokontroler dihubungkan dengan computer antara lain :
- data logging
- robotika
- kendali peralatan
- monitor peralatan
- modem email melalui radio amatir / HT
- modem chatting melalui radio amatir / HT
- program penjualan toko dengan barcode scaner
- antrian pada bank, kantor ,dll
- program isi ulang pulsa, token listrik, dll dengan antar muka ponsel

Peralatan yang diperlukan untuk koneksi mikrokontroler dan computer sangat mudah didapat di toko elektronik atau membeli secara online
Peralatan yang diperlukan ada 3  :
- Computer
- USB to Serial (computer baru terutama laptop baru tidak terdapat port serial)
- Mikrokontroler

USB to Serial adalah converter yang menggunakan merubah data USB menjadi serial (com), converter ini mengunakan ic yang berbeda2, salah satunya PL-2303 dengan kecepatan transfer data 115.200 bps
kita dapat menggunakan kabel data Nokia DKU-5 / CA-42 atau  sejenisnya (DKU-5 menggunakan IC PL-2303)
USB to Serial ( TTL) dengan IC PL-2303
USB to Serial (TTL) dengan IC PL-2303

Untuk penggunaan DKU-5, cari datasheet pin out kabel data, dan perlu diingat, keterangan Tx kabel DKU-5 dihubungkan dengan Tx Mikrokontroler dan Rx kabel DKU-5 dihubungkan dengan Rx Mikrokontroler, pin Rx Mikrokontroler  diperlukan resistor pull up
berbeda dengan USB to Serial seperti gambar diatas, pemasangan adalah sebaliknya Tx ke Rx, Rx ke Tx

Koneksi USB to Serial (TTL) yang menggunakan IC PL-2303 dengan mikrokontroler tidak diperlukan pembagi teganggan ataupun converter (RS232) serial to TTL kecuali langsung menggunakan port serial (com) bawaan computer yang level tegangganya -15V dan +15V

Berikut wiring penggunaan DKU-5 sebagai jalur komunikasi serial antara computer dengan mikrokontroler :

Koneksi DKU-5 dan Mikrokontroler
Dari gambar diatas, pada datasheet Atmega8A, [pin 2 = RXD], [pin 3 = TXD], [pin 8 & 22 = GND]
Pada mikrokontroler seri lain, wiring sama, yang berbeda posisi pin TXD, RXD ( lihat datasheet mikrokontroler yang dipakai )

Download Driver USB to Serial (TTL) prolific PL-2303 HXA
Ukuran file : 3 MB
Jenis File : exe

Driver ini dapat dipergunakan untuk DKU-5, CA-42, USB to Serial lain dengan IC PL-2303 HX

Yang perlu diperhatikan dalam komunikasi serial adalah panjang kabel.
Untuk data keluaran (contoh  DKU-5) yang dikonversi menggunakan IC RS232 menuju IC RS232 lain yang dihubungkan dengan mikrokontroler,
- panjang kabel max 15 meter (dengan sembarang kabel listrik) dan kecepatan transfer harus diturunkan sampai data dikirim dan diterima tanpa kesalahan.
- dengan penggunaan kabel low-capacitance, panjang kabel max 300 meter

-  tanpa penggunaan RS232, panjang kabel antara DKU-5 ke mikrokontroler max 2-3 meter

Bila menginginkan panjang kabel max 1200m, pergunakan konverter RS485, dengan persyaratan kabel merupakan kabel twisted (kabel pelintir/bukan kabel sejajar)  dan kecepatan transfer data max dengan rumusan :

Kecepatan transfer max (bps) = ( 100.000.000 / panjang kabel (meter) )

misal : panjang kabel 1000 meter, maka kecepatan max yang diijinkan : 100.000.000 / 1000 = 100.000 bps

Program Mikrokontroler Atmega Tx & Rx Serial Data

//=>> Computer Application / Hyperterminal Serial Setting
// BaudRate : 115200
// DataBits : 8
// StopBits : 2
// Parity : Odd
// FlowControl : None
//=>> Computer Application / Hyperterminal Serial Setting

//---888-88.blogspot.com
//---Atmega8A
//---microcontroler crystal freq 11.0592 MHz
//---Vcc := 5V
//---Data Rx memicu interupsi

//------------- start program

.def data0=r16
.def data1=r17
.def data2=r18
.equ clock=11059200 //-- Freq Crystal yang dipergunakan (Hz)
.equ rate=115200  //-- Setting BaudRate (bps)
.equ ubbr_value=(clock/(16*rate))-1
.org 0x0000
rjmp main
.org 0x000B
rjmp USART_RXC
main:
ldi data0,low(ramend)
out spl,data0
ldi data0,high(ramend)
out sph,data0

//---inisialisasi port
//-- 0b* * * * * * 00 (* = user setting, bit d0 = RXD, bit d1 = TXD)
ldi data0,0b00000000 
out ddrd,data0
//-- 0b* * * * * * 01 (* = user setting, bit d0 = RXD, bit d1 = TXD)
ldi data0,0b11111101
out portd,data0
nop
//---inisialisasi port
rcall USART_Init
sei

//--------------------------main program
prog:
rjmp prog
//--------------------------main program

//--- Rutin Receive Data
USART_RXC:
in data2,UDR
// data2 berisi data string yang diterima dari computer
// pergunakan data sesuai kebutuhan di area ini (Receive Data)
// misal : data string yang diterima akan dikirim kembali ke computer
// mengunakan program hyperterminal windows
// apa yanag kita ketik di keyboard akan ditampilkan pada monitor hyperterminal
//--- data2, dikirim melalui jalut Tx
rcall usart_tx
//--- data2, dikirim melalui jalut Tx 
reti
//--- Rutin Receive Data

//--- Rutin Send Data
usart_tx:
sbis UCSRA,UDRE
rjmp usart_tx
out UDR,data2
ret
//--- Rutin  Send Data

//----------- inisialisasi USART
USART_Init:
ldi data1,high(ubbr_value)
ldi data0,low(ubbr_value)
//-- Set baud rate
out UBRRH, data1
out UBRRL, data0
//-- Enable receiver and transmitter
ldi data0, (1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(0<<UCSZ2)
out UCSRB,data0
//-- Set frame format: 8data, 2stop bit, odd parity
ldi data0, (1<<URSEL)|(1<<USBS)|(1<<UCSZ1)|(1<<UCSZ0)|(0<<UCPOL)|(1<<UPM0)|(1<<UPM1)
out UCSRC,data0
ret
//----------- inisialisasi USART
//------------- end program


bersambung....