SelfiesBot is a Twitterbot that takes...Selfies! The Twitter feed for @selfiesbot is here.
SelfiesBot is a sculpture that uses a Raspberry Pi to take a photo, preview it and then post it to its Twitter account.
This Instructable will give details of the software, electronics and physical construction involved with SelfiesBot. This is by far the most complex Instructable that I've written.
Step 1: Conceptual Development
As with all of my art projects, I spent a lot of time thinking this one through.
SelfiesBot is the crown jewel of my Bot Collective — a series of Twitterbots. Each bot has a “body” (a sculptural shell) and a “brain” (a microcontroller that sends Tweets), making the collective a set of network performance art objects.
SelfiesBot takes the phenomenon of the "selfie" and puts it into an automated form. The bot takes a picture of itself...or does it? Push button controls make operate it. A mirroring effect takes place as it looks infinitely into its own preview monitor.
I discovered two things early on:
1. People like to pose next to SelfiesBot — such that the human selfies meme continues.
2. I quickly discovered that pictures alone aren't very compelling. So, I modified SelfiesBot so that it combines each photo it tweets with random text that scraped from Twitter that uses the #selfies hashtag. People don't know what the text will be, so SelfiesBot acts as a sort of roulette wheel of collaged image & text.
Step 2: Flowchart the Interaction
I divided the project into three stages:
Using the GPIO, SelfiesBot has a series of buttons that let you take pictures, save them, post them and delete them.
Using Python and the command-line environment, SelfiesBot interfaces with the electronics with a simple UI to let you take images, manage them and tweet them.
SelfiesBot is a sculpture that houses the electronics and software, hiding them.
I built the basic electronics first and then the software.
What was extremely helpful was creating this flowchart that shows the interaction of the buttons and different UI screens. It could have been easy to skip this step, but oh, was I happy to diagram in front of me when coding the interface screens in Python.