And now for something completely different! Not everything that Dan and I work on is LED related…

For years, our local group of friends have a had a weekly dinner, referred to as Hang Out Time or HOT for short. It was at a different restaurant each week, chosen from a rotating list of options… or at least it was supposed to be. Our friend Miles managed the weekly event creation but then passed off the duties to me a couple years ago. And over time the events (which were scheduled on Facebook) would get created closer and closer to the day, and the rotating restaurants became much less random and from a much smaller list.

At one HOT event a couple months ago, the topic of the poor quality of my planning duties came up and Miles jokingly said I needed to have a computer AI that would create the events for us. But it sounded like a perfect excuse for a fun project!

After a handful of evenings pounding away at some Python code, our HOT scheduling AI overlord came to life… I call it HOTBot 🙂

HOTBot is a small console program (Linux only at the moment) that communicates with Google Calendar, searches for placeholder events with a specific naming scheme, chooses a random event location, and then updates that event with all the pertinent details and invites the event guests.

We’ve been using it for the last month to great success. HOT is every Thursday night and about 30 minutes into dinner an automated email goes out with the Google Calendar invite and event details. Now, as I said, HOTBot is pretty bare-bones… so there’s no internal scheduling of when to run and send out the invites. This is all controlled via Cron which in my case is set up to run HOTBot nightly at 7:30pm. It only searches through the scheduling calendar 7 days into the future and since the events are at 7:00pm, by 7:30pm the next event is within that 7 day range. HOTBot picks a random restaurant (without repeating) and sends out the details.

There’s a lot you can do with entering guests, locations, event messages, etc… but I’ll leave that for the HOTBot Readme. There you’ll also find details on how to install HOTBot on your system.

As with everything we do, HOTBot is open source and free to use 🙂

After we unveiled Colossus back in September, our good friends at WyoLum challenged us to make something awesome with their TiM LED panels and have it ready for the NoVA Maker Faire in Reston, VA on Marth 13th.

Many, many late nights of coding, soldering, 3D printing, and fabricating later and it’s finally ready to show off!

Here’s the specs:

  • 24 WyoLum TiM WS2812 Panels (in a 6 x 4 grid)
  • 64 x 48 Total Resolution – 3072 Pixels!
  • 3 Teensy 3.2’s running modified AllPixel firmware
  • Custom adapter PCBs with 74HCT245 buffer
  • 104A @ 5V Max power draw
  • Up to 60fps
  • Controlled by BiblioPixel
  • 175 3D printed components totaling 15 separate designs
  • Acrylite 7C056 8% transmission black acrylic front cover
  • Frame constructed from 3/4″ MDF
  • 46″ x 36″ x 6″ Total Dimensions

The display is actually divided into three separate sub-displays, each with 8 TiM panels, a 40A@5V power supply, and a Teensy 3.2 controller. These three sections are capable of acting independently, but are coordinated via BiblioPixel’s multiple driver support.

In order to achieve the highest possible framerate, we had to ditch the usual method of treating the display as one long strand of pixels. If we did it that way, it would take around 100ms just to update all the pixels once (WS2812 LEDs use a slow 800khz data rate) and that would mean a max frame-rate of 10fps. No good. This is where the Teensy and FastLED comes in. With some brilliant code from the FastLED guys, the Teensy can control WS2812 LEDs on up to 16 parallel channels simultaneously using DMA (Direct Memory Access). This allows almost no CPU load to push data to 1024 pixels (16 channels of 64 pixels each) in under 4ms. This is what the adapter PCB is for… it breaks out the 16 outputs from the Teensy, through the 74HCT245 buffer (which brings it from 3.3V to 5V logic), and through some impedance matching resistors. This is done three times over (once for each sub-display) threaded in parallel (a feature built into BiblioPixel) allowing for a total update time of under 6ms (there’s a little overhead for the USB). MUCH better than 100ms! This allows a theoretical frame-rate of over 150fps, but in practice it takes longer to generate the frame than it does to push it, so 60fps is more reasonable to expect.

We will soon be posting all of the 3D designs we used, the adapter PCBs, as well as the new animation code for things like displaying videos and audio spectrum as seen in the demo above, once we’ve had a chance to clean things up a little. As usual, the core software is BiblioPixel and PixelWeb which are completely open source.

That’s all for now. Check out the gallery below, or see it in person at NoVA Maker Faire in Reston, VA on Marth 13th!

Ever since working on the Adafruit APA102 Disk, it seemed the next logical step was to apply the same idea to a Christmas tree. So, last year after all the holidays, when everything was on sale, I picked up a 7 foot tall white artificial tree. Green would just not do… too dark for all the color 🙂 It’s still way to early to put up the tree in my mind but, in the interest of beta testing, I figured I would give it a pass this year. To skip to the point and see the results, check out the video below. Or continue past for all the details of how it’s done.

Continue reading

After a long week at the Day Job(tm), I sought the catharsis brought about by creativity and making something. To that end, I took stock of what parts I had lying around. I had been wanting to do something with a couple of TinyTim LED boards I’ve had from previous projects. These displays were sent to us by our good friends at WyoLum. I decided I wanted to mount the 4 panels I had loose and make a nice-looking All-In-One 8×32 display. I grabbed a Raspberry Pi with wifi module, one of our AllPixel LED controllers, and got to work.

IMG_20151115_100654 (Medium)

Continue reading

Last week, we launched PixelWeb which comes with all of the animations in our animations repository but that only gets you so far. You want to add your own of course! Fortunately, it’s not a particularly complicated process and just requires adding a little extra information to your animation file so that PixelWeb knows what to do with it. Check out the video below and read up on the process on the PixelWeb Wiki to learn how.