What are your thoughts on an arduino shield?

My idea is to have an arduino uno or mega as a shield so that all the I/O pins from the bottom board are accessable as well as all the pins from the top board while still keeping the arduino footprint. I'm thinking I'll use the I2C bus for the arduinos to communicate with each other. Either as master/slaves or in multi-master/slave mode. I'd leave that up to the user. There's bound to be different opinions on how to implement this idea and I'd like to here them. So, take the poll and reply with your thoughts on it. If there are enough poeple interested in this I will pursue the idea further. So vote and let me know.

Thanks, DigitalJohnson

May be useful but twice as difficult to use as the single arduino since you need to upload sketch to both arduinos, unless one of them has a firmware that you don't change much (then what's the point of accessing all its pins? Maybe some point in it.). I have this problem when I was developing the firmware for my serial LCD keypad panel. I had to upload codes to both of them and then connect them together and let them talk to each other. What potential use I can see is one is doing some peripheral access, such as controlling LCD and keypad/keyboard, SD card, touch screen, etc. and the main arduino does the main thing, sensing sensors and moving actuators.

Debugging and programming multi-processor designs is a pain but doable.

I'm thinking I'll use the I2C bus for the arduinos to communicate with each other.

Maybe offer SPI as an option as well. Much faster.

I like the idea but have no personal need for it.

I've designed similar things in the past, for most people I think the concept of multi-processor computing is a little esoteric and complex and the protocol would be too much for many.

What if you made it really simple to interface between processors with some common memory or a background task that syncs identical data structures in each processor. There was a library mentioned here a few days ago that did this over serial, that looked quite neat and a no-brainer for the user (although there will always be race problems with common memory of any kind I guess).


Rob

I think the concept of multi-processor computing is a little esoteric and complex and the protocol would be too much for many.

I agree. This would not be for most arduino users. In fact, I would probably need help with the communication protocol myself as I am not an avid programmer. This would be for those with large projects where multiple arduinos would be a good solution. I myself am working on a large complex project. I'm using a mega and haven't run out of pins but with the complexity of the whole thing I often think multiple arduinos would ease some of that complexity. This could just be from my inexperience though.

Maybe offer SPI as an option as well. Much faster.

I have already thought about leaving it up to the user to select between serial, I2C, or SPI via jumpers. I always think choices are good. However,

What if you made it really simple to interface between processors

I agree. I strongly believe in designing anything using the KISS principal (Keep It Simple Stupid). And it would be much simpler to write a communication protocol for one bus type than many, but that takes away choices. I like the common memory idea and the mega does have external memory capabilities. I can see this(arduino as a shield) in itself is quite complex. Maybe a project for another time. Thanks for the input. DJ

I would say probably a real interesting idea would be a mega shield, something you could make with a firmware so it is simple to use, would be just like an extra 70 pins for those people who don't want to multiplex or want 16 more analog pins and a bunch more pwm, could be a simple control via any of those protocols which would be cool if it was autodetected which one was being used instead of jumpers then you can make it real simple for people to expand, it wont really be that useful for more processing power but for more pin control it'd be perfect, and probably the only way to keep it simple, it would be really cool if it utilized the larger memory and added more complex commands like pins set aside as optional lcd, sd, etc that could be enabled with just a simple command from the master

Use firmata on both arduinos would be one way for communication protocols but I failed to find firmata source code to do it on my system.