Pemrograman Wifly dengan ARDUINO

Pada posting kali ini kita akan melanjutkan membahas pemrograman Wifly, tetapi dengan menggunakan ARDUINO. Arduino yang akan digunakan adalah arduino mega 2560, karena arduino ini memiliki 4 buah serial. Untuk catu daya wiflynya tidak perlu pusing-pusing karena arduino memiliki keluaran catu daya 3,3 Volt, jadi tinggal colok saja. Untuk TX dari modul wiflynya bisa dicolokkan ke sembarang serial, bisa serial 1, 2, atau 3. Setelah semua kabel terpasang langsung buka arduino software, setting board, pilih port komunikasi dan program. Berikut contoh programnya..

========================================================

#define BLUE 0

#define CYAN 1

#define BLUE_GOAL 1

#define YELLOW_GOAL 0

int data[115];

int header, i=1;

int nomorTim=1;

int warnaTim;

void setup(){

Serial.begin(9600);

Serial1.begin(9600);

Serial.print(“siap”);

}

void loop(){

serialEvent();

}

void serialEvent(){

while(Serial1.available()){

header=Serial1.read();

//Serial.print(header);

if(header==82 || i==115){

i=1;

}

else{

//9=STATE INIT PLAY

//20 || 68 = NOMOR TIM

//21 || 69 = WARNA TIM

//22 || 70 = WARNA GAWANG

//11 = KICK OFF

data[i]=header;

if(i==9){

if(data[i]==0){

Serial.print(“STATE:”);

Serial.println(“init”);

Serial.println(“_____________________”);

}

else if(data[i]==1){

Serial.print(“STATE:”);

Serial.println(“ready”);

Serial.println(“_____________________”);

}

else if(data[i]==2){

Serial.print(“STATE:”);

Serial.println(“set”);

Serial.println(“_____________________”);

}

else if(data[i]==3){

Serial.print(“STATE:”);

Serial.println(“play”);

Serial.println(“_____________________”);

}

else if(data[i]==4){

Serial.print(“STATE:”);

Serial.println(“finish”);

Serial.println(“_____________________”);

}

}

if(i==71){

if(data[20]==nomorTim){

if(data[21]==CYAN){

warnaTim=CYAN;

Serial.print(“WARNA TIM:”);

Serial.println(“cyan”);

Serial.println(“_____________________”);

}

else if(data[21]==BLUE){

warnaTim=BLUE;

Serial.print(“WARNA TIM:”);

Serial.println(“blue”);

Serial.println(“_____________________”);

}

if(data[22]==BLUE_GOAL){

Serial.print(“WARNA GAWANG:”);

Serial.println(“blue”);

Serial.println(“_____________________”);

}

else if(data[22]==YELLOW_GOAL){

Serial.print(“WARNA GAWANG:”);

Serial.println(“yellow”);

Serial.println(“_____________________”);

}

}

else if(data[68]==nomorTim){

if(data[69]==CYAN){

warnaTim=CYAN;

Serial.print(“WARNA TIM:”);

Serial.println(“cyan”);

Serial.println(“_____________________”);

}

else if(data[69]==BLUE){

warnaTim=BLUE;

Serial.print(“WARNA TIM:”);

Serial.println(“blue”);

Serial.println(“_____________________”);

}

if(data[70]==BLUE_GOAL){

Serial.print(“WARNA GAWANG:”);

Serial.println(“blue”);

Serial.println(“_____________________”);

}

else if(data[70]==YELLOW_GOAL){

Serial.print(“WARNA GAWANG:”);

Serial.println(“yellow”);

Serial.println(“_____________________”);

}

}

}

if(i==11){

if(data[i]==warnaTim){

Serial.print(“KICK OFF:”);

Serial.println(“yes”);

Serial.println(“_____________________”);

}

else{

Serial.print(“KICK OFF:”);

Serial.println(“no”);

Serial.println(“_____________________”);

}

}

i++;

}

}

}

========================================================

Untuk melihat hasilnya buka serial terminal pada arduino, disitu akan terlihat state pertandingan, warna tim, warna gawang dan state kick off. Untuk konfigurasi wifly, router dan game controller bisa dilihat disini.

Sekian post kali ini, mohon kritik dan sarannya.. :D

Post selanjutnya tentang CMUCAM3 dan CMUCAM 4. Update terus yak..

Pemrograman Wifly dengan BASCOM

Sesuai janji pada post sebelumnya post kali ini adalah tentang source code Wifly dengan BASCOM . Sebelumnya bagi yang belum tahu konfigurasi wifly, router dan referee boxnya bisa lihat disini. Bagi yang sudah langsung saja, tetapi sebelum memprogram ada baiknya membuat flowchart dahulu seperti pada Gambar 1.

FLOWCHART WIFLY

Gambar 1. Flowchart Filter Data Wifly

Berikut ini adalah source code program Wifly dengan BASCOM.

===============================================================

$regfile = “m8def.dat”

$crystal = 8000000

$baud = 9600

On Urxc Rex

Dim Data_in(115) As Byte , X As Byte , Data_header As Byte , Nomor As Byte

Config Portb.0 = Output

Config Portb.1 = Output

Config Portb.2 = Output

Config Portb.3 = Output

Config Portb.4 = Output

Dim Nomor_tim As Byte

Nomor_tim = 1

Dim Warna_tim As Byte

Warna_tim = 0                       ‘0 = biru  | 1 = cyan

Enable Urxc

Enable Interrupts

Portb.0 = 1 : Portb.1 = 1 : Portb.2 = 1

Portb.3 = 1 : Portb.4 = 1

Main:

Do

Loop

End

Rex:

Data_header = Inkey()

If Data_init = 82 Then

For X = 1 To 115

Data_in(x) = Waitkey()

If X = 9 Then

If Data_in(x) = 1 Then

Portb.0 = 0 : Portb.2 = 0 : Portb.1 = 1     ‘ready

Elseif Data_in(x) = 2 Then

Portb.0 = 0 : Portb.2 = 1 : Portb.1 = 1     ‘set

Elseif Data_in(x) = 3 Then

Portb.0 = 1 : Portb.2 = 0 : Portb.1 = 1     ‘play

Elseif Data_in(x) = 4 Then

Portb.0 = 1 : Portb.2 = 1 : Portb.1 = 0     ‘finish

Elseif Data_in(x) = 0 Then

Portb.0 = 1 : Portb.2 = 0 : Portb.1 = 0     ‘init

End If

End If

If X = 20 Or X = 68 Then

If Data_in(x) = Nomor_tim Then

If Data_in(x + 1) = 0 Then

Warna_tim = 0                        ‘cyan

Elseif Data_in(x + 1) = 1 Then

Warna_tim = 1                        ‘biru

End If

If Data_in(x + 2) = 0 Then

Portb.3 = 0                          ‘gawang biru

Elseif Data_in(x + 2) = 1 Then

Portb.3 = 1                          ‘gawang kuning

End If

End If

End If

If X = 11 Then

If Data_in(x) = Warna_tim Then

Portb.4 = 1                              ‘ kick off

Elseif Data_in(x) <> Warna_tim Then

Portb.4 = 0                              ‘ not kick off

End If

End If

End If

NextX

Return

===============================================================

Catatan: Program diatas merupakan program untuk atmega8. Nantinya output dari atmega 8 ini akan dikoneksikan ke controller utama robot humanoid soccer menggunakan kombinasi binari dari keluaran portnya. Sebagai contoh pada state PLAY maka kombinasi binarinya adalah 101, maka robot akan mulai mencari bola.

Untuk desain board pcbnya dibutuhkan komponen berikut:

-          Regulator 3,3V KA78R33

-          AT MEGA 8

-          Crystal 8 MHz

-          Capasitor 22pF

-          Resistor 4k7 (Untuk pullup reset atmega8)

Untuk diagram sistem dan penampakan board pcbnya bisa lihat pada Gambar 2 dan Gambar 3 berikut.

6

Gambar 2. Diagram System Wifly

7

Gambar 3. Board AT Mega 8 sebagai interface wifly

Sekian dulu post kali ini, mohon saran dan kritiknya..

Sekedar informasi, pemrograman wifly arduino akan dibahas pada post selanjutnya. :D

Sinkronisasi Modul WIFI dengan Referee Box RSHL

Posting kali ini saya akan membahas tentang modul wifi yang digunakan dalam peraturan Robot Soccer Humanoid League(RSHL) sekaligus konfigurasinya. Banyak sekali tipe modul wifi yang bisa digunakan tetapi yang akan dibahas kali ini yaitu modul Wifly RN-XV-DS v0.3, modul ini bisa dibeli di famosa studio. Modul wifi ini fungsinya yaitu sebagai penghubung komputer wasit atau bisa disebut referee box dengan para robot. Jadi dengan modul wifi ini robot bisa mengetahui kondisi permainan secara realtime tanpa harus diprogram /disetting ulang oleh programmer-nya. Misal ketika permainan dimulai robot akan secara otomatis mengetahui gawang warna apa yang akan diincar. Jadi robot tidak mungkin membobol gawangnya sendiri.

1

Gambar 1. Modul modulWifly RN-XV-DS v0.3

Untuk pengendali referee box nya dibutuhkan aplikasi “Game Controller”, aplikasi ini sendiri merupakan aplikasi berbasis java yang diberikan oleh pihak panitia KRSBI. Dengan aplikasi ini kita dapat mengetahui bentuk data yang dikirimkan oleh referee box dan membuat program untuk memilah-milah datanya. Aplikasi Game Controller akan mengirimkan data sebanyak 116 byte data yang tiap byte memiliki rentang nilai 0-255. Dari data tersebut kita bisa mengetahui kondisi permainan, seperti: jumlah score, warna tim, nomor tim, waktu pertandingan, warna gawang, state permainan(init, ready, set, play, finish), dll. Sebagai catatan kalau mau mencoba aplikasi ini kita membutuhkan router, untuk setting router dan modul wifinya dibahas dibawah ini.

2

Gambar 2. Konfigurasi sistem referee box

3

Gambar 3. Tampilan aplikasi game controller

4

Gambar 4. Segmentasi data dari referee box

Teorinya sudah sekarang saatnya praktek, kita akan mengkonfigurasikan router dan modul wifly kita. Pertama-tama siapkan 1 buah PC/laptop yang ada wifinya, router,modul wiflynya dan FTDI usb serialnya arduino.

  • Tahap pertama – Setting router
  1. Colokkan port LAN router ke LAN laptop.(IP laptop diset jadi dinamis ya).
  2. Lalu buka browser mozilla, dll dan ketik IP default routernya. Biasanya kalau masih baru 192.168.1.1
  3. Login dengan user: admin, pass: admin. Kalau masih belum diganti ya..
  4. Cari setting routernya dan ubah SSIDnya jadi “HumanoidLeague”, sesuai dengan peraturan RSHL.
  5. Ganti IP GATEWAYnya jadi 192.168.1.254 (IP GATEWAY ini digunakan untuk KRSBI tahun 2012). Biasanya untuk IP GATEWAY ditentukan saat tehnikal meeting.
  6. Kalau sudah reboot routernya, cabut LANnya, dan koneksikan dengan wifi laptop. Periksa lagi IP dan konfigurasi lainnya.
  • Tahap kedua – setting modul Wifly

ftdi

Gambar 5. FTDI usb serial

5

Gambar 6. Koneksi pin Wifly ke FTDI usb serial

  1. Hubungkan FTDI usb serialnya ke wiflynya seperti pada Gambar 6. Yang harus dihubungkan hanya VCC, GND dan TX saja. Jangan lupa pindahkan jumper tegangan FTDInya dari 5 Volt ke 3.3 Volt, ntar bisa hangus lo..
  2. Lalu colokkan FTDInya ke laptop dan install driver FTDInya ya, drivernya sama seperti driver bawaan software arduino.
  3. Kemudian buka software wireshark, parallax terminal atau serial watcher (semua sama saja). Jangan lupa setting COMnya disamakan dengan FTDInya, lihat pada device manager.
  4. Masuk mode cmd Wiflynya dengan cara ketik “$$$” tanpa tanda petik ya.
  5. Backup dulu data yang ada dengan ketik “get everything” atau bisa juga dengan cara cepat yaitu “get ev” saja. Copy datanya ke notepad.
  6. Kemudian ketik “set ip protocol 3”, fungsinya untuk mengaktifkan protokol UDP dan TCP.
  7. Set target wifinya dengan ketik “set wlan ssid HumanoidLeague”.  Dengan begitu modul akan otomatis terkoneksi dengan wifi yang memiliki ssid “HumanoidLeague”.
  8. Lalu konfigurasikan ip gatewaynya dengan ketik “set ip gateway 192.168.1.254”.
  9. Beri nama modul wifly kita supaya bisa didaftarkan ke juri, caranya ketik “set opt deviceid admiral-unisi-01”. “admiral-unisi-01” adalah nama yang akan muncul dikomputer juri.
  10. Konfigurasikan port broadcastnya dengan perintah “set broadcast port 3838”.
  11. Atur modul wifly supaya Ipnya dinamis dengan perintah “set ip dhcp 1”. Alamat IP akan diberikan oleh router/access point.
  12. Konfigurasi localport yang digunakan dengan perintah “set ip localport 3838”.
  13. Terakhir ketik “save” lalu “reboot”.
  14. Jangan lupa periksa lagi konfigurasinya dengan “get ev”.

Catatan:

Untuk penggunaan perangkat selain Wifly RN ini mungkin settingannya sedikit beragam tetapi intinya adalah konfigurasi UDP, konfigurasi SSID, konfigurasi IP (DHCP ataupun Static), dan konfigurasi port pada petunjuk game controller.

  • Tahap ketiga – mengaktifkan aplikasi Game Controller
  1. Koneksikan wifi laptop ke HumanoidLeague.
  2. Buka cmd.exe pada start menu -> all program-> accessoris.
  3. Masuk ke drive lokasi GameController.jar berada, misal: drive E maka ketik “e:”.
  4. Masuk ke folder lokasi GameController.jar dengan perintah “cd”, misal: “cd E:\PROJECT\ROBOTIKA\Game Controller”.
  5. Ketik perintah “java -jar GameController.jar -debug -port 3838 3 5”. 3 dan 5 adalah nomor tim pertama dan kedua.

Setelah itu game controller akan muncul dan buka serial terminal yang terhubung dengan modul wifly tadi. Kemudian lihat dan analisa datanya dengan menekan tombol-tombol pada game controller.

Post selanjutnya akan membahas pemrogaman wifly dengan BASCOM.. Thanks for reading, jangan lupa kasih kritik dan saran ya :D