Project tutorial

FizViz - Large Scale Physical Visualizations for your Stats! © MIT

A platform for creating large-scale wall mounted widgets like gauges, and graphs - bring your data to life and share it at a glance.

  • 15,963 views
  • 11 comments
  • 74 respects

Components and supplies

Abx00004 iso both
Arduino MKR1000 & Genuino MKR1000
We used the MKR1000 with Windows Remote Arduino to stream state over to the FizViz widget.
×1
Adafruit TB6612 1.2A DC/Stepper Motor Driver Breakout Board
×1
Adafruit NeoPixel Digital RGBW LED Strip - White PCB 144 LED/m - 1m
Different densities of NeoPixel strip will work, but the 144 pixels/m strips give the brightest and most localized effect.
×1
Sanyo Pancake Stepper Motor: Bipolar, 200 Steps/Rev, 50×11mm, 4.5V, 1 A/Phase
Almost any stepper motor will work fine - we liked the Sanyo Pancake Stepper because we could hide it in the frame of RotoMoto very easily.
×1
Adafruit 5V 10A switching power supply
×1
Reed Switch : Coto Technology CT10-1540-G1
×1

Necessary tools and machines

ShopBot Buddy CNC
We used our ShopBot to cut out the Mount and Acrylic for the RotoMoto FizViz example. There are a lot of different ways you could do that ranging from a Laser Cutter down to hand tools. So, don't despair if you don't have your own ShopBot (although, we do recommend getting one....)
LulzBot TAZ5
We used our TAZ5 to 3D Print a lot of the plastic parts and assembly components. Having a 3D printer around when building FizViz Widgets is extremely handy. It doesn't have to be as big or bad as the TAZ, but you'll find it super useful for building parts for your widgets.
Form Labs Form1+
The Form1+ is not a mandatory tool, but it's incredible resolution and accuracy allowed us to print some parts that we'd otherwise have to have found off-the-shelf or machined. This saved us time, and let us build some shafts and pieces instead of having to track them down.
Autodesk Inventor
Rhino3D

About this project

Lights, camera, action....

What's a "FizViz"?

We're making Physical Visualizations of data that present information in a large format, super cool, instantly readable way. The concept is that you'd hang a set of FizViz widgets in your office, workshop, or wherever you want to watch and share data that matters:

- How many products did I sell today? How does that compare to my average?

- How many people visited my website? How many pages did they view?

- Am I getting more traffic because of my recent cat video post, or is everyone bouncing because it had nothing to do with my product?

Or, hook it up to other data sources:

- How much time is left in my 3D printing job?

- How many people are here?

- How many Challenge entries have already been submitted for the Hackster World's Largest Arduino Challenge?

Why Did We Make FizViz?

Last year, our team created and launched our first "real" product. We designed, tweaked, crowd-funded, built, re-designed, certified, laughed, cried, swore, and ultimately..... shipped a product. Way harder than we thought (but that's what everyone says).

Then... We began the obsessive metrics watching. How many people visited our product page? Our store? How long did they stay? How did they get there? What happens when we tweet, blog, post, and share? Why the heck did we just sell 10 units when we weren't doing any of those things?

Enquiring minds wanted to know.

Even though we're a dedicated team, not everyone had access or interest in meticulously combing through Google Analytics trying to answer these questions. And, those of us that did found that we ended up looking up the same key analytics, sometimes many times a day. Often, they didn't change much when we looked, or changed a lot when we weren't looking.

Obviously, there are no shortage of online tools and systems for filtering, summarizing, and mashing data in every shape and form. But, they take you away from your flow, and require (somewhat arcane) knowledge of the workflow to get to the things you're interested in.

And, frankly, they're not all that exciting.

They don't get people around the office cheering. They don't broadcast the accomplishments of the team, and the rush of seeing success pile in. They're sterile, digital, and usually solitary experiences.

How does FizViz work?

A FizViz Widget consists of 3 components:

1) A Windows PC or Tablet (we love the Surface) that harvests your data and uses Windows Remote Arduino to send the current state to the FizViz Widget.

2) An Arduino MKR1000 that receives the data from the PC via WiFi and drives the physical controls on the FizViz Widget.

3) The physical components that display the data. Currently, we've got support for:

  • NeoPixel Light Strips for coloured LED effects
  • Stepper Motors for creating dials and gauges
  • Switches for Zeroing or Calibrating Your Gagues (we use a reed switch to find zero on our RotoMoto FizViz Widget)

Basically, the PC does the heavy lifting - pulling data from your data source (we've included source for harvesting Google Analytics) and then sends over state and commands to the Arduino that drives the physical installation.

We've provided all the schematics and info for getting a basic NeoPixel widget with a stepper motor up and running. After that, you can be as creative as you want.

Our vision is to keep building different widgets for different types of data. We've started with one example, but FizViz is really about making the right visualization for the type of data you want to show. There are no rules!

Electrical Overview


Wiring up a FizViz is fairly straight forward. Our latest schematics are always found in the FizViz-Electrical repository on GitHub. Here are a few notes on the components:

  • Arduino MKR1000 - The brains of our operation. Not too much to say here except that it's small, and works great!
  • NeoPixel Strips - Connecting to NeoPixel strips is pretty straight forward - we use an 460ohm resistor (R1) between the data pin and the Arduino. Then, typically, we wire the power supply for the strip straight into our main 5v power supply for the system. Adafruit's NeoPixel Uberguide is the bible when it comes to integrating NeoPixels, and includes an Arduino library you can use in your project to simplify control. Strips may have two ground wires (black). They both get connected to a ground pin.
  • Adafruit TB6612 Breakout Board - Controls any typical stepper motor. Really cool for making things that move accurately such as dials, gauges, or sliders. We used it to drive the needle in our RotoMoto FizViz. Not too much to add here. We followed the directions provided by Adafruit, making it compatible with the built-in Arduino Stepper library for control.
  • Reed Switch - Our RotoMoto FizViz Widget uses a magnet in the needle and a reed switch to detect when the needle is at zero. A different switch such as a micro contact switch or pressure switch could be used here as well depending on the mechanics of your widget.

We packed our electronics down onto an Adafruit Perma-Proto Half-sized Breadboard to stuff into our widget, but depending on your form factor, you may need alternate shapes. Here's what ours looks like:

Firmware / Arduino Code Overview

Our FizViz-Arduino Repository on GitHub contains the latest and greatest version of the Arduino sketch that powers FizViz Widgets. There's a lot more information on the specifics needed to get the project up and running there, but here are a few important highlights:

  • WiFi Configuration - Pay attention to the notes around WiFi config. If you've got a more exotic WiFi network, you may need to dig a bit deeper here. 
  • External Dependencies - We're fairly light in terms of external dependencies, but we do reference a few libraries that you may need to install. The latest libraries are always referenced at the bottom of the page.

Windows / Remote Arduino Overview

Our FizViz-Windows Repository on GitHub is the home of the Windows code for FizViz. Once again, there's a great deal of more specific information on GitHub, so we recommend reading the instruction there in detail.

Our strategy was to start with the Remote Arduino Wiring code from ms-iot. Instead of controlling pins directly from the Windows app, we set up several custom Firmata control messages. We made a small change to the remote-wiring code to allow passing custom messages through to the Firmata layer. Then we implemented custom message handlers in the Arduino project that update the FizViz state based on the control commands from the Windows app.

We also added support for harvesting analytics data from Google Analytics as this is our primary use case for our own FizViz Widgets. Hopefully this will be helpful as a reference, even if you decide to connect to a different data source. There are a number of steps required to set up a Google Analytics account for API access, so please check the repo notes for more details.

Widget #1 - The "RotoMoto"

We built the RotoMoto to showcase the all the features FizViz. It exercises the platform by showing a very cool application of both our lighting and stepper controls in a widget that you could be proud to hang in any office. Our dream would be to have a suite of 4 or 5 of these beauties hanging side by side, but we're going to need more MKR1000's to make that happen!

Construction of your own RotoMoto is pretty straight forward. Even if you don't have all the same tools, there are a lot of ways to achieve the same effects as us with whatever you can get your hands on. The rest of the article explains the build and where you might be able to make some tweaks for different effects.

CAD Repository

First off, we keep our CAD files on Github in the FizViz-CAD repo. You will find STEP and STL versions of the various parts we fabricated to make our RotoMoto widget. 

Additional Parts

Above and beyond our CAD design, here is a list of parts that we used in our assembly:

Description	        Supplier	Part #	        Notes

Stepper Pulley	        McMaster-Carr	1375K15	        15 tooth
Needle Pulley	        McMaster-Carr	1375K28	        30 tooth
Bearings	        McMaster-Carr	60355K701       Used 2
Belt	                McMaster-Carr	7887K28	
Stepper Motor Screws	De Mode Elec.	54-410-100      2.6mmx8mm
Reed Switch	        Digikey	        306-1124-1-ND	
Magnet	                Digikey	        469-1002-ND    0.5"Dx0.125"H

The Mount Board

The backbone of the RotoMoto build is the mounting board. Basically, it houses the mechanical and electrical components and keeps everything tucked away cleanly behind the lit bezel of the display. 

We used a ShopBot CNC to mill out our mounting board from 1" Thick MDF board. There's all kinds of other ways you can cut out the shapes (laser cutter, jigsaw, etc.) but since the CNC is here, that's what we used.

The Bezel

By far, the big feature of our build is the illuminated bezel. We cut this part from 1/2" thick acrylic sheet. Again, on the ShopBot. The key to the illumination technique is that anywhere "frosted" where the surface is cut will be illuminated. You could create markings using a Dremel or other hand-tools as well.

We provided our CAD models cut in half as it's more efficient to use material this way. Join the two parts together with acrylic cement, or merge the model if you plan to do it in one cut (this is how our demo was built).

Inner Ring

The Inner Ring is a key piece in the build - it's where the NeoPixel strip is attached and concealed behind the acrylic bezel. Our fabrication consisted of 3D printing it in large chunks on our TAZ5 out of PLA, and then gluing it together. After a fair amount of filler, and priming, we had a pretty solid ring.

Motor and Mechanical

The CAD repository contains files for a motor mount for our Sanyo Pancake Stepper as well as belt tensioners and a shaft. Installation is fairly straight forward - the belts and pulleys are mounted as shown below. Using two bearings in the mount helps to increase rigidity and keeps the shaft straight.

Wiring

Getting everything to fit is a bit tricky. First, you glue or tape your NeoPixel strip to the Inner Ring so that it's held in place firmly. Then, the wires for the reed switch and NeoPixels pass through the hole in the body of the mount. After that, the inner ring slides through the bezel and into the mount.

A picture is worth a thousand words.....

Finishing Steps

Last thing to pack in the wires and secure everything. It's a tight fit, but we packed it all in. Finish wiring up, and then you should have your very own RotoMoto!


Custom parts and enclosures

FizViz-CAD
GitHub repository containing latest CAD files for FizViz Widgets

Schematics

FizViz-Electrical Repository
EAGLE Schematic and Bitmap Versions of Latest FizViz Electronic Designs

Code

FizViz-Windows
Our GitHub Repo that contains Windows Source code for FizViz.
FizViz-Arduino
Our GitHub Repository that contains Arduino source for the FizViz platform.

Comments

Submitted to Contest

Best Project - USA

World’s Largest Arduino Maker Challenge

Team IoT Design Shop

Iot 1024
Trent Shumay
  • 1 project
  • 11 followers
Default
Andrew Ngai
  • 1 project
  • 6 followers
Photo
Chelsea Jones
  • 1 project
  • 4 followers
Default
Steven Pridie
  • 1 project
  • 4 followers

Additional contributors

Published on

April 1, 2016

Members who respect this project

1070825 10201658716414701 16442639 o copyDefault283766233484b7cfcaa4e422272a21d4CaptureLilshredderSpacemanspiffPhoto3386890

and 66 others

See similar projects
you might like

Similar projects you might like

Cayenne and SparkFun IoT 433 Mhz Sockets

Project tutorial by Giovanni Gentile

  • 454 views
  • 0 comments
  • 5 respects

Mini CNC: A Handmade Masterpiece

Project showcase by Mr-M

  • 6,139 views
  • 2 comments
  • 25 respects

Arduino Controlled Piano Robot: PiBot

Project tutorial by Jeremy Yoo

  • 3,050 views
  • 1 comment
  • 15 respects

Arduino UNO High Precision Counting Scale

Project showcase by Fedeasche

  • 4,660 views
  • 5 comments
  • 21 respects
Add projectSign up / Login