Mengontrol Arduino + Relay Menggunakan Go tarm/serial


Go adalah bahasa pemrograman opensource dan multi-platform yang relatif baru. Go menawarkan berbagai fitur yang sangat menggiurkan bagi yang biasa menggunakan bahasa C. Go ibarat C dengan segala kemudahan, kecepatan dan keamanan. Anda bisa download buku/referensi bahasa pemrograman Go melalui halaman berikut ini:

Download-10-Buku-Referensi-Bahasa-Pemrograman-Go

Untuk melakukan instalasi tools pemrograman bahasa Go, Anda bisa mengikuti tulisan berikut ini:

Instalasi-Bahasa-Pemrograman-Go-Linux

Instalasi-Bahasa-Pemrograman-Go-Windows

 

Arduino + Relay

Pada tulisan kali ini, saya akan membagikan hasil eksperimen saya mengontrol relay yang terhubung ke board Arduino menggunakan bahasa pemrograman Go melalui koneksi atau interface Serial RS232. Foto berikut ini adalah rangkaian Arduino + Board Relay 4-Channel yang saya gunakan dalam eksperimen.

Relay-1 terhubung ke pin A0. Relay-2 terhubung ke pin A1. Relay-3 terhubung ke pin A2. Dan Relay-4 terhubung ke pin A3.

Board relay yang saya gunakan menggunakan driver aktif-low, jadi untuk mengaktifkan relay, kita harus memberikan logika low pada pin yang bersangkutan. Dan untuk mematikan relay, kita harus memberikan logika high pada pin yang bersangkutan.

 

FlashForth

Karena saya penggemar berat bahasa Forth, saya menggunakan FlashForth sebagai sistem operasi untuk board Arduino Nano yang saya gunakan. FlashForth dapat Anda pelajari langsung dari situsnya di http://flashforth.com.

Untuk mengaktifkan Relay-1 kita harus memberikan logika low pada pin A0. Caranya adalah dengan memberikan perintah:

   0 A0!

Dan untuk mematikan Relay-1 kita harus memberikan logika high pada pin A0, perintahnya adalah:

   1 A0!

Hal tersebut berlaku juga untuk Relay-2, Relay-3 dan Relay-4 dengan pin kontrol A1, A2 dan A3.

Kita juga bisa memberikan delay dengan perintah:

   100 ms    \ delay 100ms
   500 ms    \ delay 500ms

Jadi dengan perintah:

   0 A2! 500 ms 1 A2!

maka Relay-2 akan aktif selama 500ms dan kemudian mati.

Untuk perintah-perintah A0!, A1!, A2! dan A3!, perlu kita definisikan fungsi-fungsi tersebut. Berikut ini adalah skrip programnya.

: A0! $01 $27 mset if $01 $28 mset else $01 $28 mclr then ;
: A1! $02 $27 mset if $02 $28 mset else $02 $28 mclr then ;
: A2! $04 $27 mset if $04 $28 mset else $04 $28 mclr then ;
: A3! $08 $27 mset if $08 $28 mset else $08 $28 mclr then ;

 

Go tarm/serial

tarm/serial adalah paket atau library bahasa Go untuk komunikasi serial. Kita perlu mendownload terlebih dahulu library ini dengan cara:

   $ go get -u -d -v github.com/tarm/serial

 

Program Go ardu4rel.go

Berikut ini adalah listing program Go yang berfungsi untuk mengirimkan perintah melalui port serial ke board Arduino yang telah ditanami sistem operasi FlashForth.

package main

import (
  "log"
  "fmt"
  "os"
  "time"
  "github.com/tarm/serial"
)

func main() {
  c := &serial.Config{Name: os.Args[1], Baud: 9600, ReadTimeout: time.Second * 5}
 
  s, err := serial.OpenPort(c)
  if err != nil {
    log.Fatal(err)
  }
 
 //tunggu beberapa detik sampai Arduino boot selesai
  time.Sleep(2000 * time.Millisecond)
 
  fmt.Println("OpenPort berhasil.")
 
  for i, j := range os.Args[2:] {
    fmt.Println("Kirim [",i,"] : ",j)
    s.Write([]byte(j))
    s.Write([]byte(" "))
  }
  s.Write([]byte("\r\n"))
}

Untuk mengkompilasi kode program ardu4rel.go, perintahnya adalah:

   $ go build ardu4rel.go

Setelah proses kompilasi selesai, maka akan tercipta file executable ardu4rel. Selanjutnya kita bisa menguji program untuk mengontrol relay dengan cara sbb:

   $ ./ardu4rel /dev/ttyUSB0 0 A0!

Board Arduino Nano saya terletak pada port /dev/ttyUSB0. Anda bisa mengganti parameter tersebut dengan port yang sesuai dengan komputer Anda.

Parameter 0 A0! akan mengaktifkan Relay-1.

Untuk mematikan Relay-1 dan mengaktifkan Relay-2, perintahnya adalah sbb:

   $ ./ardu4rel /dev/ttyUSB0 1 A0! 0 A1!

Untuk mematikan Relay-2 dan mengaktifkan Relay-3 dan Relay-4 selama 1 detik, perintahnya adalah sbb:

   $ ./ardui4rel /dev/ttyUSB0 1 A1! 0 0 A2! A3! 1000 ms 1 1 A2! A3!

Berikut adalah screenshot ekseperimen yang saya lakukan menggunakan workstation linux. Program pada eksperimen ini juga bisa digunakan pada sistem operasi Windows.

Nah, demikianlah hasil eksperimen yang bisa saya sampaikan. Terima kasih sudah membaca tulisan saya. Semoga bermanfaat.

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

w

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.