0
\$\begingroup\$

In an effort to make a wearable piece of electronics, I would like to be able to control a large number of buzzers, sewn together on a string, from a single output pin on my Arduino.

The idea already exists: Several companies offer ready-made LED chains which can be controlled through a single pin (see for instance here). These purpose-made LEDs have 4 pins: Two for electricity and two for receiving and transmitting a signal. If I understood it correctly (and please correct me if I am wrong), this is simply a serial shift register: Bits are pushed through the system until all are in place, then only requiring a latch signal to activate them.

However, in my case, the buzzers I intend to use have only the electricity wires and have no way to be chained together, yet controlled separately. So this got me thinking: Can I, through simple means/tools, construct my own chain which I can address through a single pin on the Arduino? If so, what would I need to do & buy to accomplish it? In essence, what I am trying to achieve is maybe captured in this picture.

I am aware that this could be solved with shift registers and/or I/O expansions, but this causes problems for me because I would need one wire per buzzer, and so with a large number of buzzers, I would be forced to purchase a big number of shift registers and sew a large amount of conductive thread to serve as wire.

I have seen similar questions to this one (see here, here and here), but the answers there always tended to go for solutions which would allow me to create 8 wires out of a single one (so using shift registers, 1-wire 8-channel switches, etc.), which is exactly what I am trying to avoid, if at all possible.

Edit: Clarification - What I mean by more wires is this: If I can link and control all the buzzers (which will probably be upwards of 30), through a single chain, that means that I have 3 distinct wires, as in the example website for the LED design I gave above: two power lines and one to send controls over.

On the other hand, if I placed multiple shift registers (I'd probably need at least four chained shift registers?), I'd need one wire from the SRs to each of the buzzers, which means I would need two power lines and 30 wires, which is a nuisance.

\$\endgroup\$
  • 1
    \$\begingroup\$ Could you please define what you mean by 'large number', controlling 10 buzzers is whole lot different to controlling 100 or a 1000 etc. and I don't consider those numbers particularly large. The problem could be reduced to three wires (power +. power -, data) quite easily. \$\endgroup\$ – JIm Dearden Jan 5 '15 at 16:12
  • \$\begingroup\$ Also maybe you can elaborate on how this isn't a duplicate of the questions you already link. If each buzzer has two wires, you need two wires per buzzer, somewhere, otherwise you'd have no way to physically connect to each one individually. There's no way around that. Or am I not understanding whatever it is you are "trying to avoid"? \$\endgroup\$ – Phil Frost Jan 5 '15 at 16:26
  • \$\begingroup\$ @PhilFrost I have added a small clarification at the end, I hope this makes it more clear. If I should be completely mistaken as to how such a situation is usually dealt with, please let me know. I am a complete beginner when it comes to electrical engineering, so some obvious things might not be at all clear to me. \$\endgroup\$ – Mark Anderson Jan 5 '15 at 16:44
  • \$\begingroup\$ Your picture link gives a 403-forbidden. \$\endgroup\$ – Wouter van Ooijen Jan 5 '15 at 16:51
  • 1
    \$\begingroup\$ @darudude conductive thread is expensive, and multiple threads are hard to route properly in most clothing. OP is looking for exactly that, a serial bus setup. \$\endgroup\$ – Passerby Jan 5 '15 at 18:32
3
\$\begingroup\$

From your question I think you have one of those black plastic buzzers in mind that has two wires?

enter image description here

If you restrict your design to 3 wires (daisy chained through all buzzer locations) you won't escape from having a chip at each location. Once you have a chip you will need a PCB. There are much smaller buzzers/speakers than the type you have in mind that can be mounted on a PCB. Put a small < $1 micro-controller (a PIC 10F200 would do, but I would prefer a small Cortex M0) and you can program it to do exactly what you want, including beeping at various frequencies etc. But this does require some programming!

enter image description here

enter image description here

\$\endgroup\$
3
\$\begingroup\$

You could use the Dallas 1-wire protocol (eg. DS2413) to control many buzzers or LEDs.

Each chip has a unique 64-bit address, so each output could be addressed individually.

http://datasheets.maximintegrated.com/en/ds/DS2413.pdf

You would need one chip for each location.

\$\endgroup\$
2
\$\begingroup\$

With 1-bit shift registers (e.g. sn74lvc1g374 ) you'd have 30 chained shift registers. That would require 0V, +V, clock, data and enable wires. If it's OK to pulse the buzzers for microseconds while loading the data, you can do without the enable wire.

Having only 3 wires requires a more complicated protocol such as WS2811, which is designed for LED driving but you might be able to connect a buzzer to its PWM output via a suitable transistor.

\$\endgroup\$
1
\$\begingroup\$

It's simply a matter of combining a few parts. A shift register, or I2C or SPI or 1-wire gpio expander, depending on your microcontroller, which then connects to n channel transistors or mosfets, which drive the buzzers. Just like you would directly, but with the ic instead.

Misread the question. Given what you want to achieve, a string of buzzers without multiple wires, you would still need to purchase multiple ICs, one for each buzzer. These would be 1 or 2 bit shift registers, just like the smart led strips have. Either one ic per buzzer, or multiple wires per ic expander.

\$\endgroup\$
  • \$\begingroup\$ Hello! Could you maybe elaborate on this a bit? Do you know of a way to either build these 1 bit shift registers by myself, or can they be purchased somewhere? Could you recommend a place where I might find more information? \$\endgroup\$ – Mark Anderson Jan 5 '15 at 16:46
  • \$\begingroup\$ Only practical way to make then yourself is by using small microcontrollers programmed as shift registers. \$\endgroup\$ – Passerby Jan 5 '15 at 16:53
  • \$\begingroup\$ A D flip-flop is basically a 1 bit shift register, you may be able to find ones in small enough packages for your uses. \$\endgroup\$ – Gorloth Jan 5 '15 at 17:13
  • \$\begingroup\$ This is really it. @MarkAnderson - read my comments if you additional info. \$\endgroup\$ – darudude Jan 5 '15 at 18:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.