Robotic and Industrial Controls for Linux
Dual DC Motor
Dual H-Bridge Controller
Bipolar Stepper Controller
Unipolar Stepper Controller
Quad Servo Controller
Octal Servo Controller
Dual Quadrature Decoder
Maxbotix Range Sensor
Ping))) Range Sensor
Quad PWM Input
Quad PWM Output
Octal PWM Output
Quad Bidirectional IO
Octal Bidirectional IO
Quad Pattern Generator
Octal Pattern Generator
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!
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.
- 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/servogroupThe 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