Let's Make Robots!

iNFiNiTY Cube

 

I had an idea and I wanted to know if its feasible

I want to make a cube of µprocessors. Here, each of the µ will do some special function and in will be controlled by the master processor. My choice of micro processors is Atmega 8.

The idea behind this is to divide the job a micro processor does and give ur to different micro processors.

The architecture of the processors is going to be like this- there are 6 processors, one on each face if the cube. One of them is the master (lets call it master) and the remaining 5 are slaves (slave1,2,..) The master is connected to the slave using I2C or SPI busses. The master has it's inbuilt EEPROM which stores the main program it has to execute. The slaves have programs related to master's command with each command being a different function. The master, calls the function and the slave responds accordingly. The slaves can only perform one sort of task. Suppose, I choose one slave to perform only the servo moment. Then this slave can only perform the task of handling servos but do it more than efficiently.

How I plan to do it software wise is to write libraries for the slaves and define every possible output that can occur in it. The possible outcome will be stored in a function with a unique name. The master's programming will then just have the function calls to do the desired task. This way, even the small flash of a micro processor can handle large tasks.

Where I want help is- I need reviews and analysis of my ideas and if what I suggest is feasible. Also, any link on related topic is most welcomed. Please comment your views and opinions definitely!

PS-The reason why I call this iNFiNiTY is that maybe in the future, I'd like to make my own micro processors under that name. Just hope that I'm not violating copyrights...

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Nice project. Kind of like what I built for my MiniEric robot a few years back. I designed a universal board that can be customized for any purpose by adding parts on a small prototyping area of the board. Each board creates a module and the modules are stackable either staggered or straight on top of each other. For MiniEric I used 4 modules, one to control the motors, one to control the servos, one for the speech recognition/synthesis and one as the master brain/map display. The modules communicate through a I2C bus that also transmits 5V power and ground, on a multi-master network type (actually all modules are initialized in slave mode and become a master if they need to send commands to other modules). Every module has to be programmed separatelly and they do their own work until there is an incoming command that asks them to do specific tasks. Here is a picture of the modules:

Mini Eric is, to some extent, what I had in my mind when I thought up of this solution. Thanks for sharing it!!

Srry, accidental. 

Wow, nice idea. I had actually thought of something similar a year ago. But i dropped the idea. Here a pic : Good luck with it!

Now I have a double comment. Sorry....

lmr v4 should have a delete button for comments...

Well, I remember seeing your plans before and I don't know if my somewhere my super-consicience made me think of the solution I have presented because of your idea but what I plan is definitely similar.

I believe you would be wasting the power of the slaves with what you have suggested. I believe you have a couple choices; use smaller microcontrollers, or, something your idea makes me think of is a Parallax Propeller.

This is merely a suggestion. Look at the Parallax Propeller. It has 8 cogs(cores). Cog 0 controls the show. While you have multiple cogs, you don't have to use any or all of them. A single microcontroller with 32 digital pins would cost less and take up less space. The Propeller2 is due out in the future and will have twice as many pins with all of them capable of digital and analog.

Each slave will also have pins for I/O. Lets take the servo slave as an example. I have 16-18 pins free. I'll use all of them to connect servos. Also, one slave can be used for many types of uses like: say we have a humanoid. I let one slave control one leg, one the other leg, one the torso and one each for the arms. Then I use my master to control each of these slaves which in turn controls each of the functions. Master also controls the head. Since, even with master, I have 16 pins free, I can add 16 sensors and servos and other objects. Now, join the whole project and you'll see how simple a solution it is for a complex project...