Teknik Elektro LinksBarrier-Gate & Turnstile Interface, Thermostat, Relay Driver, Microcontroler Board

Nyobain Dikit IoT Menggunakan Arduino, Gobot Dan Mosquitto

Belajar Go dan Gobot memang menyenangkan. Go (golang) adalah bahasa pemrograman tingkat tinggi yang menurut saya sangat cocok bagi programmer C yang ingin merasakan kemudahan hidup, hehehe. Sedangkan Gobot adalah framework untuk robot, drone dan IoT yang ditulis dalam bahasa Go.

Jika pada tulisan sebelumnya saya bereksperimen dengan Rasperry Pi, maka kali ini saya akan melakukan eksperimen (nyobain dikit) IoT menggunakan board Arduino.

Sistem IoT sederhana ini akan menyediakan topik (topic)

  • arduino/led/on
  • arduino/led/off
  • arduino/adc

led digunakan untuk mengontrol LED Arduino yang terletak pada pin 13. on akan menyalakan LED dan off akan mematikan LED.

adc digunakan untuk mem-publish data nilai ADC yang dalam hal ini dibaca dari pin A0. Sistem akan mem-publish nilai ADC setiap 5 detik sekali.

 

Hardware

    • Arduino UNO

 

Sofware

  • Firmata untuk Arduino
  • Gobot: firmata, gpio, aio, mqtt
  • mosquitto_sub
  • mosquitto_pub

 

MQTT Broker/Server

  • test.mosquitto.org

 

Program mqttbot.go

package main

import (
        "time"
        "log"
        "strconv"
        "gobot.io/x/gobot"
        "gobot.io/x/gobot/drivers/aio"
        "gobot.io/x/gobot/drivers/gpio"
        "gobot.io/x/gobot/platforms/firmata"
        "gobot.io/x/gobot/platforms/mqtt"
)

func main() {
        mqttAdaptor := mqtt.NewAdaptor("tcp://test.mosquitto.org:1883", "telinks")
        firmataAdaptor := firmata.NewAdaptor("/dev/ttyUSB0")
        led := gpio.NewLedDriver(firmataAdaptor, "13")
        a0 := aio.NewAnalogSensorDriver(firmataAdaptor, "0")

        work := func() {
                mqttAdaptor.On("arduino/led/on", func(msg mqtt.Message) {
                        led.On()
                        log.Println("LED = ON")
                })
                mqttAdaptor.On("arduino/led/off", func(msg mqtt.Message) {
                        led.Off()
                        log.Println("LED = OFF")
                })
                gobot.Every(5*time.Second, func() {
                        adc, _ := a0.Read()
                        adcs := strconv.Itoa(adc)
                        mqttAdaptor.Publish("arduino/adc", []byte(adcs))
                })
        }

        robot := gobot.NewRobot("mqttBot",
                []gobot.Connection{mqttAdaptor, firmataAdaptor},
                []gobot.Device{led},
                work,
        )

        robot.Start()
}

Kompilasi mqttbot.go dan Run

$ go build mqttbot.go
$ ./mqttbot

 

Hasil

Berikut ini adalah screenshot layar monitor ketika mqttbot telah running dan terhubung ke test.mosquitto.org pada port 1883. Dan ditampilkan juga hasil monitoring adc menggunakan mosquitto_sub dan hasil kontrol led menggunakan mosquitto_pub.

 

Aplikasi Android MQTT Dash dan MyMQTT

Untuk mengontrol dan memonitor melalui Android, saya mencoba aplikasi MQTT Dash dan MyMQTT. Kedua aplikasi ini bekerja baik dan dapat mem-publish dan menerima data dari broker. Berikut ini adalah beberapa screenshotnya.

Nah, demikianlah eksperimen IoT sederhana yang berhasil saya lakukan menggunakan Arduino dan Gobot. Semoga bermanfaat.

 

Add a Comment

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>