Dual Core 168 Arduino

That is awesome!

Now all we need is a couple of water colling systems and overclock the chips. :slight_smile:

Seriously though, a great idea.

They've been running non stop for the past 4 days to see if anything "flaky" happens, the chips are cold to touch and both are in perfect synchronization.

I'm interested to know - why would a water cooling system be needed?

This hasn't been done before, so all input is welcome :wink:

I think they were making a hilarious joke regarding PC overclocking culture inspired by the "Dual Core" name of this thread. Although, arguably it's more of a dual-socket device then dual-core.

Still a very cool project. I'm curious what more advanced applications clock sharing could be used for?

Ah yes, we use mainly mac's here but now have vague recollections now of the old 150's being cranked up to 166? - that would have been over a decade ago?

And yip, it's a dual 168 / dual chip / dual IC / dual socket, but we're going to call it our "Dual Core 168" because it sounds cooler.

Applications, ummmm - dunno really, we're only using it for [ serial --> master --> slave <---> serial ] so in that regard, it's an inexpensive plug-in solution for adding a second serial buffer, which means we're not having to wrestle with software serial anymore, nor do we need to use a wiring board which solves the same problem, but is bulky and costs a lot. We've had one of those here gathering dust for over 3 months, but we like this idea better because it uses a lot less real estate.

The no-frills design is an elaboration of this:-

http://art364.pbwiki.com/Standalone+Arduino

And Paul Badgers RBBB design.

The pcb, with enough room at the top for a water cooler :o

how would you control each individual atmega's with one usb connector?
and wouldent it be better to make digital pins range from 0-26 instead of 2 sets of 13 pins? that way coding would be esier, same goes for analog inputs...

SW1 and SW2 provide IC selection, so the chips can be programmed individually without rewiring the USB pins.

When they're not being reprogrammed, the dips are turned off - or, one can stay connected to the USB by moving it's dips to the on position.

The board has an inline i2c connection between both IC's, that's how they communicate. There's three sets of i2c pins on the bottom right hand side of the board, just in case we want to add extra devices.

It's still "two" 168's, but on one board sharing a few components, so the pin numbering is the same as a single, but one lot on each side.

We're using it for [ serial --> master --> slave <---> serial ] anything beyond that is a bonus, because what we're using it for, doesn't need anymore than 6 digital I/O's - we kept the rest, just in case we find something else useful to do with it :wink:

a Siamese Arduino :smiley: great concept :slight_smile: it may have many uses :slight_smile:

"Siamese" sums it up quite nicely, Siameseduino is a bit of a mouthful though ;D

I'd say the boys here will be knocking out a 128 Arduino in the not too distant future, so this design will be irrelevant as far as we're concerned if it's not too expensive. But if it inspires creativity in the meantime, then that's not a bad thing.

While an Arduino128 or the SiameseDuino is an excellent option for new purchases, I think an IO expanding shield with a second I2C slaved Atmega128 on it and a second set of IO pins might be a good option for existing Arduino owners.

Yip, we probably could have done it as a "slave 168" shield. But didn't, because this design in total uses less components than say, an NG - and can be as small as two RBBB's end to end.

A shield also wouldn't allow certain components to be shared, like the resonator - although, two 168's as a shield would.

But I'm not sure how you'd program the chips if it was a shield, I think you'd still need the mini-USB adapter - if anyone thinks up a way that this can be a shield in the next 24 hours, then let me know, we've got a hundred pcb's on order that won't go into production for another day or so.

Very nice and very useful idea.

Will you be selling the PCB's?

Thanks sidgug.

Yes, once we've tested the PCB's we'll put some out for anyone else who wants to buy them :slight_smile:

A shield also wouldn't allow certain components to be shared, like the resonator - although, two 168's as a shield would.

As an IO shield, I don't know that you'd need a resonator, the AtMega should be OK at 1/2 speed on it's internal RC clock; otherwise, they're a matter of a dime or so.

But I'm not sure how you'd program the chips if it was a shield, I think you'd still need the mini-USB adapter - if anyone thinks up a way that this can be a shield in the next 24 hours, then let me know, we've got a hundred pcb's on order that won't go into production for another day or so.

If you did it right, the shield would only need to be programmed once, with generic I2C code, and never again. This could either be done by programming the micro in another board (a ZIFDuino?) and transferring it to the shield, adding an ICSP header and using a programmer, or adding a TTL-serial header and using something like the Arduino Mini USB Adapter or the FT232 cable.

I have a fair portion of the slave I2C code written, I'll see if I can write the master library and design a shield proof-of-concept in the morning.

Cool, but you know there's already an i2c library available... the "wire" library.

If you've got Arduino10, take a look at:-

Sketchbook -> Examples - > Library-Wire

We'd probably like to keep both IC's "independently programmable" using the DIP selectors SW1 & SW2 which connects either of the IC's to the single FTDI TTL-232 header.

We've also added a master power on/off pcb switch to capitalize on Adaboot's ability to run programs immediately from power up.

So we'll run the boards as is, because it matches our requirements. But it would be good to see variations of it for different applications.

...but you know there's already an i2c library available... the "wire" library...

The wire library is an excellent base implementing the I2C link, but the client needs more code to interpret what's being sent/received on the I2C link. Application layer code, if this were OSI speak.

I look forward to seeing your completed boards when they're done and when they're available for sale.

SiaDuino isn't a mouthful :3 would that be a good name?

and i wouldnt mind one :smiley:

i am currently programming my boarduino from my semi borked freeduino (it no longer runs with any chip in, but the power, reset, and rx tx works fine, so i wire them into the boardiuno and upload sketches fine :slight_smile: )

spiffed:

That's "over my head" I'm afraid, but it sounds something like a full duplex software work-around?

The_Bongmaster:

We settled on dCoreduino168, we might see if four IC's can run off the same resonator one day, just for the sake of seeing if it's doo'able, so the d might change to q :slight_smile:

That is awesome!

Now all we need is a couple of water colling systems and overclock the chips. :slight_smile:

Seriously though, a great idea.

They've been running non stop for the past 4 days to see if anything "flaky" happens, the chips are cold to touch and both are in perfect synchronization.

I'm interested to know - why would a water cooling system be needed?

This hasn't been done before, so all input is welcome :wink:

Water cooling is for when you overclock it to 200mHz :slight_smile:

Glad to see some good feedback and ideas in this thread. And that PCB looks awesome!

make the pcb for shizzle, and i'll probably buy it for more complex things, it looks like a very good intermediate arduino board for more advanced applications, the trick now is to make it as small as possible!

if you really build this, i'm sure it will be as popular as the original arduino with only costing a bit more...
and the website will probably support you too!
please tell me how much this could possibly cost at the most if it was made as much as the original, becuase even if it's like 40 bucks, then it's still worth it because some people need more pwm and such...

We could have used those "tiny" components and tighter grouping, but for this application we didn't have any size objectives and opened it up so it's easy to assemble.

We're also using 1.8k resistors for the i2c bus, because that works for our application. I have read of others using 10k, so you can use bench components to experiment with different values.

The optimal design would be two RBBB's top-to-tail, minus one resonator, a 5v regulator, and taking out the three i2c bus headers. We have an application in mind for a slim form design like that as well, so once we've tested the first board we'll put one into production.

We've also designed a companion input/output multiplex board using two 74HC595's and two CD4021's which adds another 16 ins/outs. The 595's have a 5 pin in/out header so boards can be daisy chained. We picked those chips because there's very good tutorials on how to use them, and we happened to have a use for more digital outs so that board goes into production next week.

That board can be used with any of the arduino's, and once they've been tested we'll put some out if others want to buy them.

The original breadboard version has been running non-stop since I first posted, the chips and resonator are still cold to touch, and nothing "flaky" has happened.

Once we've taken delivery I'll need to decide if we're going to sell them direct, or use a distributor. We haven't ventured into burning our own chips yet, so it might be better if someone who's already doing that can add the boards to their product range.

The cost will definitely be under 40 bucks, and the exact price I'll be able to confirm once the method of selling has been determined :slight_smile: