This project documents a functional prototype for a guided running shoe that displays directional navigation using an 8×8 LED dot matrix mounted on a piece of footwear. The shoe points toward a programmed destination using latitude and longitude, allowing a runner or walker to navigate without looking at a screen. This prototype uses: Arduino Nano ESP32 WiFi connection over mobile device Arduino IoT Cloud as the data link Phone sensors (GPS + accelerometer) for remote navigation intelligence.
Ultimately, this project is part of my ongoing study into screenless wayfinding and wearable navigation systems.
Things I’m particularly proud of in this project:
Project perseverance
problem solving & troubleshooting
Connecting between devices
What I would work on next:
Animations for when the wifi signal disconnects
Adding gps and compass on the device for better responsiveness + accuracy
3D Printing a housing for these and a battery (if the form factor gets much bigger than perhaps integrating into the shoe)
Creating more code for how the serial monitor displays data (for better understanding)
A dedicated instructable and video walkthrough for phone to arduino IOT connection as this is not super easy to setup alone without sufficient know-how.
For my final project I’d like to create a prototype of an idea I came up with for Allan’s Affirming Artifact’s class — a light up shoe that guides users towards their destination.
The shoe would have neopixel lights to indicate directions left, right and forward — receivng push notifications from a users google maps on their phone.
While the wiring is simple I believe the Arduino nano will also need to have a bluetooth receiver for this to work.
While I’m skeptical about whether it will be feasible to push directions to the Arduino nano using Apple Shortcuts I believe that in the lowest functionality case I can still program a set of prewritten signals to demo the shoe and maybe create a fake map interface that it corresponds to.
Materials I will need for this are the Nano, Neopixels, and a 3D Printed housing to diffuse the neopixel lights. I am still configuring what I will need to receive signal and also how to know whether the user is moving forward with a compass of some sorts that corresponds to map direction as the Neopixel will likely be able to receive data but not push it back to maps.
For my halloween project assignment I wanted to make something that would be easily portable and detachable without the need for execessive fabric, components, or deep storage.
I wanted the LED part to make sense as an effective component that would help me communicate my costume not add an extra layer to it.
In thinking of the best scifi characters I’d seen I stumbled across a favorite that I often go back to as a reference — Eve, the robot from Wall-E.
Eve
I liked how expressive Eve’s eyes are in comparison to her otherwise sterile Apple inspired form. Not only where her eyes useful for expressing her mood and character, they also seemed to have a specific pattern of states the character designers repeated across the film. This would be perfect for my costume idea and would also lend itself to a clean detachable wearable.
Components
In selecting compontents that would work for my costume I was extra selective of visors/sunglasses that would fit the futuristic aesthetic I was lookign for but also would provide enough ‘real estate’ to house all of the necessary components while still allowing me to see.
This was the same story with lighting and while being knowledgable enough to know I should not dive into wiring together a bunch of strips, I didn’t know enough about what I should order. Again I read product dimensions for a series of different lights in order to decide what would best fit and I also did a few drawings of the different eye states to validate that and 8×8 matrix grid would work to communicate my design.
some early drawings for the different eye states on 8×8 matrix grids
The Code
Once I ordered all compontents, I dove into the code part. After some initial research I knew that making the different eye states would be simple enough, as I’d just be telling which pixel to turn on in each of my grids — and boy was I wrong.
Pin SetupColor Setup
Setting up the Pins and Color were pretty straightforward and looked clean in the code.
The state switching to button press was also relatively straightforward even though I inititially thought we could use the native switch on the Gemma which come to find out is a hard-wire reset button.
Even setting up the eye states were pretty simple although alot of manual work trying to not mistype coordinate data for the x and y positions.
What was a challenge was the coordinate setup for the LED matrices and the way to make it work for two different light panels.
The Wiring
When I did the initial wireup test on the Arduino and bread-board I had only tested it with a single matrix, assuming it would be easy to extend the display to the second matrix. This was something I struggled with later on once wiring to my final Gemma version.
With help from Manya, I wired up my visor with everything installed and taped up nicely and to my surprise it was no longer working
With trouble shooting support from Becky, I realized it was a wiring issue. I insisted I had wired it perfectly but deep down I knew that it was too ‘perfect’ to be true. I had taped up and packaged everything so nicely that I was bound to have to go back and undo some of it.
I then realized that when wiring up my board I had been looking at the OUT nodes on my LED matrix and so the wires going IN were in the wrong order.
I rewired it…
It’s working!! Sort of….
I had one eye working at this point (and one dot in the second panel for some reason). This is the part I fought with in the end as I really wanted to tell the code my 8×8 matrix was a 16×8 matrix to basically extend the display.
While setting that up I began tweaking my states to reflect a 16×8 grid. However once setup the second eye didn’t wouldn’t display the eye correctly. The eye was always backwards or rotated or skewed in a different direction.
At one point I even ripped off the second eye and manually rotated the panel 180 degrees in the hope that it would fix this problem — it didnt and I ended up mirroring the displays which proved to be a really simple fix.
At this point I wanted something to show for all of my fiddling so I decided to continue with my original plan and add a blink animation to my eyes to give them more character. Instead of animating a blink I went with just togglign between the states and a blink state which is just a horizontal line. In the code it toggles to a blink every 6 seconds with a 250ms blink.
In the end
I learned alot from this process and while my costume looks more like a creepy NEO facotry robot more than it does Eve from Wall-e, I’m happy with the result.
If I were to take this process a step further I’d want to increase visibility in the visor while also finding a way to hook up a smaller battery in the visor to make it more self contained.
I’ve decided to move ahead with my halloween costume resembling Eve from Pixar’s Wall-E. I’m particularly interested in Eve’s vocabulary of moods as demonstrated through her different eye-states. This is an important part of her character building in Wall-E as we see her character go from a mindless mission driven robot to the considerate and caring character that audiences love.
To tackle these different mood-states I’ve decided to use an LED matrix for each of Eve’s eyes and glue them to the inside of a full-face sunglass visor. Below are a few examples of different mood states I could express via the LED matrix. It’s particularly useful in this case that I may be able to use different colors through the RGB matrix to express enhanced states like anger.
I think I will mostly have a loop of alert with a ‘blinking’ animation loop to give the eyes effect. I will include a button on the visor or battery pack to toggle between mood states.
Shopping List
2x 8×8 RGB LED Matrix (Reminder to ask Becky which is best) 1x Sunglasses Visor 1x Rubber Gasket (to create distance between the visor + matrix and the face) 1x White Headcover 1x Adafruit Gemma 1x Battery Pack 1x Tactile Switch Button __x Jumper Wire __x Heat Seal Gasket __x Glue (Reminder to ask Becky which is best)
I added a sparkle animation to the Arduino code. Here is an explaination below:
uint32_t c This animation starts the function by telling the Arduino to output color across a range of RGBW. As this represents 4 different colors with their respective intensities, this information has to be stored within a large enough range. As color intensity varies from 0-255, the color parameter requires a 32-bit parameter in order to account for the 0-255 range for each color (RGBW). This is because 32-bits represents 256 different combinations of 1s and 0s, for all 4 colors RGBW
uint8_t wait This animation then defines the ‘wait’ time as an 8-bit function — meaning it has the capacity to count to 256 milliseconds (2^8th power). Using an 8-bit variable here saves a few bits of storage and is particulary useful in this case as the pauses between the loop running are very short within the 0 -256 millisecond range. *I found this part particularly interesting as I’ve learned about quartz watches in the past and I wanted to know how this relates.
strip.clear(); This clears the strip of any colors/brightness before the wipe begins
strip.setPixelColor(random(NUM_LEDS), c); This defines the random value that will be assigned to any of the 4 LEDs in this chain. We know there are 4 LEDs because we’ve pre-defined it for our variable NUM_LEDS
strip.show(); The color isn’t pushed to an LED until this ‘show’ line is run.
delay(wait); There is a delay before the loop is run again. This delay is defined by the 100 in the following line sparkle(strip.Color(255, 255, 255), 100);
Halloween Costume Ideas
Daft Punk (MTA Edition)
Daft Punk is back except its not all fun and dancing, its practical MTA train times so you never miss the F again! I could implement a LED strip across the 3D printed visor that would allow light animations to sweep over the screen to display text. With this I may want to change the helmet just slightly to make it more my own and less a replica.
Eve Glasses
In Pixar’s Wall-E (one of the top sci films of this century) Eve’s eyes squint up when she laughs. I thought this is a cool feature to implement into glasses that could be a main piece of a halloween costume. Perhaps the glasses have a gyroscope to squint when the head tilts up.
NYC Crosswalk Sign
Another idea is to have a shirt which functions like the NYC crosswalk. Perhaps a custom animation that is a bit different or unique from the NYC signs could give it an extra kick. Or maybe it walks when I walk and then the stop hand comes up when I stop moving.
A few weeks ago I decided for my project I’d focus on transforming KEWPIE mayonaisse into a nightlight. This simple mayo packaging always stood out to me as a playful and interesting take on packaged food goods and I wanted to incorporate my love for cooking and design into my plushie project.
Pinmode sets the input power to drive from 13 into the positive terminal of the LED. The resistor reduces the overall voltage of the circuit by increasing friction as the LED uses very little power. This inturn makes the circuit run smoothly without short circuiting. The HIGH, LOW functions tell the light to toggle on and off on a delay.
2- ‘Fade’
This setup tells the LED to flash on and off at frequencies so fast that the brain’s slower refresh rate recognizes this as a gradual on and off flash. We know this is true becuase the power is coming from the ‘digital’ terminal which means theres only on/off as a function for the light and not an actual gradual analog fade.
4- ‘Multi RGB’
This is just the blink animation with a more fancy setup.Lights blink in a chain but are triggered by multiple output pins 11, 12, and 13.
5- ‘Push Button’
This animation combines the best of the blink animation with the fade animation coupled with a new and improved multi-color LED. Multiple pin controllers toggle the different color states with a counter variable which describes how the light fades.
We use variables to reduce the amount of memory used on the arduino, storing it once instead of having to state the fade variables for each color trigger.
6 – ‘Potentiometer’
Out of all the setups I couldn’t get my potentiometer to work.
For some reason the code wouldn’t recognize the A0 value.
Proof that an idea is only an ‘idea’ until you execute.
My dog didn’t dog so well in the end. It would appear that all of the narrow forms and shapes that were easily defined in the hand sewing stage didnt make it through to the outside form upon flipping the fabric. In the next phases I will need to create more bodied shapes with less fine details in order to get the silhouette across effectively.
The Circuit Diagram
Plush Night Light Ideas
Piece of Toast
I often forget to eat in the mornings and therefore I’d be designing for myself a night light which is a piece of toast. It lights up in the mornings around 7am and sits in their space or at their desk as a reminder to eat breakfast in the mornings before work/school/starting the day in general.
Materials: Brown fabric for outer ‘crust’ and white for the inner bread area. Light: The arduino box will be housed in the center of the plushie with lights glue to the box itself for easy access. The lights will glow through the fabric to give a warm/diffuse glow to the entire piece.
Kewpie
Do I even need to explain — Its a kewpie bottle for people who love cute cooking products. The front text and image will be embroidered into the fabric. This is a great opportunity to learn how to raster images in embroidery using the VFL tools.
Materials: White fabric for the body and red/yellow embroidery thread for the text and mayonaise portion Light: The arduino box will be housed in the center of the plushie with lights glue to the box itself for easy access. The lights will glow through the fabric to highlight the kewpie logo.
Japanese Lamp
I personally don’t resonate with plushies and soft toys. I think this option would lean into that, using metal wire and sewed fabric to create a hollowed but still soft body lamp that can stand on a desk, table or shelf and illuminated from the center. I used to make Japanese paper lamps and always appreciated their structure and paper construction.
Materials: White fabric for the body and thick gauge wire for the overall strucutre. This option is devoid of internal stuffing as it relies on the wire for structure Light: The arduino box will be housed in the center of the plushie with lights attached to the wire for stable housing. The lights will glow through the fabric to illuminate the space.
Step 1: I began by removing the watch straps from the body of the LG watch. To do this I used the dull back end of the exacto knife, pincing the strap prongs inwards until they released from their housings and the straps were free to e removed.
Step 2: Placing the watch on its face (screen side down) I removed each of the 4 screws holding the casing together with a T5 hex screwdriver. From here I pried the back off again using the exacto knife to work my way under the casing.
Step 3: After removing the back casing to reveal the internals of the watch I proceeded to remove the rubber gasket which created a hermetic seal within the watch body.
Step 4: In order to dissasmble the watch further I removed the 1.5mm screws which pinned the battery retaining clip to the back face of the watch and the LCD screen + motherboard to the front of the watch. Its worth noting here that these two little screws in the front keep both the screen and mother board secured within the casing.
Step 5: Upon removing the screws I was able to lift off the battery retaining clip and the L-ion battery from the back. The battery was glued to the back of the watch casing which makes sense as you do not want to pierce the battery with any sharp objects.
Step 6: In order to remove the screen from the front of the watchface I removed the pin connectors which power the screen and convey touch responsiveness. This plus a generous amount of heat and prying with the exacto blade made it possible to lift the screen from the casing as well as the motherboard. The screen was also secured with a glack silicon glue in order to keep the watch sealed from water and debrie.
One of the most interesting parts to me of the device is the little rectangle marked in green. This is the InvenSense INMP441 micrphone. I was surprised to see that the mic is sodered directly to the PCB board removing the need for additional wires or fastening. While this is standard procedure — and I assume also reduces rattling for the microphone to pick up clear sound — I was surprised that the microphone would be able to pick up soundwaves from so far within the water sealed casing.
Beyond the electronic mechanisms of the device I was also very interested in the shape and silhouette of retainer clasp that houses the battery. The reason for this interesting shape, beyond the fact that this retainer is used practically to retain the battery within its casing, appears when you put the front and back case side by side, like below.
Here you can see the resemblance between the negative space formed by the retainer clip and the shapology of the components on the PCB on the right — including the cutaways for the housing for the Snapdragon processor and the mysterious 2407 DSH 12EDF (highlighted previously with a blue line on the PCB image) ; which has no documented explanation for its use on the ifixt teardown site or online forums.
Tools Used
Shout out to all the tools used in the teardown of this lovely bygone smartwatch — whether they were used for their intended purpose or not they all helped out on a big way and I am grateful. The backwards mounted exacto blade was just what I needed to get under that finicky little LCD Screen and the Electron Tweezers really made me feel I was a rocket scientist splicing the atom.
Hi, I’m Tristan Murff. I’m a multidisciplinary designer based in Brooklyn, and my work moves between product, interiors, and brand design. I grew up between China and Europe, studied International Business in the Netherlands, and over the years I’ve worked across tech, education, and the arts—at places like Mercedes-Benz, a few startups, and as Brand Director for author-historian Yuval Noah Harari.
In New York, I co-founded Graine Studio, where I’ve been exploring how furniture and spatial design can shape identity and human experience through projects like Silence Please and Rhythm Zero. I’m especially interested in form making, ritual, and designing objects and spaces that invite participation rather than demand attention.
At PoD, I’m here to rethink and reapproach design, expand my fabrication vocabulary, and figure out how to scale products and environments thoughtfully—from one-offs to systems.