This bookmark is designed to make reading an immersive, multisensory experience. Upon opening your book, this bookmark turns into a reading light, automatically illuminating to light up your page. A customizable scent profile enhances the moment. Close the book, and the light turns off while the system enters low-power sleep mode to save battery.
If you’d like to take on an additional challenge, this bookmark has the potential to take on IoT features. Built on the Arduino Nano ESP32 with WiFi capabilities, you can program it to automatically start your favorite reading playlist on Spotify when you open your book, and even enable Do Not Disturb mode on your phone. It allows you to create a distraction-free reading environment and truly get lost in your latest literary escape.
Objective: Design and create an innovative, minimalist bookmark that enhances the reading experience using subtle, sensory-driven tech. The project aims to explore how a smart bookmark can help readers focus and enjoy the reading experience, with limited distractions. The bookmark itself will be delightful to handle and look at, but is secondary to the book itself.
Features & Functionality:
Minimalist Form: The bookmark has a clean, geometric design for visual and ergonomic appeal
Slim Profile: Components are chosen for their thin form factor, ensuring the bookmark will fit comfortably in a book
Touch or Pressure Sensor: Hidden within the surface or as a slim button on the surface, a pressure or touch sensor detects when the book is opened, automatically activating the LED (and potentially other digital functions).
LED Light Sphere: A soft-glowing LED sphere at the top of the bookmark provides a gentle ambient light cue when the bookmark is in use.
Scent Pad (?): A discreet vent holds a scent pad, which adds to the sensory experience
Potential Additions:
Wireless connectivity (with ESP32 or similar) to trigger playlist playback or DND mode on your phone when reading.
Design Notes:
Materials and interface are chosen to create a product that feels technical yet pleasing
Next Steps:
Finalize component list
Start thinking about code
More sketching
Create digital and physical 3D prototypes
Parts
Arduino ESP32 (if Bluetooth/Wi-Fi or ultra slim is needed)
Sample Arduino IDE Code for ESP32 Touch Sensor & LED
ESP32 uses the touchRead() function, which is straightforward and highly sensitive.
// ESP32 Bookmark: Touch pad turns LED ON when NOT touched (book open) const int touchPin = T0; // Touch pin (e.g., GPIO 4; see ESP32 pinout) const int ledPin = 4; // LED pin (GPIO 4, use any available GPIO)
int threshold = 30; // Set experimentally; touchRead() value when not touched is higher
void loop() { int touchValue = touchRead(touchPin); Serial.println(touchValue); // For calibration
if (touchValue > threshold) { // Not touched (book open) digitalWrite(ledPin, HIGH); // LED ON } else { // Touched (book closed) digitalWrite(ledPin, LOW); // LED OFF } }
DESCRIPTION: I started out aiming to recreate the Flux Capacitor from Back to the Future, as part of my Marty McFly costume. I wanted to recreate a prop as I’m interested in prop design, and design for entertainment. However, I wanted to put my own spin on it, and decided that I would make a Luxe Capacitor, and I would wear it be wearable.
I came away with quite a few learnings from this process. Overall, I struggled to figure out the order in which to complete steps. For example, I spray painted individual components and then realized that it prevented adhesion when I started to glue everything together. Upon completion, I think I have a better (not perfect) sense in how I would order my to do list if repeating this process. I created my own dielines for the box (which I then laser cut), and I made the mistake of not leaving extra room for the insert to fit into the box. Lastly, I didn’t test my circuit while soldering. It worked out, but if I encountered errors then I wouldn’t have had any idea which connection was causing the issue.
// Simple demonstration on using an input device to trigger changes on your
// NeoPixels. Wire a momentary push button to connect from ground to a
// digital IO pin. When the button is pressed it will change to a new pixel
// animation. Initial state has all pixels off -- press the button once to
// start the first animation. As written, the button does not interrupt an
// animation in-progress, it works only when idle.
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
// Digital IO pin connected to the button. This will be driven with a
// pull-up resistor so the switch pulls the pin to ground momentarily.
// On a high -> low transition the button press logic will execute.
#define BUTTON_PIN 0 // Gemma M0 D0 for button input
#define PIXEL_PIN 1 // Digital IO pin connected to the NeoPixels (Gemma M0 default)
#define PIXEL_COUNT 8 // Number of NeoPixels
// Declare our NeoPixel strip object:
Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, NEO_GRBW + NEO_KHZ800);
// Argument 1 = Number of pixels in NeoPixel strip
// Argument 2 = Arduino pin number (most are valid)
// Argument 3 = Pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
// NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products)
boolean oldState = HIGH;
int mode = 0; // Currently-active animation mode, 0-9
voidsetup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
strip.begin(); // Initialize NeoPixel strip object (REQUIRED)
strip.show(); // Initialize all pixels to 'off'
}
voidloop() {
// Get current button state.
boolean newState = digitalRead(BUTTON_PIN);
// Check if state changed from high to low (button press).
if ((newState == LOW) && (oldState == HIGH)) {
// Short delay to debounce button.
delay(20);
// Check if button is still low after debounce.
newState = digitalRead(BUTTON_PIN);
if (newState == LOW) { // Yes, still low
if (++mode > 3) mode = 0; // Advance to next mode, wrap around after #3
switch (mode) { // Start the new animation...
case0:
fluxChase(0, 0, 0, 0, 0); // off
break;
case1:
fluxChase(255, 180, 0, 20, 100); // light chase, 100ms delay per frame
break;
case2:
fadeEffect(255, 180, 0, 20, 5); // slow fade
break;
case3:
fadeEffect(255, 180, 0, 20, 2); // fast fade
break;
}
}
}
// Set the last-read button state to the old state.
oldState = newState;
}
// Animated chasing glow
voidfluxChase(uint8_t r, uint8_t g, uint8_t b, uint8_t w, int delayTime) {
for (int loop = 0; loop < 6; loop++) { // looping - renamed from 'i' to avoid shadowing
for (int step = 0; step < PIXEL_COUNT * 1; step++) {
strip.clear();
for (int i = 0; i < PIXEL_COUNT; i++) {
int offset = (step + i) % PIXEL_COUNT;
float fade = 1.0 - (float)i / PIXEL_COUNT; // trailing dimmer effect
strip.setPixelColor(offset, strip.Color(r * fade, g * fade, b * fade, w * fade));
}
strip.show();
delay(delayTime);
}
}
}
// Smooth fade in/out
voidfadeEffect(uint8_t r, uint8_t g, uint8_t b, uint8_t w, int speed) {
for (int loop = 0; loop < 4; loop++) { // looping - renamed from 'i' for clarity
// Fade in
for (int brightness = 0; brightness <= 255; brightness++) {
setAllBrightness(r, g, b, w, brightness);
delay(speed);
}
// Fade out
for (int brightness = 255; brightness >= 0; brightness--) {
setAllBrightness(r, g, b, w, brightness);
delay(speed);
}
}
}
// Helper for setting all pixels to same brightness
voidsetAllBrightness(uint8_t r, uint8_t g, uint8_t b, uint8_t w, uint8_t brightness) {
for (int i = 0; i < PIXEL_COUNT; i++) {
strip.setPixelColor(i, strip.Color(
(r * brightness) / 255,
(g * brightness) / 255,
(b * brightness) / 255,
(w * brightness) / 255
));
}
strip.show();
}
I will be constructing a replica of the Flux Capacitor prop from Back to the Future. It will be the main element in my Marty McFly costume. The purpose of this prop is to promote delight with a touch of nostalgia.
Circuit Diagram
Tinkercad Link I am trying to figure out my circuit diagram, but need some assistance. This is where I have gotten to so far.
To Do: – Add push button to cycle through 2-3 different light sequences – Update light sequences (elaboration in Arduino section below)
Arduino
Pseudocode: 1. Mechanical button input activated 2. 3 Yellow Neopixel LED strips slow chasing sequence (from outside to inside) 3. The mechanical button is pushed to initiate the next light sequence in the cycle 4. Three Yellow Neopixel LED strips fast chasing sequence (from outside to inside) 5. The mechanical button is pushed to initiate the next light sequence in the cycle 6. Three Yellow Neopixel LED strips, fast blinking 7. Mechanical button pushed to turn off (or can I make it so that holding button for a determined amount of time turns off)?
Tools – Soldering Iron – Wire Snips – Wire Strippers – Hot glue – Super Glue (best kind?) – Box Cutter – Label Maker – Drill – 3D printer (optional if spark plugs don’t work out)
To-Do List
1. Complete circuit diagram 2. Figure out Arduino code 3. Purchase supplies after 1:1 meeting (Neopixels and finding correct box size are priority) 5. Map out box with 1:1 scale to ensure fit 4. Once circuit diagram has been finalized solder Neopixels to Gemma
Confirm Tristan has label maker/red or gold labels
TO DO
BOX
[ ] Create box dielines based on Neopixel size
[ ] Make box out of chipboard (cut by hand if no laser cutter)
[ ] Figure out where to put button hole
[ ] Create false bottom of box with holes cut out for wires, top surfaces is where components will attach, below false bottom is where hardware is housed
[ ] Spray paint box/false bottom metallic (silver or gold)
[ ] Attach transparent sheet to back of window on the front of the box
HARDWARE
[ ] Solder wire to 3 NeoPixel strips
[ ] Solder wires (from NeoPixel strips) to Gemma
[ ] Solder tactile button to Gemma
ATTACHMENT
[ ] Attach washers (spray paint gold) to surface
[ ] Place/attach NeoPixel strips in clear tubing
[ ] Attach spark plugs/tubes to washers
[ ] Place Gemma and USB battery pack underneath false bottom
[ ] Place button into hole on side of box
FINALIZE
[ ] Attach false bottom to box via adhesive
[ ] Figure out if I want to add latch to box
[ ] Attach tubing to box exterior
[ ] Attach chain/handle to box, potential spray paint gold (if I decide to paint box gold)
SOFTWARE
[ ] Finalize Button Cycler code
QUESTIONS
Should I create a flap on back of box to access hardware?
How much wire do I need to attach NeoPixels on surface of false bottom to Gemma at bottom of box?
Note: I didn’t remember how to reverse the button action via changing the wiring, so I changed the code instead, but I would like to better understand why the code was reversed due to wiring.
3. Night Light Concept (+ target user) A few years ago, I saw the movie First Reformed. I no longer remember the plot, but what I do recall is a scene in which two characters are sitting on a couch next to a floor lamp shaped like an eye. I found that it was designed by Nicola L., a French artist known for her anthropomorphic sculptures that fused bodies with domestic objects.
I plan to make a night light inspired by her ocular lamp. The target audience is anyone who wants to add a touch of anthropomorphic surrealism to their space.
(Update: going to use scrap fabric from FabScrap, which gives me less choice about what fabric I get, but is more sustainable and the unknown adds a fun element to this project).
My first Making Studio assignment involved disassembling an old AquaSonic electric toothbrush. It appears that this model is no longer available for sale on the AquaSonic e-commerce website.
As this was my first teardown, there was a lot to learn! I struggled to find full teardown examples of electric toothbrushes, but was able to use some common sense and guessing to get started. Other than encountering some unfortunate toothbrush-related gunk, I was pleasantly surprised at how smoothly the first half of the process unfolded. However, I ran into quite a bit of trouble removing the circuit board (16) and Li-Ion battery (15) from the interior plastic framework (20). I was hesitant to exert too much brute force as I was fearful of damaging the battery.
Here is a visual breakdown of my chronological process. The parts are numbered in the order in which they were taken apart, and can be referenced in the parts section further down.
While attempting to remove the Printed Circuit Board/PCB (16), a lot of LED indicators (PCB 04) lit up, and I was unable to turn them off for a while. The intensity of the light was surprisingly bright.
I eventually used wirecutters and a larger screwdriver to remove the PCB (16) from the plastic framework (20), and the Li-Ion battery (15) was easily removable after that.
COMPONENTS
1. Outer Case: plastic 2. Brush Connector Base: plastic 3. Motor Shaft Bearing: steel? 4. Top Gasket: plastic 5. Button Covers: silicon or rubber 6. Screws: stainless steel 7. Top Ring: rubber 8. Motor O-ring: rubber 9. Motor Gasket: rubber 10. Motor Case: steel 11. Small Brush Motor O-ring: plastic or rubber 12. Charging Base Clip: plastic + metal (copper?) 13. TBD Brush Motor Part: plastic? 14. Brush Motor Rotor + Vibrating Rod: copper coil, steel 15. 14500 Li-Ion Battery Cell: lithium, nickel, cobalt, maybe manganese(?) 16. PCB: copper, fiberglass, resin 17. Base O-ring Seal: silicon or rubber 18. Charger Coil: copper 19. Base: plastic 20. Inner Frame: plastic
Chip Details I was unable to locate any part numbers on the chips. Some research suggests that they are surface-mounted Integrated Chips (IC) with Dual in-Line Package (DIP) form factors. It seems that the larger one is likely a Microcontroller (MCU), which controls motor speed, timing, LED indicators, charging, etc. The other is possibly a Power Management chip, controlling battery charging and protection from overcharging.
Type: TBD Manufacturer: TBD
MANUFACTURING
01. Plastic Injection Molding is used to create the internal plastic pieces (frame, button covers) and outer case. This involves melting plastic pellets (polycarbonate, polypropylene, ABS) and injecting them into precision molds. Parts are removed after cooling. This technique is used to ensure precision and water resistance. 02. PCB Manufacturing + Assembly involves photolithography, surface-mount technology (SMT), and solder mask application 03. Metal Stamping/Machining is used to create motor shafts and other metal components. Sheet metal stamping, turning, and precision machining are techniques that are used in this process. 04. Li-Ion Battery Cell Manufacturing happens under very controlled conditions. It involves various steps that conclude with packaging. 05. Motor Assembly is crucial to ensuring the brush will vibrate. Copper wires are coiled around rotors, and all motor-related parts (rings, gaskets, bearings, etc.) are assembled. 06. Final Assembly occurs when all components are combined using manual or automated assembly methods. Adhesive sealing or ultrasonic welding techniques are used to waterproof.
TOOLS/TECHNIQUES
01. Wire Cutter: Used to remove the PCB (16) from the plastic frame (20), also used to remove the base (19) from the plastic frame (20) 02. Screwdriver: used to pry apart larger/more unwieldy pieces (like removing the PCB board from the plastic framework) 03. Small Steel Screwdriver: used to unscrew screws (06) and to pry apart small pieces that were glued together 04. Wrench: Used to grip and remove larger parts that were glued together 05. My Hand (Not Pictured): Used during the entire teardown process to manipulate tools, etc.
DESIGN ELEMENTS
01. I found it interesting that the interface is very simple (compared with most of their current models). There are two buttons (05); the top one is the power button and is labeled “ON/OFF”. As it no longer functions, I am inferring that the second “button” is a charging indicator. This simple interface is representative of the limited capabilities/modes.
02. Indented arch shapes on the back of the outer case (01) seem to be placed where one’s fingers would go when gripping the toothbrush. It is a nice ergonomic touch.
03. (Not Picture) Overall, it is clear that this was not designed to be taken apart. I’m curious how much of this is due to capitalism, discouraging DIY fixes and encouraging new purchases, and if any of it has to do with safety due to the lithium battery.
I’m a multidisciplinary designer based in Brooklyn. I grew up in a small Connecticut town, halfway between New York City and Boston. In college, I studied biology and competed on the cross-country and track teams. I then attended design school in Atlanta before moving to Brooklyn to begin my professional career. Before joining PoD, I focused primarily on graphic design. Most recently, I was at Mother Design, where I specialized in branding and systems.
Outside of work and school, I enjoy spending time with my dog, Frankie, and watching him interact with the world. I maintain a running practice as a way to challenge myself and ensure I spend time outside.
I am cognizant that there might be a steeper learning curve towards the beginning of this course, as most of this is new to me. However, I’m looking forward to gaining a better understanding of how things work and potentially finding a new avenue of interest that will extend beyond this class.