Sarah’s Final Project: Slither

Slither is a desk pedometer, it tracks your steps and displays them visually. It is the perfect product for people who spend too much time at their desk. Instead of relying on your iPhone or Apple watch to remind you to get up from your desk and start walking Slither takes care of those reminders in sleek way. This decorative desk piece lights up to show you your progress towards walking your 50,000 step/week goal.

Slither’s form came from…a snake. Slither actually started as a painting I made for fun it evolved into a vector and now a pedometer. I definitely pushed my boundaries trying to create such a complex shape that contained several pieces.

The Materials

  1. Passion fruit Acrylic
  2. Hall effect sensor + Magnet 
  3. Adafruit HUZZAH ESP8266 wifi Breakout
  4. Wires
  5. Soldering Kit + solder
  6. 2 x Adafruit NeoPixel LED Side Light Strip – Black 90 LED 
  7. Hot Glue gun (with glue) + Gorilla glue
  8. IFTTT + Adafruit IO accounts
  9. Scrap wood
  10. 5V 2A switching power
  11. .75″ PVC pipe
  12. Edge tape
  • Machines
    1. CNC (wood)
    2. Laser Cutter (acrylic)
    3. Sander

The Build
Construction started with the CNC machine. We spent a lot of time together. Probably too much.

Once I calculated the dimensions I would need I CNC-ed my shapes out of plywood. I made sure to add dowel holes so the wooden frames would align properly.

I had to do some extra chiseling and sawing to get the shapes out. I also cut some PVC pipe that would be my on/off switch.

My wood frames needed lots of sanding. Next, I used the dowels to stack the frames on top of each other. Each frame had a layer of wood glue. I clamped that together for 30 mins.

Next I used the laser to cut the same shape out and also some circles for the PVC piece.

My feather huzzah board was connected to both a hall effect sensor and two strips of LED lights. The hall effect sensor is a sensor that turns on in the presence of a magnet.

Not pictured: lots of soldering…and resoldering…and oh no it broke soldering.

Next up, start trying to fit the huzzah board and LEDs.

I glued the acrylic piece to the top wood frame

Next, I glued an acrylic circle to cut PVC pipe. Wet wood strips and molded it to the cylinder volume before gluing.

The Code & Circuit
I used IFTTT to create a trigger for the Fitbit app. Every day the Fitbit app would fire a notification to my Adafruit IO feed with a step count. I set a goal for 50,000 steps. Slither would continue to light up until 50,000 steps was hit. When it hit the goal slither would go dark and reset.


The CNC proved to me very time consuming. I think I will be more aware of the time it takes in the future and the problems that may arise with working with a machine like that. Lots of testing had to be done and many of the frames I wasn’t super happy with I ended up using for times sake. Sanding these frames was difficult because of the small spaces between.

If I were to do this again I would definitely probably try not to fit everything into the snake. Trying to fit it all inside caused lots of electrical issues and broke my circuit a few times. If I did try and fit it all inside again, I would make the head larger. I wasn’t able to finish the back pieces because the gap wasn’t large enough.

I wasn’t able to UV print on the acrylic because it was broken. Funnily, the placement for the dowels ended up looking like eyes anyway. If I could make this again I would add a layer of matte clear plastic so you didn’t see the gaps for the LED channel so much.

What I learned

  • 3D print probably would have been easier
  • Don’t get so complicated with shapes for the CNC machine
  • Compressed boards would probably have been better than plywood in terms of chipping
  • Mini LEDs are very difficult and time consuming to solder
  • Hall effect sensors aren’t as sensitive as you’d think
  • Laser cutting is pretty easy
  • You can do weird dancing when PoD is empty


The Code

#define IO_KEY         "YOUR IO KEY"


#include "AdafruitIO_WiFi.h"

/************************ Main Program Starts Here *******************************/
#include <ESP8266WiFi.h>
#include <AdafruitIO.h>
#include <Adafruit_MQTT.h>
#include <ArduinoHttpClient.h>

// #define BUTTON_PIN 4
//#define LED_PIN 13

#include <Adafruit_NeoPixel.h>

#define PIXELS_PIN 15
#define NUM_LEDS 180
#define BRIGHTNESS 50
#define HALL_SENSOR 2

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIXELS_PIN, NEO_GRB + NEO_KHZ800);

int state = 0;
int TotalSteps = 0;
int ledlevel = 1;

// button state
//int current = 0;
//int last = 0;
//int sensorValue = 0;

// set up the 'command' feed
AdafruitIO_Feed *slither = io.feed("slither");

void setup() {

  // set button pin as an input
 // pinMode(TotalSteps, INPUT);

  strip.begin();; // Initialize all pixels to 'off'

  // start the serial connection

  // connect to
  Serial.print("Connecting to Adafruit IO");
  // set up a message handler for the 'command' feed.
  // the handleMessage function (defined below)
  // will be called whenever a message is
  // received from adafruit io.

  // wait for a connection
  while(io.status() < AIO_CONNECTED) {

  // we are connected


void loop() {

  //; is required for all sketches.
  // it should always be present at the top of your loop
  // function. it keeps the client connected to
  //, and processes any incoming data.;
  ledlevel = map(TotalSteps,0,50000,0,strip.numPixels());

  state = digitalRead(HALL_SENSOR);
  if (state == LOW){
    Serial.println("Hall Effect Sensor Activated");
    Serial.print("LEDs to light up: ");
for(int i=0; i<ledlevel; i++) { 
   strip.setPixelColor(i, strip.Color(100,0,30)); //on;

  else {
    Serial.println("no magnet detected");
for(int i=0; i<strip.numPixels(); i++) { 
strip.setPixelColor(i, strip.Color(0,0,0,0)); //off; 


// this function is called whenever a 'command' message
// is received from Adafruit IO. it was attached to
// the command feed in the setup() function above.
void handleMessage(AdafruitIO_Data *data) {

  //int command = data->toInt();
  TotalSteps = TotalSteps+ (data->toInt());

Serial.print("steps counted: ");

if (TotalSteps >= 50000){
  TotalSteps = 0; 


// else {

    //Serial.println("no steps");

//  //change NeoPixel color here using format strip.Color(R,G,B,W)
//     strip.setPixelColor(0, strip.Color(0,0,0,100)); //turn off NeoPixel
//     strip.setPixelColor(1, strip.Color(1,0,100,0)); //turn off NeoPixel
//     strip.setPixelColor(2, strip.Color(2,100,0,0)); //turn off NeoPixel
//     strip.setPixelColor(3, strip.Color(3,100,100,0)); //turn off NeoPixel
//     strip.setPixelColor(4, strip.Color(4,0,80,40)); //turn off NeoPixel
//     strip.setPixelColor(5, strip.Color(5,90,0,20)); //turn off NeoPixel
//; //always remember to call to display changes
//     delay(500);
//     strip.setPixelColor(0, strip.Color(0,0,0,0)); //turn off NeoPixel
//     strip.setPixelColor(1, strip.Color(0,0,0,0)); //turn off NeoPixel
//     strip.setPixelColor(2, strip.Color(0,0,0,0)); //turn off NeoPixel
//     strip.setPixelColor(3, strip.Color(0,0,0,0)); //turn off NeoPixel
//     strip.setPixelColor(4, strip.Color(0,0,0,0)); //turn off NeoPixel
//     strip.setPixelColor(5, strip.Color(0,0,0,0)); //turn off NeoPixel
//; //always remember to call to display changes
//  } 

Nihaarika’s Mood Tracker Blog Enteries

Pitch Message


The IoT mood tracker is a device that provides feedback to student advisors on how a group of students is feeling. Graduate school can be extremely challenging. Sometimes it gets so bad that students get burned out. What if student advisors knew that students were not doing well before they reached the burnout stage?

The IoT Mood tracker uses a suite of Adafruit products, Adafruit IO and IFTTT to invite passersby to hit a physical thumbs up, thumbs down, or thumb level that represents the mood they are feeling. When any one thumb has been pressed a certain amount of times, the device sends an email to a student advisor.

Watch the IoT Mood Tracker in action here:

Link to Instructables:

A sample social media message:

Ever got burnt our with schoolwork? This IoT Mood Tracker helps student advisors know how a students cohort is doing to keep burnout at bay. The device uses thumb-shaped buttons, electronics and the internet to record student moods and relays the info to school administrators

Blogs we sent our Pitch to

Arduino Education

Jaemin’s Final Project

From smog hanging over cities to smoke from wildfire, air pollution poses a major threat to our health. Visibility is easily impacted by air pollution. As we have more and more bad air days, we get more of blurry, hazy vision.

Using Visibility as an Indicator for Air Quality

We always use colors to indicate the air quality. In this concept, I added one more visual element—the visibility.

It has 4 layers of mountains which are made of acrylic sheets and 5 row of LED strips which light up the mountains and the wall behind it.

Not just color of the LED but also the number of lit LED strips constantly change, depending on the air quality. For instance, when the air quality is terrible, only the first row of LED turns on in red and all you can see is the silhouette of the first mountain.



Arshi’s Final Project


“Why don’t you call me anymore?” – Mom

Since it’s a different time all around the world, it gets very difficult to track down what time to call my parents or what time to watch the soccer game live from the UK. With this timezone clock- you are able to press on a specific country, and it will display the time in that country.

Living in the U.S has made me realize how many of my shows and soccer games I was missing so I designed this timezone world lamp to help me know what time it is in another country.

Understanding Spheres & 2D Patterns.

By comparing a map and a globe, I realized that a 2D pattern would not make sense in a 3D globe. The geography looks totally different between the two because spheres are deceptively simple. I tried multiple spheres patterns to test out how it would fit on a globe.

Essentially, it’s mathematically impossible to get the visuals from a globe to lie distortion free in a rectangular 2D pattern. To calculate the size of the print, i sized the circumference of the globe to match longitudinally to the size of the pattern.

To replicate this pattern onto any spheres, measure the diameter of the globe and then scale the length of the pattern to match the diameter.

Building the Circuit

For the capacitive touch sensor, I used the 8-Key Capacitive Touch Sensor Breakout. Using the instructions from the Adafruit website, I was able to wire up and use the test code instructions. For the screen display, I used the Standard LCD 16×2. Test both the

Because I am using two i2c devices, I had to change the address for one of them. We do this to connect a bridge to the solder pads. The diagram on Adafruit shows how to perform this carefully. The code also needs to match so we need to adjust it accordingly.

Now we can connect the data and clock lines in parallel. The diagram shows it with two different i2c devices but with a different microcontroller board.

Write the Code and Test the Connections

Link to instructables:

Bill of materials


  • X-Acto Knife
  •  Ruler
  •  Sharpie
  •  Printer
  •  Cutting mat
  • Masking tape
  • USB cable

Kaylan’s Sculptural Light


This interactive table light fixture was inspired by the work of famous mid-century designer, Gerrit Rietveld. Each panel is touch-activated and is independent from one another, allowing for endless color possibilities.



The making part went pretty smoothly since I’ve used acrylic in a previous project at POD.


1. Soldering

Pretty amazing how big of a difference 1mm makes. I initially bought 4mm extra narrow LED strip and it was impossible to solder. The wires kept falling off. I ended up getting a new 5mm strip last minute and it worked much better.

2. Switching from Huzzah back to Uno
Arduino Huzzah
Arduino Uno

I initially started on the Huzzah board but couldn’t figure out how to sync the LED strip to the sensors, even though the sensors were working. Because I didn’t need internet connectivity anyway, I decided to switch back to Uno.

3. Coding

Coding has always been my weakest skill. After a lot of back and forth, I came across the “buttoncycler” code which I was able to modify and perfected with the help of Becky.

4. Only 2 out of 3 panels work…

In the initial test, all 3 panels work perfectly independently but once assembled, in the first test run, something must have happened because the sensors become not so sensitive anymore and I had to tap repeatedly in different spots for quite a while to trigger the animation.

Edited version
Unedited version

Next Steps

  1. I would love to take apart the two panels that are not working and try to fix them.
  2. I did not anticipate the wires to be so bulky – makes sense since there are 4 from each panel – I would like to try using all white wires for a more refined minimal look.


Liam’s Pharus Lamps


The name Pharus comes from the latin word for Beacon. I chose this because of the characteristics that many of us attribute to that word. A beacon of light is physical, but also emotional and spiritual. By connecting through the internet and effecting each others light, it provides the connection and the sense of safety that a beacon provides, even when you’re far away.

Instructables Link

Progress Photos / Sketches

Stage 1:

Stage 2: Exploring forms

Stage 3: Breadboard & Code

Stage 4: Solder-type Breadboard & more code

Stage 5: 3D Model and Mold Making

Minor Hiccups

Stage 6: Casting Cement

Stage 7: Final Circuit and Lamp Lid

Charvi’s Final Project WIP

My friends and I have a tradition of calling each other at exactly midnight, so that we are the first ones to wish. But since moving to the States, I have been struggling to keep up with the time difference between India and the US, and keep missing out on my friends’ birthdays.

I want to create a device that I wish my friends could have gifted me before Ieft home.

Meet “Better Not Forget My Birthday!” plush toy. It’s a red velvet cupcake with white choco-chips. It comes in a fun dessert-like packaging and has a funny message on the inside, reminding your forgetful friend about things more important than grad school!

Inspiration images
Different components of “Better not forget my birthday”

Movie Scenes

  1. Your best friend tells you that they are moving to another country
  2. You’re super happy for them
  3. They have been running super busy with packing and last minute work
  4. You haven’t had a chance to meet them at all since you heard the good news
  5. You wonder if they will forget you once they move abroad
  6. You walk by a window display and see “gifts for a friend moving away”
  7. You find “Better not forget my birthday! and think it’s the perfect gift.
  8. While saying emotional goodbye to your friend at the airport
  9. You hand them over the beautifully packaged “dessert” box
  10. The friend opens the box and you both start laughing.
  11. A few months later, it’s your birthday and the friend, busy working on their laptop, and the red velvet cupcake glows softly at 1.30 PM, not distracting the people working around like.

Jaemin’s Final Project Progress

  1. Concept
    • Name : Mountains (Air Quality Visualizer)
  2. Form (Rendered)
Material – Acrylic boards and Wooden base

Indirect lighting : Each layer of mountain diffuses light

2. Circuit Design

3. Prototype

4. Google Doc

(Work in progress)

5. Instructables Account