davenull wrote:I'm looking for a robotics multi-IO shield providing plugs for external L298 H bridges (or even more powerful ones which I already have, on proprietary backpanes)
- to control 8 motors feat. rotary encoders
- plus extra digital (at least extra 16x) and analog pins (ADC 10-bit, at least 10x)
- plus at least one extra free i2c and UART for external devices (GPS, IMU, ...)
1) 8 motors require 16 to 24 digital I/O's (DIRA/DIRB or EN/DIRA/DIRB, I recommend the latter)
2) 16 extra digital I/O and 10x 10 bit ADC inputs
3) 1 extra I2C, 1 extra UART
You can do it with RoboPi, and a PiDroidAlpha, which would give you:
(see link above for RoboPi Build Manual and RoboPi User Manual)
8x 12 bit ADC (5V)
24x FlexIO (each I/O can be servo, pwm, digital in, digital out, ultrasonic distance sensor, 5V safe))
(see link above for PiDroidAlpha Build Manual and PiDroidAlpha User Manual)
8x 10 bit ADC 5V (you could order it with 12 bit ADC instead)
8x Pi I/O with voltage dividers (5V safe) (can be servo, pwm, digital in, digital out)
16x additional (5V) I/O
This gives you a total of 16 analog inputs and 48 digital I/O, with an 8 core 32 bit RISC co-processor (on RoboPi)
- 16x ADC inputs
- 24x FlexIO (each I/O can be servo, pwm, digital in, digital out, ultrasonic distance sensor, 5V safe))
- 8x Pi I/O with voltage dividers (5V safe) (can be servo, pwm, digital in, digital out)
- 16x additional (5V) I/O
More than you asked for
For this configuration:
- do not populate the L293D section on PiDroidAlpha (it uses 2 Pi I/O's and four of the other I/O's)
- Stack PiDroidAlpha on the Pi
- connect RoboPi to PiDroidAlpha with 4 pin hcom cable and 1 wire for logic 5V
This would give you:
- use EN/DIRA/DIRB style motor drivers
- use 8x Pi FlexIO for the PWM signals to the motors
- use 16x Pi FlexIO for quadrature input (you would have to extend the firmware for quadrature input)
- or use the 16x digital I/O on PiDroidAlpha and read the quadrature inputs over SPI (may work, depends on pulses/sec)
- you would have the Pi's I2C port available for additional I2C peripherals
- you could extend the RoboPi firmware to provide additional serial ports
If you need even more I/O, you could add up to 4x PiRtcDio boards, each of which provides 32x 3v3 digital I/O, and one could have its RTC section populated.
All of the above products are in stock, and can be ordered direct from me, from my Tindie store, or Ebay.
It's for an autonomous robot with 1 6DOF arm, all motors PID-controlled, 2 motors for odometry, so quick pin reading is required (all pins in polling cycles of about 100µs).
I am programming in C/C++ (g++, Raspbian Jessie, Geany IDE), no Python.
Is there such a thing available? Perhaps even hooking up several different shields or backpanes?
Yes, see above.
I designed RoboPi specifically for advanced robotics (and DAQ applications), and I make sure my products inter-operate - thus you can have a RoboPi, a PiDroidAlpha and four PiRtcDio's attached to one Pi
I even have my own support forums for my products
I have a C/C++ API for RoboPi
for C/C++ programming of PiDroidAlpha and PiRtcDio you need to use standard pigpio or WiringPi libraries.
I already tried hooking up 1 Arduino Mega or Arduino Due to 1 Raspi, but that'ts a very complicated thing to do for setting up a real-time communication between both boards, both by UART and by i2c, or by SPI - nevertheless, the Arduino part is not so hard to do for me to do as I've got already a little basic experience in programming Arduinos. And actually when finally being interfaced by highspeed, a Due or Mega would fit by it's pins perfectly - or something similar...)