Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

dino-piboard

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dino-piboard

  • 0.13.0
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

dino-piboard 0.13.0

This is an add-on to the dino gem. It adds support for the GPIO interface on Raspberry Pi single board computers. Unlike the main dino gem, which connects a computer running Ruby to an external microcontroller, this requires only a Pi.

Dino::PiBoard gives access to the Pi's own GPIO, and is a drop-in replacement for Dino::Board, which would represent an external microcontroller.

Note: This is not for the Raspberry Pi Pico (W) / RPP2040. That microcontroller is covered by the main gem.

Installation

Note: This gem is very new. It WILL NOT work with the version of dino (0.11.3) currently available on rubygems.org. Before installing dino-piboard, make sure to install the latest dino version (future 0.13.0) from the master branch source.

Install dino from source:

sudo gem uninstall dino
git clone https://github.com/austinbv/dino.git
cd dino
gem build
sudo gem install dino-0.13.0.gem

Install the pigpo C library:

sudo apt-get install pigpio

Install this gem:

sudo gem install dino-piboard

Example

Create a script, led_button.rb:

require 'dino/piboard'

# Create a board instance for the Raspberry Pi.
board = Dino::PiBoard.new

# LED connected to GPIO4.
led = Dino::LED.new(board: board, pin: 4)

# Momentary button connected to GPIO17, using internal pullup.
button = Dino::DigitalIO::Button.new(board: board, pin: 17, pullup: true)

# Led on when button is down (0)
button.down do
  puts "Button down"
  led.on
end

# Led is off when button is up (1)
button.up do
  puts "Button up"
  led.off
end

# Sleep main thread. Ctrl+C to quit.
sleep

Run the script as root (pigpio can only be used as root):

sudo ruby led_button.rb

See examples in the main gem for more. Remove any Dino::Board::Connection and Dino::Board objects that the script sets up, and do board = Dino::PiBoard.new instead. Not all features are implemented yet though, nor can be implemented. See Feautres below.

How It Works

This gem uses the pigpio_ffi gem, which in turn uses ffi to map the functions of the pigpio C library. pigpio provides low-level access to the Raspberry Pi's GPIO interface.

Building on that, Dino::PiBoard plugs in as a (mostly) seamless replacement for Dino::Board. This allows dino features and component classes to be used directly on a Raspberry Pi, without an external microcontroller.

Features

Already Implemented

  • Internal Pull Down/Up
  • Digital Out
  • Digital In
  • PWM Out

To Be Implemented

  • Tone Out
  • Servo
  • I2C
  • SPI
  • OneWire
  • Infrared Out

Won't Be Implemented

  • UART. It would wrap a rubyserial instance. Use that directly instead.

Might Be Different

  • Variable Digital Listen Timing (pigpio doesn't have a real way to do this, but glitch filter might be even better?)

Incompatible

  • Handshake (no need, since running on the same board)
  • EEPROM (can't mess with that. Use the filesystem instead)
  • Analog IO (No analog pins on Raspberry Pi. Use an ADC or DAC over I2C or SPI)

FAQs

Package last updated on 04 Apr 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc