After several months of hardware tinkering and programming, my hobby LED light project has come to a close. Jessica and I successfully displayed the lights on our backpack during the Electric Forest music festival last weekend.
I’ve posted several times about this project already, so this post will be a final summary focusing primarily on topics I haven’t yet discussed.
I arranged the 64x32 LED matrix panels side-by-side to form a square. I needed a way to hold the panels beside each other, so I designed a laser cut acrylic support panel (which I call “the belly”). The belly goes behind the lights and holds them in position. I also designed a second acrylic panel to sit in front of the lights and protect them (which I called “the lid”). While it would make sense to make the lid out of clear acrylic, I did some research online and chose to instead use a semi-transparent white acrylic that will gently defuse (blur) the light.
The LED lights need to be connected with the raspberry pi with a power cord, a 16-wire ribbon cable (for sending data to the LEDs), and a 4-wire ribbon cable (for communicating to the accelerometer). I ended up splitting the 16 wire ribbon cable into 16 individual wires to improve flexibility, then cut each of those wires to about 20 inches and fed them through a braided cable sleeve. Splitting the ribbon cable was tricky to do; if I were to do it again, I’d use one of the rainbow color ribbon cables which are supposedly easier to work with. Rather than plugging the wires from the Pi directly into the LED panels/accelerometer, I decided to make plugs on the perimeter of the lights for easy plugging and unplugging (which turned out to be a huge benefit).
All code for this project is original aside from the physics toolkit and the framework for communicating with the lights, which use publicly available open-source python libraries.
The software running the lights operate in “stages”, which each have their own behaviors. The light patterns are generated in real-time for all stages. Some of the stages use the accelerometer, while others show randomly generated patterns. I originally wanted the lights to sync up with music using a microphone, but there were some significant hardware and software limitations that prevented me from implementing it in time.
One of the more interesting parts of the software are the cellular automation stages. These are the stages that look like waves, tie dye, and fire. These patterns are achieved by programming a set of rules that are followed by each individual light based on the status of its neighboring lights. For example, think of a crowd of people doing “the wave” at a sporting event; the crowd could theoretically do the wave with their eyes closed if each person who pops up tells their neighbor to the pop up. Cellular Automation is similar to that, but often follows much more complex rulesets.
That’s the full rundown. I was successful at getting the device through airport security on our way to Electric Forest (although the TSA agent initially thought I was being wise when I told him it was a “Raspberry Pi”). I also it through the venue security without issue; it probably wasn’t even in the top 20 strangest things that they encountered that hour. Once inside the venue, I was able to store it in a locker.
We used the lights for two out of the four nights at the festival. We didn’t wear it every night because we had to avoid crowded areas when wearing the lights (due to the bumping and jostling), which was a big limitation. Many other attendees enjoyed the lights and gave compliments. A few dozen attendees started tapping on the lights assuming it was a touch screen (maybe next year). It was fun for us to contribute to the the many other bright and colorful totems and outfits in the forest.
My LED light project is in it's final stretch before we bring it with us to the Electric Forest festival at the end of the month. I have a lot of updates, but for now I just want to post a video of the lights in action. Stay tuned for a more detailed post where I talk about the final hardware/software for this project.
Over the last few months I’ve been working on a LED light project. I’ve already blogged about hooking up the LED matrices and the accelerometer. I also blogged about my frustrations with product defects and setbacks. But I never really wrote about the actual goal of the project. Until now!
The goal of the project is to build a portable square matrix of LED lights that can be affixed to our backpack at music festivals. The lights will be passive - that is, there won't be any buttons, knobs, or any other required interaction. However, the lights will be supported by some sensors (such as the accelerometer), which will allow it to react to its surroundings. The LED matrix will display colorful moving images that will hopefully be at home at music festivals...you know, the fun rave-y kinds.
I didn’t want to declare this goal too early because I was afraid the project wouldn’t be feasible. I didn’t want my fourth blog post to be an apologetic explanation about how my project idea was fundamentally flawed! I decided to build a proof-of-concept first, and then blog the specifics second.
I'm excited to share more details about the project. It has come a long way over the past few weeks. But first, I'd like to talk about three potential “show-stoppers” that had me worried when this project was in it's early stage.
An accelerometer will be a fundamental input source for the device; but, unfortunately, both the lights and the accelerometer use the same connector on the Raspberry Pi. To get this to work, I would need to stack the LED controller on top of the accelerometer connector so they can “share” the same GPIO connection. I thought this wasn’t going to work at all. Surprisingly, it worked just fine. For those following along at home, I used the Adafruit RGB Matrix Hat and the 3-Axis ADXL342 i2c accelerometer (connected via this i2c shield).
To make good use of the acceleration readings from the accelerometer, I’d need to run a physics simulation in the background while the lights are running. Then, I could render physical objects on the screen that respond realistically to movement. I considered this to be a major challenge because the light display, physics simulation, and acceleromter would all need to run fast enough to maintain at least 30 frames per second - below that frame rate, things will start to look choppy.
The only way to prove that this could work was to build a prototype and test it out. It was a happy night when I finally got everything running. Yes, the Raspberry Pi (model 3B) is indeed fast enough to run the physics simulation (in pybox2d) and the lights (using this package by hzeller) at the same time. However, it can only simulate a small number of physics objects at once. Performance drops dramatically when there are over 100 physics objects at once.
This was the grandaddy of all potential show-stoppers for this project. The LED matrix runs at 5V, but it takes a lot of current. The Raspberry Pi itself probably doesn’t take much juice, but requires a stable and uninterrupted power source. I started off looking at drone and remote car batteries, thinking I’d need something beefy like that. Eventually, I remember that I already own this fairly powerful battery for charging my Nintendo Switch. I had to buy this cable off of Amazon to connect the battery to the LED hat. After that cable arrived in the mail, I stalled on testing the battery for about a week. I was afraid of finding that it wouldn’t work and that the project was over. Fortunately, that wasn’t the case. In my testing so far, the battery worked for 90 minutes and, according battery status, is still somewhere between 75% and 100% charged.
This isn’t a total victory yet. I want to test that battery all the way to 0% so I know exactly how much time it can run when we are “off the grid”.
They might not. I won’t really know for sure until I try. Music festivals often allow totems, which are border-line spears. Festivals also allow LED hulahoops. So, I feel like I have a good shot at getting my project into a festival. That said, I will need to try hard to make my device look safe not scary.
I haven’t posted to the blog in awhile. And when the time without a post is this long, I feel like I need to return with some good quality content. I’d love to write a fun post about my progress on the LED light project but, unfortunately, it has suffered from several set-backs over the past few weeks.
After getting one LED panel working, I decided to buy three more panels. The panels are designed to be tiled together to form a larger display. Sadly, all three of the new panels were broken (one was cracked and the other two didn’t turn on). So, determined to keep the project moving forward, I bought another four panels. To my dismay, all four of those were broken too! So, I returned seven broken panels to Amazon all at once.
I did some research online and learned that I need to be careful with Amazon returns. If I were to buy and return another big batch of these panels, I’d be at risk of getting my Amazon account suspended. I had my Dad buy four panels with his account, and I bought another two panels of a slightly different design with my own account. I’ve tested two of those six so far, and fortunately, they both work.
The broken panels were a big set back. Testing and troubleshooting the panels takes a lot of time, and it’s frustrating working for a few nights and making zero progress.
Aside from the LED panels, I’ve also been tinkering with an ASUS Tinker Board S. This was my Christmas gift from my Secret Santa, Mike (thanks, Mike). It’s a single-board computer, very similar to the Raspberry Pi, but more powerful. At the same time, it’s less widely used and therefore more difficult troubleshoot by searching online. I’ve learned that 90% of tinkering is troubleshooting, so that’s a big deal.
I loaded an operating system for the Tinker Board onto an SD card, and somehow I completely bricked the SD card shortly thereafter. So, the project is on hold again until I get a new SD card.
I hope to have another update on this project soon. I have a working concept of what this project will become, but I still need to check if there’s any show-stoppers in terms of feasibility.
This is a continuation of my last post about tinkering with the Raspberry Pi, which you can find here.
I recently purchased an accelerometer along with an "i2c" connector that makes interfacing the accelerometer with the Raspberry Pi easier. To be specific, the accelerometer I bought was a model ADXL345. You may recognize an "accelerometer" as the device that lets your smartphone know which way it’s being tilted or moved. Similarly, the Nintendo Wii famously used an accelerometer in its controller so you can swing it around to bowl or play tennis.
There were a few good tutorials online that helped me get the accelerometer working. I was surprised how easy it was to set up. Plus, on the hardware side, no soldering was needed!
I found a very simple example program online to take a single acceleration reading using python. I expanded on that example, and developed a small python module that can initialize the accelerometer, modify its calibration, and provide acceleration readings whenever requested. I could even get hundreds of readings per second, if necessary.
Out of the box, the accelerometer’s calibration wasn’t great. It provides three acceleration values (think of these as up/down, left/right, and forward/backward). When the accelerometer is at rest (i.e., sitting on my desk), two of those accelerations should be zero and the up/down direction should show earth’s gravitational acceleration (32.2 ft per second squared) in the downward direction. It was off by about 10% in one direction, but that was easy to recalibrate.
I like tinkering on tech projects, but I don't know much about electronics and hardware. I know enough to assemble a computer and debug simple hardware problems - but I am incapable of doing custom electronics. I want a new fun project that I could use to broaden my knowledge of electronics. While I still don't know what that project is going to be, I decided to start by playing with some LED lights because they're fun and visual.
I stocked up on various components that work with my Raspberry Pi 3. For those who are uninitiated, the Raspberry Pi 3 is a $35 computer that's about the size of a deck of cards. It's designed to be very extendable, so capable tinkerers can use it for things like robotics, smart home accessories, etc. I used the Raspberry Pi for the machine-learning traffic camera project about a year ago. For starters, my goal was to get a single matrix of LED lights working. To do this, I needed the following components:
I felt like I was in over my head when I discovered that everything wasn't pre-soldered for me. I've never soldered before, despite actually owning my own soldering iron. The first few minutes of soldering went very poorly, but I eventually got the hang of it. I made a few newbie mistakes with the soldering; for example, I soldered one of the connectors backward - so I needed to use a razor to shave a part of the plug down so it could fit into the backward connector.
After taking care of all the hardware, I booted up the Raspberry Pi and installed some software to drive the LEDs. I used an open-source software library that appears to be the go-to standard for these types of LED projects. This software should enable me to show any arbitrary image/animation on the LEDs. Plus, it comes with a few built-in examples that are good for testing the hardware; one of which is a spinning multi-colored square.
Initially, I was thrilled because the LED display sprang to life on my first attempt to run the example. But, then I realized that the screen was really only showing the color red - no blue and only a tiny bit of green. I was stuck debugging this problem for a few frustrating nights. I fiddled a bunch with the software, I tried every capable power cord in our apartment, I resoldered every connection, I even soldered a custom jumper wire between two pins (I read online that this customization improves LED performance) - but none of these things fixed the problem. I spent some time poking at the board using a multimeter when I finally realized that the wires leading to the LED matrix were carrying a lot less power than they should have been. I used the multimeter to connect the 5V input directly to the LED display, and to my amazement, the lights started glowing with the full spectrum of color. There must have been a defect with the RGB Matrix HAT (or more likely, I must have broken the HAT while soldering). To fix it, I soldered a jumper between the 5V input and the connector that leads to the LED matrix. I have a feeling a skilled electrical engineer would have found a more elegant fix to this problem - but I was pretty proud that I found any fix to the problem.
This was a super rewarding starter project for someone looking to learn a bit about electronics. I'm especially excited about this because there's a lot that can be done from here. These LED panels can be daisy-chained together to make a bigger display, plus I can program the panels to display just about anything. I already have a few ideas for the next steps - but I will keep those to myself for now.
Here are step-by-step instructions on how to rebuild speakers if the foam rings are corroded. It is a pretty simple process that can save you the cost of expensive speaker replacements.
Jess and I are going to Hulaween, a music festival in northern FL. In fact, we are on the plane as I write this!
This is a Halloween-themed music festival, and Jess and I rarely shy away from wearing a costume when given the opportunity. We wanted a good costume, but we didn’t want to be uncomfortable while dressed up; plus, we wanted a durable costume that wouldn’t break while traveling. So, we decided to buy black jeans and black shirts, and paint ourselves skeleton costumes.
This was a great little project. We were able to do the painting at night over a few days. Our strategy was to mark the locations of bones on the clothes (with masking tape) while we were wearing them, and then we took some artistic approximations while painting. We’re going to supplement our painted clothes with skeleton masks and gloves we bought online.
I’m optimistic about our costumes. But, it’s hard to get a sense for how they’ll look until we really put them into action!
Okay, so for those of you who know Ryan’s parents, you know we like DIY projects and here is one that we are currently taking on. These are pictures of a 8 foot long oak trestle table that we just bought on a local Craig’s List type of website that shows up in my fb. We were actually driving home from the Newport Folk Festival pulling our camper when I noticed there was a estate sale going on in a really cool old house in a town near our home. In one of the pictures posted was a long table with a ton of stuff on it. I didn’t even look at what was on the table, I immediately saw the table and thought that it is cool and something we can turn into my dream farm table. So after many back and forths on fb I was promised the table if I could get it by 5:00 pm.
Well, as you can see we got it. This was an estate sale put on by the children of the late owners of this house. They grew up in this house and told us about the happy memories there. Happy memories around this table in particular. One sister in particular was so sad watching all her parents belongs going out the door she could only watch us from the upstairs window as we loaded it into my husbands truck. That made me feel sad, but when the other sister told me she was happy it was going to us because of our excitement getting it and our plans to update it and make it a happy gathering place in our house. We exchanged phone numbers and I promised I would text her pictures of it finished and in our dining room.
It was extremely heavy so Pete, who by the way is extremely handy, proceeded to take the trestle legs off so we could handle moving it. So now it is here in my dining room not really put together yet, just the top sitting on the legs. It is so heavy that it is not going anywhere. We need to figure out if we want to cut in down and make it a bit shorter. A shorter table would probably fit the room better, but I love the idea of it fitting so many people around it like it is. That we still have to decide. After we decide whether to shorten it or not, then it goes back out to the garage and we start to strip it of the dark finish. Then I think we will have to bleach it to get it the light color I am hoping for. We are also debating whether we should redesign the trestle legs a bit. The way they look now I think looks very gothic.
So we will periodically post our progress as we tackle this big heavy project. I am hoping to qualify for a Comet.cool patch at the end of this Ryan.
I created a patch! I have a bunch of them. Read below for info on how to get a patch, and to learn how the patch was made.
Over the past few months, I've been steering the content on Comet.cool towards being slightly more about projects (while still keeping all of the other fun and goofy stuff too). I am testing the hypothesis that if someone writes about a project that they themselves are passionate about, a few things will happen: first of all, they will be more motivated in that project, the project will be more rewarding, and other people will feed off of their enthusiasm and passion.
So, I will give you one of these very exclusive and moderately desireable patches in exchange for a single post onto this site documenting the initiation, progress, or completion of a project (big or small). If you want help with the post, let me know.
(If nobody is interested in writing about projects, then I will give up and hand out the patches for free after a few months)
For the past few months, I've been experimenting with designs for a Comet.cool t-shirt, hat, or some other kind of merchandise. The problem was, I couldn't really see myself (or anyone else) actually wearing Comet.cool clothing. So, I decided to instead design an embroidered patch. I liked this better because the patch could be ironed onto a piece of clothing if desired, or it could just be tucked away somewhere like a badge of honor without any expectation of actually being worn in public.
The picture above shows the design process I went through to make the patch. I haven't ever designed a patch, so I had to do some reading to figure out what design principals to follow for embroidery. I realized I would need to keep the design relatively simple, avoid color gradients, and limit the color palette. Beyond that, I knew I wanted a somewhat geometric design with highly contrasting colors. I started with paper and pen, then used CAD to quickly sketch the "COMET" characters. I finished the design off using image editing software.
I commissioned www.qualitypunch.net for the actual embroidering. I recommend this site if you need to do any similar work. They were extremely helpful and responsive throughout the whole process.
© 2017. All rights reserved.