WEFT electrovibration demo board

This board is for prototyping electrotactile interactions - use an electronic signal to dynamically change the texture of a surface.

Similar projects worth following
This board is the result of my effort to implement two cool research papers published a couple years ago by Disney Research. In the papers, they describe how to use high voltage (but *very* low current!) to change the apparent texture of a surface - have it go from smooth to waxy to rubbery to scratchy, and back again!
While the papers were really instructive, I had to design the circuit more or less from their functional diagram. I had a great deal of trouble finding anything like this circuit (or project) online, so hopefully making my work available will allow this technology to become more widespread and, in spreading, become more robust.

As of now, there are two boards that you can make:

The early board (using the old name, "LEVER") is larger and fits in your hand. It features an OLED screen and a pot for adjusting the frequency of the waveform. I started with this board so I could have a quick way to prototype different waveforms and frequencies without having to use an external Android app. The bulk of the board's space is dedicated to the ergonomic placement of large grounding pads (which, when you grasp the board, naturally touch the sides of your grasping hand) and a central signal pad where the texture changes. The intention is that you would use this board to determine the ideal waveform and texture for your application; the downside is that it's way more expensive to get fabbed, because it's larger.

The second board, "WEFT v1," is more oriented towards embedding - it's much smaller and cheaper to fab, and it includes an RFduino SMD module that handles the waveform control (it takes BLE commands from an Android app and sends them over i2c to the Teensy, which is free to focus on keeping the DAC's timing under control).

The LEVER board works well, especially with a fresh 9v. The WEFT board is working OK, but it needs improvement: I altered some of the components used in the WEFT board to facilitate easier sourcing, and I'm still working out which swapped components are improving performance and which are degrading performance.

Bills of Materials:



Github repo (firmware, boardfiles)

This is the Android app I'm using to send two-byte commands to the firmware. It's simple, but it's easy to compile and I'm hoping to have a more dedicated app soon.

  • 2017 update

    AKA11/14/2017 at 23:25 0 comments


    This repo has gone significantly out of date. More recent information is available at, and I will be cleaning up and/or repurposing this hackaday project space in a little while!



  • Boost converter testing beginning soon

    AKA03/21/2016 at 14:19 0 comments

    Apologies for the lack of updates here - the project is most certainly still at the forefront of my attention, but I have been waylaid in the last month as I am changing jobs.

    I will be taking Wednesday and Thursday to update this project, including some better documentation and project structure, as well as more verbose updates regarding the boost converter work.

    I had OSHPark make a board (warning, board has not yet been validated by assembly/test) for prototyping the circuit described in the LM3478 application note here. My hope is to be able to tweak it with some component substitutions and get close to the values we'll need to make WEFT more reliable (the boost converter circuit will incorporate feedback, which is the main function missing from the current project).

  • Simplified Android app; upcoming goals

    AKA01/13/2016 at 17:51 0 comments


    I realized I was making two separate things in one Project, which is confusing, so I've simplified the project repo in the hopes of making it easier to jump into.

    Splitting the project

    I'm developing two things: one is the hobby board for WEFT, which will allow designers, prototypers, and hackers to easily integrate electrovibration into their projects. The other is a more focused device, a wearable that uses electrovibration to represent the state of your unread notifications.

    This Hackaday project will be for the hobby board: the Hackaday audience is, I think, better served by focusing on that. Let me know if you disagree, and be assured, I'm still actively working on the wearable/notifications thing too!

    Repo Cleanup and New Board

    The github repo has been updated with a much-simpler Android app that allows the user to experiment with different waveforms, amplitudes, frequencies, and duty cycles. The board that interfaces with this app is the BLE-enabled board. Just to be clear, here's the BLE board:

    The main problem with the BLE board (which I'm actively working on) is the BOM cost - it's currently just under $50, which is ridiculous. As I mentioned in a previous update, a huge amount of that cost comes from two microcontrollers, one for electrovibration and DAC stuff and one for BLE interfacing. I'm working steadily on ditching the Teensy, possibly for the RFduino or Simblee, possibly for some other appropriate microcontroller. I *really* don't want to get FCC certification, so an already-certified board is much preferred.

    As the BLE board progresses, I'm realizing that it's ideal for embedding into projects but not as easy to just mess around with. The previous board I made, back at my day job, is slightly better for this. (For reference, the previous board is called "Lever" and is the handheld version that some of you got to try at the SuperConf). Here's the (old) Lever board:

    So I think I'm going to start work on a new board, one that:

    • Doesn't require BLE to change any settings
    • Has as simple a BOM as possible
    • Has an optional OLED display, showing waveforms and other settings
    • Has an external interface for the electrovibration pad (though the Lever form factor is nice, ambidextrous, and intuitive, paying for all that empty board space was killer for the price point)
    • A pushbutton+encoder knob for changing the WEFT parameters
    • Has an off switch (I always forget this!)

    This will basically be a board the size of the BLE board with some better routing and, if I'm lucky, a new and more robust version of the boost converter circuit. I thought briefly about perforating the Lever board, so that you could break off the pads when you were done prototyping and were ready to embed it into your prototype, but again, that's a lot of PCB to eventually throw away...what do you think?


    So to summarize, the next things on the project docket are:

    • Improve boost converter - this is long-term critical to WEFT, as without current-sensing feedback the user experience is pretty inconsistent across body types, different environments, etc.
    • Fab a non-BLE board with the current circuit components and topology. This shouldn't take long, as I have the encoder code, etc all up and running in my studio.
    • Find a way for the other folks on this project to get boards in their hands - if you have a mill you can probably make the boards yourself, otherwise we can do a group OSHPark order?
    • Write a comprehensive post on how to safely experiment with the board. While I'm sure the board is relatively safe, it hasn't escaped my attention that I'm running a project with high voltage and trying to get people to touch it ;-)
    • Improve the github readme by adding more references and background reading, safety guidelines, and adding graphics and images

    OK! Am I missing anything? I'm loving the interface and am very grateful that I'm getting such helpful, positive suggestions from the community - that's (one reason) why you-all rock!

  • Android progress and BOM rethink

    AKA12/21/2015 at 15:47 7 comments

    I've made a fair amount of progress in the Android app over the last two weeks - nothing too exciting, but a steady stream of modest wins. You can check out the Github repo to see more, but the improvements are more frameworks-in-place for further development than they are new-features-to-try-out.

    Meanwhile, a rough estimate of the BOM price was pretty eye-opening: the components (in single quantities, from Digikey) sum up to about $10, while the two microcontrollers I'm using sum to $36.

    I've never spec'ed a project for any sort of scale manufacture, but this seems off to me. I always knew it was wasteful to use two micros, but kept with them for the convenience - there was a convenient separation of concerns that resulted from having the Teensy handle the PWM driving the boost converter (since Teensy's PWM frequency can be changed all the way up to ~400kHz) and its built-in hi-res DAC drive the high-voltage amplifier, while the RFduino just handles radio interactions.

    Given that the next hardware change on my list is a big re-think of the boost converter circuit, now seems like a good moment to try to find a microcontroller that can do all the jobs I need:

    • native/easy-to-use BLE interface
    • relatively high-res analog out (I haven't tried putting a lowpass filter on the regular 8-bit analog out that RFduino can provide - I'll try to do that soon)
    • Good battery life (though I won't be optimizing this for awhile yet)
    • (possible) relatively high-res analog in for current sensing (if I end up doing this without another component like the ACS712)
    • ...can anyone think of anything else?

    ...having a high-frequency PWM output seems like something I'd want on this list, but I found with the Teensy that it was easy to mess up the timing of the DAC output if I taxed other interrupt-driven stuff too much. As a result, this week I'll be trying to fit the boost converter stuff into a totally separate 555-based circuit that, hopefully, will be addressable by the microcontroller.

    So far, I'm planning to work with RFduino for awhile and then migrate to Simblee, which is even smaller. But I'd love to hear anyone's two cents about the whole plan, as now is the time when the most variables are still undecided!

  • Android app in the repo now

    AKA11/23/2015 at 21:51 0 comments

    I found some time this weekend to get the dedicated Android app up and running.

    Previously, I was sending two-byte transactions by hand using the excellent (but clunky, for my purposes) RFduino demo app by Github contributor Lann.

    The new app is not much different, but it is the first step in building out a much more useful WEFT app. For now, there are sliders and radio buttons that automatically update the WEFT board with the selected parameters.

    In the future, the "Duty cycle" adjustments won't be necessary (that will be controlled by the feedback logic on board), and other parameters will be testable/settable through a settings page. The current app is basically a prototype of that settings page.

    In other news, I am looking for more-permanent pad coatings that have the same desirable dielectric properties as hairspray. I tried some nail polish topcoat, but I think the layer I applied was too thick, as it really diminishes the electrovibration effect. I'll keep trying with non-topcoat nail polish, as well as trying to thin nail polish with a bit of acetone, btu I'm wondering if the non-alcohol ingredients of hairspray are particularly good...if anyone has thoughts, chime in!

  • Hairspray surprise (update, confirmed!)

    AKA11/17/2015 at 20:41 10 comments

    Olivier Bau, one of the authors of the two Disney Research papers the WEFT project is based on, was kind enough to meet with me recently and answer some of the questions I had after trying to implement the circuits described in the "Revel" paper.

    The most surprising revelation was the choice of dielectric - the paper called for a thin non-conductive layer to be applied over the conductor, but no substance in my tests worked very well (I tried Kapton tape, packing tape, and a couple of other substances). Offhand, Olivier mentioned that spraying the copper with hairspray was ideal, and even enhanced the electrovibration sensation. Who knew?!

    So once I recover form Hacakday SuperConference jetlag, I'll try this out. The procedure he recommended was to really drench the pad in hairspray and then let it dry vertically, so the excess runs off and leaves a thin, even layer as it dries.

  • What's next

    AKA11/15/2015 at 06:40 0 comments

    The WEFT board is working OK, but there are a couple component-selection factors to optimize.

    More importantly, I'm hoping that making this project public will help move it into the realm of the really-useful - something that others might want to (and the be able to!) make for themselves.

    To really make the electrovibration sensation reliable/repeatable across different people and environments, I need to figure out how to implement current-sensing feedback on the high-voltage side. This involves two tasks that I have failed at thus far: measuring the (tiny) current on the signal side, and then effectively modulating the boost converter circuit to account for the measured current.

    At present, I suspect I'm operating with a pretty poor boost converter circuit - I can't get the voltage much higher than it is (which is still around 180v tops, a little more than half the voltage used by the Disney researchers), so Im' probably going to scrap the current transformer-based circuit and substitute in a 555-based boost circuit, closer to the Revel paper's implementation.

View all 7 project logs

Enjoy this project?



Sam P wrote 01/13/2016 at 18:12 point

I need to read the whole thing, but I noticed a texture effect by accident a while ago when I was working with an ungrounded linear robot which had a floating power supply. I think there was some capacitive coupling such that the metal casing was a few hundred volts, but allowed very little current to pass when touched. For a short time I thought it was the texture of the metal.

  Are you sure? yes | no

AKA wrote 01/13/2016 at 18:14 point

Yep, that sounds like the same phenomenon! One appealing aspect of it is that because the coupling is capacitive, no current goes through the body - you're feeling the texture because your finger is "sticking" and slipping against the charged surface, like a balloon sticks to your hair when it's charged...

  Are you sure? yes | no

zakqwy wrote 01/03/2016 at 17:46 point

Have you thought much about output signal weighting? I haven't read through the Disney Research paper, and maybe you're already planning on using something like this, but I just came across Stevens' power law:'_power_law

The idea of an exponential relationship between stimulus and perception isn't terribly novel, but I was fascinated by the number of different exponents Stanley Smith Stevens experimentally obtained. I'm going to try using the equation (likely via lookup array for teh speediness) for LED dimming, so I'll start with an alpha of 0.5. I decided to post this on your project page because the exponents for various physical stimuli that could be related to #WEFT are all a bit different:

Roughness: 1.5 (via rubbing emery cloth)

Electric shock: 3.5

Vibration: 0.6 - 0.95 (dependent on frequency!)

Might be good starting points? 

  Are you sure? yes | no

greenaum wrote 12/18/2015 at 13:49 point

Saw on QI the other day, apparently a fingertip can feel textures with a depth of just a few nanometres, way smaller than we could ever see. I think there's a lifetime of experiments you could do with this, if you wanted to. I wonder if voltage corresponds to the perceived height of the simulated bumps of the material? 

  Are you sure? yes | no

AKA wrote 12/18/2015 at 15:18 point

"Height" has been a hard thing to characterize - the spacing and apparent "stickiness" of the material is more readily describable/changeable.
I'm hoping to make a small run of these boards for sale (maybe), so let me know if there are missing features/functions you'd like to mess with!

  Are you sure? yes | no

Sophi Kravitz wrote 12/18/2015 at 16:00 point

Can you send me a board? Will email you deats

  Are you sure? yes | no

greenaum wrote 12/24/2015 at 19:28 point

To be honest I don't have a practical need for one, it's just such a unique idea, I've never heard of the principle before in my life! It grabbed my attention just for that. So I'm just interested in what you're doing, I'm sure you could do much more than I could, with what you've been learning. 

  Are you sure? yes | no

davedarko wrote 11/15/2015 at 10:33 point

I swear I feel that on my macbook air sometimes..

  Are you sure? yes | no

AKA wrote 11/15/2015 at 17:10 point

Yes, it's the same feeling as that! The Macbook sensation is a sine wave at 60Hz, and there's a very distinct/interesting difference between sine, square, sawtooth, etc waves. One afternoon I made a long strip and ran Wu-Tang through it at ~150v, which was cool - you could definitely feel the bass drum and the snare, but no higher-freq elements...

  Are you sure? yes | no

greenaum wrote 11/15/2015 at 07:57 point

Is this actually using a material, or just presenting the sensation of one by stimulating nerves? Interesting, and very weird, idea!

  Are you sure? yes | no

AKA wrote 11/17/2015 at 20:05 point

The smooth copper pad is capacitively sticking and releasing to your finger - so if you hold your finger still, you can't feel the effect. It's only as you move your finger along the surface that you can feel it. See the Disney Research papers for way more detail!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates