OutSystemsDev Zone

How to Fill a Gaping Hole with 2,304 LEDs

I woke that morning feeling like I do every morning, groggy and desperate for coffee. I descended the staircase from my bedroom to escape the unforgiving morning light. To my bewilderment, a second barrage of relentless sunbeams hit me in the face. My living room ceiling had caved in.

Hole in the ceiling

Most people would stare at a gaping hole in their ceiling and curse the gods that put it there. They would assess the damage, call a contractor, and shake their fists in rage. And that’s what I did. But in the dark recesses of my mind, I was already formulating a plan. This hole wasn’t just a nuisance, it was the beginning of my greatest home-hacking adventure.

At age 13, I began to tinker with electronics. I convinced my parents to buy me a do-it-yourself book on the subject and an actual soldering iron. What were they thinking? Despite my excitement, I lost interest in the analog world when a ZX Spectrum entered my life. My first computer.

ZX Spectrum 48k

It couldn’t “break the Internet,” but it could break SPACE

My parents thought I would play games on the ZX, but I hacked it instead. Programming was enticing and lit a passion for software in me that has yet to die out. But 8 years ago, I was finally able to reconcile my one-time interest in electronics with my joy for coding. I discovered the Arduino platform.

 

Arduinos are pocket-sized computers that perform a limited set of operations. They accept an input, like a button press or a text message, and send an output. Their massive ecosystem of add-ons made building complex electronics feel like stacking Legos. For programmers who want to turn their things into Internet things, Arduinos are perfect.

 

Most landlords don’t let tenants hack their appliances, their blinds, or their front lawn. That’s why I moved into a detached house in the country. I moved far away from pesky landlords and mad-science fearing neighbors. So I cracked my hacking hands and gleefully put all my automation dream projects into motion. Arduinos began to spring up in my house like mushrooms.

 

I built a solar heating and ventilation system, an air conditioning controller, a shutter blind controller, an irrigation system for my lawn, a LED lighting system for my couch, a — getting carried away here. About a year later, we were getting ready to blow the candles out for my son’s birthday. A guest remarked that our Christmas tree was giving off too much light for the occasion. I whipped out my phone, tapped a button the screen, and the Christmas tree shut off. My cool-dad factor skyrocketed.

LED Sofa

Cue Barry White

I was proud, but these projects felt small. I had big dreams, and those dreams involved hacking my entire living room ceiling. The ceiling was bare, hospital white, and stretched on for an eternity. I had to do something, but what? I put the project off repeatedly by telling myself, “later,” “you have no time,” and, “what do you even know about ceilings?” But this gaping hole was the catalyst that silenced my doubts and set in motion a whole ton of awesomeness.

 

First, I had the leak fixed. I left the hole in the ceiling open for several rainy days just to be sure. Then it was time to plan. I drew inspiration from my LED couch project: who wouldn’t want a 70s dance floor on their ceiling? Measuring time. I had enough space for a 4 by 9-meter rectangle. I needed about 60 LEDs per sq. meter to maintain an adequate light level, which meant a total of 2,304 of those little suckers.

 

My mind asked what every good developer’s mind asks when faced with a problem. Has someone already solved this so I don’t have to? It turns out, someone had. I could buy pre-built single LED modules and use them in an array. And if I had started to save enough money to buy two-thousand of them, I would still have a hole in my ceiling right now. I was going to have to do this my way, the cheap-as-dirt way.

 

It was a custom job in every sense of the word, so I tailored it for my needs. I couldn’t limit control to smartphones, that didn’t make sense for a light. It needed to work by a switch, too. And I wanted a fixture of this size to be maintainable. But guess what? Addressable light strips wire the LEDs in series. That means that if one goes out, they all do, like some kind of LED suicide pact. Dismounting and repairing a single module had to be effortless.

APA102 and Close-up

Left: LEDs in series; Right: single LED

And the most important design concern of all: this light had to inspire awe. It had to be more than just a matrix of boring point light. I wanted the entire panel to feel alive; to drift through organic patterns. Basic Arduino’s weren’t going to cut it; I needed to upgrade the software and the hardware. I discovered the ESP8266 combined with the Open-Source NodeMCU firmware. This microcontroller provided more power and more memory. It also had integrated WiFi at a bargain-bin price that I couldn’t resist.

Controller Board

Doesn’t get sexier than this, folks

With my architecture in mind, I set out to build a prototype. Prototyping the entire unit would’ve been costly overkill. So I stuck to hacking a single row of 32 LED modules together. I struggled to choose the right material for the housing. I tried plywood, cardboard, and even styrofoam. The cheap options felt, well, cheap. Then I got my impatient hands on medium-density fiberboard. MDF was simple to cut and looked great painted — moving the hell on.

Panel Design and MDF Prototype

Top: Panel design; Bottom: MDF prototype

When it was time to put the LEDs into the housing, I ran into another problem — yay me. The off-the-shelf LED strips, like the kind I used for my couch, were no good for my groovy panel. These strips packed the LEDs like sardines: way too close together. But more luck came to my side. AliExpress let me order a custom strip with the exact spacing I required. (Stay tuned for my next IoT invention: The Shameless Plug).

 

My prototype was ready after a week of cutting, painting, gluing, burning myself, screaming in fury, and crying long into the night. And if I had to make 71 more of them by hand, to see me, my children would’ve had to visit the psych ward. The end.

LED Panel First Prototype

Behold, the nerdiest jack-o-lantern

It would’ve been the end if I hadn’t found a nearby woodworking shop that had a CNC router. That’s a device capable of precision material cutting and it follows a computer-guided pathway. It’s basically a robot carpenter sent from the future to warn us about Skynet. I ignored its prescient AI warnings. And I ordered it to construct 72 clones of my you-get-an-A-for-effort MDF panel. And in several weeks, they would arrive.

 

Meanwhile, birthday season was fast approaching. I call it birthday season because my kids celebrate one month apart, and the season was almost upon us. If I wanted the lights ready in time, I’d have to speed things up. And my cool-dad factor was waning. I had to remind these ingrates that I was the most boss father around. When the robot overlords come to enslave humanity, who was going to protect them? Me with my hacking skills or Mr. Erikson and his convertible? Pfft. Pssh, whatever.

 

When the panels arrived, I began to assemble each one by hand. I had to glue the strips down, wire everything up, add the LEDs, and glue the filter. Then, and only then, did I finally mount the module to the drop ceiling. At this point, the power was on, and as I attached each module, it beamed pure white light down from nerdy heaven. But about halfway through the 2nd row of modules, heaven went on the fritz. My frugality finally bit me in the ass. The low-cost, ahem, low-quality power connectors failed me. They couldn’t deliver consistent power from one panel to the next.

 

I had to order premium connectors to fix this problem, and they were on back-order because of course they were. I got enough wiring for half of the modules and had to wait two months before I would get the rest. With only three months before the first birthday party, time was running short. I needed to bust a serious move on this ceiling as soon as those connectors arrived.

 

After an eternity of waiting, the connectors appeared at my doorstep. I continued work immediately. And with progress came more snafus — when would they end? As I mounted the first module in the 3rd row, the ceiling went nuts. Each LED suddenly had a mind of its own, and that mind was hopped up on military-grade ecstasy. The panel looked like a poltergeist communicating with me from beyond the grave. I don’t believe in ghosts, but just to be safe I shut that thing off and called a priest.

LED Ceiling Transmission Error

“I’ll have to exorcise each LED… I do bulk pricing”

The Exorcist noted that rapid-switching electrical signals misbehave as they travel long distances. The modules closest to the controller were fine. But as the distance between module and controller grew, so did the level of noise and magnetic interference. I needed a way to send the signal consistently to all modules, regardless of how far each was from the source. The answer was RS-485. But that meant I had to redesign the controller to work with a new interface.

RS485 Bus and Controller

Left: RS485 bus; Right: Bus + controller 4ever, y’all

I worked tirelessly to refactor the ceiling in time but didn’t make it. I had only half the ceiling built for the first birthday party. It was hardly ready to show off, let alone save the world from evil robots. I checked the cool-dad stock market, my market cap was plummeting.

The children urged me to turn the light on even after I explained that it would look like a bomb went off in a nightclub. Finally, I conceded and flipped the switch. These kids lost their minds.

 

With only half the panel completed, the light was a major success at both parties. And about a year later, I had the light fully built and functional. I still have some finishing touches to put on it and I’m rebuilding the mobile app using our latest platform (had to mention the boss at some point, right?). But all in all, this was a life-changing project and I feel immense pride having completed it. Now all I need is a pair of moon shoes so I can dance on this thing.

If you’d like help to build your own Internet Thing or just want to chat, email me at hugo.lourenco@outsystems.com.

Disco might finally make a comeback and your friends need to know: Facebook | LinkedIn | Twitter | Email

About the author

Hugo Lourenço

I've used computers since the time of the venerable ZX Spectrum. Soon after convincing my parents to buy me one, I spent most of my time hacking and programming it rather than playing games.From there on computers have always been present in my life. I graduated in Computer Engineering at Instituto Superior Técnico in 1997, and I've spent most of my professional life in Software Engineering positions.I've been at OutSystems for 11 years, where I've proudly helped design and develop many great features for the OutSystems Platform.My hobbies are quite varied, ranging from gardening and playing the piano to home automation.

Leave Your Comment