Framed faces. The real world status board.

Three weeks ago I got this idea to build something new.

The Idea

At PSPDFKit we use Slack a lot. It's in our veins. One of the routines is to check-in whenever one starts work. To do so, we go to the #inout channel and type just in or out lunch etc. Stuff like that. The Slack online status doesn't mean much. Being online doesn't mean I'm at work.

The idea was to build the framed version of the #inout activity. Present all the people and light a lamp to indicate who is online, and who's offline. In other words: Internet Of Things.

Plan

  1. Build LED matrix
  2. Close it in the frame
  3. Connect to Slack
  4. Switch on the lights
  5. Power from the battery

Prepare

My first thought was to use Raspberry PI, that I already have in the closet. Then I tried Arduino UNO board, but eventually, I ended with the ESP8266 based module that has all I need (small size and integrated WiFi). I bought a clone of WeMos D1 R2 board.

First things first, I bought brand new soldering iron and some LEDs

Basics

About the LEDs. I want addressable LEDs to make things easier. I decided to go with the WS2812B diode. It's a 5V powered diode, easy to connect and easy to use.

WS2812B

Wires

So I started wiring up. First try, if it works on the small scale. Arduino UNO connected to the single LED and powered with the USB from the computer.

it expanded eventually

At that point, I went to the local shop to buy the frame. I decided to buy the frame with the regular A4 size

I already have few LEDs connected one to another, and my Arduino UNO board is powered with the single 9V battery.

The goal is to connect 30 LEDs together, so I had to start some planning when it comes to the surface. For that, I printed out the circles to mark the place where I want to have to LEDs finally.

Soldering

Started soldering

after the soldering, I use the silicon glue to attach the LED to the paper sheet

Sometimes I had to debug and fix the circuit

It took me three evenings in total, but IT'S WORKING

Final touches

The hardware part was almost done, and I packed the module in the small box

and connected to the frame

OH, the frame has the pictures already. Yes, I printed the avatars of the team. 30 people in total (I must apologize, but it was 30 when I started - Version 2 will cover more faces).

I connected the board to the battery and put it on my desk. Now whenever someone writes in, their face will glow

I like the final result.

Software

Hardware is one thing, the other part is software. The ESP8266 module is easily programmed with the Arduino IDE - this is a huge. The IDE lack the proper editor, but the suit works in general. Basic tasks like write code, build and upload is one click away.
The Arduino language to program the chip is C++ (C++11), which I don't know, but my general sense and C knowledge was enough to build the code that

  1. Connect to the WiFi
  2. Connect to the Slack
  3. Parse Slack JSON
  4. Turn on the lights

One of the obstacle when programming such a devices is limited resources. Like... I have few kilobytes of free memory to perform SSL connection, and to parse JSON.

At some point, I had to resign from the clever mapping users just because that took to much memory to store the std::map instance with the values. And I already have to parse JSON with an event-driven parser, because String is too big to store it and parse otherwise.

But eventually, the software is working; I'm testing it for the second day, today. I'm surprised how handy this is. But above all, I'm happy I was able to build it at all.

Ave me.