More motor, sensor, servo ports

Does anyone have any ideas on how to make an expansion to the motor, servo, and sensor ports?

The motor, sensor and servo expansion plans for my Hero 2007 Robot include using multiple processors including a dsPIC30F6014 Sensor Controller and a Zigbee wireless UART inside the robot’s head (rotating or panning sensor platform) for an innovative telepathic communications system, transmitting telemetry collected from the various sensors (IR Rangers, PING Sonar Rangers, Polaroid 6500 Sonar Ranger, CDs Cells, Phototransistors, etc. to the robot’s body MCU and also transmitting sensor data to a nearby laptop used for data collection and maybe even for autonomous control. I designed the electronics and robot head in this manner for maximum sensor coverage used for obstacle avoidance as the Hero 2007 dances around my living room. No heavy power or signal cables are required since the electronics are all powered with one or two 9 Volt rechargeable batteries or maybe the Vex 9 volt rechargeable battery.

In addition to the Vex Controller that currently controls the 4WD drive, which gives it its amazing mobility. A Parallax Servo Controller capable of driving 16 Vex motors and servos is used to drive the robot’s rotating or panning sensor platform, along with driving the 4 Vex main drive motors during autonomous operation.

You can see for yourself the progress I have made so far, if you check out photos of my Hero 2007 Robot using the following link:

https://vexforum.com/gallery/browseimages.php?c=8&userid

thanks. that’s a good idea. :smiley:

8 more servo or motor ports from mindsensors.com

I can’t find it on mindsensors. Can you give me a link or something. It would be greatly appreciated :smiley:

lol i think he meant where on the site can he find what you are talking about.

here it is: http://www.mindsensors.com/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=42

lol :smiley: Thanks pacoliketaco It’s pretty sweet!

you cant use the 8 servo port module yet until they release the adapter. the I2c: www.mindsensors.com/index.php?module=pagemaster&PAGE_user_op=view_page&PAGE_id=55&MMN_position=23:23 I think it will hook up to the serial port or one of the reciver ports. rx1 or rx2

I have thought of doing the same thing - expanding motor and sensor ports. However, I am not anxious to buy 3rd party stuff (parallax or mindsensors) due to the excessive, extra wiring efforts as well as trying to make an I2C bus work (mindsensors). I just don’t have the time.

On the other hand, utilizing Radio Shack’s 1/2 sale, I now have another controller. Getting two controllers to talk to each other (Using MPLAB) now can be as easy or difficult as I want it.

For real slow speed communications (one bit per user routine - 17.5ms) I can simply configure two “master” controller IOs for digital out/in and the “slave” controller for IO digital in/out. Then simply send bits back and forth. Each controller would have its own program. For somewhat faster inter-communications, I would dig a little deeper into making the serial ports talk to each other. If I didn’t want to dig that deep, I could probably make use of the interrupt ports (which would also work for more than two VEX controllers.) I presume this would also be one of the fastest means of inter-communications.

I have seriously considered using multiple VEX controllers. One to run all my ultrasonic range finders and other sensors, another to deal with limit switches and some servos (for arms and actuators), and finally the master to orchestrate the whole thing based on sensor data and arm feedback. The advantage to this is that each “slave” controller is quite powerful and can “pre-digest” the low level sensor data into more meaninful data for the “master” controller. Since all controllers use the same MPLAB C compiler, I don’t have to spend weeks and weeks trying to figure out how to make 3rd party stuff “talk” with the VEX controller (and also ending up with battery, protoboard, and wiring rats nests).

wow, thats advanced stuff! good reply!!! im guessing you have had a lot of work with MPLAB,

I am quite familiar with MPLAB in the assembly language area. I have been designing with PIC processors in assembly since revision 1 of the PICSTARTplus programmer back in '94.

But familiarity with MPLAB is NOT necessary to do sophisticated stuff with the VEX controller. Deep level knowledge is not needed to get multiple controllers to talk with each other. Here is an example:

Let’s say you had two VEX controllers, one ultrasonic sensor, an extra position servo, gears & hardware, and a square bot chassis. You want to make a autonomous bot that moves forward and steers itself out of the way of obstacles using the ultrasonic sensor (and two VEX controllers).

First, make a hardware mechanism using the servo, gears, and hardware to “turn” the ultrasonic sensor to a position based upon the pwm value sent to the servo. Next, program the slave VEX controller to “sweep” the ultrasonic sensor and determine the 90 degree left, 45 degree left, straight ahead, 45 degree right, and 90 degree right distances. The slave controller then matches these distances against pre-determined values you esablish in the slave program. The binary results of the distances at various sensor angles could then be applied to IO #s 1-5 for 90 deg. left through 90 degree right (for example). Send a 0 to the IO port if distance is less than the pre-determined value - 1 otherwise.

Now the master processor is the one that drives the square bot motors. It has IO #s 1-5 set up as inputs. IO1 from slave connects to IO1 in the master and so on through #5. Now the master processor merely looks at the state of the IO #s 1-5 to determine which way to steer the bot to avoid obstacles. (And the master processor is not bogged down with ultrasonic sensor management.)

Presto! You have communications between two VEX controllers. And the glory of it is that you developed the protocol and it makes sense. That is much, much easier to do than trying to interpret a 50 page document on the I2C protocol or - heaven forbid - something more complicated like USB ports or Ethernet. That stuff is written by geeks for other geeks and is a perscription for aspirin.

Sending serial data is also simple but would require a little more effort and maybe the use of FOR loops. A little more complicated, but uses less ports. Best of all, it is a protocol YOU design and undersand.

This is why I love the VEX design system. It removes a lot of the geek drudgery - releasing more your imagination. Or in other words, you spend less of your finite hobby time digging through technical documents and more time having fun creating.

It’d be nice if someone would write a communications stack for the serial ports. Something that would take care of error checking like tcp/ip does. I though I read something about a java … something for vex doing it :confused:

I recently purchased the Pololu Serial Servo Controller that can handle 8 Vex servos or motors for just $26. They also sell a 16-servo controller for around $49 that can be daisy chained with other Pololu controllers. I also purchased a Parallax Servo Controller (PSC) capable of driving 16 Vex motors and servos is used to drive the robot’s rotating or panning sensor platform, along with driving the 4 Vex main drive motors during autonomous operation. The extra servo channels will be utilized for a tilt/pan/zoom wireless video and the 6DOF robot arm.

This controller allows me to use the laptop to control my Hero 2007 robot in autonomous mode. The serial protocol is a simple 5-byte command that sets the servo position or motor speed and even provides the ability to ramp the servos. I plan to use Visual Basic and Visual C++ to write advanced robot navigation and control algorithms, and issue the appropriate 5-byte servo commands to the Pololu Servo Controller.

In order to read sensors used for feedback to the control software (PID Control) and for telemetry and data collection, I plan to use my new Biostamp III Sensor Controller Board which is based on a Microchip dsPIC306014. It has 16 12-Bit ADC Channels which are used to read all kinds of sensors including temperature, humidity, phototransistors, thermistors, voltages, and could also include up to 16 Sharp IR Ranger Sensors. In addition, I plan to use the digital I/O and CN inputs (Change on Notice) to scan the bumper switches, limit switches and micro-switches. The two on-chip UARTs are used to communicate with two serial ports (COM3 and COM4) on the laptop. I am in the process of writing the firmware in Microchip C30 C using MAPLAB and the ICD2 debugger.