ESP32-Pico based, sensor-packed, kinda-silly wearable for not-every-day use!

Similar projects worth following
We all have things we want to control and toggle quite frequently - be that our smart home electronics, a script at home, or we just need a timer for our tea.

Any sane person would stick to apps or a small web interface to suit their needs, but that is the boring way out.

The less boring one is to create a wearable device based on the ESP32-Pico and pack it so full of sensors that it's impossible *not* to control everything with it! (Though the usefulness of such controls may be arguable)
Gesture recognition, a microphone, air quality, pulse-oximeter, IR beacon location - at the very least!

Follow this project and join me on the journey to rework my old project "Tap" from the ground up, with all the knowledge I gained since attempting it for the first time.

Oh, and yes, it looks like the Voyager's EMH Holo Emitter.

No time? At least look at the intro video:

And a demo of one of the sensors, the gyroscope:

Or a demo of the tap and twist input methods!

And a little debate timer, a first practical use case:

But what even is this?

And a casing:

Read more »


KiCAD Exported BOM for all components needed! Please note: The board was designed to only optionally require the STM32, as it is not foreseeable when this chip will ever be available! All parts should be orderable from DigiKey.

Comma-Separated Values - 3.16 kB - 11/01/2021 at 22:38



Magnetic Clip used to hold the magnets in place

Standard Tesselated Geometry - 111.51 kB - 10/14/2021 at 14:27



STL File of the bottom half of the Badge. Print as a single piece, no special treatment is necessary.

model/stl - 314.05 kB - 10/04/2021 at 07:36



STL File of the top half of the badge. When printing, keep two things in mind: 1) The Filament is supposed to be swapped to a clear filament after the top horizontal layer is finished, to create the see-through ring for the notification LEDs 2) Three M1.5 nuts have to be embedded within the print, so it must be paused before the top covers of the three screw mounting posts are printed. The nuts can be inserted with a bit of force (tune printer to make it snap-fit), then continue printing. Optionally sand down the front of the casing to make it smoother.

model/stl - 388.66 kB - 10/04/2021 at 07:36


Gerber Files of the completed Tap Badge PCB, Revision 1.0

Zip Archive - 709.14 kB - 09/24/2021 at 21:25


  • Practicality

    Xasin11/15/2021 at 18:33 0 comments

    Tap has gained a practical use case!

    One of the things this project has been lacking for a while now is something to show that it can actually do something. Not just a little flashy demo, but, at the very least, some action that can help in the real world.

    And it now has this!

    The video above has a little demonstration of a basic but effective "Debate Club Timer".
    In essence, it turns Tap into a little clock that counts down the time you have remaining for your talk, but it does so utilizing most of its outputs.

    The OLED screen gives the exact time remaining, while the ring of LEDs gives a quick glance at how long is left. The ring's colour also signals the first and last minute of the debate, which gives a bit more warning when approaching the very end, and the speaker accompanies these changes using warning beeps that signal the last 30 seconds.

    And if you go over the time?
    It flashes a bright red to show that you probably, maybe, should stop talking now.

    Expect more little demonstrations in the future. Tap is finally ready to step out of the "probably" and into "Yesss, it finally works!"

  • Putting the Tap in "Tap"

    Xasin11/02/2021 at 22:35 0 comments

    Tap is a tiny device with limited capabilities to receive inputs from users.
    Still, being able to somewhat fluently navigate simple (or more complex) menus and input forms to activate programs and interact with connected devices is quite important!

    The video here shows neatly how I managed to still get such input methods to work on Tap, despite the absence of the main sensor:

    Initially, Tap was designed to use a gesture sensor with a 32x32 pixel grid of IR sensors, that could detect a hand waving in front of it to extract gestures. It can even provide a cursor position based on hand or finger position!

    Alas, it was out of stock at the time of ordering the board, and is only sparsely available on DigiKey at the moment. 

    As such, an alternative was used - the built-in LSM6DS3 gyro and accellerometer. This device features built-in detection of hard taps, and has surprisingly precise acelleration and rotation-speed outputs.

    It, quite literally, allowed me to add tapping to "Tap"!

    In this update of the software, I used the various inputs from the LSM6DS3 to provide simple but varied enough input methods to navigate folder structures through the device, such as menus!
    It's not exactly what I was hoping for, but the component shortage is still about, and I can make do.

    Once the main gesture sensor becomes available again, it will be a simple matter of tweaking the code to trigger forward/back/left/right gestures based on perhaps a combination of both sensors - who knows!

  • Screening for bugs

    Xasin11/01/2021 at 22:29 0 comments

    Well, arguably one of the most important features of the Badge is finally operational, as you can see in the demonstration video in the Project Details!

    However, getting to that point was a little tricky - and had a little surprise in store for me to debug!

    An almost recognizable Hello World!!

    Read on below to see how this slightly oddly wired OLED panel confused us for a while, and how eventually it too was brought under control~

    Read more »

  • One step forward, two ICs back

    Xasin10/14/2021 at 11:54 0 comments

    Let's cut right to the chase - the item that most of you will most likely want to see:

    TapV2's LEDs in action
    After fixing a bit of rogue code, the LEDs now work perfectly, and give the badge a stunning aura

    TapV2 has been soldered and has booted right up!

    It was not, sadly, quite as first-try as we had been hoping, and a bunch of issues came up that will need to be fixed, but it's nothing major.

    Look below the break to read up on how things went, what went wrong, how it almost blew up on us(!), and how we'll deal with that in the future!

    Read more »

  • Case closed!

    Xasin10/01/2021 at 22:41 0 comments

    It's been a little while since the last project log, but don't worry, things have been moving forward quite well. The most impressive sight of this is, of course, the completed casing, so I shall let you wait no more:

    Read up below the break to hear about adorable tiny components, the PCB, and designing and printing the case!

    Read more »

  • Squishy wires

    Xasin09/02/2021 at 13:57 0 comments


    How have things gone with this project lately, you may ask? I may or may not have forgotten to add a few project logs in between... That would be my bad.

    But the good news is, the PCB design is almost complete! And it is a gorgeous looking nest of wires.

    TapV2's schematic
    Without a four-layer board design, this would have been nigh impossible, and even with the two extra layers it can be quite a squeeze! Luckily a clean, horizontal/vertical layout makes it much more headache-free.

    As mentioned in the previous log, the main battery charge IC had to be replaced. This was managed quite nicely, and the resulting mess of wires can be seen down below - the STM32 was squeezed in next to a USB-C port and now controls most of the power sequencing.

    One of the changes resulting from further component shortage is that this STM now also includes USB connection, and the Power-Only USB-C port was replaced with a USB2.0 port. This will allow Tap to act as USB HID, and perhaps I will even utilize a fake mass storage device to write the ESP32 binaries onto the IC to update it that way?
    Who knows!

    In any case, now that all components are fitted and most of the wiring has been completed, it is only a matter of polishing the design, double-checking tolerances, and ordering the PCB!

    A lot of components are, sadly, out of stock, which will inevitably lead to a long wait on some materials. It is unclear how long it will take to actually assemble and build the badge due to this - some components are back in stock by the end of this year, some might not recover in a year, some I can leave out...

    In any case, we will see when we get there.
    And until then, there will be plenty of other projects to work on and polish - a rework of the Smart Home and LZRTag, a little Christmas gift, and perhaps even a simple "DIY Goto" for a Telescope we wanted to acquire :)

  • Turning problems into opportunities

    Xasin08/01/2021 at 17:48 0 comments

    There is a bit of a problem with Tap right now... Or, well, everything in general. 

    The chip shortage seems to have grown just a little further outward, and captured the battery charge IC that I was initially planning to use. There are alternative models, of course, but... I thought, why not try and replace it with components I am more comfortable with using. The BGA is very tricky to solder, after all. 

    This, however, turned out to be tricky. This single charger IC has so much functionality all in this little module:

    - 1.8V LDO

    - 2x Load switch

    - Button reset circuit with power on/off

    - ADC for battery measurement

    At first I wanted to use discrete components to fill this gap, but that quickly turned into a bit of a mess, because for the button reset function alone you need three new ICs. 

    But... What about a separate controller? Something low powered, like an STM32L0 at low clock speed. This would be able to control the load switch, it has an ADC, and might even provide extra GPIO pins if necessary. 

    And then it hit me - it can do a lot more than this. It can, for example, take over the SPI slave role required to extract the camera feed of the ADPS gesture sensor, something the ESP might struggle with. It could act as battery gauge, estimating battery current over a resistor.

    Best of all, it could read the ESP32's UART log output. 

    When the ESP crashes, it dumps a crash message to UART, which cannot be rerouted to, ex., MQTT or Bluetooth, because it's crashed. But the STM? It could happily receive the crash message, buffer it, and then write it onto the OLED screen that is built in, or send the crash message back to the ESP once it rebooted so it can be sent to a log server. 

    Even though STMs are in short supply and a bit more expensive, I did find that digikey still has the STM32L051 series - at 4€ in single quantity, but better than nothing. 

    This will, of course, take further work to program and get right, but it could elevate the badge even further.

    More importantly, this STM external coprocessor could be reused in a large number of other projects to fill in some of the gaps that the ESP leaves in terms of analog, power consumption and IO pin count.

    I will have to play with the idea and report back!

  • Adding some details

    Xasin07/26/2021 at 21:20 0 comments

    And, well, by details we mean... Everything else.

    The board is both growing and shrinking - the former in the number of components that are already placed on the board, the latter in the amount of space that is still available for things.

    All in all, the sensor slot has been populated pretty much completely, with only a few components left to sprinkle in such as support capacitors.

    The rest of the board has also gotten models for programming, the illumination and signalling LEDs, as well as a few other components - FreeCAD has been especially helpful in the creation of missing 3D models for things such as the speaker and OLED screen.

    A few components are still missing - mounting holes for the M1 screws to keep the casing together, and a little bit of passive circuitry all around.

    The OLED screen might also change position a little, as currently it is quite squished in, though I always knew this would be the case.

    She's looking better with every update, and with a few more hours of gently placing everything where it belongs, she's ready to order!

    That is, if we can find a manufacturing service up for the task. This board features a rather large number of unusual footprints with individual parts that might throw a P&P machine off...

    Input on where to get this done is greatly appreciated.

    Also, for those wondering how big this PCB is in reality, here's a 1:1 scale print:

    All I have to say is... Oh dear

  • Squishing the sensors

    Xasin07/19/2021 at 21:23 0 comments

    Neatly lined up sensors
    Those that look closely may see that the boundary of the sensor space looks a bit like the Mobile Emitter's cutout - you'd be right!

    As the description of this project already describes, TapV2's main purpose is to be a playground of various sensors and other bits of data processing. Not for any specific reason, mind you - a lot of these elements here are just sensors we'd love to try out, or that we might find useful once a year and would like to have on hand.

    Some of them may even be genuinely useful!

    Right now we are still in the process of squishing the sensors we already selected as close together as possible and might go ahead and add one or two more if we find them interesting enough.
    Perhaps the comments could even recommend something to add to the arsenal.

    For now, the list is already quite capable.
    Going from left to right we have:

    • A pulse oximeter that can measure pulse and SpO2 levels when the user places their finger on it.
    • An LSM6DSM 6-axis gyro (although almost all MEMS gyros are out of stock for a few years - this one might have to be retrofitted somehow, or salvaged from another board)
    • An APDS-9500 gesture sensor. Although simple looking at first, this little device sports a 60x60 pixel IR array that can act like a rudimentary camera, potentially even enough to read QR codes! 
      It is the main motivation for this board, and will hopefully serve us well.
    • A BME680 air quality sensor. Aside from the standard humidity, temperature and pressure, the 680 also reads "Volatile Compounds" that correlate roughly to how used-up the air is, and can give warnings about low air quality.
    • A I2S MEMS microphone, used for simple whistle command input as well as Fourier Frequency analysis. Being able to isolate that one frequency that's annoying you should always be easy.
    • And STM ToF LIDAR with about 1m range in good conditions. Not only will it replace a slide rule, it could also be used to automatically measure vibrations up to 50Hz!

    The very rightmost components are for communication, such as a "On-Ground" WiFi antenna chip, and a IR module.

    One last potential candidate as sensor is an ambient brightness and UV meter, to warn about excessive solar radiation, however the only part we could find for this has a big "Not recommended for new design" label across the datasheet, so it's a "maybe".

    Oh, and those squares that are lined up next to every sensor module?
    Those are 1.8mm sized NeoPixel clones, to illuminate each sensor's status and readouts - mainly to look flashy and interesting.

    Let's see how hard it is to wire everything up. There is a reason why we chose automated assembly and 4-layer boards right from the conception of the project!

View all 9 project logs

Enjoy this project?



Tom Nardi wrote 09/04/2021 at 05:13 point

Phenomenal design, very ambitious. Shame that component shortages are slowing things down, but very excited to see the project progress farther.

  Are you sure? yes | no

Xasin wrote 09/04/2021 at 11:40 point

Thank you! 
It's the first time I used KiCAD both as PCB design tool and partially as CAD, using the 3D view to make sure the physical components such as speakers, batteries and screw holes don't clash.

"Ambitious" is the point here, I see this as a "challenge-project" whose main purpose it is to push my design skills and have some fun :D

Especially the STM32 shortage will keep this on pause, but I think I can solder everything up and leave that MCU out for the time being.

We'll just see when it's on stock again :)

  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