Demand Peripherals
Robotic and Industrial Controls for Linux

Connect Linux to the Real World

Demand Peripherals interface cards and device drivers let you connect your Linux PC or embedded controller to dozens of different peripherals. Each peripheral comes with a Linux device driver, a data sheet, and programming examples.

Since the Linux API to our peripherals are real Linux device drivers, you can write your high-level application in almost any programming language: C, C++, Java, Perl, PHP, or Python. You can even use BASH to control your hardware ...

Open source device drivers are available for all of the peripherals listed to the left. Take your pick!

 

A Customer Defined Robot Controller

The Demand Peripherals BaseBoard4 has an FPGA at its core. This means that we don't determine which peripherals to put on your controller, You do!

The BaseBoard4 has ten peripheral "slots". Slot 1 is reserved for the buttons and LEDs on the BaseBoard but the other nine slots are available for your peripherals. Examine the list of peripherals in the left hand column of this web page and select the ones you want on your controller. Note that most of the peripherals use half of the 16-pin connector but some use the full 16 pins of the connector. Once you have selected your peripherals visit the Support page "Build Your FPGA Image" to generate the BaseBoard4 FPGA image for your peripherals.

Your selection of Pin Peripherals is included in the price of the BaseBoard and as your design evolves you can request additional FPGA images at no additional cost.

 

For Example ...

This photograph shows demonstration hardware connected in what might be a typical system. From slot 2 in the lower left, counter-clockwise to slot 10 at the top, the peripherals shown are:
- Dual Quadrature Decoder
- Quad Event/Frequency Counter
- Bipolar Stepper Motor Controller
- Unipolar Stepper Motor Controller
- Quad Output Pattern Generator
- Quad Parallax Ping))) Interface
- Dual H-Bridge Motor Controller
- Quad Servo Motor Controller

The BaseBoard appears as a USB serial port to the host computer. A protocol (described here) over the USB-serial link controls the FPGA-based peripherals.

The low level protocol is awkward to use so most of the time you'll want to use dpdaemon, our user-space driver, to make the peripherals visible as device nodes in the /dev directory. The DPDameon Quick Start Guide (available as HTML and PDF) shows how to install the daemon. With dpdaemon running the peripherals in this example would appear to your high level applications as:

  /dev/dp0/s00_enumerator/README
  /dev/dp0/s00_enumerator/DPCore_info
  /dev/dp0/s01_bb4io/README
  /dev/dp0/s01_bb4io/buttons
  /dev/dp0/s01_bb4io/leds
  /dev/dp0/s02_quad2/README
  /dev/dp0/s02_quad2/step0
  /dev/dp0/s02_quad2/step1
  /dev/dp0/s02_quad2/update_period0
  /dev/dp0/s02_quad2/update_period1
  /dev/dp0/s03_count4/README
  /dev/dp0/s03_count4/update_period0
  /dev/dp0/s03_count4/count0
  /dev/dp0/s03_count4/total0
  /dev/dp0/s03_count4/update_period1
  /dev/dp0/s03_count4/count1
  /dev/dp0/s03_count4/total1
  /dev/dp0/s03_count4/update_period2
  /dev/dp0/s03_count4/count2
  /dev/dp0/s03_count4/total2
  /dev/dp0/s03_count4/update_period3
  /dev/dp0/s03_count4/count3
  /dev/dp0/s03_count4/total3
  /dev/dp0/s04_stepb/README
  /dev/dp0/s04_stepb/config
  /dev/dp0/s04_stepb/count
  /dev/dp0/s04_stepb/addcount
  /dev/dp0/s05_stepu/README
  /dev/dp0/s05_stepu/config
  /dev/dp0/s05_stepu/count
  /dev/dp0/s05_stepu/addcount
  /dev/dp0/s06_patgen4/README
  /dev/dp0/s06_patgen4/config
  /dev/dp0/s06_patgen4/pattern
  /dev/dp0/s06_simple4/status
  /dev/dp0/s07_ping4/README
  /dev/dp0/s07_ping4/distance
  /dev/dp0/s07_ping4/enable
  /dev/dp0/s08_hb2/README
  /dev/dp0/s08_hb2/mode0
  /dev/dp0/s08_hb2/mode1
  /dev/dp0/s08_hb2/speed0
  /dev/dp0/s08_hb2/speed1
  /dev/dp0/s08_hb2/PWMfrequency
  /dev/dp0/s08_hb2/shootthroughtime
  /dev/dp0/s08_hb2/slow_start0
  /dev/dp0/s08_hb2/slow_start1
  /dev/dp0/s08_hb2/slow_stop0
  /dev/dp0/s08_hb2/slow_stop1
  /dev/dp0/s08_hb2/watchdog
  /dev/dp0/s10_servo4/README
  /dev/dp0/s10_servo4/servo0
  /dev/dp0/s10_servo4/servo1
  /dev/dp0/s10_servo4/servo2
  /dev/dp0/s10_servo4/servo3
  /dev/dp0/s10_servo4/servogroup
The first BaseBoard connected to the host is designated as 'dp0', the second as 'dp1', and so forth. The slot number and the type of peripheral is encoded as the directories beneath the board.

The intent of this example is to give you an idea of what to expect when using Pin Peripherals. You can find more information about each of the peripherals in this example in the peripheral's data sheet.

 

Support

Contact Us

User Forums
     General
     Hardware
     Software

Downloads