The recent shortage of Cortex Microcontrollers (now back in stock!) led me to think of an idea for a future generation of microcontroller. Wouldn’t it be great if the Microcontroller was actually a two-part system:
*]The Dock part that bolts to the robot is as inexpensive as possible - it has all the I/O ports and connectors for cables that go to the robot, and a single big dock connector that a Logic Module (the real microcontroller) plugs into.
*]The Logic Module would contain all the electronics. Other than the docking connector, it would have connections for the VEXnet dongle and the programming port. This part would snap securely into the dock, but could be easily removed without tools.
This would allow you to buy more docks than microcontrollers so that you could keep more robots built up without having to go through the tedious process of transplanting all the wires when you need to use the microcontroller elsewhere.
Alternatively, it would be a dead-simple way to quickly switch out programs on a robot by simply removing one logic module and popping in another one (also handy for diagnosing problems with a microcontroller).
It would drive the total cost up a little bit, but the added flexible would be worth in IMHO,
Interesting idea, but rarely do I have more than one robot that I want to run with the exact same code, that doesn’t just use the Default Code. If I just want to use the Default Code, I can just get a used v.5 micro for $50 or so and leave it on the robot.
Having a few extra v.5 microcontrollers around certainly makes this idea less important.
BTW, the idea is not to share code between two robots (I agree that isn’t particularly useful). The idea is to share the expensive microcontroller between robots. I assume you would reprogram it when moving it between bots.
I like to keep demo bots built up for classes, but then I need to raid them for controllers once the class starts building. At any given time, we only have about 4 to 6 bots in action, but we might have as many as 10 to 12 bots built or in progress. Moving controllers betweens bots is presently a hassle.
Here are some brainstorms that make it easier to swap microcontrollers,
similar to your dock idea.
Using a thread of hot-glue to hold all the adjacent plugs together so they can be removed as a block instead of tediously. Works for both motors and sensors. Assign both linearly from 1…N. This same idea could be expanded to be closer to a “dock” idea, by using a 3xN extension header to hold the cables in order, instead of hot glue.
Mount the controller on short hex bars as “fixed nuts”. Now the controller can be attached with just two screws, and you don’t have to worry about holding the nuts in place.
For a “no-tools” approach, do same as above, but use head-less screws (hex couplers) to align the microcontroller, and hold it on the remaining axis by latex/velcro/rubber bands, etc.
For more of a DOCK idea, mount the microcontroller, rcvr, and battery on some structural metal, and move that whole thing as one piece. Now there are two less plugs to change.
For even more sharing, develop a common subframe that includes drive and/or arm motors with rotation and position sensors.
Plop it on to each new robot and loop chains to the fixed motor sprockets and you are ready to go.
This common subframe can then quickly be swapped between competition rounds in case of motor burnout, etc.
This idea is suitable for many common C-frame with arm tower basic chassis types.
For less painful “swap programs”, keep the program for that microcontroller stored on a USB-flash-drive, and velcro it to the microcontroller, so it is always available, even if you have multiple programmers touching it up from day to day.
You can also put multiple programs on one microcontroller and switch between them with jumpers, or select between many with a potentiometer. That way you can share one controller alternating between two robots, WITHOUT reprograming while moving.
These are good ideas, and we already employ many of them for the v.5 microcontroller.
We use a standard control “unit” with the Microcontroller, RX module, antenna, some LEDs and a buzzer pre-assembeled. Rather than bother with mounting screws at all, we just use four strong magnets for easy removal and placement of the whole unit.
The Cortex doesn’t need an RX module or antenna, so that simplifies the problem down to just the cables. I’m not crazy about the idea of using hot-melt glue on the connectors, except perhaps one 'bot that I’ve kept together for a few years now. We just use a P-touch labeler to mark each connector. Of course with the advent of 2-wire motor ports, you also have to remember polarity, not just position.
I’m also a big fan of velcro-ing cheap thumb drives to anything that has software associated with it. We use them to keep source code, drivers, manuals, notes, etc for whatever they are attached to.