Illuminato X Machina: modular OSHW, ARM+Arduino

I had posted about the Illuminato that Chris and I built a while back over here: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1231771842/0 so here's the upgraded new version :slight_smile: The Illuminato was my little version of the Arduino board that I built to teach myself more about circuit layout.

The Illuminato X Machina project is a lot like the original Illuminato, except it's shaped like a square and has reversible connectors all around the edges, because the goal is to make a "robust computational platform" and a modular motherboard (these were all concepts I learned about a few months back when I was teaching myself more and more about electrical engineering theory as part of my self-teaching program, though with a LOT of help from Dave Ackley), and it runs an ARM chip, 512K flash memory, 72MHz (for now), 32K of ram.

The goal of the project was to make a platform for open source hardware and DIY experimentation into massively parallel computer architectures, since the world seems to be gravitating away from monolithic linear single chips to multicore, multiprocessor, but there isn't really a way for normal people (or hackers) to experiment with this stuff without buying $20k computing clusters or workstations from Intel. So it sounded ideal for an open source hardware platform, and like a cool hard problem... it's a lot more theoretical than anything I've ever done, but I've been learning a LOT along the way...

Here are a couple pictures of boards connected to each other, scaling up the parallel architecture:

And each board has a crazy bootloader that Dave wrote which allows each board to completely reprogram neighboring boards like a set of dominoes:

(sorry i don't know how to embed videos?)

Each board also has the option of having LED's on the edges (as in the actual edges of the PCB, not the top or the bottom, but like in the pcb wafer itself), which makes the boards look neat in the dark, because they're each communicating with each other, and they look like ufos:

I don't know, but I think this might be the first time anyone's ported the Arduino IDE to the ARM (I know the Cortino board has an arm on it, but you needed a special compiler so you couldn't use the Arduino language). It was NOT easy to do, but now it's done, and Chris and Omar and I have the code to prove it (we forked the Arduino codebase over the last 6 months to hack it together, so any sketch now compiles natively for ARM (Dave ported all the arduino language functions too, which was crazy)... I'm still zipping all the files up into a standalone file, but yeah it's all open source of course and it would be really cool if it got incorporated into the main branch of the Arduino IDE...

Anyway, here are some more pictures of the project, and here's a blog post about it :slight_smile:

wow that was a lot of typing...

Why isn't there an emoticon with a jaw dropping?

Makes me think of the Transputer. Transputer - Wikipedia

@florinc - I hope that's a good thing, maybe?

@arduino ad astra - I've been collecting links and references to alternate architectures, and I'm definitely adding this to my list... I've been secretly buying up all of the manuals and spec books that pop up on ebay and amazon for the old cray massively parallel supercomputers... because i want to make one myself out of arduino parts

Good thing, of course.
It will take some time for the rest of us to catch up with you (with this radical approach and the steep learning curve). I hope that, years from now, they don't remember you just as "ahead of their times".
Beautiful stuff, at least visually.

crossing my fingers too, but at least for now it's pretty fun to play with. the learning curve is the first thing dave, chris, mike, and i are going to bring down. right now, the board is code compatible with the arduino's. you can compile the blinky sketch, for example, and it ports directly to the IXM.

To make the Arduino IDE support ARM processors, a few things needed to happen.

Compiler Guts... Gone.
Makefiles... Wait, are those from the 70s?

AVR support... Yup.
Mac/Linux/Vista... You bet.

The build tool swapped into the Antipasto Arduino is named ANT, and it was created by those hard working guys over at Apache. Originally designed as a Java build tool, it packs a ton of features and allows C++ software frameworks to grow in complexity quite nicely.

Here is the Illuminato X Machina Compiling:

Same thing as above, but with Build.verbose=true in the preferences.txt file:

um... do you ever sleep?

Too much late night coffee, I guess!

Wow, very very cool.

that all looks really cool :0)

This is v.well timed... I'm starting to think I might need an ARM to do some video storage for a project... this has possibly made my life easier (and nights longer no doubt :wink: )

Regardless - I must say I am always impressed with the level of 'finish' on the Liquidware products... at least in the pictures ;D

the learning curve is the first thing dave, chris, mike, and i are going to bring down. right now, the board is code compatible with the arduino's. you can compile the blinky sketch, for example, and it ports directly to the IXM.

Just trying to understand here - that the core functions are there means it's already quite flexible but how far does this extend? Do you mean all the libraries bundled in the core Arduino IDE are ported? If so, wow.

I realise you've only just announced this but what of the various contributed libraries. Are they likely to work without modification (or minor) if they're solely based off core functionality (which I guess they must be - never really thought about it before). Either way, I'm certainly tempted to spring for a 2x2 (would prefer 9 but I think my wife would notice that chunk of change missing!)

Why not add connectors top and bottom so you can go 3D? :wink:

you could use L-Shaped Headers?

This is amazing! A few questions: what kind of application can be made to take advantage of a cluster of such devices? How would one connect sensors and actuators to it? Can each one run it's own sketch and share it's data on the network? And so on...

Why not add connectors top and bottom so you can go 3D?

Yeah, I can already see a Borg cube being born... Right now the collective is just 2D, but hey, anything is possible...

Wow, the boards look really smart and well engineered!

But, honestly, what would one actually want to do with those?
Maybe heavy number crunching, but that doesn't really sound like something the typical arduino or DIY user would need... By them it could be seen as a very expensive LED Matrix Display... :wink:
I really don't like asking this kind of killer argument questions, but in this case I just have to.

Btw, the transputer came to life again at www.xmos.com. They are about to release a board with a grid of 4x4 chips on it. With 4 cores in each chip, that makes a total of 64 cores multiprocessor power.
And they have a C-based language, which has distributed thread control and communication right build into it.

@Nachtwind - thanks :slight_smile:

@Adr1an - well, nothing ever sees the light of blogday unless it works, that's my one personal rule for my projects. actually the name liquidware came from the fact that i kept getting annoyed when real electronics and hardware companies release "demos" and "prototypes" that either don't work, or are total vaporware. its like you get your hopes up reading engadget and wired, you bookmark everything, and then no one ever does anything with it - sad. cheesy, i know, but i think you're the first person who ever made me mention what "liquidware" meant to me... hmmm

@devlinse - ok, so not all of the libraries, but the core language, so things like digitalwrite, digitalread, etc. from the main spec are ported. the main reference language. that's because i've spent way too much of my life writing functions in arduino sketch code to not have it portable - ha. for other libraries, it depends - the ones that are algorithmic port over easily, because there's a c compiler underneath for the arm. for the ones that reference special features of the atmega on the arduino like the number of IO's, or assuming the analog port locations, that's when code doesn't run immediately, or needs to be "ported" by just redirecting the pins... chris and i are workin' on that... have any specific library in mind?

@per Arduino ad astra - hmmm... welll... i have a few 90 degree connectors on my desk right now, and have put 6 of the IXM boards into the shape of a cube, so it definitely goes 3d so to speak (exactly what Nachtwind said)

@Ro-Bot-X thanks! i'm gonna write up a post with chris about the connector interface. dave put a LOT of thought into that. each board only needs half of hte connector to communicate. each connector pair is flip/flop direction ambivalent, so it autosenses and autocorrect for orientation. that also means though that if you only connect half of the edges together, the other unconnected row becomes a row of IO. ugh that description stunk... blog time

@Oliver Keller - yeah i've been learning a lot about all the different types of similar arm like or parallel embedded processors out there. this isn't mean to compete with those, no way... those are for professional engineers who are making consumer devices and pro stuff. the illuminato x machina is all about education, teaching, and making modular parallelism as easy and accessible as physical computing arduino made learning electrical engineering. that's why this is all about arduino stuff - arduino is about open source learning... the illuminato x machina just takes that into a bit more of a "theoretical" direction for cs guys and cs grad students who were starting to push the envelope of arduino. on the other hand, i have tons of project ideas, so i'll be writing them up on the blog... like simple folding, ai life, diy cellular organisms :slight_smile:

anyway, you motivated me to write up a much longer article about this, which i just posted on my blog... (this is totally not about blog spam so i'm not including the link, but its liquidware antipasto if you're interested?)

So would your Arduino port work for something like the STM32 Stamp sold by Futurlec (ET-STM32 Stamp Module), which looks like a great deal?

I am new to this so excuse my ignorance I am missing something critical.

@per Arduino ad astra - hmm, afraid not, not yet at least - that board is based on the stmicro arm chip ... i just googled and found this discussion about the stm arm, which doesn't look promising: http://www.st.com/mcu/forums-cat-5951-23.html&start=0... looks like a lot more work to port that chip to arduino. the illuminato x machina is based on the NXP arm chip... at least for now :wink: