09/26/2016 at 13:54 •
I'm still obsessing over the clicky problem. How do you get a small handheld device to click? This is surprisingly hard!
The way I see it, I have a handful of choices:
- SOLENOID: An electromagnetic solenoid, either snapping itself or on the case
- RELAY: A relay (which is basically just #1 in a special case)
- SPEAKER: Simulating a clicky sounds with a speaker
- PEIZO: The old ipods with the fake clicky sounds used this
- CLAPPER: There are electromechanical clappers for turn signals
Lets take each in turn:
Yes, this seems obvious but is quite tricky. First I ordered a bunch of little solenoids. The ideal solenoid, when triggered, would pull two peices of metal together or would bang something against the side of the box. Seems like most solenoids are designed to be extended in their normal state and then "pull in" when activated. Therefore, springs and other things have to be integrated into the solenoid to properly get a click. Some solenoids have a nice metal plate inside, but the tiny ones don't. I have little experience with ordering or sourcing springs and metal actuators. And the only assemblies of solenoids that come that way are large and impractical.
I haven't given up hope yet, but this was not as simple as I expected.
The relay is more practical. It already has all of the hardware inside of it to make a solenoid bang against something. But it turns out the newer and lighter the relay is, the less click it makes. The loudest relay I could find is immensely satisfying and only 6V but way too big. Relay designers are optimizing for metal parts that have less wear and tear, and probably consider the clicky noises to be an unwanted side effect.
At least for now, this is the best solution.
Another option is to simply load a waveform of a click into the teensy and play it back at a loud volume. This is probably something I should try and will do next time I can. But I want it to feel a little more real than just a canned waveform - e.g. a bit of variation each time. And I want the vibration to transfer into the case itself.
So I tried investigating how you actually synthesize a click or a clapping sound. The teensy has a wonderful library that lets you do many synthesis tasks on chip. But It turns out, the click is not a very simple task. The "click" is really many small pulses. Most tutorials on the web for how to program a synthesizer end up using a very complex envelope to trigger the sound. I have no doubt that I could get this right, but I feel like I'd spend a day or more just getting the sound library to recreate them.
Another option is to get some similar click sounds and play them out randomly.
In theory, a Peizo disc is basically a transducer. It should radiate motion into the case itself, just the way I want. So I'm very excited to try this approach. Unfortunately, it also is not a simple task. Peizo's want lots of voltage - 20Vpp (peak-to-peak). Some people recommend taking a small step-up transformer to get this. That itself adds a massive component I'm not sure I have space for. Others suggest using a H bridge with a 20v step up. This is feasible, but definetly complex. I'm not an EE guy and from what i can tell the peizo acts like a capacitor so you have to actively charge and discharge it. Anyway, I plan to try to prototype this idea with a H bridge driver i have laying around.
A third, probably the best approach is to use a dedicated IC. I can see this being the simplest solution. These ICs like the MAX9788 actually have a charge pump built in to get you from your projects 5V to the 14-20V you want for the piezo. They take either a digial or analog signal and drive your ceremic peizo speaker perfectly. Sounds great huh?
Well, the packaging is the challenge. The MAX9788 is either 20WLP or 28TQFN.
WLP? what is that?
So remember BGA (ball gate array), the thing you basically can't solder by hand? WLP is basically the next evolution from BGA. Its a 2mm x 2mm wafer package where the entire component is the size of the actual silicon wafer. I have no access to reflow soldering, stencils or solder paste. So ditch that idea.
28TQFN is tolerable, If you are insanely careful, and use lots of flux, you might get away with that.
There is another contender, the LM48560. This is a DSBGA 16 package, which is another ball gate array.
Why? Why??? Well, my guess is that lots of new designs for small mobile electronics are calling for peizo speakers theses days and TI and Maxim are trying to serve that market, not hobbiests like me.
Anyway, thats where I am in my current state of research.
09/26/2016 at 13:35 •
I continue to make changes. I'm worried this box isn't really clicky enough. Glowy, yes. But right now besides the haptic feedback, there really isn't a true click.
To try to solve this problem, I have been experimenting with relays. Not for their switching capabilities, but for their ability to make noise. After a trip to the MIT Swapfest, I returned with a half dozen 6-24V relays and spent an evening driving them in different ways.
Its clear that the bigger the internal mechanism (and presumably the springs/coil), the louder it gets. In fact the loudest one I have seems like it practically was intended for use a a turn signal. But its way too big to put into a tiny toy. On the other hand, I have a few tiny SMT mounted relays from Omron that are tiny, but have a barely perceptible click. Then, strangely, some relays punch way above their weight. For instance, I found a tiny 24 volt relay that has an impressive click despite its tiny size.
So now its looking like I have a tradeoff to make. I definitely want a relay in my project, but I need it to fit. I looked into solenoids but sadly none of the tiny ones I have seem to be push/pull. So it turns out that the original 5V relay I had in my toolbox all along seems to fit the bill.
I also discovered that you can get louder clicks if you overdrive the voltage. I'm sure this is not good for the relay but since the actual duty cycle is so short, I'm going to risk it.
After a bit of hacking I ended up with this:
I'm using a 12V step up power regulator from Pololu, switched with a oversized N-channel MOSFET. I didn't have any fancy flyback diodes around ( am I supposed to use a "schotty"?) so I just soldered the ones I had.
The result is a nice clicky sound now that you can feel in your hand.
08/22/2016 at 12:44 •
My question of the day: Is the box of clicky aweseomeness really clicky enough?
At the last Cambridge Hackspace meetup, everyone seemed to love playing with it, pounding out little tunes on the "piano". So by my standard measure of project success, this seemed to be a good sign.
But I am still troubled because even though my device has an LRA hepatic actuator and a great little speaker, it doesn't formally have a "click." So now I'm pondering the addition of "gratuitous relays."
What is a "gratuitous relay" you ask? It is a relay that has been added in the project purely for the haptic joy of the click. In several other projects, I have added such a relay and learned that they add considerably joy to a project. In fact, I think the bank of four clicky relays to my Nixie clock actually triples the satisfaction of "winding up" the clock.
But how to do it in such a small form factor project? I've been looking at things like these little buggers. Stay tuned.
08/13/2016 at 15:39 •
My first version of the click box of awesome has been built. Here are the core specifications:
- 30 neopixels (9 x 6)
- A SSD1306 I2C OLED
- 28mm speaker from adafruit
- A capacitance based touchpad, hand soldered to copper foil
- An external USB port for rapid reporgramming
- Teensy 3.2
- Teensy Prop Shield with 10 axis IMU, sound amplifier and level shifter
- 350mAh 3.7v LiPo from Adafruit
- LiPoly charger backpack
- Samsung LRA hapatic motor
- DRV2605 hapatic controller
Everything fits into a 2.3mm thick acrylic laser-cut case, glued together with acrylic solvent glue. Current dimensions are 65x18x45, just slightly larger than the tic-tac box that inspired it.
A couple of notes:
- Extensive use of 30AWG silicone wire
- A small custom PCB that distributes VCC,GND,SDA,SCL to all of the I2C components
- Came to the bizarre realization that both the MPR121 and the DRV2605 both use the same default I2C address
Things that still need a ton of work:
- The battery life is terrible - the Teensy is draining about 40-50mA. Worse, the neopixels, even off, drain at 30-35mA. Attempts to fix this with a mosfet resulted in a painful realization about neopixels.
- I really should have added an "off" switch. (I had originally hoped the power use would be so low that a switch would not be needed)
- Software is quite minimal at the moment
- USB connector did not fit properly, which will likely motivate a new case
- Crammed wiring results in accidental presses of the teensy reset button. Probably will want to create a custom PCB to integrate the non-I2C devices
- Framerate on the I2C display current 16FPS (but I know i can get 10X that much with a few tweaks)
- Really wanted bluetooth. Sad that there is no room in the case.