If you enjoy this post, you’d probably enjoy our developer conference, Signal, in May. You can use BAUGUES20 at checkout for 20% off your ticket price.
A few weeks after we got our puppy, we taught her how to turn on a light.
Turns out Kaira will do just about anything if you can clearly communicate your desires and have a treat in your hand. There’s an Ikea lamp in our bedroom that’s activated by stepping on a floor switch. We started her training by placing her paw on the switch, saying “Light,” and giving her a treat. Once she got that, we’d press on her paw and withhold the treat until she heard a click. Eventually, we could say “Light” from across the room and Kaira would run over and do the job:
So then I started thinking, “I’ve got a dog that can press a button. What can I do with that?”
A couple months after Twilio launched MMS, I was reading through Ricky Robinette’s post on Training Your Dog with a Tessel and started to wonder if we could teach Kaira to send selfies. I’m pleased to say that, thanks to the Arduino Yun and a big red button, the answer is a resounding “Yes!” as you can see in this short video:
What you’re seeing in the video is a cigar box housing a massive arcade button and an Arduino Yun. The second box serves as a stand for a webcam that’s plugged into the Yun. (My local cigar shop sells empties for $2 which make for sturdy and stylish hardware enclosures).
The wifi enabled Arduino Yun has two microprocessors: one does all the pin interaction you typically associate with an Arduino. The second runs a stripped down version of Linux called OpenWRT which can run programs in your favorite scripting language (Python comes pre-installed, but you could put Ruby or Node on there if you so please). This project has one program running on each processor. Together, they are less than 60 lines of code.
The Arduino sketch simply:
- waits for a button press
- runs a shell command to take a picture
- runs a Python script to upload the picture to Dropbox and send the MMS
The Python script uses the Dropbox SDK and Twilio helper library to:
- upload the picture to Dropbox
- get a publicly accessible url for the picture
- use that url to send an MMS via Twilio
If you’d like some more color on how we got here, we’ve documented the entire process from Arduino Yun unboxing to sending MMS in these three tutorials:
- Getting Started with the Arduino Yun
- Take a picture with a webcam and upload it to Dropbox from the Yun
- Send SMS and MMS from your Arduino Yun
What’s most exciting to me about this project, aside from the sheer novelty of my dog sending selfies, is how simple each component is. The button press is literally the second example from Massimo Banzi’s Getting Started with Arduino. The Python script is practically cut-and-paste from the Dropbox and Twilio getting started guides.
Hardware hacking can be intimidating if you’ve never done it before, but remember that the most impressive hacks are often just simple building blocks stacked on top of one another. Wifi enabled devices like the Arduino Yun have drastically lowered the barrier to entry for web developers to dip their toes into the Internet of Things.
So let’s say you had a box that could interact with both the physical world and any web-based API using the programming language you already know. What could you do with that?
Whatever it is, I’d like to hear about it. Hit me up at @greggyb or firstname.lastname@example.org. And if you’re into this kind of thing, you may want to join us in San Francisco on May 19th and 20th for Signal — a conference about the tools and technologies developers are using to reinvent the way the world communicates. Use the promocode BAUGUES20 for 20% off your ticket.
edit: Join the discussion on Hacker News.