Golang framework for robotics, drones, and the Internet of Things (IoT)

Overview

Gobot

GoDoc CircleCI Build status Appveyor Build status codecov Go Report Card License

Gobot (https://gobot.io/) is a framework using the Go programming language (https://golang.org/) for robotics, physical computing, and the Internet of Things.

It provides a simple, yet powerful way to create solutions that incorporate multiple, different hardware devices at the same time.

Want to run Go directly on microcontrollers? Check out our sister project TinyGo (https://tinygo.org/)

Getting Started

Get the Gobot package by running this command: go get -d -u gobot.io/x/gobot

Examples

Gobot with Arduino

package main

import (
	"time"

	"gobot.io/x/gobot"
	"gobot.io/x/gobot/drivers/gpio"
	"gobot.io/x/gobot/platforms/firmata"
)

func main() {
	firmataAdaptor := firmata.NewAdaptor("/dev/ttyACM0")
	led := gpio.NewLedDriver(firmataAdaptor, "13")

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

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

	robot.Start()
}

Gobot with Sphero

package main

import (
	"fmt"
	"time"

	"gobot.io/x/gobot"
	"gobot.io/x/gobot/platforms/sphero"
)

func main() {
	adaptor := sphero.NewAdaptor("/dev/rfcomm0")
	driver := sphero.NewSpheroDriver(adaptor)

	work := func() {
		gobot.Every(3*time.Second, func() {
			driver.Roll(30, uint16(gobot.Rand(360)))
		})
	}

	robot := gobot.NewRobot("sphero",
		[]gobot.Connection{adaptor},
		[]gobot.Device{driver},
		work,
	)

	robot.Start()
}

"Metal" Gobot

You can use the entire Gobot framework as shown in the examples above ("Classic" Gobot), or you can pick and choose from the various Gobot packages to control hardware with nothing but pure idiomatic Golang code ("Metal" Gobot). For example:

package main

import (
	"gobot.io/x/gobot/drivers/gpio"
	"gobot.io/x/gobot/platforms/intel-iot/edison"
	"time"
)

func main() {
	e := edison.NewAdaptor()
	e.Connect()

	led := gpio.NewLedDriver(e, "13")
	led.Start()

	for {
		led.Toggle()
		time.Sleep(1000 * time.Millisecond)
	}
}

"Master" Gobot

You can also use the full capabilities of the framework aka "Master Gobot" to control swarms of robots or other features such as the built-in API server. For example:

package main

import (
	"fmt"
	"time"

	"gobot.io/x/gobot"
	"gobot.io/x/gobot/api"
	"gobot.io/x/gobot/platforms/sphero"
)

func NewSwarmBot(port string) *gobot.Robot {
	spheroAdaptor := sphero.NewAdaptor(port)
	spheroDriver := sphero.NewSpheroDriver(spheroAdaptor)
	spheroDriver.SetName("Sphero" + port)

	work := func() {
		spheroDriver.Stop()

		spheroDriver.On(sphero.Collision, func(data interface{}) {
			fmt.Println("Collision Detected!")
		})

		gobot.Every(1*time.Second, func() {
			spheroDriver.Roll(100, uint16(gobot.Rand(360)))
		})
		gobot.Every(3*time.Second, func() {
			spheroDriver.SetRGB(uint8(gobot.Rand(255)),
				uint8(gobot.Rand(255)),
				uint8(gobot.Rand(255)),
			)
		})
	}

	robot := gobot.NewRobot("sphero",
		[]gobot.Connection{spheroAdaptor},
		[]gobot.Device{spheroDriver},
		work,
	)

	return robot
}

func main() {
	master := gobot.NewMaster()
	api.NewAPI(master).Start()

	spheros := []string{
		"/dev/rfcomm0",
		"/dev/rfcomm1",
		"/dev/rfcomm2",
		"/dev/rfcomm3",
	}

	for _, port := range spheros {
		master.AddRobot(NewSwarmBot(port))
	}

	master.Start()
}

Hardware Support

Gobot has a extensible system for connecting to hardware devices. The following robotics and physical computing platforms are currently supported:

Support for many devices that use General Purpose Input/Output (GPIO) have a shared set of drivers provided using the gobot/drivers/gpio package:

  • GPIO <=> Drivers
    • AIP1640 LED
    • Button
    • Buzzer
    • Direct Pin
    • EasyDriver
    • Grove Button
    • Grove Buzzer
    • Grove LED
    • Grove Magnetic Switch
    • Grove Relay
    • Grove Touch Sensor
    • LED
    • Makey Button
    • Motor
    • Proximity Infra Red (PIR) Motion Sensor
    • Relay
    • RGB LED
    • Servo
    • Stepper Motor
    • TM1638 LED Controller

Support for many devices that use Analog Input/Output (AIO) have a shared set of drivers provided using the gobot/drivers/aio package:

  • AIO <=> Drivers
    • Analog Sensor
    • Grove Light Sensor
    • Grove Piezo Vibration Sensor
    • Grove Rotary Dial
    • Grove Sound Sensor
    • Grove Temperature Sensor

Support for devices that use Inter-Integrated Circuit (I2C) have a shared set of drivers provided using the gobot/drivers/i2c package:

  • I2C <=> Drivers
    • Adafruit Motor Hat
    • ADS1015 Analog to Digital Converter
    • ADS1115 Analog to Digital Converter
    • ADXL345 Digital Accelerometer
    • BH1750 Digital Luminosity/Lux/Light Sensor
    • BlinkM LED
    • BME280 Barometric Pressure/Temperature/Altitude/Humidity Sensor
    • BMP180 Barometric Pressure/Temperature/Altitude Sensor
    • BMP280 Barometric Pressure/Temperature/Altitude Sensor
    • BMP388 Barometric Pressure/Temperature/Altitude Sensor
    • DRV2605L Haptic Controller
    • Grove Digital Accelerometer
    • GrovePi Expansion Board
    • Grove RGB LCD
    • HMC6352 Compass
    • INA3221 Voltage Monitor
    • JHD1313M1 LCD Display w/RGB Backlight
    • L3GD20H 3-Axis Gyroscope
    • LIDAR-Lite
    • MCP23017 Port Expander
    • MMA7660 3-Axis Accelerometer
    • MPL115A2 Barometer
    • MPU6050 Accelerometer/Gyroscope
    • PCA9685 16-channel 12-bit PWM/Servo Driver
    • SHT2x Temperature/Humidity
    • SHT3x-D Temperature/Humidity
    • SSD1306 OLED Display Controller
    • TSL2561 Digital Luminosity/Lux/Light Sensor
    • Wii Nunchuck Controller

Support for devices that use Serial Peripheral Interface (SPI) have a shared set of drivers provided using the gobot/drivers/spi package:

  • SPI <=> Drivers
    • APA102 Programmable LEDs
    • MCP3002 Analog/Digital Converter
    • MCP3004 Analog/Digital Converter
    • MCP3008 Analog/Digital Converter
    • MCP3202 Analog/Digital Converter
    • MCP3204 Analog/Digital Converter
    • MCP3208 Analog/Digital Converter
    • MCP3304 Analog/Digital Converter
    • SSD1306 OLED Display Controller

More platforms and drivers are coming soon...

API:

Gobot includes a RESTful API to query the status of any robot running within a group, including the connection and device status, and execute device commands.

To activate the API, import the gobot.io/x/gobot/api package and instantiate the API like this:

  master := gobot.NewMaster()
  api.NewAPI(master).Start()

You can also specify the api host and port, and turn on authentication:

  master := gobot.NewMaster()
  server := api.NewAPI(master)
  server.Port = "4000"
  server.AddHandler(api.BasicAuth("gort", "klatuu"))
  server.Start()

You may access the robeaux React.js interface with Gobot by navigating to http://localhost:3000/index.html.

CLI

Gobot uses the Gort http://gort.io Command Line Interface (CLI) so you can access important features right from the command line. We call it "RobotOps", aka "DevOps For Robotics". You can scan, connect, update device firmware, and more!

Gobot also has its own CLI to generate new platforms, adaptors, and drivers. You can check it out in the /cli directory.

Documentation

We're always adding documentation to our web site at https://gobot.io/ please check there as we continue to work on Gobot

Thank you!

Need help?

Contributing

For our contribution guidelines, please go to https://github.com/hybridgroup/gobot/blob/master/CONTRIBUTING.md .

Gobot is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms. You can read about it here.

License

Copyright (c) 2013-2020 The Hybrid Group. Licensed under the Apache 2.0 license.

The Contributor Covenant is released under the Creative Commons Attribution 4.0 International Public License, which requires that attribution be included.

Issues
  • I2C WriteBlockData not working as expected

    I2C WriteBlockData not working as expected

    Hi,

    As discussed in this thread on the golang-nuts list.

    I am using GoBot v1.2 that has the rewritten i2c subsystem, to try to drive a PiGlow (based on a SN3218 IC) connected to a Raspberry Pi 1. The code is written using the "metal bot" style as I would like to reuse this as part of another project.

    My sample code is available on the Go playground as: https://play.golang.org/p/Xma_6zBtT2

    When I run this code it shows no output. None of the error values are non-nil and led zero does not light on the PiGlow.

    As far as I can tell I am communicating with the PiGlow over i2c correctly. My code is based on that of Toon Schoenmakers code. This code is not based on the GoBot 12c subsystem. However. Toon's test code works correctly and drives the PiGlow as expected.

    Can someone with more experience of GoBots i2c subsystem make a suggestion as to what I might be doing wrong, or if this is a new bug in the i2c subsystem on a RaspPi.

    Thanks

    Owen

    bug 
    opened by owenwaller 46
  • Request: PIR Motion Sensor

    Request: PIR Motion Sensor

    I recently got a motion sensor for my Arduino Uno and I'm interested in programming it via Gobot, because I've done everything so far in Gobot. Are you able to dev something in the next 2-3 months? Because I would like to use this application I'm making in Golang+Gobot as my bachelor's degree project. :) The sensor is this one.

    Looking forward for an answer!

    opened by rraulinio 38
  • Firmata fails to start a connection with Arduino mega2560

    Firmata fails to start a connection with Arduino mega2560

    Hi! I'm trying to run the blinking example with an Arduino MEGA2560. These are the steps I followed:

    $ gort scan serial
    /dev/cu.Bluetooth-Incoming-Port		/dev/tty.Bluetooth-Incoming-Port
    /dev/cu.usbmodem1421			/dev/tty.usbmodem1421
    

    So I changed the NewAdaptor to firmata.NewAdaptor("/dev/tty.usbmodem1421"). Then gort arduino install and it installed avrdude-6.3 successfully. Now I run:

    $ gort arduino upload firmata /dev/tty.usbmodem1421 -b mega2560
    avrdude: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.01s
    
    avrdude: Device signature = 0x1e9801 (probably m2560)
    avrdude: reading input file "/var/folders/2l/2x1l6t5530s25fzgvyfzdp_r0000gn/T/816739554"
    avrdude: writing flash (12224 bytes):
    
    Writing | ################################################## | 100% 1.97s
    
    avrdude: 12224 bytes of flash written
    avrdude: verifying flash memory against /var/folders/2l/2x1l6t5530s25fzgvyfzdp_r0000gn/T/816739554:
    avrdude: load data flash data from input file /var/folders/2l/2x1l6t5530s25fzgvyfzdp_r0000gn/T/816739554:
    avrdude: input file /var/folders/2l/2x1l6t5530s25fzgvyfzdp_r0000gn/T/816739554 contains 12224 bytes
    avrdude: reading on-chip flash data:
    
    Reading | ################################################## | 100% 1.57s
    
    avrdude: verifying ...
    avrdude: 12224 bytes of flash verified
    
    avrdude done.  Thank you.
    

    According to the output of that command, the firmata software was successfully loaded. So the only thing left to do is run the program:

    $ go run main.go
    2017/02/20 20:10:49 Initializing connections...
    2017/02/20 20:10:49 Initializing connection Firmata-3BD25BC8D8022818 ...
    2017/02/20 20:10:49 Initializing devices...
    2017/02/20 20:10:49 Initializing device LED-4A0D0593775CB601 ...
    2017/02/20 20:10:49 Robot bot initialized.
    2017/02/20 20:10:49 Starting Robot bot ...
    2017/02/20 20:10:49 Starting connections...
    2017/02/20 20:10:49 Starting connection Firmata-3BD25BC8D8022818 on port /dev/tty.usbmodem1421...
    

    And it just hangs there.

    I tried debugging it, and I got here. For some reason, the program stays in that Read method forever.

    I'm running macOS Sierra 10.12.2 and go version 1.8

    PS: I tried the blinking example from the Arduino IDE and it worked fine

    bug 
    opened by matipan 26
  • Refactor eventer to use event channels & handlers

    Refactor eventer to use event channels & handlers

    This PR changes how Gobot internally handles events. It rewrites the Eventer to include all of the relevant functionality, and uses channels & selects to manage the event handling. The On() and Once() functions have been moved into the Eventer interface, and use the event channels as their implementation.

    It is important to note that these functions are now called off of the driver/adaptor that implement them, no longer off of the global gobot package. This is a breaking change to the current interface.

    In this example, the On() functions are called off of button:

    ...
        button := gpio.NewButtonDriver(e, "myButton", "2")
        led := gpio.NewLedDriver(e, "myLed", "7")
    
        work := func() {
            button.On(gpio.ButtonPush, func(data interface{}) {
                led.On()
            })
            button.On(gpio.ButtonRelease, func(data interface{}) {
                led.Off()
            })
        }
    ...
    

    The above code is the same as doing the following code "metal" using Gobot as a library not a full framework, by writing code to use just the event channel along with a select():

    ...
        led := gpio.NewLedDriver(e, "led", "13")
        button := gpio.NewButtonDriver(e, "button", "5")
    
        led.Start()
        button.Start()
    
        buttonEventChannel := button.Subscribe()
        for {
            select {
            case event := <-buttonEventChannel:
                if event.Name == gpio.ButtonPush {
                    led.On()
                }
                if event.Name == gpio.ButtonRelease {
                    led.Off()
                }
            }
        }
    }
    

    If you use the new On() function, it automatically runs your handler inside a goroutine. The above code is just a simple example, but could very easily do the same thing.

    opened by deadprogram 24
  • Tello OpenCV with ffmpeg

    Tello OpenCV with ffmpeg

    I have an issue running the gobot/examples/tello_opencv.go example.

    I have ffmpeg and opencv installed, and have run the env.sh script before running the opencv file.

    When running the file, the output is flooded with "EOF", and the occasional "write |1: broken pipe".

    Here is the initial output of running env.sh and tello_opencv.go:

    Jakes-MacBook-Pro-5:~ jake$ source go/src/gocv.io/x/gocv/env.sh
    Brew install detected
    Environment variables configured for OSX
    Jakes-MacBook-Pro-5:~ jake$ go run /Users/jake/Desktop/cv.go 
    2018/05/04 12:02:02 Initializing connections...
    2018/05/04 12:02:02 Initializing devices...
    2018/05/04 12:02:02 Initializing device Tello-7270070BB4EEB5CD ...
    2018/05/04 12:02:02 Initializing device Window ...
    2018/05/04 12:02:02 Robot tello initialized.
    2018/05/04 12:02:02 Starting Robot tello ...
    2018/05/04 12:02:02 Starting connections...
    2018/05/04 12:02:02 Starting devices...
    2018/05/04 12:02:02 Starting device Tello-7270070BB4EEB5CD...
    2018/05/04 12:02:02 Starting device Window...
    2018/05/04 12:02:02 Starting work...
    EOF
    ...
    

    Furthermore, whenever attempting to edit files in VSCode which have opencv/gocv imported, linting stops working because of errors in imgproc.cpp: error: expected '(' for function-style cast or type construction VSCode version: Version 1.23.0 (1.23.0)

    OS Info:

    System Version:	macOS 10.13.4 (17E202)
    Kernel Version:	Darwin 17.5.0
    
    Jakes-MacBook-Pro-5:~ jake$ pkg-config opencv --cflags
    -I/usr/local/Cellar/opencv/3.4.1_4/include/opencv -I/usr/local/Cellar/opencv/3.4.1_4/include
    
    Jakes-MacBook-Pro-5:~ jake$ ffmpeg -version
    ffmpeg version 4.0 Copyright (c) 2000-2018 the FFmpeg developers
    built with Apple LLVM version 9.1.0 (clang-902.0.39.1)
    configuration: --prefix=/usr/local/Cellar/ffmpeg/4.0 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-gpl --enable-ffplay --enable-frei0r --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-librtmp --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma --enable-libopenjpeg --disable-decoder=jpeg2000 --extra-cflags=-I/usr/local/Cellar/openjpeg/2.3.0/include/openjpeg-2.3 --enable-nonfree
    libavutil      56. 14.100 / 56. 14.100
    libavcodec     58. 18.100 / 58. 18.100
    libavformat    58. 12.100 / 58. 12.100
    libavdevice    58.  3.100 / 58.  3.100
    libavfilter     7. 16.100 /  7. 16.100
    libavresample   4.  0.  0 /  4.  0.  0
    libswscale      5.  1.100 /  5.  1.100
    libswresample   3.  1.100 /  3.  1.100
    libpostproc    55.  1.100 / 55.  1.100
    
    question 
    opened by jakes-git 19
  • GrovePi support

    GrovePi support

    Hello, I tried to make Gobot work with my GrovePi (https://www.dexterindustries.com/grovepi/) but no success. I can't actually understand whether this is supported at all. So, is it? Or should I add a new adapter to use this?

    This is how I currently interact with the GrovePi without Gobot: https://github.com/lucavallin/hytta-pi/blob/master/cmd/hytta/main.go

    device-request 
    opened by lucavallin 19
  • Stuck at starting connection (with Firmata)

    Stuck at starting connection (with Firmata)

    I'm trying to connect to an Arduino Uno with Standard Firmata running on it, tried 3 different USB-cables and two different USB ports. Debian Jesie and user is on dialout group if that helps.

    This issue happens most of the time, but not always. It just hangs at

    ➜  examples go run examplebot.go               
    2017/05/18 09:39:17 Initializing connections...
    2017/05/18 09:39:17 Initializing connection Firmata-5721E10BB1A30F02 ...
    2017/05/18 09:39:17 Initializing devices...
    2017/05/18 09:39:17 Initializing device LED-77F786BE130713F4 ...
    2017/05/18 09:39:17 Robot sensorBot initialized.
    2017/05/18 09:39:17 Starting Robot sensorBot ...
    2017/05/18 09:39:17 Starting connections...
    2017/05/18 09:39:17 Starting connection Firmata-5721E10BB1A30F02 on port /dev/ttyUSB0...
    

    And that's it, it stays there, nothing more.

    More information, I'm working on a driver for a sensor, maybe the code crash or exits without closing properly the connection to /dev/ttyUSB0 (as an idea). But If I disconnect/re-connect the arduino, the problem is still there. Arduino IDE is able to flash the board without any problem, it only happens with gobot's code. Also, once it start happening, no matter what I run (my code, or gobot's examples), it's stuck there.

    Probably it's a configuration issue of my setup, but not sure how to identify what is wrong

    enhancement 
    opened by conejoninja 19
  • Raspberry Pi 3 Completely Unresponsive

    Raspberry Pi 3 Completely Unresponsive

    I'm sorry if there is something I am not seeing in here, I'm really trying to use this framework and any help would be appreciated:

    I have had issues with this for days using a RP3 and the newest version of Raspbian.

    I copy/pasted the program from the platform page at https://gobot.io/documentation/platforms/raspi/.

    I set up the circuit exactly as shown in the led light diagram.

    The program compiled without errors on MacOSX (cross-compiled with GOARM=7 GOARCH=arm GOOS=linux).

    When I run the program from the Pi (transferred with a USB drive), I get no response. I do have to use chmod to execute the program.

    I tested the circuit against one of the power pins, and the LED lights up.

    But, when used with the GPIO pins, I can't get so much as a flicker.

    Any suggestions or am I just going crazy?

    bug 
    opened by SafaiWeb 17
  • Errors on Intel Edison, Sans-Arduino

    Errors on Intel Edison, Sans-Arduino

    I have an Intel Edison without the Arduino Development board, and the edison_adapter is looking for pins that don't exist.

    According to this Guide on Multiplexing with the Intel Edison, some of the pins with hard references in code won't exist if you're using the Intel Edison without the pin expanders.

    Removing any GPIO Pins larger than 200 should help show what would happen if those pins are missing, and any pins over 200 are added by the i2c port expander. (as I understand it).

    I'll be working to remove the pins that are causing issues right now, but is there any larger issues I'll run into with these pins being unavailable?

    opened by ryanhatfield 16
  • Restrictive I2c modelization

    Restrictive I2c modelization

    Hi there,

    I'm trying to implement the Edison miniboard and I see that the I2cStart, I2cRead and I2cWrite functions are all attached to the Adaptor. However, the Edison miniboard has 2 I2C controllers..

    The mraa exposes the different I2C controllers using an i2c_context.. and you can have many such contexts (or devices) for a given board.

    Also, it's not possible for a user to select a certain I2C device, the Adaptor has its default and that's it.

    Could you imagine reworking this design ? Would such a proposition be mergeable ?

    platform-request 
    opened by abourget 16
  • Blinking led doesn't

    Blinking led doesn't

    Followed example code at http://gobot.io/documentation/platforms/beaglebone/.

    LED does not blink? I tried P9_12 and P9_14 (from the second led example).

    Is there any documentation that describes how P9_12 and P9_14 etc. are mapped to the user LED on the BBB as the BBB manual describes the LED pins as:

    USR0 GPIO1_21 V15 USR1 GPIO1_22 U15 USR2 GPIO1_23 T15 USR3 GPIO1_24 V16

    Which means P9_12 is not intuitively the USER LED outputs.

    I note that the user leds continue to reflect the Ethernet activity so it appears the Gobot code does not take command of LED.

    Cheers, B

    opened by Bazmundi 16
  • BUGFIX: Adafruit1109 bad characters on Halt()

    BUGFIX: Adafruit1109 bad characters on Halt()

    • FIX #822
    • small reordering on initialization procedure according to the documentation
    • double the wait time after clear() according to the documentation
    • fix some typos, add comments
    opened by gen2thomas 0
  • Adafruit1109 driver shows bad characters after Halt()

    Adafruit1109 driver shows bad characters after Halt()

    This happens sometimes and mostly can not be recovered unless power off and on the device.

    The root cause is the randomized stop of the used devices MCP23017 and HD44780 in combination with the non existent mutex in the Halt() function of HD44780. This can lead to interruption of any write function of HD44780 display.

    The #817 (which was bypassed by #812 ) was possibly an first indicator for such problems.

    opened by gen2thomas 0
  • Added support for Dualsense joystick (PlayStation 5)

    Added support for Dualsense joystick (PlayStation 5)

    Added support for PlayStation 5 Dualsense joystick.

    Code derived from Dualshock 4:

    • buttons remapped to appropriate IDs
    • L2 and R2 are now "axis" instead of "buttons"
    • New "create" button (instead of "share" button)
    • examples/joystick_ps5.go file as example code
    opened by jig 2
  • BUGFIX: new pwm behaviour of tinkerboard

    BUGFIX: new pwm behaviour of tinkerboard

    • fix #818 path issue similar to implementation in beaglebone adaptor. Introduce sysfs.Find() to avoid func in struct.
    • fix #818 function order problems in PWMPin().
    • fix #818 naming problem with "inverted" by introducing sysfs.SetPolarity()
    • read period to use in ServoWrite() - TODO resolved.
    • implement SetPeriod() to ensure automatic adjustment of duty cycle.
    • expand error messages in sysfs.pwm_pin.go for better trouble shooting, some other improvements
    • adjust tests
    opened by gen2thomas 1
  • New ASUS Tinkerboard firmware

    New ASUS Tinkerboard firmware "TinkerOS" changed pwm path

    Currently tinkerboard adaptor uses the sysfs/pwm_pin.go file. The default Path is set to "/sys/class/pwm/pwmchip0" (pwm0 for pin 33 and pwm1 for pin 32). This does not work, at least with the new TinkerOS. After some try and error it seems the path for pin 32 (PWM3) is "/sys/class/pwm/pwmchip3/pwm0" and for pin 33 (PWM2) it is "/sys/class/pwm/pwmchip2/pwm0".

    In addition it seems like the call of "newPin.SetPeriod(10000000)" must be done before call of "newPin.InvertPolarity(false)" in the adaptor PWMPin() function.

    Also "inverted" is the wrong command for "polarity", it is now "inversed".

    This seems to be changed with newer kernels and maybe affect also other adaptors.

    I will do some further investigation and can hopefully provide an bugfix for that in a few days.

    opened by gen2thomas 1
Releases(v1.16.0)
  • v1.16.0(May 2, 2022)

    • bugfix
      • failing leftovers after usage of PR #569
      • Fix servo and DC motors presence
      • FIX the bug #568 without further impact, heavy improvements of tests
      • fixed PinMode, SetPullUp and SetPolarity, unit tests activated
      • ReadGPIO fixed with #576, failing leftovers for PinMode, SetPullUp and SetPolarity
      • helper_test ReadByteData, ReadWordData to use reg
    • core
      • update uuid package and directly access it; remove archived uuid package
    • digispark
      • fix ReadByte & WriteByte, rework and add i2c tests
      • remove useless code in i2c test
    • drivers
      • add AnalogActuatorDriver, analog temperature sensor, driver for PCF8591 (with 400kbit stabilization), driver for YL-40
      • Adding support for hmc8553l compass
      • bmp388 fix missing address write byte in test of Measurements
      • drv2605l fix missing address write byte in test of Halt()
      • introduce adafruit1109 2x16 LCD with 5 keys
      • mcp23017: add mutex for write, hd44780: fix mutexes
      • MCP3004: correct number of channels
    • raspi
      • fix raspi PWMPin.SetDutyCycle (#800)
    • tello
      • Guards Dji Tello Halt against nil dereference
    • test
      • don't panic on 'With*' allow simpler wrapping of drivers
    • tinkerboard
      • fix tinkerboard i2c0 to i2c4, improve comments in pin map, improve README
    Source code(tar.gz)
    Source code(zip)
  • v1.15.0(Dec 1, 2020)

    • build
      • Switch to CircleCI
    • ble
      • replace go-ble with tinygo bluetooth package, restore macOS functionality
    • gpio
      • Update RelayDriver to invert value written on Inverted
      • Add tests for DigitalWrite value
      • Add support for HD44780 LCD controller
      • Add delay for Run function of StepperDriver
    • spi
      • fixes #700 - Avoid to close the connection.
    • i2c
      • add SHT2x device
      • add BMP388 Barometric Pressure/Temperature/Altitude Sensor
    • pwm
      • Resolve issue with PWM for PWMWrite
    • mqtt
      • Add method to publish MQTT messages with retain flag
    • tello
      • Add graceful halt for Tello driver
      • Add Tello EDU driver
    • keyboard
      • add symbol keys for platform/keyboard
    • examples
      • Update ffmpeg command to decrease latency in tello example
    Source code(tar.gz)
    Source code(zip)
  • v1.14.0(Oct 15, 2019)

    • core
      • migrating from dep to go modules
      • update codegangsta to urfave (#690)
    • docs
      • Fix a link in package docs' example code.
    • examples
      • fixed broken imports due to changed path causing go get to fail
    • gpio
      • Added ability to make a relay driver inverted (#674)
    • opencv
      • Update to GoCV 0.21.0
    • spi
      • Apa102 use default brightness (#671)
    • tello
      • Updated videoPort for DJI Tello to 11111
    Source code(tar.gz)
    Source code(zip)
  • v1.13.0(May 22, 2019)

    • api
      • Initial stab at Robot-based work
    • build
      • correct package version as suggested by @dlisin thanks
      • only build last 2 versions of Go plus tip for CI
      • Update dep script for AppVeyor
      • update deps to latest versions of dependencies for GoCV and others
      • Update Gopkg and add test dep to Travis YML
      • update OpenCV build script for OpenCV 4.1.0
    • docs
      • update to remove Gitter and replace with Slack, and update copyright dates
    • example
      • add missing nobuild header
    • gpio
      • Add SparkFun’s EasyDriver (and BigEasyDriver)
      • Add unit tests for TH02 & Minor improvement
      • Added rudiementary support for TH02 Grove Sensor
      • pwm_pin - Fix DutyCycle() parse error, need to trim off trailing '\n' before calling strconv.Atoi(), as other functions in this package do
      • Simplify code as suggested in #617
    • grovepi
      • add mutex to control transactionality of the device communication
    • i2c
      • add 128x32 and 96x16 sizes to the i2c ssd1306 driver
      • build out the ccs811 driver
      • update PCA9685 driver to use same protocol as Adafruit Python lib
    • leapmotion
      • Parser error in Pointable.Bases: Write test and fix
      • Update gobot leap platform to support Leap Motion API v6
    • mavlink
      • fix mavlink README to use correct example code
    • mqtt
      • Add some new MQTT adaptor functions with QOS
      • Allow setting QoS on MTT adaptor
      • make tests run correctly even when a local MQTT server is in fact running
      • Do not skip verification of root CA certificates by default InsecureSkipVerify
    • nats
      • Update Go NATS client library import
    • opencv
      • minor updates to opencv README
      • update to OpenCV 4.1.0
    • sphero
      • Added methods to read Sphero Power States
      • Added some new features to the sphero ollie, bb-8 and sprkplus
    • spi
      • correct param used for APA102 Draw() method
      • Stop using Red parameter for brightness value
    • tello
      • add direct vector access
      • add example with keyboard
      • Change fps to 60
      • Check for error immediately and skip publish if error occurred
      • update FlightData struct
    • up2
      • add support for built-in LEDs
      • correct i2c default bus information to match correct values
      • finalize docs for UP2 config steps
      • update README to include more complete setup information
      • useful constant values to access the built-in LEDs
    Source code(tar.gz)
    Source code(zip)
  • v1.12.0(Aug 28, 2018)

    • api
      • further improvement of the modular API changes
      • modify Start() for more modular initialization, and add StartRaw() for completely custom API implementations
      • settled on StartWithoutDefaults() as the method to start API without default routes
    • core
      • add Rescale utility function for straight linear rescaling
    • digispark
      • add examples using digispark with i2c devices blinkm and mlp115a2
      • Added i2c to digispark, but not working yet
      • Added some tests for digispark i2c connector
      • Digispark i2c fixes, added Test for checking available addresses
      • remove test method that should not be in adaptor
      • remove test that is expected to ofail, but passes when digispark board is actually connected
    • docs
      • add GrovePi to README
      • adjust order of badges in README
      • Fixing broken link
    • examples
      • add example that uses both the API and also a custom handler with MJPEG streaming from an attached camera
      • small improvements to Tello examples
      • update Tello examples for main thread friendly macOS/Windows, add Tello face tracker
    • i2c
      • add commands to JHD1313MDriver
      • add commands to PCA9685Driver
      • add missing methods so the GrovePi fully implements the Adaptor interface
      • add ShowImage() function to ssd1306 driver based on @mikegleasonjr suggestion
      • GrovePi digitalwrite implemented
      • implemented DigitalRead, DigitalWrite, and AnalogRead for GrovePi
      • improve godocs for PCA9685
      • mention that GrovePi requires running firmware 1.3.0
      • update GrovePi to v1.3.0 firmware
      • work in progress on GrovePi plus driver
    • joystick
      • add config file for Magicsee R1 contributed by @carl-ranson
      • add some additional test coverage for file-based config
      • added error handling for config loading in joystick driver
      • mention need to be running a Linux kernel v4.14+ for controller mappings to work as expected
      • provide constant values for existing joystick configurations
    • raspi
      • export PiBlasterPeriod in Adaptor
    • spi
      • add ShowImage() function to ssd1306 driver based on @mikegleasonjr suggestion
    • tello
      • specify end of msgType position
      • add handleResponse testing
      • Add motion cessation commands to Tello
      • handleResponse only needs an io.Reader
      • handleResponse should not send commands
      • rename reqConn to cmdConn
      • reqConn is only an io.WriteCloser
      • send Land() command to drone on Halt() to avoid floating mid-air
    Source code(tar.gz)
    Source code(zip)
  • 1.11.1(Jul 10, 2018)

    • build
      • exclude vendor and other previously excluded subpackages
      • update Travis build to use OpenCV 3.4.2 release
      • update deps for GoCV to v0.14.0 release
      • Bump periph.io/x/periph to v3.0.0
      • update to Go 1.10.3 and 1.9.7 for Travis builds
    • docs
      • Fix Leap Motion package link
    • i2c
      • fix write/read gpio on mcp23017, and cleaned up some comments
      • correct pca9685 SetPWMFreq function scaling
    • gopigo3
      • update with default spi values, cleanup
    Source code(tar.gz)
    Source code(zip)
  • 1.11.0(May 31, 2018)

    • build
      • correct profile file location for codecov upload
      • Make Go Lint happier by adding some explicit type conversions and ignoring unused error returns
      • single quotes needed to upload any .cov file to codecov for reporting
      • update deps to latest versions for Paho MQTT, go-sdl, and gocv
      • upload any .cov file to codecov for reporting
      • use go 1.10.2 and 1.9.6 for Travis builds
      • add step to call dep ensure before contributing #524
    • examples
      • correct events used by XBox360 joystick example
    • firmata
      • Update the Firmata homepage in platform README
    • gpio
      • Improve Stepper Driver
      • Initial support for MAX7219 (gpio) led driver
    • joystick
      • full corrected ds3 and ds4 mappings plus examples to match for latest sdl 2.0.8
      • add instructions to README on how to install SDL on Linux from source
      • add missing type conversion
      • add new contributions to README
      • Add T-Flight Hotas X flight controoller
      • add xbox360 rock band drums controller
      • Correct Dualshock4 controller mappings and add ps/left/right buttons
      • correct test issue
      • exclude scanner from test builds
      • Fix joystick_driver to detect dpad input for xbox controllers
      • Update dualshock4.json to match joystick_dualshock4.go
      • update scanner to match go-sdl 0.3 API changes
      • Update the joystick driver test to read DPAD properly
    • leapmotion
      • change timestamp to uint64 to fix #516
    • tello
      • slow/fast mode switch function
      • StopLanding feature
      • Add Bounce() and PalmLand() funcs and their associated events.
      • bug fix
      • Change several fields in FlightData struct from int16 to bool
      • Export the FlightData fields (see Issue #531)
    Source code(tar.gz)
    Source code(zip)
  • 1.10.2(Apr 24, 2018)

  • 1.10.1(Apr 24, 2018)

  • 1.10.0(Apr 20, 2018)

    • docs
      • add gitter badge to readme
    • gpio
      • AIP1640 led driver, used in Wemos D1 mini's matrix LED shield
    • spi
      • switch to using periph.io for SPI interfaces
      • add support for ssd1306
      • add optional params such as bus/chip to all current drivers
      • complete refactoring to spi.Connection
      • remove unneeded code as suggested by @maruel
      • remove unneeded type and cleanup GoDocs
    • ble
      • correct spelling error in function name
    • build
      • update to latest version of Go 1.10 for Travis build
    • cli
      • remove extra newline
    • docs
      • add recently contributed GPIO devices to README
    • joystick
      • able to configure joysticks without external json file
      • correct error in scanning script
      • correct events used by gamepad-style up/down/left/right buttons
      • correct scanner error from ID
      • removed double release event
    • tello
      • add support for DJI Tello drone
    Source code(tar.gz)
    Source code(zip)
  • v1.9.0(Feb 14, 2018)

    • beaglebone
      • update pin naming, docs, and examples for the latest Debian OS releases
    • opencv
      • update build settings needed to build OpenCV/GoCV as part of test suite
      • deps for latest GoCV v0.9.0
    • build
      • update Travis build to use very latest Go versions
    • docs
      • add references to new drivers for ADXL345, BH1750, and TM1638.
      • improve docs for installation and use of OpenCV/GoCV from Gobot
      • update copyright date to 2018
    • gpio
      • Initial support for TM1638 modules
    • i2c
      • Added basic driver for BH1750 (light sensor), board GY-302
      • support for accel ADXL345
    • bb8/ollie/sprkplus
      • add Boost command
      • add Set Back LED Output command
      • add Set Raw Motor Values command
      • add Set Rotation Rate command
      • add Set Stabilization command
    • test
      • Refactor TestAdaptorDigitalPinConcurrency test
    Source code(tar.gz)
    Source code(zip)
  • v1.8.0(Dec 21, 2017)

    • sysfs
      • pause briefly to allow udev rules to apply when exporting PWMPin
    • beaglebone
      • correct uboot installation instructions
      • add SPI support
      • no more slots, add docs on configuring u-boot overlays
      • handle gpio pinmux without relying on specific pre-existing setup
    • pocketbeagle
      • add support for PocketBeagle
      • use universal io cape manager to initialize board setup
      • improve docs for latest Debian OS
    • build
      • Add dep, change how tests run in CI
      • update dependencies to latest GoCV version
    • spi
      • Add MCP3002, MCP3202, MCP3204, MCP3208, MCP3304, MCP3004, and MCP3008 A/D converter drivers
      • adding initial support for APA102 LEDs, thanks to code sample from @rakyll
      • extract shared SPI init code into spi package
    • up2
      • initial work on support for UP2 board
    • gopigo3
      • fixed set/get bug with motor dps
    • gpio
      • Adding stepper motor module
    • firmata
      • handle cases where out of sync data is read from serial port on first connecting
    • i2c
      • Change init payload sequence within jhd1313m1 driver Start() func.
    Source code(tar.gz)
    Source code(zip)
  • v1.7.1(Nov 10, 2017)

    • sprkplus
      • add new platform for Sphero SPRK+
    • firmata
      • correct problem where last analog pin(s) were being ignored from capabilities query
    • ble
      • use go-ble/ble fork for BLE interactions
    • build
      • update to use latest OpenCV version
      • update to use latest Golang versions
    Source code(tar.gz)
    Source code(zip)
  • v1.7.0(Oct 23, 2017)

    • curie
      • Add Linux specific step to Intel Curie docs
    • mqtt
      • Added SetCleanSession
    • build
      • add go1.9 to versions tested in Travis CI
      • add missing OpenCV lib dependency
      • Update build to use latest Golang versions
      • Travis build will now require sudo to install due to OpenCV
    • docs
      • some helpful edits for the initial spi implementation
    • gopigo3
      • integration of recent GoPiGo3 contributions
      • Added grove support, and more gopigo3 examples
    • gpio
      • Add ButtonDriver.DefaultState to allow for 'reverse' buttons (ones that go from HIGH to LOW)
    • holystone
      • Add initial support for HS-200
    • i2c
      • SSD1306.WithDisplayHeight() and SSD1306.WithDisplayWidth() for SSD1306 that use different display ratios
    • joystick
      • add CLI utilty to scan display events to make it easier to add new joyticks
      • update README to address #441
    • opencv
      • Switchover to use GoCV and OpenCV 3.3
      • Switch to use custom domain for GoCV package
      • all examples using new GoCV based code
      • correct formatting in face detect example
      • OpenCV face detector that is much more concurrent
      • update interface and examples to indicate multipurpose
    Source code(tar.gz)
    Source code(zip)
  • v1.6.0(Jun 15, 2017)

    • core
      • log failure errors on Robot Start()
    • build
      • run test coverage with covermode=set
      • update build to use Golang 1.7.6 and 1.8.3
    • docs
      • work on ROADMAP doc
    • sysfs
      • increase test coverage
    • bb8
      • use updated ble adaptor interface for tests
    • ble
      • allow for characteristic writes both with and without a response
      • allow override of specific HCI device to use
      • eliminate race conditions from response handling
    • curie
      • Implement Accelerometer, Gyroscope, and Temperature sensors implemented
      • motion detect implemented
      • shock detect implemented
      • step count implemented
      • tap detect implemented
    • digispark
      • update blink example to display error message on Start()
      • update README with latest development info
    • edison
      • auto-discovery of Edison board option
      • removed commented lines
    • firmata
      • expose WriteSysex to external callers
      • adjust client test timeout values
      • cleanup error handling for connection code
      • client tests don't need so many goroutines
      • expose WriteSysex to external callers
      • improve connection code to use a proper timeout
      • increase test coverage
      • make it possible to test external devices that use firmata adaptor
      • refactoring firmata client
      • remove circular import in test
      • remove unused code, increase test coverage
      • return connect errors to client
      • switch to using go-serial package
      • Sysex response events now being handled as expected
    • bme280
      • fix signed/unsigned bug
      • Fixed incorrect error condition check when reading the 'ctrl_hum' register.
      • Expanded the BME280 unit test for TestBME280DriverStart() to support reading from the 'ctrl_hum' register.
      • Enables humidity readings in the BME280 driver by enforcing the write to the 'ctrl_meas' register, as per Section 5.4.3 of the BME280 data sheet
    • chip
      • Fixed PWM duty cycle calculation for C.H.I.P ServoWrite
      • Fixed PWM init bug for C.H.I.P
      • C.H.I.P PWM init robust for already enabled state
    • i2c
      • remove unused test code
      • write config register in little endian
    • joystick
      • add needed constants for all PS3 buttons
    • littlewire
      • littlewire.cc links changed to littlewire.github.io
    • mavlink
      • switch to using go-serial package
    • megapi
      • switch to using go-serial package
    • microbit
      • use updated ble adaptor interface for tests
    • minidrone
      • add example for Parrot Mambo
      • add support for Mambo external accessories
      • increase test coverage
      • never expect responses for characteristic writes
      • remove unneeded code, increase test coverage
      • separate flight status processing and add test coverage
    • neurosky
      • switch to using go-serial package
    • ollie
      • use updated ble adaptor interface for tests
    • sphero
      • switch to using go-serial package
    • tinkerboard
      • Updated Tinkerboard and sysfs tests to updated PWM polarity contract
    Source code(tar.gz)
    Source code(zip)
  • v1.5.0(May 10, 2017)

    • core
      • Add Running() methods for Master and Robot and increase test coverage accordingly
    • sysfs
      • define DigitalPinnerProvider and PWMPinnerProvider interfaces
      • add Chip to be able to change pwmchip, and some related refactoring
      • add file read/write testing for failure conditions
      • proper handling of busy state vs. other errors
      • return sensible result when no valid data read
    • test
      • increase coverage on test helpers
    • build
      • switching to Travis builds using Ubuntu 14.04 Trusty
    • aio
      • only need to support AnalogReader interface
      • avoid test race conditions
      • ensure that AnalogSensor event Data is always int
    • gpio
      • only need to support DigitalReader/DigitalWriter interface
    • i2c
      • Added support for the ADS1015 and ADS1115 ADCs
      • Add INA3221 Voltage Monitor
      • Ensure lock of i2c bus for each individual operation
      • Small refactoring and increase test coverage for BMP180
    • beaglebone
      • implement DigitalPinner and PWMPinner interfaces
      • protect against pin map races
      • increase test coverage
    • chip
      • add preliminary support for C.H.I.P. Pro
      • add back ServoWrite implementation
      • implement DigitalPinnerProvider and PWMPinnerProvider interfaces
      • protect against pin map races
    • dragonboard
      • export DigitalPin and PWMPin adaptor methods
      • protect against pin map races
      • increase test coverage
    • edison
      • auto-detect arduino breakout board, if no specific board is expected
      • ensure that we initialize tristate if arduino breakout board
      • export DigitalPin and PWMPin adaptor methods
      • implement DigitalPinnerProvider and PWMPinnerProvider interfaces
      • protect against pin map races
      • refactoring to reduce code duplication
    • firmata
      • remove processing that might have been eating test events, increase test coverage
    • joule
      • implement DigitalPinnerProvider and PWMPinnerProvider interfaces
      • protect against pin map races
      • remove incorrect pin assignment and improve test coverage
      • add examples using Joule with ADS1015 ADC
      • naming system changes
      • correct pin mappings and add PWM example
    • mavlink
      • add a Mavlink-over-UDP adaptor.
    • microbit
      • Add DigitalWriter, DigitalReader, and AnalogReader support using IOPinDriver
      • Handle start error and increase test coverage
    • mqtt
      • Add a (topic, payload) event type
      • change the On handler to take mqtt.Message
      • increase test coverage
      • update examples that use mqtt for updated notification signature
    • nats
      • change the On() handler to take the subject as an argument
      • increase test coverage
    • raspi
      • implement DigitalPinnerProvider and PWMPinnerProvider interfaces
      • add implementation for PWMPinner interface that wraps pi blaster
      • fix adaptor race conditions
      • increase test coverage
    • tinkerboard
      • Add support for ASUS Tinker Board
    Source code(tar.gz)
    Source code(zip)
  • v1.4.0(Apr 12, 2017)

    • core
      • Use 10-buffered chans for events, see #374
    • i2c
      • Many refactors and increases in test coverage
      • Eliminate race conditions introduced by tests
      • Adds Altitude() function to BMP280/BME280
      • bme280 driver Humidity compensation formula
      • ssd1306 driver implementation
    • aio
      • Eliminate race conditions introduced by tests
    • gpio
      • Fix motor mode change when speed is set
      • Eliminate race conditions introduced by tests
      • Reduce test side effects
    • ardrone
      • Increase test coverage
    • audio
      • Increase test coverage
    • bb8
      • Refactoring to use BLEConnector interface and provide tests
    • bebop
      • Increase test coverage
    • beaglebone
      • Increase test coverage
    • ble
      • Increase test coverage for battery, device information, and generic access drivers
      • Refactoring drivers to use BLEConnector interface and provide tests
    • chip
      • Added PWM0 support
      • Increase test coverage
    • digispark
      • Increase test coverage
    • dragonboard
      • Increase test coverage
    • edison
      • Remove pointless error checking code
      • Refactor digital pin creation process method
      • Increase test coverage
    • firmata
      • Eliminate race conditions introduced by tests
      • Increase test coverage for i2c commands
    • joule
      • Increase test coverage
    • joystick
      • Increase test coverage
    • keyboard
      • Increase test coverage
    • mavlink
      • Eliminate race conditions introduced by tests
      • Increase test coverage
    • mavlink
      • Increase test coverage
    • microbit
      • Refactoring to use BLEConnector interface and provide tests
      • Address #404 by adding info about required magnetometer calibration step to README
      • Increase test coverage
    • minidrone
      • Refactoring to use BLEConnector interface and provide tests
    • mqtt
      • Increase test coverage
    • nats
      • Increase test coverage
    • neurosky
      • Update neurosky README & example
      • Eliminate race conditions introduced by tests
      • Increase test coverage
    • ollie
      • Refactoring to use BLEConnector interface and provide tests
      • Correct race condition error on seq
      • Increase test coverage
    • opencv
      • Increase test coverage
    • particle
      • Increase test coverage
    • raspi
      • Address #391 by providing more details about normal development workflow
      • Increase test coverage
    • sphero
      • Eliminate race conditions
      • Increase test coverage
    • sysfs
      • Address race condition from udev rules when exporting GPIO pins
      • Increase test coverage
    • docs
      • Improve explanations for scp/ssh workflow on SoC boards
      • Include entire Apache 2.0 license in the license text
    • test
      • Add crude travis check for gofmt; format all sources
      • Significantly speed up travis and make runs
      • Remove test code no longer being called
      • Update Travis to run tests using Golang 1.8.1
      • Increase gobottest test coverage
    Source code(tar.gz)
    Source code(zip)
  • v1.3.0(Mar 22, 2017)

    • microbit
      • Add new platform support
    • dragonboard
      • Add new platform support
    • gpio
      • Increase test coverage
    • i2c
      • Update list of supported i2c devices
      • Minor adjustments and test coverage improvements
      • Added more capabilities checks for I2C
      • Removed smbus block operations
    • core
      • Increase test coverage
    • test
      • Improvements to run tests much faster thanks @maruel
      • Use codecov.io for code coverage reporting
    • docs
      • Update CoC based on Contributor Covenant
    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Feb 16, 2017)

    • core
      • Use new improved default namer to avoid API conflicts
    • gpio
      • Removed scaling function from servo driver
      • Correct servo driver to pass along angle to adaptor to sort out implementation
    • i2c
      • Refactored platforms and drivers to new I2C interfaces
      • Change to make I2C support more than one bus
      • Refactor drivers to support new optional params
    • bb8
      • Added collision detection support and example
    • beaglebone
      • Correct i2c buses to match actual mapping
    • ble
      • Switch to using ble package for Bluetooth LE
      • Basic serial over BLE working with Arduino101 with StandardFirmataBLE
      • WIP on multiple simultaneous ble devices
    • chip
      • Fixed chip XIO base address lookup
    • digispark
      • Fix #288 by using pkg-config to locate libusb-compat includes
    • firmata
      • Remove race conditions identified in Firmata client
      • Correct error in I2C reads not listening to board events
    • mqtt
      • Add driver for syntactical sugar around virtual devices
      • Add SSL/TLS client options support
      • Fix #277 by adding SetAutoReconnect method to set Paho MQTT client
      • Change both 'On' and 'Publish' method function signatures to match Eventer interface
    • nats
      • Add driver to make it easier to create virtual devices
    • ollie
      • Added collision detection support and example
    • parrot
      • Add ValidatePitch helper function for Parrot Minidrone, Parrot Bebop & ARDrone 2.0 to package
    • docs
      • Fix #363 by using atomic.Value to protect current values used by multiple goroutines in drone examples
    • test
      • Remove Golang 1.5 from TravisCI tests in prep for Golang 1.8 release
    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Jan 9, 2017)

    • core
      • use canonical import path for sysfs package
    • i2c
      • Add a driver for the SHT3X chip
      • Add a driver for BMP180
      • Add support for L3GD20H gyroscope
    • firmata
      • Add support for TCPFirmata connections, allowing ESP8266 and other WiFi-connected controllers
      • Add mention to README to use 'tty.' serial port on OSX
      • Add mention of A4 and A5 normally unavailable on Firmata
    • raspi
      • Correct README build instructions with missing 'go build' command
    • snapcraft
      • Add the packaging metadata to build the gobot snap for Ubuntu Snappy
    • particle
      • Update examples to take key params via command line
      • Address #160 by adding support for tinker-servo sketch if installed on Particle device
    • esp8266 add experimental ESP8266 support to list of supported platforms
    • sysfs
      • Should fix #272 by using first byte of data as command register for I2C reads
      • Some additional cleanup suggested by golint
    • ble
      • Add generic access service driver
      • Update docs to include reference to included drivers
      • Move various test code to test file
    • ollie
      • Refactoring so no need to expose internal implementation details
    • bebop
      • Add support/example of RTP video
      • Enable video on firmware 3.3+
      • Update ps3 and video example to enable the video stream
      • Update README for brief explanation of how to get drone video
      • Corrected import paths for client examples
    • bb8
      • Correct NewDriver params and set name
      • Add missing constructor to wrap Ollie implementation
    • minidrone
      • Update README with example and which specific models are currently supported
      • Add all piloting flying state events
      • Adds Emergency() and TakePicture() commands
    • test
      • Add Golang 1.8beta2 to Travis builds
      • Correct aio references for AnalogRead tests
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Dec 21, 2016)

    • core
      • Refactoring to allow 'Metal' development using Gobot packages
      • Able to run robots without being part of a Master.
      • Now running all work in separate goroutines
      • Rename internal name of Master type
      • Refactor events to use channels all the way down.
      • Eliminate potential race conditions from Events and Every functions
      • Add Unsubscribe() to Eventer, now Once() works as expected
      • DeleteEvent function added to Eventer interface
      • Ranges over event channels instead of using select
      • No longer return non-standard slices of errors, instead use hashicorp/go-multierror
      • Ensure that all drivers have default names
      • Now both Robot and Master operate using AutoRun as expected
      • Use canonical import domain of gobot.io for all code
      • Use time.Sleep unless waiting for a timeout in a select
      • Uses time.NewTimer() instead of time.After() to be more efficient
    • test
      • Add deps tasks to Makefile
      • Add golang 1.7 to Travis CI tests
      • Add golang 1.8beta1 to build matrix for Travis
      • Reduce Travis builds to golang 1.4+ since it is late 2016 already
      • Complete move of test interfaces into the test files where they belong
      • Adds Parrot Minidrone and Sphero Ollie to Travis tests
    • Add missing godocs for everything
    • i2c
      • Move I2C drivers into appropriately named 'drivers/i2c' directory
      • Add support for Adafruit Servo/PWM HAT
    • gpio
      • Move GPIO drivers into appropriately named 'drivers/gpio' directory
      • Add support for PIR motion detector
    • beaglebone
      • auto-detect Linux kernel version
      • map usr LEDs to match all kernels
    • ble
      • Rename drivers to make them more obvious
      • Add test placeholders
    • chip
      • Auto-detect OS version to adjust pin mappings
      • Correct base for new 4.4 GPIO
    • edison
      • Support for other breakout boards besides Arduino
    • firmata
      • Use io.ReadFull in platforms/firmata/client
      • Update tarm/goserial to tarm/serial
    • joule
      • Add support for Intel Joule
    • megapi
      • Adding support for MakeBlock megapi
    • nats
      • Add support for NATS server
    • particle
      • Complete renaming Spark platform to Particle
    • parrot
      • Move Parrot Minidrone into own platform
      • Move both ARDrone and Bebop under Parrot package
    • raspi
      • Add missing godocs and small refactors for platform
    • sphero
      • Add initial support for Sphero BB-8 platform
      • Move Sphero Ollie into own platform
    Source code(tar.gz)
    Source code(zip)
  • v0.12.1(Jul 19, 2016)

    0.12.0

    • Refactor Gobot test helpers into separate package
    • Improve Gobot.Every method to return channel, allowing it to be halted
    • Refactor of sysfs adds substantial speed improvements
    • ble
      • Experimental support for Bluetooth LE.
      • Initial support for Battery & Device Information services
      • Initial support for Sphero BLE robots such as Ollie
      • Initial support for Parrot Minidrone
    • audio
      • Add new platform for Audio playback
    • gpio
      • Support added for new GPIO device:
        • RGB LED
      • Bugfixes:
        • Correct analog to better handle quick changes
        • Correct handling of errors and buffering for Wiichuk
    • mqtt
      • Add support for MQTT authentication
    • opencv
      • Switching to use main fork of OpenCV
      • Some minor bugfixes related to face tracking
    Source code(tar.gz)
    Source code(zip)
  • v0.11.0(Feb 17, 2016)

    • Support for Golang 1.6
    • Determine I2C adaptor capabilities dynamically to avoid use of block I/O when unavailable
    • chip
      • Add support for GPIO & I2C interfaces on C.H.I.P. $9 computer
    • leap motion
      • Add support additional "hand" and "gesture" events
    • mqtt
      • Support latest update to Eclipse Paho MQTT client library
    • raspberry pi
      • Proper release of Pi Blaster for PWM pins
    • bebop
      • Prevent event race conditions on takeoff/landing
    • i2c
      • Support added for new i2c device:
        • MCP23017 Port Expander
      • Bugfixes:
        • Correct init and data parsing for MPU-6050
        • Correct handling of errors and buffering for Wiichuk
    Source code(tar.gz)
    Source code(zip)
  • 0.10.0(Oct 27, 2015)

    • Refactor core to cleanup robot initialization and shutdown
    • Remove unnecessary goroutines spawned by NewEvent
    • api
      • Update Robeaux to v0.5.0
    • bebop
      • Add support for the Parrot Bebop drone
    • keyboard
      • Add support for keyboard control
    • gpio
      • Support added for 10 new Grove GPIO devices:
        • Grove Touch Sensor
        • Grove Sound Sensor
        • Grove Button
        • Grove Buzzer
        • Grove Led
        • Grove Light Sensor
        • Grove Vibration Sensor
        • Grove Rotary
        • Grove Relay
        • Grove Temperature Sensor
    • i2c
      • Support added for 2 new Grove i2c devices:
        • Grove Accelerometer
        • Grove LCD with RGB backlit display
    • docs
      • Many useful fixes and updates for docs, mostly contributed by our wonderful community.
    Source code(tar.gz)
    Source code(zip)
  • 0.8.2(Jul 1, 2015)

    0.8.2

    • firmata
      • Refactor firmata adaptor and split firmata protocol implementation into sub client package
    • gpio
      • Add support for LIDAR-Lite
    • raspi
      • Add PWM support via pi-blaster
    • sphero
      • Add ConfigureLocator, ReadLocator and SetRotationRate
    Source code(tar.gz)
    Source code(zip)
  • 0.8.1(Dec 28, 2014)

  • 0.8(Dec 24, 2014)

    • Refactor core, gpio, and i2c interfaces
    • Correctly pass errors throughout packages and remove all panics
    • Numerous bug fixes and performance improvements
    • api
      • Update robeaux to v0.3.0
    • firmata
      • Add optional io.ReadWriteCloser parameter to FirmataAdaptor
      • Fix thread exhaustion error
    • cli
      • generator
        • Update generator for new adaptor and driver interfaces
        • Add driver, adaptor and project generators
        • Add optional package name parameter
    Source code(tar.gz)
    Source code(zip)
  • 0.7.1(Nov 17, 2014)

  • 0.7(Nov 11, 2014)

    • Dramatically increased test coverage and documentation
    • api
      • Conform to the cppp.io spec
      • Add support for basic middleware
      • Add support for custom routes
      • Add SSE support
    • ardrone
      • Add optional parameter to specify the drones network address
    • core
      • Add Once(e *Event, f func(s interface{}) Event function
      • Rename Expect to Assert and add Refute test helper function
    • i2c
      • Add support for MPL115A2
      • Add support for MPU6050
    • mavlink
      • Add support for common mavlink messages
    • mqtt
      • Add support for mqtt
    • raspi
      • Add support for the Raspberry Pi
    • sphero
      • Enable stop on sphero disconnect
      • Add Collision data struct
    • sysfs
      • Add generic linux filesystem gpio implementation
    Source code(tar.gz)
    Source code(zip)
Owner
The Hybrid Group
The software company that makes your hardware work.
The Hybrid Group
A opinionated multi-tenant hyperscale Internet of Things platform to connect IoT devices fast and securely with minimal TCO

infinimesh IoT Platform infinimesh is a opinionated multi-tenant hyperscale Internet of Things platform to connect IoT devices fast and securely with

Mik 1 Feb 14, 2022
IoT Manager: use IoT platforms with Mender

Mender: Azure IoT Manager: use Azure IoT with Mender General Mender is an open source over-the-air (OTA) software updater for embedded Linux devices.

Mender 0 Jan 10, 2022
IoT platform with things/user management and visualization, in Go with Docker using microservices

BARIOT IoT platform to Manage Users and their Things and visualize their data. Microservices services architecture build with Go and docker (compose).

Maxime CLEMENT 5 Jun 22, 2022
Secure and Interoperable Internet of Things

plgd Cloud Internet of Things (IoT) technologies have evolved rapidly in recent years and continue to change how we interact with our surroundings. Fo

plgd 158 Jun 5, 2022
An embeddable lightweight Go/Golang MQTT broker(server) for IoT.

Snple MQTT 简体中文 Note: The API of this library is still unstable and has not been sufficiently tested, please do not use it in production environments.

null 8 Jun 1, 2022
🐼 IoT worm written in pure golang.

GoriaNet Most powerfull cross compiler (27arch). Kill process by port and check for duplicate instance. Killing process by port. Cross compiler. Infor

Ѵιcнч 64 Jun 17, 2022
Industrial IoT Messaging and Device Management Platform

Mainflux Mainflux is modern, scalable, secure, open-source, and patent-free IoT cloud platform written in Go. It accepts user and thing (sensor, actua

Mainflux 1.8k Jun 22, 2022
Exploring and comparing different IOT messaging protocols / transports.

IOT Messaging Protocols Blynk https://blynk.io/ A fully integrated suite of IoT software Device provisioning Sensor data visualization Remote control

Alexander Ustyugov 0 Jan 2, 2022
An Open-Source Platform for Quantified Self & IoT

Heedy Note: Heedy is currently in alpha. You can try it out by downloading it from the releases page, but there is no guarantee that future versions w

Heedy 336 Jun 24, 2022
Suite of libraries for IoT devices (written in Go), experimental for x/exp/io

Go libraries/drivers for IoT devices This repo contains a suite of libraries for IoT devices/sensors/actuators. The suite is meant to be as dependency

Go IoT 254 Jun 2, 2022
Make IoT a lot more fun with data.

Eywa What is Eywa? "Eywa is the guiding force and deity of Pandora and the Na'vi. All living things on Pandora connect to Eywa." -- Avatar Wiki Projec

Alex 53 Jun 2, 2022
A Go client for Google IoT Core

IoT A simple framework for implementing a Google IoT device. This package makes use of the context package to handle request cancelation, timeouts, an

Andrew Young 60 Jun 2, 2022
Next-generation IoT open source platform.

tKeel Next-generation IoT open source platform High performance, High security and easy to use tKeel is a strong and reusable IoT platform that helps

null 85 Jun 28, 2022
Whichip: discover (IoT) device's IP in local network

whichip: discover (IoT) device's IP in local network Install On (IoT) Device wget -O install.sh

Jingchao Hu 1 Dec 8, 2021
Kubernetes Native Edge Computing Framework (project under CNCF)

KubeEdge KubeEdge is built upon Kubernetes and extends native containerized application orchestration and device management to hosts at the Edge. It c

KubeEdge 5.1k Jun 26, 2022
🦖 Streaming-Serverless Framework for Low-latency Edge Computing applications, running atop QUIC protocol, engaging 5G technology.

YoMo YoMo is an open-source Streaming Serverless Framework for building Low-latency Edge Computing applications. Built atop QUIC Transport Protocol an

YoMo 1.1k Jun 22, 2022
A realtime teenage driver behaviour monitoring system integrating OBII sensor, smart watch, smartphone, and Raspberry Pi, which examines over time novice teenage driving performance and risk

DriverMonitor A realtime teenage driver behaviour monitoring system integrating OBII sensor, smart watch, smartphone, and Raspberry Pi, which examines

Shaohu 0 Nov 27, 2021
Golang implementation of PyMISP-feedgenerator

Go-MispFeedGenerator Generate MISP feeds without a MISP Instance! Go-MispFeedGenerator aka Go-MFG1000, is a library providing all functions needed to

Kaan S. Karadag 15 Jun 16, 2022
Golang DNSTAP sensor use to collect passive dns data from a recursive name server

dnstap-sensor DNSTAP-SENSOR is a Golang program that is used to collect passive dns data from a recursive name server and submit it to Deteque's DNSTA

Andrew Fried 1 Jan 18, 2022