LED and driver boards used to turn bulky, current-hungry Allen Bradley incandescent cluster pilot lights into something more hacker friendly.
I was recently working on a project and wanted to incorporate one of Allen Bradley’s four-position, four-color cluster pilot lights into the project. A quick search of eBay found several lights with the lens colors I wanted but not at the voltage I wanted. Furthermore, the lights were all incandescent and illuminating just a single segment would pull almost 200mA at 6V. That’s a bit more current and voltage than I could supply from a 3.3V microcontroller or FPGA pin. I went ahead and ordered a few complete lights that had the colored lenses I wanted and hoped I could find some way to replace the incandescent bulbs with current-sipping LEDs.
Controlling the RGB bar graph with a Digilent Arty board and my driver and carrier boards. The bar graph is a bit washed out from the lighting used to take the photo.
I recently picked up a 48-segment RGB LED bar graph from SparkFun. The bar graph’s 144 LEDs are arranged in a common-anode matrix of 16 x 9 LEDs. I was hoping to drive the display with something like a Maxim MAX6954 LED display driver. Unfortunately, that display driver is common-cathode and only 16 x 8. A quick Google search found that most display drivers topped out at a 16 x 8 matrix of 128 LEDs—not enough for this application. I quickly came to the realization that I was going to have to build my own display driver.
In part 1 of this series of posts, we built a giant set of robotic googly eyes. In part 2, we brought the googly eyes to life using an Arduino. In this post, we’ll use OpenCV to make the googly eyes detect and follow people as they move around the room. More specifically, we’ll use OpenCV to detect faces on a webcam and move the googly eyes to look roughly in the direction of the largest face in view.
In this post, we’ll add motion to the googly eyes using a microcontroller and some stepper motor drivers.
In part 1 of this series of posts, we built a giant set of robotic googly eyes. Now it’s time to animate them! To keep the project simple, we’ll use an Arduino Uno and a pair of Big Easy Driver stepper motor drivers. Let’s get started.
The internals of my formerly waterlogged Color Kinetics ColorBurst 6 RGB LED lighting fixture.
I’ve had three Color Kinetics ColorBurst 6 RGB LED fixtures in my front yard for about ten years now. They’ve survived numerous winter snowstorms and spring monsoons. Recently one of the three fixtures started taking on water and the blue and green channels began flickering. Having served its useful life in the front yard, I promptly removed it and replaced it with a new fixture. This left me with a water logged fixture that almost but not quite worked. Time to drain the water and do a proper teardown. Read on to see how a commercial-grade RGB LED light fixture works.
The image above shows two enclosures for a printed circuit board design. These were designed using the inexpensive hobbyist version of CadSoft Eagle and the free maker version of Trimble SketchUp. The free version NetFabb Basic was used to check the design for manufacturing. The enclosures were finally 3D printed at shapeways.com using their EOS Formiga P110 SLS 3D printers. Read on to see some of the lessons I learned while designing and printing these enclosures.
After seeing this cube and this cube, I decided it was time to build an LED cube of my own leveraging the BeagleBone Black and FPGA work I had already done for my six-panel mini video wall. The cube project is essentially purely mechanical since the existing BBB software and FPGA code will work unmodified to drive the cube.
The finished cube hanging from the rafters in my basement.
After completing my first BeagleBone Black + FPGA project and tutorial where I drove a single 32×32 RGB LED matrix, I decided it was time to go bigger. The result is the project shown below—a 3 x 2 matrix of 32×32 RGB LED panels. That’s 6,144 RGB LEDs or 18,432 LED chips—each of which can be controlled with 12-bit color at a refresh rate of 200Hz. Let’s take a closer look at the steps required to move from driving one panel to driving six panels.
576mm x 384mm RGB LED “wall” displaying a frame of Perlin noise. The BeagleBone Black can perform the roughly 600,000 3D Perlin noise calculations required to produce a smooth animation sequence at about 50% CPU utilization.
576mm x 384mm RGB LED “wall” construction showing six 192mm x 192mm 32x32 RGB LED panels, the 3mm thick aluminum frame, two pieces of 20x40mm aluminum extrusion, wall mounting brackets, electronics, and power supply.
My latest project uses a BeagleBone Black and a Xilinx Spartan 6 LX9 FPGA to drive a 32×32 RGB LED matrix.
BeagleBone Black + LogiBone FPGA board driving a SparkFun 32x32 RGB LED panel.The displayed pattern is a frame from a Perlin noise pseudorandom sequence.
This project lets me display cool and interesting patterns on a matrix of 32×32 RGB LEDs. That’s 1024 RGB LEDs or 3072 individual LED chips that need to be controlled! Rather than attempt to control all the LEDs in software only or using one of the BBB’s programmable real-time units (PRU), I decided to use the CPU to generate the patterns and use the FPGA to handle the heavy duty task of refreshing the LEDs.