Asked — Edited

Expanding Ez-B With Pololu Mini Maestro

I am experimenting with expanding the number of servo ports I have available to the EZ -B with a Pololu Mini Maestro 24 channel USB servo controller. The Mini Maestro is normally used to provide servo control to a PC but it has a TTL serial interface which easily interfaces with a micro controller. So I am playing with the EZ-B's send serial command to get more digital and servo ports. The Mini Maestro even has some scripting capabilities. According to documentation the Mini Maestro script subroutines can be started from the serial port so the EZ-B should be able to kick off the Mini Maestro scripts. I haven't got the subroutines working yet, but I have played with controlling a servo and outputting to a digital port to blink an led from an EZ -Builder script.

Mini Maestro scripts are more complicated to write than EZ builder scripts but appear they could be useful for fixed activities like making antennas move back and forth and blinking LEDs. Perhaps even a fixed response to a switch or button.

The SendSerial command is the key.

24 more ports under ARC control. I will post more info as I get time.


ARC Pro

Upgrade to ARC Pro

Experience the transformation – subscribe to Synthiam ARC Pro and watch your robot evolve into a marvel of innovation and intelligence.

#1  

There are a couple of chips that you can hook up to the EZ-B through the i2c comm and they'll also extend the amount of i/o all you need to do is wire up the address. Then it's just scripting in EZ-B.

This just my 2 bits from the little I know, it is easier then two scripting languages. I think anyway. But still a nice little challenge you have to make it work. Let us know how it goes.

United Kingdom
#2  

Avoid the I2C ones, or at least the Adafruit one. I've not had success with it yet and have already spent far too long attempting to decipher the datasheet for it.

To be honest, it's much easier to use multiple EZ-Bs than use these expansion boards that aren't supported by the native controls, require scripting to use, etc. etc. etc.

If you can program the one via serial and then trigger the programs by serial (or I2C) commands then it does have uses but I'd keep it simple and basic i.e. turning LEDs on and off etc.

Let us know how it goes:)

#3  

Since I am trying to get this robot up and running on wifi multiple EZ-Bs is not feasible at this time; maybe the new version at X-mas if you can indeed daisy chain them as the hints imply. I have the pololu up and running and can move servos and blink LEDs with it as an experiment. The pololu has some features that look interesting I have not tried. It not only has a servo speed setting, but an acceleration setting. The acceleration setting supposedly has the servo move slowly at first the speed up and slow down again as it approaches its final position. Says it mimics a morenatural motion. Sound intriguing. I have not played with servo speed or acceleration yet or scripting. Haven't tried kicking off Maestro scripts either. You can start and stop scripts. Maestro scripting language looks really awkward. Perhaps for simple reptitive things and use ARC for the complicated stuff.

#4  

My EZ-B is connected to my Pololu Mini Maestro on Port D17. The EZ-B D17 Gnd connects to the GND Pin of the Pololu Mini Maestro serial connector Ground Pin and the EZ-B D17 SIG connects to the RX Pin of the Pololu Mini Maestro serial connector Ground Pin. Picture is below.

User-inserted image

#5  

The Pololu Serial Setting to Allow the EZ-B to control the Mini Maestro are:

User-inserted image

#6  

At the current Time my Pololu Channel Settings are as follows:

User-inserted image

#7  

I wrote a simple Script to test servo functionality on ports 0 and 1.

#Port_Num = Port on Pololu Board servo is on #ServoPos = Position for servo to be set to in uSec $Port_Num=0 $ServoPos=500 Goto(SendPololu) Sleep(1000) $ServoPos=2500 Goto(SendPololu) $Port_Num=1 $ServoPos=500 Goto(SendPololu) Sleep(1000) $ServoPos=2500 Goto(SendPololu)

Halt :SendPololu $ServoValue=$ServoPos * 4 $LowByte=$ServoValue & 0x7F $HighByte=($ServoValue >> 7 )& 0x7F SendSerial(D17,9600,0x84,$Port_Num,$LowByte,$HighByte) Return()

#8  

And I wrote a simple script to blink an LED set up on Channel 6 which is configured as a digital output on the pololu mini Maestro.

#Port_Num = Port on Pololu Board LED is on #ON_OFF = state of LED to be set 0=Off 1=ON $Port_Num=6 $ON_OFF=1 Goto(SendPololu) sleep(5000) $ON_OFF=0 Goto(SendPololu) sleep(5000) $ON_OFF=1 Goto(SendPololu) sleep(5000) $ON_OFF=0 Goto(SendPololu) Halt :SendPololu If ($ON_OFF == 0) $LowByte=0x00 $HighByte=0x2D ELSE $LowByte=0x71 $HighByte=0x2E Endif SendSerial(D17,9600,0x84,$Port_Num,$LowByte,$HighByte) Return ()