Close
0%
0%

ATLTVHEAD

Atltvhead is a mashup of interactive art and wearable technology with a message of positivity and encouragement to let your oddities shine!

Similar projects worth following
Atltvhead is one of the first public performance art pieces, centered around wearable technology, that connects the global scale of internet chat to the local people walking in the city of Atlanta.

Let's make technology that helps us connect with others.

Atltvhead Is built from an 1960's RCA Victor Portable Television. I picked it up a little north of Atlanta, Georgia. I thought about trying to refurbish the television guts, which were not working, but ended up with this instead.


As the name implies, you can wear it on your head and see out of it. I walk around the city as a performance art piece, giving away stickers, streaming on Twitch, and interacting with other locals. I like to spread smiles and genuine positive experience. I do not approach people who do not engage with me first. So if you are in Atlanta and see me, say hey!

The build is currently on it's third iteration taking advantage of the ESP 8266 wifi capabilities, my cellphones hotspot mode, Twitch's IRC interface, and FastLED's library. 

You can control the Tvhead while I walk! The tvhead has a function twitch chat bot residing within it. The bot gives people virtual hugs, words of positivity, will take submissions for community goals, and controls aspects of tvheads screen.  See below for chat commands and what parts of the screen change.


This make's Atltvhead one of the first public performance art pieces, centered around wearable technology, that connects the global scale of internet chat to the local people walking in the city of Atlanta.

Tvhead's 2nd build iteration is below.

Playing some tunes while some chat plays my face!  Skip to around 1:40 to see how people manipulate and drastically change the face!

HFGlove - Copy.ino

Updated with active sensitivity adjust

ino - 12.59 kB - 10/07/2018 at 04:11

Download

Atltvhead_2.2 - Copy.ino

Updated with Tvglove actives

- 22.60 kB - 10/07/2018 at 04:09

Download

Wrist Enclosure 1.STEP

Enclosure for the High Five Glove

step - 334.75 kB - 09/29/2018 at 03:49

Download

  • 1 × ESP 8266 Micro on deck
  • 2 × WS2812 Strip per meter of addressable led
  • 1 × Biking Glove or custom if you like
  • 1 × WristBand for the High Five Glove
  • 1 × 3D printer/printing service petg printed out parts for the high five glove

View all 13 components

  • Week 22 and Glove Modifications

    nate.damen4 days ago 0 comments

    Here is a recap from the last stream! I included some content from Week 21 that didn't fit into that recap.

    After completing the snap portion of the glove, which now grants a random chat user an animation, I decided to add in lights.


    The reason lights are important on the glove is to help guide people to the high five and for them to understand that they are changing aspects of the tv/online. I was originally noticing that people didn't notice the tv animation when they high fived. The lights on the glove pulse the rainbow animation when they high five me, and is more in line with their eyes. We look at the hand we are going to high five, not the other person's face.

  • Week 21!

    nate.damen01/09/2019 at 02:36 0 comments

    I've been working on improving the high five gloves functionality! The chatbot also has all the backend  so that I  Can reward people in chat with their own animations!

  • Week 19!

    nate.damen12/04/2018 at 03:55 0 comments

    Participate in the worlds only interactive art and technology piece focused on spreading positive experiences! Oh and it's wearable!

  • Stream Highlights! New Animations (static heart)

    nate.damen12/01/2018 at 05:10 0 comments

    Woo! Added a new animation for High Five Mode, changed High Five Mode to remember the last channel it was on, changed how long how high five mode lasts! I am testing out light diffusers for the leds as well!

    More connectivity through art, tech, and humanity coming up!

  • Happy Halloween!

    nate.damen11/01/2018 at 15:46 0 comments

    Beltline stream from week 14! But something is off with the tvhead this Halloween Week!

  • Stream Summary and Coding Updates

    nate.damen10/21/2018 at 18:09 0 comments

    Hey Everyone!


    I wanted to ensure everyone following that I intend to keep this project going well after Hackaday's contest is over! I will be posting stream summary's and tech updates to Atltvhead, so do not worry! :)


    High five mode creates a 60 second window in which commands do different animations. The rainbow heart command in high five mode now creates these shifting lines of dark and light.  Some may notice it from an example sketch of FastLED. I just changed the colors involved to something I found to be a little more sleek.

    void SetupBlackAndWhiteStripedPalette()
    {
        // 'black out' all 16 palette entries...
        fill_solid( currentPalette, 16, CRGB::Black);
        // and set every fourth one to white.
        currentPalette[0] = CRGB::White;
        currentPalette[4] = CRGB::White;
        currentPalette[8] = CRGB::White;
        currentPalette[12] = CRGB::White;
        
    }
    
    void FillLEDsFromPaletteColors( uint8_t colorIndex)
    {
        uint8_t brightness = 255;
        
        for( int i = 0; i < NUM_LEDS; i++) {
            leds[i] = ColorFromPalette( currentPalette, colorIndex, bright, currentBlending);
            colorIndex += 3;
        }
    }

     The addition of the boolean HFM is how I lock out certain animations or turn them on. Channel 5 is High five mode specific. More  about HFM can be found in the code atltvhead 2.2 copy

    else if(ircMessage.text =="High Five Mode Initiated" || ircMessage.text=="Fist Bump Mode Initiated"){
           color = cHue;
           for(int ppgLooper =0; ppgLooper <= 3; ppgLooper++){
            for(int indPPG =0; indPPG<=5;indPPG++){
              changeHeartHue();
              changeBackHue();
              color = cHue;
              ppg(indPPG);
            }
           }
           color = 211;
           chanel = 4;
           HFM = true;
           channelSwitch = true;
           STime = millis();
        }
        else if(ircMessage.text =="!rainbowHeart" && HFM==true ){
          chanel=5; // new channel for high five mode
        }

     Next on my implementation list is a high five counter. It may unlock certain features the higher it get, or something. I am open to suggestions, haha. It is a good metric for communication of sorts.

    Last but not least, I re-amped the Hackaday Prize video featured below:

  • Highlights from Stream 12

    nate.damen10/17/2018 at 15:48 0 comments

    Hey everyone!

    I just finished editing down last Friday's stream. I had to actually cut a few interactions out to cut it down to a minute, which is a first! 

    I am currently making a few more animations for the highfive mode and hope to fully implement it this Friday :) I'll share it once they are finished!

  • TvGlove 2.1.4

    nate.damen10/06/2018 at 20:27 0 comments

    The high five portion of the Tvglove is working! Check out the recap from this weeks stream, many high fives to featured there.


    The functionality that I want to get out of the glove is to have a physical action effect the chat. Right now, the chat controls the tv screen, but a high five can alter what/how chat can manipulate it for a period of time. Think of it as party mode. As I am working on the code for that, below is my code for the capacitive sensors in the glove.

    Capacitance changes, basically on the time. I code in a dry environment, but get sweaty in an already humid Atlanta. It is also a wearble, meaning my own capacitance can trigger the sensor. The capacitance of the glove must react, becoming more or less sensitive. ESP32 allows for variable control the sensitive, in this case called threshold. The lower the threshold, the more less sensitive the sensor.  My thought to decrease sensitive is based on the idea of a high number of false triggers occur in very quick session. The function gotTouch1 is an interrupt function, only taking place when the sensor fires. I kept a count of the number of times the sensor is triggered and the time between triggers. As the number of triggers get higher and the time decrease, decrease sensitive. On the opposite end, if nothing happens for a minute, increase the sensitivity. I should end up with some oscillation around a working threshold. A real high five takes place between these short triggers, and a minute (where I will readjust sensitivity).

    It is nice, because the sensors are constantly calibrating, allowing it to be reliable as I walk indoors to outdoors, and take the glove on and off.

    int threshold = 60;
    bool touch1detected = false;
    byte touchCount = 0;
    unsigned long touchTime;
    unsigned long oldTouchTime;
    
    void gotTouch1(){
    //figure out calibration here!
    //get time and incriment timer
    touchTime = millis();
    touchCount++;
    // if counter is above a certain # in a certain timeout decrease sensitivity (time is going to be half second)
    if(touchCount >=3 && (touchTime-oldTouchTime)<=400 && threshold > 20){
      threshold=threshold-1;
      // reset count
      touchCount=0;
      }
    // if counter is below a # and a certain timeout increase sensitivity (time is going to be 2 min?)
    else if((touchTime-oldTouchTime)>=60000){ // touchCount<1 && probably doesn't need the <1 touch count. if it creates too sensitive of a sensor, it will be backed off imediatly after. it should jut create more triggers after the high five
      threshold++;
      // reset counter
      touchCount=0;
      }
    // if counter is below # and timer is between sensitivity triggers touch detected
    else if(400<(touchTime-oldTouchTime) && (touchTime-oldTouchTime)<60000){
      touch1detected = true;
      delay(500);
      // reset counter
      }
    // time saved to new variable and reset
    oldTouchTime = touchTime;
    }
    
    

    .

    I also decided to rebuild the tvglove. A problem of the old sensor is that the area for capacitance was too large, so I made smaller patches of sensors. 3 on the palm and one on the knuckles,

    I used Silver conductive fabric, allowing for some tricky, but totally doable soldering!!

    I I stitched all the sensor pads in with regular thread, and sewed some of the cabling as well. This helps with repeated bending of the solder joint.


    I soldered the wires to pins T6 and T0 for now of the esp32. The code up above and the new sensor pads did the trick!

  • High Five Glove Prototype?!

    nate.damen09/29/2018 at 03:09 0 comments

    Hackaday has awarded this project with the HCI award and some financing to help the project. First off, thank you Hackaday!!!!! To reinvest some of the money into the project, explore more HC interactions, and to enhance the Atltvhead experience I am building a high five sensor.

    Most of the communication goes one way, chat types -> the tv changes. But I want to give some IRL people control in chat (at least emoji spam). Allow for some physical action to have a digital presence, just as chat's digital presence impacts the physical screen.

    The Needs:

    • Must be a separate wearable device
    • Battery must last longer than Atltvhead's
    • Must be able to offload as much of the tvhead's chatbot code as possible
    • Must interact with Twitch (wifi) separate from the tvhead head
    • 1 week prototype

    The Desires:

    • Creates a separate mode to for all existing commands
    • Creates a party atmosphere in the chatroom
    • Code offloads all features not directly related to running the Tv screen

    A large part of my design decisions were based around my 1 week constraint. I wanted as close to a functional prototype glove done in time for this weeks stream. So here are the materials I had on hand when deciding what to do:

    • Esp32
    • Prusa Mk3 3D printer (PETG)
    • Steel Thread (conductive)
    • Velostat
    • Biking Glove
    • Wristband

    Luckily the Esp32 has some capacitive sensing pins and features. It even has the ability to have a capacitive touch interrupts (oh boi).

    int threshold = 62; // The higher this number the more sensitive the touch capabilites. 
    bool touch1detected = false;
    
    void gotTouch1(){
     touch1detected = true;
    }
    
    void setup(){
    Serial.begin(115200);
    touchAttachInterrupt(T6, gotTouch1, threshold); //T6 is pin 14
    }
    
    void loop(){
    if(touch1detected){
        touch1detected = false;
        delay(500); // timer based debounce
        Serial.println("Touch 1 detected");
      }
    }
    

    The Build

    For the Esp32, I took the conductive thread, wrapped it around pin 14, soldered the pin closed, superglued the thread, and cut it (I decided not to use the velostat). I rushed a rough CAD housing for the esp32 with some features to hang onto the wristband (files are located in the file section of this project). Lastly, I took the other end of the conductive thread and sewed it into the biking glove. At the end it all ended up looking like this:

    What Impacts Atltvhead?
    When a high five is detected, I triggered the power puff girls style animation to play with whatever color settings for the heart are currently present (something I do not normally allow). The animation ended with a sparkle effect being applied for about a minute. Also the chat gets flooded with twitch emotes! yay! party!

    // I added this to where the chat is being read in my atltvhead code
    else if(ircMessage.text =="High Five Mode Initiated"){
          color = cHue;
           for(int ppgLooper =0; ppgLooper <= 3; ppgLooper++){
            for(int indPPG =0; indPPG<=5;indPPG++){
              ppg(indPPG);
            }
           }
           color = 211;
           chanel = 4;
           channelSwitch = true;
    }
     



    What is next?!
    As of today, I tested it live during a stream. I'll have a highlight video out later this week. There are a good amount of hickups with this design though. How capacitivity changed throughout the stream. I tested it while I was wearing the glove, and even while I was wearing atltvhead to account for the added capacity. However I got sweaty, and sweaty people conduct differently. This caused multiple misfires and endlessly looped the ppg animation.

    I plan to get in some conductive fabric and make a soft button to replace the capacitve switch. I know I know, I could code a constant calibration section to the capacitive touch. If it triggers 10 times in less than a certain amount of time, back off the sensitivity and try again. Actually I probably will code this until I can make the soft button.

    Oh Well that is all! I plan to keep working on the High Five Glove/sensor for Atltvhead and will get that video out soon! Thank you Hackaday for...

    Read more »

  • Everyone is Awesome

    nate.damen09/10/2018 at 01:25 0 comments

    I had an absolute blast with everyone on the stream and out in person in Atlanta!


    I had to split the video up because it is just so big. Here is the first part!

View all 21 project logs

  • 1
    Measure your head

    Before anything can begin, you must know the rough dimensions of your noodle. That way you can find a television that will fit around your head.

    Mine was a size alright.

  • 2
    Find your Television

    I searched good ol' Ebay, Craigslist, but found mine on Etsy (surprisingly).

    Mine measured roughly, 14 in x 10 in x 9 in so it could fit just about anyone.

  • 3
    Gut your Television

    Mine opened up, from the bottom.

    The front of my television was also busted, so I had to make some supporting brackets.

View all 15 instructions

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates