Smart Glove: an Interactive Manual on Hand

by Amber Tsao in Circuits > Wearables

408 Views, 7 Favorites, 0 Comments

Smart Glove: an Interactive Manual on Hand

42CE4A74-BDE0-4484-8659-D307684398F6.jpg
Smart Glove
Screenshot 2025-05-06 at 11.46.22 AM.png

Smart Glove is a wearable assistive device that helps users interact with smart home technologies through touch and audio feedback. It is designed for people with disabilities (intellectual/developmental disability, visual impairments, reading difficulties), older adults, and those who need hands-on guidance to learn smart home technologies intuitively.

User could simply wear the gloves and touch different parts of the smart technologies (e.g., button, knob, screen) and they will receive audio instructions on how to operate the machine.

Supplies

Materials

  1. PN532 NFC Reader Module
  2. Circuit Playground
  3. NFC Key Fobs * 2 (We'll need the coil inside; you can also get the coils directly or wrap them yourself.)
  4. NFC Stickers
  5. Thumb Game Gloves with Finger Sleeves (Amazon Link)
  6. 3.5mm Audio Cable
  7. Speaker / Headphone
  8. 3.7V LiPo Battery
  9. Oval Velcro * 2
  10. Wires: Dupont Wires, Alligator Clip Wires

Equipment

  1. Soldering Iron Kit
  2. Laser Cutter (Optional; Only for building the device prototype)

Software

  1. Circuit Python
  2. Mu Editor
  3. Narakeet (Text-to-Speech)
  4. Audacity (Audio File Editing)

Concept and Planning

Screenshot 2025-05-10 at 7.06.00 AM.png
Screenshot 2025-05-10 at 7.52.53 AM.png

The idea of building the Smart Glove came from my experience interviewing older adults and individuals with mild cognitive impairment. Many of them struggle to learn and operate devices with multiple buttons and complex interfaces. For example, laundry machines often have confusing controls, making it difficult to understand the correct sequence of operations. That’s where the Smart Glove comes in. By simply wearing the glove and exploring the device, users can learn how each button works and what it does, without actually pressing the buttons, which might trigger unintended actions. The Smart Glove offers a risk-free way for users to gain confidence in using technology. While this prototype is primarily designed for display room and educational purposes, we envision future versions being effective in senior centers, assisted living facilities, and other personal living spaces.

Test the NFC Reader

PN532.jpg
Screenshot 2025-05-10 at 9.04.00 AM.png

Before working on anything further, first, we want to wire the NFC reader and check if it works properly. The microcontroller we used, Circuit Playground Bluefruit, talks to the PN532 NFC reader via I2C communication, so make sure to turn on the first switch (circled in the yellow box) before using it. The second picture is the hookup guide for the Circuit Playground and the PN532 NFC reader. After connecting them, run the starter code and tap the NFC tag to check if the address shows properly.

import time
import board
import busio
import adafruit_pn532.i2c
from adafruit_circuitplayground import cp

# Setup I2C bus
i2c = busio.I2C(scl=board.A4, sda=board.A5)

# Setup PN532 on I2C
pn532 = adafruit_pn532.i2c.PN532_I2C(i2c, debug=False)
pn532.SAM_configuration()

# Display firmware version
firmware_version = pn532.firmware_version
print('PN532 Firmware version: {0}.{1}'.format(firmware_version[1], firmware_version[2]))

while True:
uid = pn532.read_passive_target(timeout=0.5)
if uid is not None:
uid_key = tuple(hex(i) for i in uid)
print("Found card with UID:", uid_key)
else:
print(".", end="")
time.sleep(1)

Note: You may need to add the required packages to the lib folder. Find the latest CircuitPython library bundle here.

Add the Fingertip Antenna

IMG_0189.jpeg

To enable tag detection through fingertip touch, we need to extend the NFC antenna to the fingertip. Placing two external coils wired together to the back of the NFC reader will allow us to relocate the sensing area. For the antenna extension, I used two coils taken from key fobs included in the NFC reader kit. I removed the embedded chips and left just the coils. Alternatively, you can wrap your own coil or purchase standalone coils.

Each coil has two uncoated contact points underneath the removed chip. I lightly sanded these points to ensure a clean electrical connection, then soldered wires to them as shown in the reference image. Once the extended coil is connected and attached to the back of the NFC reader, you can run the starter code again. If everything is set up correctly, tapping a tag on the extended antenna coil should trigger the same response as tapping it directly on the reader.

Record Audio Instructions

Screenshot 2025-05-10 at 9.44.55 AM.png
Screenshot 2025-05-24 at 7.43.21 AM.png

Next, we will be preparing the audio files. Here, I used an online text-to-speech tool - Narakeet, simply enter the script and select the WAV format for output. You can also record your own audio files to make it more personalized. Since Circuit Playground has a very limited storage (~2 MB), I lowered the sample rate of the WAV file in Audacity to save some space. To get better sound quality, you might have to switch to a board that has bigger or external storage.

Code

After preparing the audio files, we need to associate each one with the corresponding NFC tag UID so that the correct audio plays when a tag is tapped. This is done using a tag_to_info dictionary, where each UID is a key and the associated value is a list of audio files.

I also defined an expected sequence for the user to follow. If the user taps the wrong button, a short audio prompt plays to identify the button or dial. When the correct button is tapped, the user can proceed to the next step. To support this interaction, the system keeps track of how many times each tag has been tapped, allowing different audio files to play depending on the tap count. This count resets whenever the user successfully completes the final step in the sequence.

import time
import board
import busio
import adafruit_pn532.i2c
from adafruit_circuitplayground import cp


# Setup I2C bus
i2c = busio.I2C(scl=board.A4, sda=board.A5)

# Setup PN532 on I2C
pn532 = adafruit_pn532.i2c.PN532_I2C(i2c, debug=False)
pn532.SAM_configuration()

# Display firmware version
firmware_version = pn532.firmware_version
print('PN532 Firmware version: {0}.{1}'.format(firmware_version[1], firmware_version[2]))

tag_to_info = {
('0x1d', '0xfb', '0xb2', '0xf6', '0xb', '0x10', '0x80'): ["pizza.wav", "pizza_un.wav", "congrats.wav"],
('0x1d', '0xfa', '0xb2', '0xf6', '0xb', '0x10', '0x80'): ["power.wav", "start_s.wav", "started.wav"],
('0x1d', '0xf9', '0xb2', '0xf6', '0xb', '0x10', '0x80'): ["mode.wav", "mode_s.wav"],
('0x1d', '0xf8', '0xb2', '0xf6', '0xb', '0x10', '0x80'): ["temperature.wav", "temp_s.wav"],
('0x1d', '0xf7', '0xb2', '0xf6', '0xb', '0x10', '0x80'): ["time.wav", "time_s.wav"],
('0x1d', '0xf6', '0xb2', '0xf6', '0xb', '0x10', '0x80'): ["done.wav", "handle.wav"],
}

expected_order = [
('0x1d', '0xfb', '0xb2', '0xf6', '0xb', '0x10', '0x80'), # pizza.wav
('0x1d', '0xfa', '0xb2', '0xf6', '0xb', '0x10', '0x80'), # power.wav
('0x1d', '0xf9', '0xb2', '0xf6', '0xb', '0x10', '0x80'), # mode.wav
('0x1d', '0xf8', '0xb2', '0xf6', '0xb', '0x10', '0x80'), # temperature.wav
('0x1d', '0xf7', '0xb2', '0xf6', '0xb', '0x10', '0x80'), # time.wav
('0x1d', '0xfa', '0xb2', '0xf6', '0xb', '0x10', '0x80'), # start.wav
('0x1d', '0xf6', '0xb2', '0xf6', '0xb', '0x10', '0x80'), # done.wav
('0x1d', '0xfb', '0xb2', '0xf6', '0xb', '0x10', '0x80') # end.wav
]

current_index = 0
uid_seen_count = {}

while True:
uid = pn532.read_passive_target(timeout=0.5)
if uid is not None:
uid_key = tuple(hex(i) for i in uid)
print("Found card with UID:", uid_key)
count = uid_seen_count.get(uid_key, 0)
if current_index < len(expected_order) and uid_key == expected_order[current_index]:
print("Correct tag tapped.")
if count > 0:
cp.play_file(f"audio/{tag_to_info[uid_key][2]}")
else:
cp.play_file(f"audio/{tag_to_info[uid_key][0]}")
uid_seen_count[uid_key] = count + 1
current_index += 1
elif current_index == len(expected_order):
print("All steps complete!")
current_index = 0 # reset or stop
uid_seen_count = {}
else:
cp.play_file(f"audio/{tag_to_info[uid_key][1]}")
else:
print(".", end="")
time.sleep(1)

Device Prototype and Demo Task

IMG_0192.jpeg

To demonstrate how the Smart Glove can be used to learn about smart home technologies, we created a cardboard prototype of a smart oven equipped with multiple buttons and dials. NFC stickers were placed on key components of the oven, including the start/stop button, mode dial, temperature dial, time dial, handle, and even the pizza (for status checking).

Each NFC tag is linked to an audio instruction that guides the user through the process step by step. The interaction flow and corresponding audio prompts are as follows:

Pizza: Now, let's bake a pizza. First, find the power button.

Power Button (Start/Stop): This is the power button. Tap once to turn the oven on. Next, find the mode dial.

Mode Dial: This is the mode dial. Turn to select bake mode, press to confirm. Next, find the temperature dial.

Temperature Dial: This is the temperature dial. Set it to 375 degrees Fahrenheit to bake a pizza. Next, find the time dial.

Time Dial: This is the time dial. Set it to 12 minutes for the pizza. Now, tap the start button again to start baking.

Start/Stop Button: The oven has started. In real use, you will wait until the timer ends and hear a 'ding', but for this demo, just touch the handle to try the next step.

Handle: Ding! The baking is complete when you hear the sound. Make sure to use oven mitts to remove the pizza.

Pizza:

  1. If steps are complete: “The pizza is ready. Congratulations! Now you've learned how to use the smart oven.”
  2. If steps are incomplete: “The pizza is not ready.”

Note that the cardboard prototype of the device is just for easier presentation. Since the NFC stickers are small and lightweight, you can place them on real devices and make any device SMART!

Assembling

Screenshot 2025-05-24 at 12.30.16 PM.png
IMG_0191.jpeg
IMG_0190.jpeg

At this stage, most components are ready to go. The last few things to do includes setting up the audio output, soldering the battery switch, and attaching the boards on the glove.

Set up Audio Output

Refer to the first image to connect the audio wires: clip the positive wire to the audio output pin and the negative wire to ground. On the other end, as shown in the second image, clip the wires onto the 3.5mm audio cable. This setup allows you to connect either speakers or headphones, giving you flexibility to switch output devices based on your needs.

Solder a Battery Switch

To enable convenient power control, solder a switch to the battery. Connect one end of the positive wire to the middle pin of the switch, and the other end to either the left or right pin. This allows you to easily turn the power on and off as needed.

Attach the Boards to the Glove

I used Velcro to attach both the microcontroller and the NFC reader to the glove. This setup allows the components to be easily removed for maintenance or future upgrades.

Done!

F56DK72MAGT4FAZ.png

Now the system is complete! Image 1 shows the full setup of the Smart Glove system. Users can follow the instructions on the poster:

  1. Put on the Smart Glove.
  2. Place the pizza (and touch it) to start — instructions are on the poster.
  3. Follow the audio prompts to find the correct button to operate.
  4. It’s okay to make mistakes! Explore different parts of the machine — the glove will tell you what each part does.
  5. Learn how to use the smart device in a fun and interactive way!

Design Reflection

  1. The Circuit Playground board includes multiple onboard LEDs, which could be used to provide visual feedback (e.g., flashing lights in different colors). However, I intentionally chose not to implement this feature. I wanted to emphasize that there are no “wrong” steps in the learning process and avoid making users feel frustrated or discouraged if they don't follow the intended sequence. The goal is to create a safe, exploratory experience where users feel comfortable making mistakes.
  2. During user testing, I noticed that it's sometimes easy to miss the audio instructions, as they only play once. To improve this, I think a repeat function would be helpful. One idea is to place an additional NFC tag on the thumb so that when the user pinches their index finger and thumb together, the system recognizes the gesture and repeats the last instruction.
  3. Other potential improvements include:
  4. Wiring a female audio jack for a more secure and aesthetically pleasing audio connection.
  5. Designing dedicated pockets on the glove to neatly house the microcontroller, NFC reader, power switch, and battery.
  6. Enhancing water resistance to ensure the glove remains functional in environments like kitchens or laundry rooms where it may get wet.
  7. Adding an on-glove speaker and microphone to create an all-in-one wearable system. This would allow users to switch between teaching mode and learning mode, enabling a no-code setup process that is both flexible and user-friendly.

Thanks for watching! Hope you enjoyed this Instructable. Feel free to drop any questions in the comments!