Terimler, terimler
Go -Golang- Google tarafından geliştirilen, açık kaynak kodlu, statik tiplemeli ve kepkeyifli bir programlama dili. detaylı
Arduino, geliştirme dili C++ olan, programlanması oldukça kolay, hobi/eğitim amaçlı kullanılan işletim sistemi koşturmayan I/O geliştirme kartı. detaylı
Nasıl oluyor peki
Arduino programlamak için önümüzde iki seçenek var:
- 1- Programı doğrudan Arduino üzerine yazıp koşturmak.
- 2- Programı bir işletim sisteminde çalıştırıp (bilgisayar), Arduino üzerinde çalışan başka bir yazılım aracılığı ile iletişime geçirmek.
1- Programı doğrudan Arduino üzerine yazıp koşturma
Doğrudan Arduino mikroçipi içerisinde çalışacak olan yazılım.
Artıları
- İzole çalışma
- Host bilgisayar gerektirmemesi
Eksileri
- Düşük kod yazma kalitesi
- fmt dahil bazı kütüphane ve fonksiyonların kullanılamaması
Bu seçenek projenizi kurtarıyorsa sizi Tinygo ile tanıştırayım. Bu canavar Go söz dizimi kullanan LLVM bazlı “Küçük yerler için Go” prensibini sağlayan bir derleyici. Go dili ile hazırladığımız kodu tinygo ile derledikten sonra, yine tinygo aracılığı ile kartımıza flashlayabiliyoruz.
Tinygo
Tinygo yalnızca bir framework değildir. Tinygo, Go söz dizimini ve paketlerini kullanabilen Go derleycisidir.
Kurulum
To install TinyGo, select the link for your operating system:
You can use Docker if that’s easier on your system or you would rather try
TinyGo in a sandbox but note that it is not as convenient to use as installing
TinyGo directly.
Ortam
Tinygo gerçekten var olmayan (Go programlama dilinin kullanamayacağı) bazı paketleri kullanır. Bu sebepten Tinygo ile programlama yaparken Tinygo’nun bize sağlayacağı GOROOT
ve GOFLAG
environmentlarını kullanmak zorundayız.
|
|
Programın döndürüğü cached GOROOT
çıktısını takip ederseniz Go tarafından kullanılabilir GOROOT dosyasının oluştuğunu göreceksiniz.
VS Code
Buradaki eklenti aracılığı ile .vscode/settings.json
‘u değiştirerek code ide’de tinygo’yu kullanabilirsiniz.
Vim
Bağlantıyı takip ederek kurulumu yapabilirsiniz.
Go
Aşağıdaki kod satırları Arduino Uno’nun gömülü ledini 1 saniye aralık ile aç kapat yapıyor.
|
|
Çalıştırma
|
|
/dev/ttyUSB0
yerine Arduino’yu bağladığınız usb portunu yazmayı unutmayın.
Not: GNU Linux kullanıcıları usb portunun klasörürüne kendi user ownerlığını vererek super user olmadan tinygo flash’ı kullanabilir.
2- Programı bilgisayarda çalıştırıp Arduino ile iletişime geçirme
Arduino com portu ile bilgisayara bağlanır, com portu ile komut gönderilip komut alınır.
Artıları
- Kolay geliştirme ortamı
- Tam fonksiyonel Go kodlama imkanı
- Native kütüphaneler ile kullanılabilme
Eksileri
- Firmata aracı yazılım
- Com portu bağlı olmak zorunda
- Arduino sunucu bilgisayara bağlı çalışmak zorunda
Bu koşullar size uygunsa, sizi bir başka canavar ile tanıştırayım: GOBOT
Gobot
“Gobot is a framework for robots, drones, and the Internet of Things (IoT), written in the Go programming language. Supports 35 different platforms.”
Kurulum
go get -d -v -x -u gobot.io/x/gobot/...
Ayrıca Arduino kartımıza Firmata
yazılımını yüklemek zorundayız.
Gobot bu yazılım ile iletişime geçecek.
En sonunda terminale ‘gort’ yazdığımız zaman şu çıktıyı alıyor olmamız gerekiyor.
|
|
Not: gort $GOPATH/bin
klasörü altına yüklenecektir. Klasörü PATH’e eklemeyi unutmayın.
Arduino kartımızı bilgisayara bağladıktan sonra
|
|
komutu ile firmata yazılımını Arduino kartınıza flashlayabilirsiniz.
Not: /dev/ttyUSB0
işletim sistemine - bağlı usb cihazlarına göre farklılık gösterebilir.
Not: gort ile Arduino karta firmata yazılımını yüklemek bir kerelik bir işlemdir.
Go
package main
import (
"log"
"time"
"gobot.io/x/gobot"
"gobot.io/x/gobot/drivers/gpio"
"gobot.io/x/gobot/platforms/firmata"
)
func main() {
adaptor := firmata.NewAdaptor("/dev/ttyUSB0")
led := gpio.NewLedDriver(adaptor, "13")
bot := gobot.NewRobot(adaptor, "codot",
[]gobot.Connection{adaptor},
[]gobot.Commander{led},
func() {
log.Println("Running!")
for range time.NewTicker(time.Second).C {
led.Toggle()
}
})
if err := bot.Start(); err != nil {
log.Fatalln(err)
}
}
Bilgisayar ile birlikte çalışacak otomasyonlar için çok uygun bir yapıya sahip Gobot. Ancak bilgisayar ile Arduino arasındaki bağ kopacak olursa Arduino ile iletişim kopacağı için henüz çalışmayan satırlar asla çalışmayacaktır.
Çalıştırma & Derleme
Gobot, gerçekten de Go olduğu için, her gün yazdığınız komutları kullanarak çalıştırabilir ikili dosya üretebilirsiniz.
|
|