معرفی فریمورک سخت‌افزاری Gobot

فریمورک سخت‌افزاری Gobot چیست؟

کتابخانه Gobot یک فریمورک متن باز برای رباتیک، رایانش فیزیکی و اینترنت اشیا می باشد که به زبان Go نوشته شده است. این فریمورک بر روی ۳۵ پلتفرم سخت افزاری مانند آردوینو، رزبری پای و... اجرا می‌شود و از قطعات جانبی زیادی پشتیبانی می کند.

چرا Gobot؟

  • اجرا بر روی بیش از ۳۵ پلتفرم سخت افزاری
  • پشتیبانی از ۵۰ قطعه جانبی
  • سادگی در برنامه نویسی
  • بهینه بودن کد و استفاده از منابع کم سخت افزاری
  • سرعت اجرای بالا
  • پشتیبانی از پروتکل های ارتباطی MQTT و NATS
  • دارای HTTP API و JSON

پلتفرم‌های سخت افزاری

کتابخانه Gobot بر روی بیش از ۳۵ پلتفرم سخت افزاری اجرا می‌شود. اجرای این فریمورک بر روی سخت افزار‌های میکروپروسسوری دارای سیستم عامل لینوکس (مانند رزبری پای، بیگل بن و ...) از طریق کتاب‌خانه‌ی سطح پایین Periph،که توسط گوگل توسعه داده می‌شود انجام می‌شود.Gobot بر روی میکروکنترلر‌های سازگار با آردوینو از طریق پروتکل Firmata اجرا می‌شود.

برای کسب اطلاعات بیشتر درباره کتابخانه ها و پروتکل‌های بالا به لینک‌های زیر مراجعه کنید:

https://periph.io/
https://gobot.io/
http://firmata.org/wiki/Main_Page

سخت افزار پشتیبانی شده توسط Gobot

پشتیبانی از API

کتابخانه Gobotدارای APIهای تحت وب RESTful به منظور کنترل و برسی وضعیت قطعات می باشد.این APIها به صورت پیش فرض بر روی آدرس http://localhost:3000/ در دسترس می باشد.

فریمورک Gobot چگونه کار می‌کند؟

اجرای برنامه توسط Gobot بر روی Host انجام می‌شود و ارتباط Host با سخت افزار از طریق پورت سریال،شبکه WiFi و بلوتوث انجام می‌شود.قبل از اجرای برنامه، نرم افزار Firmata Client باید بر روی میکروکنترلر آپلود شود.اجرای برنامه‌های Gobot بر روی برد‌های دارای سیستم عامل لینوکس به صورت مستقیم انجام می‌شود و نیازی به Firmata نیست.


ساختار برنامه در Gobot

سخت افزار در برنامه نوشته شده با Gobot با نام Adaptor تعریف می‌شود و Connection نوع ارتباط Host با سخت افزار را مشخص می‌کند.قطعات جانبی متصل به سخت افزار با نام Device تعریف می‌شود.برنامه ای که باید توسط سخت افزار اجرا شود در فانکشن work نوشته می شود.

اجرای اولین برنامه با Gobot

در برنامه زیر LED متصل به پورت ۱۳ بورد آردوینو که از طریق پورت سریال ACM0 به Hots متصل شده است در هر ثانیه روشن و خاموش می‌شود.

package main

import (
  &quottime&quot

  &quotgobot.io/x/gobot&quot
  &quotgobot.io/x/gobot/drivers/gpio&quot
  &quotgobot.io/x/gobot/platforms/firmata&quot
)

func main() {
  firmataAdaptor := firmata.NewAdaptor(&quot/dev/ttyACM0&quot)
  led := gpio.NewLedDriver(firmataAdaptor, &quot13&quot)

  work := func() {
    gobot.Every(1*time.Second, func() {
      led.Toggle()
    })
  }

  robot := gobot.NewRobot(&quotbot&quot,
    []gobot.Connection{firmataAdaptor},
    []gobot.Device{led},
    work,
  )

  robot.Start()
}