There have been a lot of threads lately about the smallest Arduino so I though I'd knock up a simple design to see how small I could get.
Now bear in mind this is not a serious design (that's why I've posted in Bar Sport) but it should work and to keep it slightly real I decided the design should be programmable (using an FTDI cable) and perform at least one useful function, and that is talk to a serial line and flash a LED.
Here are two pics of the board
Doesn't look that small eh? How about a life size pic of the layout
It's .45" or 11.4mm square, and breadboard friendly to boot
As you can see the limiting factor is the 328 chip itself...oooo hang on, they do it in an MLF package.
Of course it does, it can flash a LED at different rates according to an as-yet undefined serial protocol
Rob
Kinda overkill for a 328, but if you could get an RGB LED on there - and if you could set it up to allow for a serial bus - you could string multiples of these together, stuff them into ping pong balls, and build a large 3D LED cube (ie, a cube-o-tron - which is how the original one, and possibly the others, were done).
ATtiny85 / ATtiny13 (I think they are pin compatible)
ISP programming
No crystal
Bypass capacitor
Reset pullup
Basically, designed to be used "pig tail" style
Collecting some of the above ideas...change to a tiny85 so it's even smaller, then how about a tri-colour LED and a presence sensor (IR?), configured to plug together in an XY matrix.
As you wave your hand around the display the LEDs follow, maybe nodes that are just seeing the hand for the first time are red with a fast fade-in time, they turn to yellow or green while the hand is being detected then as the hand passes the LEDs change colour to blue and fade slowly.
Each board has 4 bidirectional analogue links, one to each neighbor. Through this link a node knows the strength of the presence measured by the boards around it and in return it can tell the others the strength of the reading from it's own sensor.
Then you start experimenting with difference "swarm" algorithms. For example the node at the epicenter of a touch starts a ripple that propagates out through the entire array.
As LEDs need to be powered and this needs a fair amount of current maybe large arrays have to receive power through a source at the rear of the array or something like that.
Each board has 4 bidirectional analogue links, one to each neighbor. Through this link a node knows the strength of the presence measured by the boards around it and in return it can tell the others the strength of the reading from it's own sensor.
Then you start experimenting with difference "swarm" algorithms. For example the node at the epicenter of a touch starts a ripple that propagates out through the entire array.
As LEDs need to be powered and this needs a fair amount of current maybe large arrays have to receive power through a source at the rear of the array or something like that.
Rob
With something like that, if you added the ability for top/bottom connectors (so you could have layers of grids) - you could make each one be an "artificial neuron" with six "synapses"...
What would you envision for the communication method? I'm thinking you need bidirectional comm's with each neighbor.
You have one asynchronous serial port. You have one each synchronous I2C and SPI.
Is newsoftserial up to the task of 5 software ports?
I designed in a dual SPI to serial chip, same 28 TSOP as the FT232RL, needs a crystal, on skyjumpers board. He found it, is a nice part. (Maxim also makes a quad SPI/UART chip.)
If we used a '324/644 (smaller memory than 1284, 40pin dip or 44 pin TQFP vs 64 pin TQFP 1281/2561 & 100 pin TQFP for 128/2560) and two of those chips, board area would be a little bigger but price still less than a 1280/2560, that could be a way to 6 asynch ports.
For what Graynomand described, something 1-Wire-ish will work. Shared line pulled high. Width of the pulse is the "strength". If both nodes try to send simultaneously, widest pulse wins. The receive code can be interrupt driven (pin change).
cr0sh:
With something like that, if you added the ability for top/bottom connectors (so you could have layers of grids) - you could make each one be an "artificial neuron" with six "synapses"...