beaglebone 1.0.6 → 1.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 +4 -4
- data/README.md +97 -14
- data/beaglebone.gemspec +1 -1
- data/procedural-examples.md +614 -0
- metadata +2 -8
- data/examples/ain.rb +0 -92
- data/examples/gpio.rb +0 -196
- data/examples/i2c.rb +0 -110
- data/examples/pwm.rb +0 -63
- data/examples/shiftregister.rb +0 -12
- data/examples/spi.rb +0 -62
- data/examples/uart.rb +0 -64
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1e67c458b2531e22e6448a1a7f48cefbc6fb938
|
4
|
+
data.tar.gz: 4b01929c1291294281617ad65f49ace68a8e3497
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c200e3754b49ab4e4870453faa28c7c6bc7b6b16895ce6df9dcd8c16e16bfdbf42aadfc7c6ac3c03b8ac2b6025686b6f611e123a1d47e30ab17994473169382
|
7
|
+
data.tar.gz: d17903bf3d475051bb24ceb0efaaff537c2a55e1852155903e397186eb073d1f9e04fb033636b6eb62ed209359231054970c1c64e2bc5c1ab1fe8ee305199d94
|
data/README.md
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
# Beaglebone Ruby Library
|
2
|
-
Documentation is in progress and will be completed shortly.
|
3
2
|
|
4
3
|
**Table of Contents**
|
5
4
|
- [Overview](#overview)
|
@@ -7,7 +6,14 @@ Documentation is in progress and will be completed shortly.
|
|
7
6
|
- [Installing Ruby](#installing-ruby)
|
8
7
|
- [Installing Beaglebone Gem](#installing-beaglebone-gem)
|
9
8
|
- [Usage](#usage)
|
10
|
-
- [
|
9
|
+
- [Pin Information](#pin-information)
|
10
|
+
- [GPIO Pins](#gpio-pins)
|
11
|
+
- [Analog Pins](#analog-pins)
|
12
|
+
- [PWM Pins](#pwm-pins)
|
13
|
+
- [UART Pins](#uart-pins)
|
14
|
+
- [I2C Pins](#i2c-pins)
|
15
|
+
- [SPI Pins](#spi-pins)
|
16
|
+
- [Source Code Reference](#source-code-reference)
|
11
17
|
- [Examples (Object Oriented)](#examples-object-oriented)
|
12
18
|
- [GPIO](#gpio)
|
13
19
|
- [GPIO Writing](#gpio-writing)
|
@@ -36,7 +42,6 @@ Documentation is in progress and will be completed shortly.
|
|
36
42
|
- [SPI Data Transfer](#spi-data-transfer)
|
37
43
|
- [MCP3008 Example](#mcp3008-example)
|
38
44
|
- [Examples (Procedural)](#examples-procedural)
|
39
|
-
- [Pin Reference](#pin-reference)
|
40
45
|
- [License](#license)
|
41
46
|
|
42
47
|
## Overview
|
@@ -66,8 +71,44 @@ require 'beaglebone'
|
|
66
71
|
include Beaglebone
|
67
72
|
```
|
68
73
|
|
69
|
-
##
|
70
|
-
|
74
|
+
## Pin Information
|
75
|
+
The Beaglebone has two headers of IO pins. Documentation on these pins is available [here](http://beagleboard.org/Support/bone101#headers).
|
76
|
+
|
77
|
+
### GPIO Pins
|
78
|
+
The beaglebone has a large number of GPIO pins. These pins function at 3.3v. Do not provide more than 3.3v to any GPIO pin or risk damaging the hardware.
|
79
|
+
|
80
|
+
Not all GPIO pins will be usable. Currently there is a bug affecting P9_17 and P9_18. They do not function in the latest Debian image.
|
81
|
+
|
82
|
+
There are built in _capes_ that have priority over the GPIO pins unless disabled. These are for HDMI and the onboard eMMC. It is documented [here](http://beagleboard.org/Support/bone101#headers-black). It is possible to disable these _capes_ if you are not using them.
|
83
|
+
|
84
|
+
### Analog Pins
|
85
|
+
The beaglebone has 7 Analog inputs. Documentation on these pins is available [here](http://beagleboard.org/Support/bone101#headers-analog). These pins function at 1.8v. Do not provide more than 1.8v to any Analog pin or risk damaging the hardware. The header has pins available to provide a 1.8v for analog devices as well as a dedicated analog ground.
|
86
|
+
|
87
|
+
### PWM Pins
|
88
|
+
The beaglebone has 8 PWM pins. Documentation on these pins is available [here](http://beagleboard.org/Support/bone101#headers-pwm). These pins function at 3.3v.
|
89
|
+
|
90
|
+
Not all 8 pins may be used at the same time. You may use the following pins.
|
91
|
+
|
92
|
+
- P8_13 or P8_19
|
93
|
+
- P9_14 or P9_16
|
94
|
+
- P9_21 or P9_22
|
95
|
+
- P9_28 and P9_42
|
96
|
+
|
97
|
+
### UART Pins
|
98
|
+
The beaglebone has 5 UART devices available. Documentation on these pins is available [here](http://beagleboard.org/Support/bone101#headers-serial). These pins function at 3.3v. Do not provide more than 3.3v to any UART pin or risk damaging the hardware.
|
99
|
+
|
100
|
+
UART3 only has a TX pin available.
|
101
|
+
|
102
|
+
UART5 TX and RX pins are unavailable by default, as the HDMI _cape_ claims those pins unless disabled.
|
103
|
+
|
104
|
+
### I2C Pins
|
105
|
+
The beaglebone has 2 I2C devices available. Documentation on these pins is available [here](http://beagleboard.org/Support/bone101#headers-i2c). These pins function at 3.3v. Do not provide more than 3.3v to any I2C pin or risk damaging the hardware.
|
106
|
+
|
107
|
+
### SPI Pins
|
108
|
+
The beaglebone has 2 SPI devices available. Documentation on these pins is available [here](http://beagleboard.org/Support/bone101#headers-spi). These pins function at 3.3v. Do not provide more than 3.3v to any SPI pin or risk damaging the hardware.
|
109
|
+
|
110
|
+
## Source Code Reference
|
111
|
+
A full Source Code reference is available [here](http://rubydoc.info/gems/beaglebone/1.0.5/frames).
|
71
112
|
|
72
113
|
## Examples (Object Oriented)
|
73
114
|
These examples will show the various ways to interact with the Beaglebones IO hardware. They will need to be executed as root in order to function correctly.
|
@@ -148,7 +189,7 @@ end
|
|
148
189
|
```
|
149
190
|
|
150
191
|
#### Edge Triggers
|
151
|
-
The Beaglebone can
|
192
|
+
The Beaglebone can monitor for changes on a GPIO pin. This is called an edge trigger. Since this is interrupt based on the Beaglebone, waiting for a change does not waste CPU cycles by constantly polling the pin.
|
152
193
|
|
153
194
|
The following trigger types are supported
|
154
195
|
- Rising: Triggered when the state goes from low to high
|
@@ -208,7 +249,7 @@ p9_11.set_gpio_edge(:RISING)
|
|
208
249
|
```
|
209
250
|
|
210
251
|
#### Shift Registers
|
211
|
-
This library will
|
252
|
+
This library will support writing to shift registers using GPIO pins. Create a **ShiftRegister** object by initializing it with the latch pin, clock pin, and data pin.
|
212
253
|
|
213
254
|
This example will trigger 8 pins of a shift register.
|
214
255
|
|
@@ -391,6 +432,12 @@ p9_14.set_duty_cycle_ns(31250000)
|
|
391
432
|
# Invert the output signal
|
392
433
|
p9_14.set_polarity(:INVERTED)
|
393
434
|
|
435
|
+
# Stop the output signal
|
436
|
+
p9_14.stop
|
437
|
+
|
438
|
+
# Resume the output signal
|
439
|
+
p9_14.run
|
440
|
+
|
394
441
|
# Disable the output signal
|
395
442
|
p9_14.disable_pwm_pin
|
396
443
|
```
|
@@ -527,6 +574,10 @@ To read from an I2C device, the method **#read** is used.
|
|
527
574
|
This example communicates with an [LSM303DLHC](https://www.adafruit.com/products/1120) Accelerometer/Compass/Thermometer device.
|
528
575
|
|
529
576
|
```ruby
|
577
|
+
#!/usr/bin/env ruby
|
578
|
+
require 'beaglebone'
|
579
|
+
include Beaglebone
|
580
|
+
|
530
581
|
# Initialize I2C device I2C2
|
531
582
|
i2c = I2CDevice.new(:I2C2)
|
532
583
|
|
@@ -579,7 +630,7 @@ The beaglebone has a number of SPI devices. These operate at 3.3v. Do not prov
|
|
579
630
|
|
580
631
|
To initialize the SPI device **SPI0**, pass the symbol for that device to the **SPIDevice** constructor.
|
581
632
|
|
582
|
-
The optional arguments are
|
633
|
+
The optional arguments are available
|
583
634
|
- mode: SPI mode, :SPI_MODE_0 through :SPI_MODE_3
|
584
635
|
- speed: Speed of the SPI device
|
585
636
|
- bpw: Bits per word
|
@@ -603,7 +654,7 @@ spi.set_bpw(10)
|
|
603
654
|
spi.disable
|
604
655
|
```
|
605
656
|
|
606
|
-
#### SPI Data
|
657
|
+
#### SPI Data Transfer
|
607
658
|
To transfer data to an SPI device, the method **#xfer** is used.
|
608
659
|
|
609
660
|
**#xfer** takes the following arguments
|
@@ -613,12 +664,16 @@ To transfer data to an SPI device, the method **#xfer** is used.
|
|
613
664
|
- delay: (optional) delay
|
614
665
|
- bpw: (optonal) bits per word
|
615
666
|
|
616
|
-
**#xfer** returns the
|
667
|
+
**#xfer** returns the data read from the SPI device.
|
617
668
|
|
618
669
|
#### MCP3008 Example
|
619
670
|
This example communicates with an [MCP3008](http://www.adafruit.com/products/856) ADC device.
|
620
671
|
|
621
672
|
```ruby
|
673
|
+
#!/usr/bin/env ruby
|
674
|
+
require 'beaglebone'
|
675
|
+
include Beaglebone
|
676
|
+
|
622
677
|
# Initialize SPI device SPI0
|
623
678
|
spi = SPIDevice.new(:SPI0)
|
624
679
|
|
@@ -629,7 +684,7 @@ spi = SPIDevice.new(:SPI0)
|
|
629
684
|
# Read value from channel 0
|
630
685
|
raw = spi.xfer([ 0b00000001, 0b10000000, 0].pack("C*"))
|
631
686
|
|
632
|
-
#
|
687
|
+
# Split data read into an array of characters
|
633
688
|
data = raw.unpack("C*")
|
634
689
|
|
635
690
|
# The returned data is stored starting at the last two bits of the second byte
|
@@ -641,7 +696,7 @@ puts "Value of channel 0: #{val}"
|
|
641
696
|
# Read value from channel 1
|
642
697
|
raw = spi.xfer([ 0b00000001, 0b10010000, 0].pack("C*"))
|
643
698
|
|
644
|
-
#
|
699
|
+
# Split data read into an array of characters
|
645
700
|
data = raw.unpack("C*")
|
646
701
|
|
647
702
|
# The returned data is stored starting at the last two bits of the second byte
|
@@ -649,12 +704,40 @@ val = ((data[1] & 0b00000011) << 8 ) | data[2]
|
|
649
704
|
|
650
705
|
# Display the value of channel 1
|
651
706
|
puts "Value of channel 1: #{val}"
|
707
|
+
|
708
|
+
# Disable SPI device
|
709
|
+
spi.disable
|
652
710
|
```
|
653
711
|
|
654
712
|
## Examples (Procedural)
|
713
|
+
This library supports _procedural_ methods as well as _objet oriented_ methods. They are virtually identical to the _object oriented_ methods, except the first argument they take is the pin. If a callback is required, it is still passed first, before the pin. The examples directory has sample code in both formats.
|
714
|
+
|
715
|
+
The procedural versions of the examples are available in the file [procedural-examples.md](procedural-examples.md).
|
655
716
|
|
717
|
+
Instead of constructors, the following methods are used to initialize the pins and devices on the Beaglebone.
|
656
718
|
|
657
|
-
|
719
|
+
```ruby
|
720
|
+
# GPIOPin.new becomes
|
721
|
+
GPIO.pin_mode(:P9_12, :OUT)
|
722
|
+
|
723
|
+
# To set the state of the pin
|
724
|
+
GPIO.digital_write(:P9_12, :OUT)
|
725
|
+
|
726
|
+
# Analog pins do not require setup, and can be read at any time
|
727
|
+
AIN.read(:P9_33)
|
728
|
+
|
729
|
+
# PWMPin.new becomes
|
730
|
+
PWM.start(:P9_14, 90, 10, :NORMAL)
|
731
|
+
|
732
|
+
# UARTDevice.new becomes
|
733
|
+
UART.setup(:UART1, 9600)
|
734
|
+
|
735
|
+
# I2CDevice.new becomes
|
736
|
+
I2C.setup(:I2C2)
|
737
|
+
|
738
|
+
# SPIDevice.new becomes
|
739
|
+
SPI.setup(:SPI0)
|
740
|
+
```
|
658
741
|
|
659
742
|
## License
|
660
|
-
Copyright (c) 2014 Rob Mosher. Distributed under the GPL-v3 License. See LICENSE for more information.
|
743
|
+
Copyright (c) 2014 Rob Mosher. Distributed under the GPL-v3 License. See [LICENSE](LICENSE) for more information.
|