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 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!

  • 1 × ESP 8266 Micro on deck
  • 2 × WS2812 Strip per meter of addressable led
  • 1 × 74AHCT125 Logic ICs / Buffers, Drivers, Transceivers
  • 1 × 1960's RCA Victor Portable Television
  • 1 × Hotspot of some sort (I use my phone)

View all 6 components

  • 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!

  • UX Experimentation

    nate.damen09/06/2018 at 01:43 0 comments


    I've been thinking a lot about how to create a better experience for online/phone users of Atltvhead. Below is the old mobile site layout.

    Something I thought was frustrating about this was the idea that tvhead had to be linked to channels. They are not descriptive, and from my view point, did not even attempt to accomplish any sort of positivity. I also added effects and stuck closer to the heart theme

    Below is an image of my new mobile site!

    The channel 1 was changed to a <3 heart! I had powerpuff girls like heart animation that existed as a separate command. I found that out of the 7 streams, I only had this animation triggered twice naturally. So I combined the <3 heart screen with the animation. Now after three people change the screen to the heart, it will trigger the powerpuff girls animation!

    Rainbow now is a rainbow heart with modifications. The mirror effect can be applied to get some cool symmetry out of the heart rainbow. Another fun command is called FULLRAINBOW! For 2 seconds the screen will fill with the rainbow effect (with and without mirror added on top). The more people who go fullrainbow, the longer the screen will remain in full rainbow animation. I thought it was fun, and please let me know if this offends you, as I do not wish to and would be willing to change the name.

    All the Best!


  • Week 7 Stream Highlights

    nate.damen09/02/2018 at 03:38 0 comments

  • Highlights from Streams 3,5,6

    nate.damen08/26/2018 at 15:40 0 comments

    I decided to even rollerblade with the tv!

  • Highlights from Stream 2

    nate.damen08/02/2018 at 18:56 0 comments

    Here are some highlights from the second streaming session! 

  • The Rube Goldberg Website Button

    nate.damen08/02/2018 at 16:06 0 comments

    ***Edit to use the website buttons, the Atltvhead must be on, I live stream every Friday 6pm Est. 

    Oh man! What I am about to share with you is not the best example of coding, making, communicating, but it works!

    Here is a photo from my mobile site and buttons: 

    Design intent: give non twitch users ability to change the screen

    -buttons on my website (not a mobile app)

    -literally zero changes to the atltvhead microcontroller code

    -must work with Wix we site

    -must work with me existing interface/api

    Process Flow:

    Wix Javascript -> Google Api Python (email)-> Twitch Api Python -> Twitch API C++ (Atltvhead)

    Build Out: Wix

    Since my website is hosted on Wix, and I didn't want to buy a home server to host my website and possible open my networks firewall, I had to figure out a way to send out button presses. 

    Wix Code is a relatively new way to intereact and design for Wix websites. See the photo below.

    This Javascript based side of the websites allows for button presses to trigger lines of code. It also allows for the addition of website users from the back end. 

    For my website, I was able to make these button presses send a premade email. The subject of the email changes for each button. The email address and particular subject lines will be read with a Python script in the next section.  Below is the code from my wix site. 

    import wixCRM from 'wix-crm';
    import wixUsers from 'wix-users';
    export function ButtonOnPress(event, $w) {
        //Add your code for this event here: 
                wixCRM.emailContact('Pre_Made_Wix_Email_Here',contactId, {
                      variables: {
                command: 'Subject_Here'
            .catch( (err) => {

    Build Out: Python Script

    To use this script you will have to follow Google's Python API getting started guide and give permission to modify emails. You will need a Google email account, and a twitch account for the chatbot to function.

    How this Python script functions by constantly reading the unread emails in an inbox. When a particular subject is found it sends a message to the twitch server, putting text command into the chat of a particular streamer. It finishes by marking that email read and continuing to read the unread messages in the inbox. 

    Find more info for the Google side here and Twitch side here!

    Shows basic usage of the Gmail API.
    Lists the user's Gmail labels.
    from apiclient import discovery
    from apiclient import errors
    from httplib2 import Http
    from oauth2client import file, client, tools
    import base64
    import cfg #configure file with Twitch account, Aouth password, and which stream chat you are going to 
    import socket
    import re
    import time
    import multiprocessing
    def chat(sock, msg):
        Send a chat message to the server.
        Keyword arguments:
        sock -- the socket over which to send the message
        msg  -- the message to be sent
        sock.send("PRIVMSG {} :{}\r\n".format(cfg.CHAN, msg).encode("utf-8"))
    s = socket.socket()
    s.send("PASS {}\r\n".format(cfg.PASS).encode("utf-8"))
    s.send("NICK {}\r\n".format(cfg.NICK).encode("utf-8"))
    s.send("JOIN {}\r\n".format(cfg.CHAN).encode("utf-8"))
    CHAT_MSG=re.compile(r"^:\w+!\w+@\ PRIVMSG #\w+ :")
    # Setup the Gmail API
    SCOPES = '' # we are using modify and not readonly, as we will be marking the messages Read
    store = file.Storage('storage.json') 
    creds = store.get()
    if not creds or creds.invalid:
     flow = client.flow_from_clientsecrets(...
    Read more »

  • First Stream HyperSpeed!

    nate.damen07/30/2018 at 16:35 0 comments

    Just wanted to give N update! I was able to finish the new atltvhead screen controls onto my website

    I'll be documenting the process in detail soon. It is quite the Rube Goldberg of code, running through Wix code, to Google API, and finishing at Twitch API. All in an effort to keep my household behind a firewall. It runs in a combo of Java Script and Python. 

    Also I am editing the video from a stream on July 27th. I had a good amount of twitch chat to city goer interaction! Thanks to @theotherlonestar, oooKaylie, and Alex Atkins!

    To finish off, here is a short video of the stream on Friday, July 20th.  

  • Starting to Give "Offline" People Tvhead Controls

    nate.damen07/16/2018 at 19:36 0 comments

    While walking with the tvhead on for the past few weeks, I've been thinking more about how people can interact with the tv controls in person. There are ways for chat to control it, but how do I give someone in front of me access to the same interaction/play. 

    I am working on a way to add a few buttons to control the animations from my website, while still going through the Twitch chatbot API. This will give some amount of chatbot control to people without a twitch account. It's weird but the bot will become a limited way for people in life to interact back with chat, as much as chat can interact through the tv. I'll be playing with how the interaction should play out.  If "offline" people will give suggestions for chat to help with or if they should have direct control like other chat members.

    Just wanted to give everyone a note as to the progress and what I am currently working on. 


    Every Friday 6pm est, I'll be streaming and walking in the city! So come on out (online) and control Atltvhead!

  • Some New Video's About Controlling the tv Screen!

    nate.damen06/15/2018 at 14:53 0 comments

  • Hackaday Prize Submission!

    nate.damen04/24/2018 at 00:24 0 comments

View all 12 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 13 instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

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