Kamis, 24 November 2011

Tutorial Telemetri 2.4 GHz dengan XBEE (ZigBee)

Telemetri atau komunikasi data tanpa kabel (wireless) merupakan cara yang efektif untuk komunikasi jarak jauh tanpa harus terganggu dengan jalur kabel yang panjang. Modul telemetri pun beragam, ada yang menggunakan komunikasi serial (seperti XBee, YS-1020, TLP-RLP 434) dan SPI (RFM01-RFM02, RFM12). Modul telemetri juga menggunakan sistem modulasi yang berbeda seperti ASK, FSK, PSK, dsb. Contoh telemetri dengan SPI telah saya bahas pada Tutorial RFM01-RFM02.

Modul X-Bee atau ZigBee ini menggunakan komunikasi serial dengan modulasi FSK (Frequency Shift Keying) dengan frekuensi 2.4 GHz. Jangkauan XBee mencapai 30 meter indoor dan 100 meter outdoor, sedangkan XBee-Pro 100 meter indoor dan 1500 meter outdoor. Tentunya jangkauan tersebut akan lebih efektif jika menggunakan antenna khusus XBee, seperti ini:
XBee juga merupakan salah satu modul telemetri yang dapat berfungsi sebagai RX dan TX sekaligus atau dapat melakukan komunikasi dua arah. Komunikasi serial  pada modul XBee ini sama dengan cara mengirim dan menerima data seperti komunikasi serial biasa. 


Contoh rangkaian skematik pengirim (TX):

Contoh rangkaian skematik penerima (RX):

Pada penerima XBee langsung dihubungkan ke komputer dengan MAX232 tanpa menggunakan mikrokontroler.

Contoh program dengan Code Vision AVR dapat dilihat pada Tutorial Komunikasi Serial dengan CodeVision AVR.

Contoh program dengan Bascom AVR sebagai berikut:
'=================================================
' Tutorial Komunikasi Serial Bascom AVR
' Programmer : WAHYU RAHMANIAR
' Company    : TECHNOLOGINATION
'================================================

$regfile = "m32def.dat"
$crystal = 8000000
$baud = 9600

'Konfigurasi LCD
Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0
Config Lcd = 16 * 2

'Deklarasi ADC
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc

Config Portb.0 = Input
Portb.0 = 1

Dim Baca_adc As Word
Dim Tegangan As Single
Dim Ubah_teg As String * 10
Dim Datas As String * 10

Declare Sub Baca_data()

Main:
Cls
Cursor Off
Locate 1 , 2
Lcd "Serial Bascom"
Locate 2 , 1
Lcd "WAHYU RAHMANIAR"
Waitms 500

Do

Baca_adc = Getadc(0)
Tegangan = Baca_adc * 5
Tegangan = Tegangan / 1023
Ubah_teg = Fusing(tegangan , "#.##")
'Data tegangan diubah ke string dengan 2 angka dibelakang koma

Print "Data Tegangan: " ; Ubah_teg ; " Volt"
Cls
Cursor Off
Locate 1 , 1
Lcd "Data Tegangan:"
Locate 2 , 1
Lcd Ubah_teg ; " Volt"
Wait 1

   If Pinb.0 = 0 Then
   Print "Kirim data..."
   Cls
   Cursor Off
   Locate 1 , 1
   Lcd "Tombol ditekan..."
   Wait 1
   Gosub Baca_data
   End If

Loop

Sub Baca_data()
Do
'Datas = Inkey()
'Input Datas Noecho
Input Datas

If Datas = "OK" Then
   Cls
   Cursor Off
   Locate 1 , 1
   Lcd "Sistem Aktif"
   Wait 1
   Goto Main
Else
   Print "Perintah Salah..."
   Wait 1
   Goto Main
End If
Loop
End Sub

Atau bisa didownload disini.


Hal yang perlu diperhatikan, pada LCD menggunakan Bascom AVR ini pin RW dihubungkan ke GND, berbeda dengan program LCD dengan CV-AVR pin RW dihubungkan ke mikrokontroler.

Pada komunikasi serial dengan Bascom AVR ada dua fungsi yang dapat digunakan untuk menerima data, yaitu INKEY dan INPUT. Bedanya, klo INKEY data yang diketikkan pada Hyperterminal tidak ditampilkan, inkey biasa digunakan untuk menerima data dari mikrokontroler lain atau dari program antarmuka seperti Visual Basic, dapat dilihat pada Tutorial antarmuka mikrokontroler dan komputer dengan Visual Basic. Sedangkan INPUT biasa digunakan jika data yang dikirimkan diketikkan langsung dari Hyperterminal, seperti pada contoh program diatas.

Masih banyak fungsi-fungsi dan kelebihan pada modul XBEE ini, salah satunya adalah mendukung beberapa fungsi AT Command, dapat dilihat pada datasheet XBEE. Fungsi-fungsi XBEE lainnya akan saya bahas pada artikel selanjutnya.
-ayuchan-