The Trophy of the Future, Version 2


It wasn’t quite the speedrun I anticipated when I first started working on version 2 of the Trophy, but I’m finally ready to call my work done (for now) and ship it off. Here’s a changelog of sorts:

  • [Hardware] Mounted the Arduino to the base using standoffs
  • [Hardware] Trimmed the cables exiting the trophy body and soldered on header pins for a clean connection
  • [Hardware] Glued the base to the trophy body using Amazing Goop
  • [Software] Developed and implemented yun-easy-wifi-switch to allow for user-friendly WiFi network switching
  • [Software] Developed and implemented linino-to-serial for Linino -> Arduino communication
  • [Software] Linino notifies Arduino of boot via linino-to-serial and displays a “loading” message until then (previously displayed nothing until boot)
  • [Software] Trophy displays the full message cycle only once an hour via cron + linino-to-serial (previously was always on)
  • [Software] Updated the Python code to allow for granular control over the trophy’s message buffer
  • [Software] Handle errors thrown by the Kimono API
  • [Software] Overhauled the Arduino code to accept communication from Linino and act accordingly

Continue reading

Yun Easy Wifi Switch

Last week, I retrieved the Trophy of the Future from Dave, our former champion and the caretaker of the trophy for the past year. Now that I have it back, I’m speedrunning some improvements on it before shipping it off to another person named Dave, the new champion.

When initially handed off the trophy one year ago, I noted the four things I hoped to continue working on when I got it back. To sum them up:

  1. Stagger message cycles so that it the program runs once an hour (i.e. make it less distracting to cats)
  2. Create a dead-simple way to reconfigure the Yun’s wifi connection.
  3. Remote login / updating
  4. Animation on the LED array (instead of just scrolling text)

I think number 2 is the most important because the trophy functions best when connected to the internet. The former Dave had the luxury of an in-home installation, but the latter Dave lives much further away and I wanted to make configuring internet on the trophy as easy as possible. This past weekend I decided to make it happen, and  the result of this work is available on GitHub.


Continue reading

Upgrading OpenWrt on an Arduino Yun Without a MicroSD Card

An entire fantasy football season has passed since finishing the Trophy of the Future, my “world’s first internet-connected fantasy football trophy,” and my league has a new champion. That means it’s time to revisit the project to tie up some loose ends! More on that will come in time, but first I want to share the solution to the initial problem I encountered.

I wanted to upgrade the Yun to the latest version of OpenWrt because opkg was throwing weird “failed to download” errors. From scanning the Arduino forums, it seemed like updating OpenWrt was the recommended first step (and as it turns out, the update also fixes Heartbleed, so it’s worth doing anyway). The instructions assume you have a MicroSD mounted in your Yun, which I don’t, but it is still possible to do the upgrade without one.

The OpenWrt image clocks in at 16 MB, and by running df -h I saw that the Yun’s onboard memory had around 20 MB free in the /tmp directory. I downloaded the latest Yun image from the Arduino website and unzipped it on my Mac, then used scp to move the file to the Yun:

scp openwrt-ar71xx-generic-yun-16M-squashfs-sysupgrade.bin root@arduino.local:/tmp/

According to Arduino’s upgrade guide, the next step would be to run run-sysupgrade on the OpenWrt image, but a second problem surfaces here. It turns out that the first thing run-sysupgrade does is copy the image to /tmp, which errors because the file already exists. I could move the file to a subdirectory so run-sysupgrade could copy it back, but the Yun’s onboard memory doesn’t have enough space for that.

The solution here, noted on OpenWrt’s system upgrade page, is to use sysupgrade – note the lack of run- in that command’s name. Like this:

sysupgrade /tmp/openwrt-ar71xx-generic-yun-16M-squashfs-sysupgrade.bin

Three minutes later, you have upgraded OpenWrt on your Arduino Yun! All the configurations should be the same, but you will have to reinstall any opkg packages.

Using pip to Install Python Packages on the Arduino Yún

The Arduino Yún doesn’t come with SSL support, which means no pip and no Python packages. Myself, Adam and Xuedi lost about a day of work last semester trying to find the fix for this, until Google-master Brett saved the day by finding us this link. Clearly these instructions need spreading around the internet, so here they are.

SSH into your Yún and issue the following commands:

opkg update
opkg install distribute
opkg install python-openssl
opkg install python-bzip2
easy_install pip

Then you can use pip install to install whatever packages you need.

Update, 2015-01-02: python-ssl seems to have been replaced (or superseded? I’m not exactly sure) by python-openssl. I updated the code above to reflect this change.

Making the World’s First Internet-Enabled Fantasy Football Trophy, Part 1: Fabrication


The Trophy of the Future (TotF) is the world’s first internet-enabled fantasy football trophy. Being the second-ever and, at the time, reigning champion of my fantasy football league, I felt it would be appropriate to spend some time at ITP producing a trophy to share with the league, so I made it my final project for Peter Menderson’s Materials and Building Strategies class. This post will cover the fabrication of the trophy. To read about the technology behind it, check out part 2!

A few weeks in to the semester we started making molds, and after seeing how much fun that was I had the initial idea of casting a football in clear resin for the trophy. Inspired by this headphone amplifier Instructable and wanting to throw a tech twist into the project, I decided to also embed an LED matrix in the resin that, by way of an Arduino Yún, would display NFL news, scores, and my league’s champions. In this first part of documentation, I will show the steps that I took to fabricate the trophy.

Continue reading

Plant Pinball


Plant Pinball is a virtual pinball game designed to teach users about the role roots play in the livelihood of a plant and the special qualities they have developed that enables them to survive. The project was done for the class Playful Communication of Serious Research, a museum exhibit design class, with teammates Sarah Rothberg, Alexandra Diracles and Fang-Yu Yang under the guidance of Professor Ken Birnbaum.

The aim of the game is to direct a virtual pinball towards one of five targets, representing the files of cells that comprise a plant’s root. Hitting a target causes a cell to divide in that respective file. All five targets must be hit for the plant root to grow, moving it closer to the water. Winning happens when the root grows to the bottom of the screen without drying up. Along the way, players encounter two obstacles: a fungus that eats the tip of the root off and a human who tramples the plant out of the ground. In each of these cases, players must complete a special task before normal root growth can continue. In the former case, we direct players to hit a “stem cell niche,” which plants are able to regenerate. In the latter case, the player hits targets to elongate certain cells, a process known as gravitropism.

Continue reading

Cat Car

Update: I added the video I had looping at ITP’s Winter Show at the bottom of the post. Also, the project got picked up on Engadget – check it out here! You can see my setup at the show and hear me talk about it for a bit.

My final project for Phys Comp is Cat Car, a “Feline Fitness Frenzy!” It was intended as a cat exercise toy, however ultimately the cats I tested it on didn’t really care much for it. But that’s not the point! I learned quite a bit about accelerometers, gyroscopes and XBees along the way, which I’ll share here.

Cat Car lets humans “drive” their cats by turning a laser pointer from side-to-side. The laser pointer is attached to a harness worn by the cat and its angle is determined by a steering wheel. The cat, wanting to follow the laser, will go where it is. We hope.

Continue reading

Tests for Cat Car

Cat Car is a cat exercise device. Using a wireless steering wheel, you control a laser mounted on a servo (mounted on a cat). Steering wheel left, laser left, cat left.

I’m using a MPU-6050 “6 degrees of freedom” accelerometer/gyroscope. I will write a long post later detailing all the issues I’ve encountered (some solved, some I am still dealing with). But for now, here’s a little video.

Tracking Street Noise, Part 2

See part 1. Quick update. Today I built an “enclosure” for my sound sensor. Behold:

The microphone is set back because of how closely I initially soldered it to the PCB. This was impacting the microphone’s ability to capture sound, so after taking the pictures I went back and resoldered it so that it’s flush with the wood. Next steps will be to modifying my Processing sketch to output a CSV file of all the sensor readings so I can run it for hours and analyze it later.