Persistence of Vision Business Card

A circuit in the business card form factor that uses persistence of vision and hand actuation to scroll contact information using LEDs.

Similar projects worth following
This idea was conceived and designed specifically for the 2024 Hackaday Business Card challenge. The idea is to use an MPU-6050 accelerometer and a 1D array of LEDs to draw letters in the air via user hand motions and some signal processing from the accelerometer to detect appropriate times to turn LEDs on and off. Small form factor limits the circuit to be relatively simple. The microcontroller is an ATMega328 configured for Arduino on a breadboard. Circuit will be powered by a CR2032 battery in a holder. Hand soldered on a breadboard with through-hole components for now, hopefully I might be able to develop a second revision using custom PCB and SMT components.

This is a business card that uses persistence of vision to display characters in space generated via hand actuation. An accelerometer/gyroscope is used to detect the direction of actuation to properly cycle through character pixels in the appropriate direction so that the character is displayed correctly for both up and down hand swings.

The project is run on an ATMega328PU which receives telemetry from a GY-521 module which itself is based on the MPU-6050 combination accelerometer/gyroscope. The ucontroller receives telemetry on the Analog 4 and 5 pins via I2C. The telemetry is processed to determine the direction of travel and the ucontroller outputs digital high/low signals on digital pins 5 through 13 to light the LEDs, There are two momentary button switches attached to digital pins 2 and 3 with internal pull-up resistors for user input. 

Here is a video demonstrating the effect: 

The text being scrolled says "DTWPROJECTS.COM" 

A bit labor intensive and expensive to hand out freely but this business card might work better for projecting contact details in a way that stands out - just as long as the room isn't too bright : )

  • 1 × ATMega328PU Microprocessors, Microcontrollers, DSPs / ARM, RISC-Based Microcontrollers
  • 1 × Battery 3V CR2032 Coin Cell, LiCB-CR2032-10
  • 9 × LED Fiber Optics / Emitters
  • 2 × Momentary Push Button 6mmx6mm push button for ucontroller input
  • 1 × Battery Socket Through Hole Battery Socket Holder for use with CR2032 battery - BSH-BB-3V-B-10

View all 9 components

  • Minimum Viable Product!

    DTW Projects06/28/2024 at 22:45 0 comments

    I have finally achieved an MVP! There are certainly more opportunities for optimization and improvement, for starters:

    • Improving the timing and motion detection to stabilize the characters better
    • Improving the user interface for more sophisticated functions using the push buttons as inputs
    • More sophisticated animations
    • Creating a function for updating/adding phrases
    • Increasing the character alphabet
      • Current options are A-Z, 0-9, [space], [period], @,!, and ?

    Nevertheless, I can get the card to display my website "DTWPROJECTS.COM". Unfortunately, rolling shutter frustrates the effects to a certain extent (I had to pull out an osmo pocket and turn the shutter speed as low as it would go - 24 fps).

    I had to work around some faulty issues with the X axis gyro I was sampling to detect up and down motion. I was able to get around the faulty gyro by switching to the Y gyro. It's slightly less effective but seems to work well enough. I may test with another gyro but this iteration should suffice for displaying contact details. It's probably not going to win any prizes but I can now officially consider this a business card :)

  • REV 2 progress and Catching up on history

    DTW Projects06/27/2024 at 18:19 0 comments

    I have been very deficient in project logs and now I will suffer trying to capture development history but here it goes:

    • Ran into persistent issues with REV 1 board where battery browns out and resets the systems. This was most likely due to directly driving LEDs from ucontroller outputs with no resistance to limit current (I'm aware this is generally bad practice but I wanted to get blinkin' quickly- I paid for this with the brown outs)
      • This wasn't an issue when board was powered through Arduino 3.3 V pin which was fine for development and testing but made it difficult to test persistence of vision with all the cables hooked up
      • More than once unplugged cables which were supplying power and providing debug info through arduino serial. Also fatigued a couple cables 
    • Spun a second revision of the board with 800 ohm resistors to limit LED current.
      • Battery test indicated that coin cell can easily handle reduced load
      • 177 mA max current with rev 1 board - All LEDs on. brief research suggests coin cell will be drained in about an hour (abismal)
      • 30-40 mA max current draw with rev 2 board - 8 hours of continuous operation (significantly better and definitely overkill)
      • Regarding power: i've identified a need to incorporated sleep functions into ucontroller and accelerometer to increase battery life
    • Ran into problems with GY-521 boards
      • no telemetry on some
      • registers returning all zeros
      • so far investigation suggests either ESD or damage from accidentally applying 5V. incorporated practed
      • 4 boards useless so far
        • current board won't populate two largest bits on Z acceleration which is unfortunately the more pertinent metric
        • Mitigating by examining X-axis gyro for now
        • ordered more boards to further investigate (maybe I'll get one that works without issue)
        • rev 1 board works flawlessly but has been soldered in (not gonna risk removing as rev1 is my backup for development)
    • Need to post video of test but rolling shutter issues limit the effect

  • Minor board spin to improve testability and development

    DTW Projects06/27/2024 at 00:23 0 comments

    Added a couple photos of a second revision: the original design powered the LEDs from the atmega pins directly with no resistance- this was causing the device to brown out under coin cell battery power. New revision adds about 800 ohms after the LEDs to reduce overall current consumption. Tests indicate that the coin cell ought to be able to provide enough power under this configuration. Finally, no longer constrained to test under the tether of supply wires!

  • Beginning Documentation

    DTW Projects06/23/2024 at 05:41 0 comments

    I had intended to submit project to Hackaday after working out some hardware kinks and finishing software. I wanted a functional minimum viable product before even creating the page. I expected to submit just before the deadline. This is my first Hackaday contest and wanted things to at least work before submitting.

    Was listening to Hackaday podcast and Elliot mentioned he can't wait to see one of the submissions "start working". This reframed my mentality about project submissions- figured I'd try to get stuff in and get it working later.

    I have almost no practice documenting my own projects and want to get better. Creating the .io page is a good start but I have cold feet before completely submitting (still want things to work). Will use .io page to practice documentation and project logging and plan to submit once I have updated with a minimum viable product- this is a step in the right direction. Updates pending soon (the clock is ticking!).

View all 4 project logs

Enjoy this project?




[this comment has been deleted]

DTW Projects wrote 06/30/2024 at 05:27 point

Thank you! That would be great! The circuit currently, mostly exists in my head (I'm trying to get better at documentation haha) but I do plan to try and design a PCB in KiCAD when I have a bit more time, I'd be happy to publish the files when I do! Hahaha, I recently had a very long commute for work and had started thinking about building an LED matrix to display exactly the same messages- though POV would be awesome! You might be able to trade-off the wiper's slow speed by adding a few extra rows of LEDS in the direction of motion to display more of the character- sort of like widening the "window" sweeping over the message to revel more of the character over time so that it persists a little longer. That was some of my thinking with this card- that I might use the accelerometer/gyro to detect some of the side-to-side motion of my hand and shift the LEDs to light of when they scan over the same pixel in space. Right now the gyro only detects reversal of motion in a binary sense though (i.e. up/down)

  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