Stackable shields

Right, but with a shared bus, how would a shield know that 0x80, 0x100, was meant for shield 1, not 2 and 3.... this wold require a protocol correct?

Again, my newbness might be showing, but the idea of jumpers(or wires) solves the problem, and does not create any new ones... I'm not sure about I2C. Can you elaborate on I2C?

Basically I2C uses two wires and allows you to connect up to 128 devices to it without any complicated wiring.
The extra cost would be a couple of dollars. Something small like a ATtiny2313 would be suitable for most shields and its dirt cheap.
Plus DIP switch or something to select the address of the shield.

Its a great protocol. The Wire library makes talking to each device really easy as well.
You just say who your sending the data to and it handles the rest.

The real advantage is that you can never run out of pins and that you still get all the special pins (SPI/PWM/Serial/etc).
It would also simplify connecting shields and using them.

Sounds like a great interface. Would it really be that cheap to add I2C to a shield?

I recently saw an I2C LED going for like $12.95 a very nice LED, but say the LED was worth .50c thats $12.45 for the rest(I2Cand a tiny board)

The LED looked something like this
http://search.ebay.com/search/search.dll?query=50-PC-5mm-8Kmcd-Common-Cathode-Super-Flux-RGB-LED&MfcISAPICommand=GetResult&ht=1&ebaytag1=ebayreg&srchdesc=n&maxRecordsReturned=300&maxRecordsPerPage=50&SortProperty=MetaEndSort
I'm sure if quantity they would be cheaper.

Well for LadyAda's motor board for example it would only increase the price by about 3 dollars.
~$1.45 for a ATtiny2313 for the I2C interface and ~$0.75 for a DIP switch to select the address.
Those prices are for single quantities. Cheaper in bulk.

if you look at the schem, most of the motor control pins are for the PWM channels. theres only 3 pins that are used for 'data' - and those are behind a latch - clk, data, enable and latch.
turning into some i2c deal would thus save you a grand total of 2 pins.
unless you wanted to, say, put -everything- onto another microcontroller. in which case you would try to do the PWM on the attiny2313 and have that controlled via i2c. and the attiny2313 only has 2 timers by the way, whereas the atmega168 has 3, so you'd have to do the PWM in software which means tons of fun debugging that and i2c communication at the same time. especially difficult when the user wants 8-bit PWM is at >20khz!

also, where are you getting an attiny2313 for $1.45 in qty 1? and a 8-pos DIP switch for $0.75 in qty 1? :slight_smile:

+$3 in parts cost -> at least +$6 in final cost.

for example:
$0.40 led + $0.80 PCB + $1.80 chip/passives for i2c = $3 raw cost
$3 * 200% wholesale markup = $6
$6 * 200% retail markup = $12 final cost

unless you wanted to, say, put -everything- onto another microcontroller. in which case you would try to do the PWM on the attiny2313 and have that controlled via i2c.

Exactly. :slight_smile:
Makes the library controlling it far simpler and frees up timers.
Was it you who hit a snag with the timers and delay()?

and the attiny2313 only has 2 timers by the way, whereas the atmega168 has 3, so you'd have to do the PWM in software which means tons of fun debugging that and i2c communication at the same time. especially difficult when the user wants 8-bit PWM is at >20khz!

Well the ATtiny2313 was a example. There are enough different chips to fill any need. :wink:

also, where are you getting an attiny2313 for $1.45 in qty 1? and a 8-pos DIP switch for $0.75 in qty 1? :slight_smile:

Futurlec. :slight_smile:
Cheap shipping too.

In quantities of 100 the prices are $1.05 and $0.60 respectively.[/quote]

well, it sounds like a fun & interesting project. let me know when its done & ill check it out! ill look into integrating it into my designs if its robust

Futurlec. :slight_smile:
Cheap shipping too.

In quantities of 100 the prices are $1.05 and $0.60 respectively.

i wont copy and paste a 5-page long email thread i've had regarding orders placed with 'em, suffice to say, the prices are good because you're unlikely to ever get the parts.

i wont copy and paste a 5-page long email thread i've had regarding orders placed with 'em, suffice to say, the prices are good because you're unlikely to ever get the parts.

Heh. I've always gotten my stuff. Sometimes it takes a little while if you order one of their boards (waiting on a 3.3v switching regulator board atm) but the components come fast.

ok, so I wasn't totally off on the I2C thing. It sounds like a great idea, but it definitely introduces added costs(however large or small) and requires some software for the 2313.

Simple jumper wires don't seem to create any additional work other than in the PCB design, and add maybe a nickel to cost for the jumper wires.... kinda seems similar to my idea about jumpers, just easier to implement.

I'm gonna play with some stacky headers this weekend too.... but they are also a bit pricey...

Any other ideas?

for example it would only increase the price by about 3 dollars.
~$1.45 for a ATtiny2313 for the I2C interface and ~$0.75 for a DIP switch to select the address.

It would increase the COST by about $3... (oops. The Lady already pointed this out!)
Isn't implementing an I2C "slave" difficult, though? Or was that SPI? There are a couple protocols where the master has it easy, but the slave has to be able to toggle a signal on a clock edge (or similar), which is tough to do in SW.

I just found a great example of a very simple solution here, Totally user configurable... with just a few wires.
Ethernet shield

I think the simple solutions are often the most elegant, kudos to you, ladyada.

Hmmm... the protoshield with breadboard already had the same concept... maybe we get so advanced on an idea that we forget to get back to the basics...

ok, so I wasn't totally off on the I2C thing. It sounds like a great idea, but it definitely introduces added costs(however large or small) and requires some software for the 2313.

Simple jumper wires don't seem to create any additional work other than in the PCB design, and add maybe a nickel to cost for the jumper wires.... kinda seems similar to my idea about jumpers, just easier to implement.

I'm gonna play with some stacky headers this weekend too.... but they are also a bit pricey...

Any other ideas?

aballen, if you want to have many-to-many combinations, it is just impractical with jumpers. That is why buses were invented. I2C is the way to go. You can hide the complexity of i2c by writing an abstraction library that talks to a master I2C shield, which assigns device numbers to different shields and do the master coordination... every shield, when powered-up and connected to an i2c bus, tries to talk to the master shield... Arduino does the same... actually ladyada already put a price on this shield... $12... it is just a tiny AVR + PCB + software

i wont copy and paste a 5-page long email thread i've had regarding orders placed with 'em, suffice to say, the prices are good because you're unlikely to ever get the parts.

Heh. I've always gotten my stuff. Sometimes it takes a little while if you order one of their boards (waiting on a 3.3v switching regulator board atm) but the components come fast.

Futurlec is reliable, but slow (2-3 weeks)... and the pricing is OK for small to mid size orders... it is not so cheap if you order large quantities.

Isn't implementing an I2C "slave" difficult, though? Or was that SPI? There are a couple protocols where the master has it easy, but the slave has to be able to toggle a signal on a clock edge (or similar), which is tough to do in SW.

I believe that Wire handles it out of the box. Its SPI with the tricky slave stuff.
When creating the object there is a optional slave address parameter although I've never used it.

Hi,
I just received some stacking SIP headers from Adafruit Shield stacking headers for Arduino (R3 Compatible) : ID 85 : $1.95 : Adafruit Industries, Unique & fun DIY electronics and kits

I used them to replace the SIP headers on my "base I/O shield".
I'm now able to stack 3 shields. Pretty soon I'll have a PC :wink:



Works for me!
John

yeah I got to play with some stacky shield today and they are sweet!!.... its like a triple decker cheeseburger.

hogan what did you use to cut your stacky headers a dremel?

Just used a wire cutter and sacrificed one socket by cutting down it's center.
Then clean up the cut ends with the wire cutter, and if I'm ambitious, a belt sander.