artoo-beaglebone 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +65 -0
- data/LICENSE +2 -0
- data/README.md +34 -0
- data/Rakefile +10 -0
- data/artoo-beaglebone.gemspec +28 -0
- data/examples/blink.rb +10 -0
- data/examples/wiichuck.rb +12 -0
- data/lib/artoo-beaglebone.rb +2 -0
- data/lib/artoo-beaglebone/version.rb +5 -0
- data/lib/artoo/adaptors/beaglebone.rb +135 -0
- data/test/adaptors/beaglebone_adaptor_test.rb +62 -0
- data/test/test_helper.rb +10 -0
- metadata +142 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: da58ec62c81ebfdea9be0e49806cb6790b1816cf
|
4
|
+
data.tar.gz: adf28851c3b42c2c3722f10d2e54bd19feed2bbd
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 36f9b54633c413b170dd270aab9847704faf33e3e8a7bc805a83e17f984baca027e16aed96fb7effee8ba1e8416b0e5d499271b30552f45cf1f68618df19ac3a
|
7
|
+
data.tar.gz: 00918328fea3788e53bf5327b7c88c0586e936d5f2ff387db5cc5d45703a3a460718d55c36143818334d1915112cb60092725bac2226c3703a9b2d189db8d799
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
.rvmrc
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
artoo-beaglebone (0.1.0)
|
5
|
+
artoo (>= 1.3.0)
|
6
|
+
artoo-gpio
|
7
|
+
artoo-i2c
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: http://rubygems.org/
|
11
|
+
specs:
|
12
|
+
artoo (1.3.0)
|
13
|
+
celluloid (~> 0.15.0)
|
14
|
+
celluloid-io (~> 0.15.0)
|
15
|
+
multi_json (~> 1.6)
|
16
|
+
pry (~> 0.9)
|
17
|
+
rake
|
18
|
+
reel (~> 0.4.0)
|
19
|
+
thor (~> 0.18.1)
|
20
|
+
artoo-gpio (0.2.1)
|
21
|
+
artoo (>= 1.2.2)
|
22
|
+
artoo-i2c (0.3.0)
|
23
|
+
artoo (>= 1.3.0)
|
24
|
+
celluloid (0.15.1)
|
25
|
+
timers (~> 1.1.0)
|
26
|
+
celluloid-io (0.15.0)
|
27
|
+
celluloid (>= 0.15.0)
|
28
|
+
nio4r (>= 0.5.0)
|
29
|
+
coderay (1.0.9)
|
30
|
+
http (0.5.0)
|
31
|
+
http_parser.rb
|
32
|
+
http_parser.rb (0.6.0.beta.2)
|
33
|
+
metaclass (0.0.1)
|
34
|
+
method_source (0.8.2)
|
35
|
+
minitest (5.0.8)
|
36
|
+
minitest-happy (1.0.0)
|
37
|
+
mocha (0.14.0)
|
38
|
+
metaclass (~> 0.0.1)
|
39
|
+
multi_json (1.8.1)
|
40
|
+
nio4r (0.5.0)
|
41
|
+
pry (0.9.12.2)
|
42
|
+
coderay (~> 1.0.5)
|
43
|
+
method_source (~> 0.8)
|
44
|
+
slop (~> 3.4)
|
45
|
+
rake (10.1.0)
|
46
|
+
reel (0.4.0)
|
47
|
+
celluloid (>= 0.15.1)
|
48
|
+
celluloid-io (>= 0.15.0)
|
49
|
+
http (>= 0.5.0)
|
50
|
+
http_parser.rb (>= 0.6.0.beta.2)
|
51
|
+
websocket_parser (>= 0.1.4)
|
52
|
+
slop (3.4.6)
|
53
|
+
thor (0.18.1)
|
54
|
+
timers (1.1.0)
|
55
|
+
websocket_parser (0.1.4)
|
56
|
+
http
|
57
|
+
|
58
|
+
PLATFORMS
|
59
|
+
ruby
|
60
|
+
|
61
|
+
DEPENDENCIES
|
62
|
+
artoo-beaglebone!
|
63
|
+
minitest (>= 5.0)
|
64
|
+
minitest-happy
|
65
|
+
mocha (>= 0.14.0)
|
data/LICENSE
ADDED
data/README.md
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# Artoo Adaptor For Beaglebone
|
2
|
+
|
3
|
+
This repository contains the Artoo (http://artoo.io/) adaptor for the [Beaglebone Black](http://beagleboard.org/Products/BeagleBone+Black/).
|
4
|
+
|
5
|
+
Artoo is a open source micro-framework for robotics using Ruby.
|
6
|
+
|
7
|
+
For more information about Artoo, check out our repo at https://github.com/hybridgroup/artoo
|
8
|
+
|
9
|
+
[](https://codeclimate.com/github/hybridgroup/artoo-beaglebone) [](https://travis-ci.org/hybridgroup/artoo-beaglebone)
|
10
|
+
|
11
|
+
## Installing
|
12
|
+
|
13
|
+
```
|
14
|
+
gem install artoo-beaglebone
|
15
|
+
```
|
16
|
+
|
17
|
+
## Using
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
require 'artoo'
|
21
|
+
|
22
|
+
connection :beaglebone, :adaptor => :beaglebone
|
23
|
+
device :led, :driver => :led, :pin => :P9_12
|
24
|
+
|
25
|
+
work do
|
26
|
+
every 1.second do
|
27
|
+
led.on? ? led.off : led.on
|
28
|
+
end
|
29
|
+
end
|
30
|
+
```
|
31
|
+
|
32
|
+
## Getting Started
|
33
|
+
|
34
|
+
The fastest way to get started with your Beaglebone Black is to use our provided [image](https://github.com/hybridgroup/artoo-beaglebone/wiki/artoo-image-instructions)
|
data/Rakefile
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "artoo-beaglebone/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "artoo-beaglebone"
|
7
|
+
s.version = Artoo::Beaglebone::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Adrian Zankich", "Ron Evans"]
|
10
|
+
s.email = ["artoo@hybridgroup.com"]
|
11
|
+
s.homepage = "https://github.com/hybridgroup/artoo-beaglebone"
|
12
|
+
s.summary = %q{Artoo adaptor for Beaglebone}
|
13
|
+
s.description = %q{Artoo adaptor for Beaglebone}
|
14
|
+
|
15
|
+
s.rubyforge_project = "artoo-beaglebone"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
|
22
|
+
s.add_runtime_dependency 'artoo', '>= 1.3.0'
|
23
|
+
s.add_runtime_dependency 'artoo-gpio'
|
24
|
+
s.add_runtime_dependency 'artoo-i2c'
|
25
|
+
s.add_development_dependency 'minitest', '>= 5.0'
|
26
|
+
s.add_development_dependency 'minitest-happy'
|
27
|
+
s.add_development_dependency 'mocha', '>= 0.14.0'
|
28
|
+
end
|
data/examples/blink.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'artoo'
|
2
|
+
|
3
|
+
connection :beaglebone, :adaptor => :beaglebone
|
4
|
+
device :wiichuck, :driver => :wiichuck, :connection => :beaglebone, :interval => 0.01
|
5
|
+
|
6
|
+
work do
|
7
|
+
on wiichuck, :c_button => proc { puts "c button pressed!" }
|
8
|
+
on wiichuck, :z_button => proc { puts "z button pressed!" }
|
9
|
+
on wiichuck, :joystick => proc { |*value|
|
10
|
+
puts "joystick x: #{value[1][:x]}, y: #{value[1][:y]}"
|
11
|
+
}
|
12
|
+
end
|
@@ -0,0 +1,135 @@
|
|
1
|
+
require 'artoo/adaptors/adaptor'
|
2
|
+
require 'artoo/adaptors/io'
|
3
|
+
|
4
|
+
module Artoo
|
5
|
+
module Adaptors
|
6
|
+
# Connect to a beaglebone device
|
7
|
+
# @see device documentation for more information
|
8
|
+
class Beaglebone < Adaptor
|
9
|
+
include Artoo::Adaptors::IO
|
10
|
+
PINS = {
|
11
|
+
:P8_3 => 38,
|
12
|
+
:P8_4 => 39,
|
13
|
+
:P8_5 => 34,
|
14
|
+
:P8_6 => 35,
|
15
|
+
:P8_7 => 66,
|
16
|
+
:P8_8 => 67,
|
17
|
+
:P8_9 => 69,
|
18
|
+
:P8_10 => 68,
|
19
|
+
:P8_11 => 45,
|
20
|
+
:P8_12 => 44,
|
21
|
+
:P8_13 => 23,
|
22
|
+
:P8_14 => 26,
|
23
|
+
:P8_15 => 47,
|
24
|
+
:P8_16 => 46,
|
25
|
+
:P8_17 => 27,
|
26
|
+
:P8_18 => 65,
|
27
|
+
:P8_19 => 22,
|
28
|
+
:P8_20 => 63,
|
29
|
+
:P8_21 => 62,
|
30
|
+
:P8_22 => 37,
|
31
|
+
:P8_23 => 36,
|
32
|
+
:P8_24 => 33,
|
33
|
+
:P8_25 => 32,
|
34
|
+
:P8_26 => 61,
|
35
|
+
:P8_27 => 86,
|
36
|
+
:P8_28 => 88,
|
37
|
+
:P8_29 => 87,
|
38
|
+
:P8_30 => 89,
|
39
|
+
:P8_31 => 10,
|
40
|
+
:P8_32 => 11,
|
41
|
+
:P8_33 => 9,
|
42
|
+
:P8_34 => 81,
|
43
|
+
:P8_35 => 8,
|
44
|
+
:P8_36 => 80,
|
45
|
+
:P8_37 => 78,
|
46
|
+
:P8_38 => 79,
|
47
|
+
:P8_39 => 76,
|
48
|
+
:P8_40 => 77,
|
49
|
+
:P8_41 => 74,
|
50
|
+
:P8_42 => 75,
|
51
|
+
:P8_43 => 72,
|
52
|
+
:P8_44 => 73,
|
53
|
+
:P8_45 => 70,
|
54
|
+
:P8_46 => 71,
|
55
|
+
:P9_11 => 30,
|
56
|
+
:P9_12 => 60,
|
57
|
+
:P9_13 => 31,
|
58
|
+
:P9_14 => 50,
|
59
|
+
:P9_15 => 48,
|
60
|
+
:P9_16 => 51,
|
61
|
+
:P9_17 => 5,
|
62
|
+
:P9_18 => 4,
|
63
|
+
:P9_19 => 13,
|
64
|
+
:P9_20 => 12,
|
65
|
+
:P9_21 => 3,
|
66
|
+
:P9_22 => 2,
|
67
|
+
:P9_23 => 49,
|
68
|
+
:P9_24 => 15,
|
69
|
+
:P9_25 => 117,
|
70
|
+
:P9_26 => 14,
|
71
|
+
:P9_27 => 115,
|
72
|
+
:P9_28 => 113,
|
73
|
+
:P9_29 => 111,
|
74
|
+
:P9_30 => 112,
|
75
|
+
:P9_31 => 110
|
76
|
+
}
|
77
|
+
attr_reader :pins, :i2c
|
78
|
+
|
79
|
+
# Name of device
|
80
|
+
# @return [String]
|
81
|
+
def firmware_name
|
82
|
+
"Beaglebone"
|
83
|
+
end
|
84
|
+
|
85
|
+
# Version of device
|
86
|
+
# @return [String]
|
87
|
+
def version
|
88
|
+
Artoo::Beaglebone::VERSION
|
89
|
+
end
|
90
|
+
|
91
|
+
def digital_write pin, val
|
92
|
+
pin = beaglebone_pin(pin, "w")
|
93
|
+
pin.digital_write(val)
|
94
|
+
end
|
95
|
+
|
96
|
+
def digital_read pin
|
97
|
+
pin = beaglebone_pin(pin, "r")
|
98
|
+
pin.digital_read
|
99
|
+
end
|
100
|
+
|
101
|
+
def i2c_start address
|
102
|
+
@i2c = I2c.new i2c2_file, address
|
103
|
+
end
|
104
|
+
|
105
|
+
def i2c_write *data
|
106
|
+
i2c.write *data
|
107
|
+
end
|
108
|
+
|
109
|
+
def i2c_read len
|
110
|
+
i2c.read len
|
111
|
+
end
|
112
|
+
|
113
|
+
private
|
114
|
+
|
115
|
+
def translate_pin pin
|
116
|
+
begin
|
117
|
+
PINS.fetch(pin.upcase.to_sym)
|
118
|
+
rescue Exception => e
|
119
|
+
raise "Not a valid pin"
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def beaglebone_pin pin, mode
|
124
|
+
@pins = [] if @pins.nil?
|
125
|
+
pin = translate_pin pin
|
126
|
+
@pins[pin] = DigitalPin.new(pin, mode) if @pins[pin].nil? || @pins[pin].mode != mode
|
127
|
+
@pins[pin]
|
128
|
+
end
|
129
|
+
|
130
|
+
def i2c2_file
|
131
|
+
"/dev/i2c-1"
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/../test_helper")
|
2
|
+
require 'artoo/adaptors/beaglebone'
|
3
|
+
|
4
|
+
describe Artoo::Adaptors::Beaglebone do
|
5
|
+
before do
|
6
|
+
@adaptor = Artoo::Adaptors::Beaglebone.new
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "device info interface" do
|
10
|
+
it "#firmware_name" do
|
11
|
+
@adaptor.firmware_name.must_equal "Beaglebone"
|
12
|
+
end
|
13
|
+
|
14
|
+
it "#version" do
|
15
|
+
@adaptor.version.must_equal Artoo::Beaglebone::VERSION
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "digital GPIO interface" do
|
20
|
+
it "#digital_read" do
|
21
|
+
@pin = mock('pin')
|
22
|
+
@adaptor.expects(:beaglebone_pin).with(:P1_1, "r").returns(@pin)
|
23
|
+
@pin.expects(:digital_read).returns(true)
|
24
|
+
|
25
|
+
@adaptor.digital_read(:P1_1).must_equal true
|
26
|
+
end
|
27
|
+
|
28
|
+
it "#digital_write" do
|
29
|
+
@pin = mock('pin')
|
30
|
+
@adaptor.expects(:beaglebone_pin).with(:P1_1, "w").returns(@pin)
|
31
|
+
@pin.expects(:digital_write).with(true)
|
32
|
+
|
33
|
+
@adaptor.digital_write(:P1_1, true)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "i2c interface" do
|
38
|
+
it "#i2c_start" do
|
39
|
+
@adaptor.expects(:i2c2_file).returns '/a/file'
|
40
|
+
@i2c = mock('i2c')
|
41
|
+
Artoo::Adaptors::IO::I2c.expects(:new).with('/a/file', 0xFF).returns(@i2c)
|
42
|
+
|
43
|
+
@adaptor.i2c_start 0xFF
|
44
|
+
end
|
45
|
+
|
46
|
+
it "#i2c_read" do
|
47
|
+
@i2c = mock('i2c')
|
48
|
+
@i2c.expects(:read).with(6)
|
49
|
+
@adaptor.expects(:i2c).returns @i2c
|
50
|
+
|
51
|
+
@adaptor.i2c_read 6
|
52
|
+
end
|
53
|
+
|
54
|
+
it "#i2c_write" do
|
55
|
+
@i2c = mock('i2c')
|
56
|
+
@i2c.expects(:write).with(0x01, 0x03, 0x05)
|
57
|
+
@adaptor.expects(:i2c).returns @i2c
|
58
|
+
|
59
|
+
@adaptor.i2c_write 0x01, 0x03, 0x05
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,142 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: artoo-beaglebone
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Adrian Zankich
|
8
|
+
- Ron Evans
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-10-05 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: artoo
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - '>='
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 1.3.0
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - '>='
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 1.3.0
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: artoo-gpio
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: artoo-i2c
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: minitest
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '5.0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '5.0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: minitest-happy
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: mocha
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: 0.14.0
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - '>='
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: 0.14.0
|
98
|
+
description: Artoo adaptor for Beaglebone
|
99
|
+
email:
|
100
|
+
- artoo@hybridgroup.com
|
101
|
+
executables: []
|
102
|
+
extensions: []
|
103
|
+
extra_rdoc_files: []
|
104
|
+
files:
|
105
|
+
- .gitignore
|
106
|
+
- Gemfile
|
107
|
+
- Gemfile.lock
|
108
|
+
- LICENSE
|
109
|
+
- README.md
|
110
|
+
- Rakefile
|
111
|
+
- artoo-beaglebone.gemspec
|
112
|
+
- examples/blink.rb
|
113
|
+
- examples/wiichuck.rb
|
114
|
+
- lib/artoo-beaglebone.rb
|
115
|
+
- lib/artoo-beaglebone/version.rb
|
116
|
+
- lib/artoo/adaptors/beaglebone.rb
|
117
|
+
- test/adaptors/beaglebone_adaptor_test.rb
|
118
|
+
- test/test_helper.rb
|
119
|
+
homepage: https://github.com/hybridgroup/artoo-beaglebone
|
120
|
+
licenses: []
|
121
|
+
metadata: {}
|
122
|
+
post_install_message:
|
123
|
+
rdoc_options: []
|
124
|
+
require_paths:
|
125
|
+
- lib
|
126
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - '>='
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - '>='
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
136
|
+
requirements: []
|
137
|
+
rubyforge_project: artoo-beaglebone
|
138
|
+
rubygems_version: 2.0.3
|
139
|
+
signing_key:
|
140
|
+
specification_version: 4
|
141
|
+
summary: Artoo adaptor for Beaglebone
|
142
|
+
test_files: []
|