shitty pixel

An oversized WS2812 conference badge add-on

Similar projects worth following
A shitty add-on for a conference badge meant to look like a big WS2812 led.

Working on a shitty add on for Defcon 27 utilizing shitty add-on standard v1.69bis.


This shitty add-on has a mediocore ammount of features built in!

  • 3 individually controllable LEDs!
  • A microcontroller! 
  • Between 3 and about a dozen (maybe) built in LED animations!
  • The potential for some sort of crappy badge control of LEDs over SAO pin 5.
  • Is the artwork a feature?


svg designed in Inskcape

svg+xml - 679.66 kB - 04/09/2019 at 19:51


gbr - 505.21 kB - 04/09/2019 at 19:49


gbr - 285.52 kB - 04/09/2019 at 19:49


gbr - 82.15 kB - 04/09/2019 at 19:49


gbr - 60.72 kB - 04/09/2019 at 19:49


View all 12 files

  • It Blinks!

    Mike Smith2 days ago 0 comments

    Rev 2

    The 2nd version of the shitty pixel SAO boards showed up yesterday and I was eager to get components on them. This revision has dramatically altered artwork, more along the lines with what I originally envisioned. I inverted the black and white, edited some copper areas to reflect the shiny silver parts of a WS2812 and left the area that represents the IC controller for the WS2812 unfilled to potentially let more light from the LEDs show through the front. I was hoping that this area would take on the color of the combined light from the 3 different LEDs. 

    Top view

    I decided to switch from 1206 led's to a reverse mount gull wing PLCC2 package LED. I used some Osram TOPLED and some from SunLED as I couldn't find all the colors I want in the Osram TOPLED brand from digikey. This required that I make a custom footprint. I got the required specs for the different LEDs I chose from the datasheet on the product's digikey page and decided on dimensions for the footprint that would accommodate both the Osram and SunLED brand led's. 

    I also moved the SAO connector towards the center of the board slightly so that it wouldn't overhang past the edges of PCB, an error I made on Rev 1 where I wasn't using the SAO connector footprint but instead was using a generic 02x03 pin header footprint. 

    back view

    Now it's Smart

    Another big addition to this board was the attiny85. I desperately wanted some more functionality from this add on, mainly the ability to blink. Otherwise my handle would be put to shame. An attiny microcontroller seemed like the way to go based on my severely limited knowledge and experience. I liked the idea of being able to use the Arduino IDE to write the software as that's something I'm fairly familiar with. 

    I looked to the Darknet Eggplant SAO to help guide this design. That board was designed with pads to allow for in-circuit programming of the microcontroller. I briefly read through some documentation on how to design a circuit that would be compatible with in-circuit programming, but didn't get the ideas fully fleshed out and decided to forgo this for this rev of the board. This lead to me mangling the first SMD attiny85 I tried to hook up with IC hooks to my AVR programmer. 

    shitty pixel b/w 6x IC hooks

    Too Many Hooks in the Kitchen

    I remember thinking about this step in the process while I was designing the PCB's thinking that it wouldn't be too much of a hassle. Turns out it kind of is. The process of soldering the chip to the board, hooking it up, and programming it will take me way too long if I want to create any number of these. I want to go down the in-circuit programming route as it will allow me to fix anything that comes up post-production, plus the end user could hack away at it if it had it's programming pins exposed. 

    Populated and energized back view

    Assembled by Hand

    After programming the attiny, I went ahead and put the rest of the components on the board and it actually fired up as expected. I used 0805 resistors even though this board is designed to use 1206 size, I just didn't have time to order them and wanted to see if I could make it work with the 805's. I think I'm going to reposition R1 so it's not so close to the SAO connector for the version. I also want to leave a blank spot on the back for the board manufacturer to print their inventory number  (I assume it ended up on the front this time because I didn't leave them any room on the back.) 

    I'm curious if I'm going to go down the road of having the PCB manufacturer place and solder the components for me all in one go. I still have to weigh out my options. 

    Front view


    With the altered artwork, light shines through the board slightly differently than the previous version. The small squares are illuminated solidly as well as the areas beside the bond wires. I really like the way the light sort of looks like it's drawn up the bond wires via capillary action and mix in the center where the controller...

    Read more »

  • the Next Iteration

    Mike Smith04/09/2019 at 19:41 0 comments

    I've been torn on what features I wanted to include on this add on. I wanted to land someplace between LED's that turn on and a full fledged serial-talking EEPROM-having thing that I don't understand all the way. 

    I read through the documentation of and played with my badges and add-ons from DC26 trying to find inspiration. I love the ammount of interactivity between the Darknet badge and it's Eggplant SAO and I want to replicate something like it, but alot of what makes it work goes too far over my head so I probably need to tone things down a bit. I also went through the ANDnXOR github and checked out the SAO reference designs they've put up for this coming defcon. I really like the idea of putting in an EEPROM and having some sort of badge/SAO communication/identification but again, these concepts are going over my head and I don't really have the time/patience to read, experiment, fail and eventually learn at the moment.

    At the very least I wanted the LEDs to blink in some fashion. I started playing with LED sequencer circuits using a 555 + 4017 IC. While this was an interesting exercise, figuring out the animations I wanted wasn't going to work with this circuit. 

    My other option would be a microcontroller. I decided (without much research) on an attiny85. It was a really good experience learning how to put arduino code on the attiny, something I had never done before. Using the micro I am much more satisfied with the control I have over the LED animation. I also now have an opportunity to try and utilize an input signal coming from the badge over one of the new pins that came along with the new SAO standard. 

    I got a working breadboard circuit going before re-desigining the PCB. I can reprogram the attiny85 so long as it's not connected to the rest circuit, so my plan is to finalize the code and flash the chips before soldering them to the board, at least for the next prototype. I'll look into having PCBWay program the chips and assemble them for the final batch, but I'm already curious if I have enough lead time to that kind of thing. I guess we'll find out. 

    After semi-settling on a circuit I went back through and redesigned the graphics for the PCB in Inkscape, svg2shenzen'd them again and put everything in KiCad. Between the last design and this one I've decided to swap out components. I'm swapping the 1206 leds for some OSRAM reverse mount PLCC2 LEDs.  These are a bit bigger and hopefully easier to solder. Same with the resistors, I'm switching from 0805 to 1206 to try and make it a little easier to solder. This required switching out the footprints I had been using.

    I put a little bit of effort into labeling things and making sure they were legible even with all the line art I have going on on the back of the board. This required a bunch of back and forths between KiCad and Inkscape to get everything just write. Huge shout out to MrTwinkleTwinkie as his youtube SAO streams made this a lot easier to wrap my head around. At one point I caught a mistake in my back masking in the 3d viewer, I didn't leave a gap in the mask to let the light through the back of the board! Another thing I did, not sure if it's a mistake or not, was to remove the silkscreen circle that was noting the VCC pin on the SAO header. It was interfering with the artwork on the front of the board so I just removed the offending circle from the connector's footprint in KiCad. This may be a no-no, but I'm not sure. 

    That's where I'm at now. Just submitted these designs to PCBWay. Now I wait...

  • Have You Ever Started a Project on Step 3?

    Mike Smith04/02/2019 at 17:02 0 comments

    One of my strengths is being very driven, but one of my weaknesses is not doing enough research ahead of time before jumping into something new full steam.

    I got very excited looking at the PCBWay site and slammed through the pcb design process without thinking much about what I wanted in the end. Now I think I need to figure it out. My initial design has 3 LEDs that are directly wired to ground at power, so they're always going to be on. That is boring. I want a little bit of functionality in my add-on. I started looking at 555 / 4017 LED chaser circuits. I wired one up on a breadboard and while I found it a very informative and fun exercise, I wasn't satisfied with the animations I was getting with that circuit. I've moved onto thinking about an Attiny85. Partially because I was still thinking about using WS2812b LED's on this add-on but also because they seem similar to Arduino's and I'm familiar with those. 

    Using an Attiny85 I can easily create the animations I want to see with the LED's but I'll also be able to add some sort of unique functionality. I'm intrigued by the aspect of add-on to badge communication. Looking at the DC Darknet badge from 2018, I really like how you an scan for shitty add ons and the badge's OS reports to you the name of the add-on that is plugged in. I only have the Darknet Eggplant add on, so I don't know if this functionality existed with any other badge/add-on combinations. I've read up a bit on AND!XOR's SAO reference and that sheds some light but I'm still not sure about it. 

    Something I am a little more sure about is the actual blinking functionality of the add-on. I got a bunch of animations programmed on an arduino with 3 LEDs and then I needed a way to switch between the animations. One of my favorite features on a lot of badges I've seen has been capacitive touch sensing. This seemed like a good way to give the end user a button without adding a button to the parts list. I downloaded the CapSense library, threw a 1M resistor across two pins and was pretty much good to go. 

    The circuit works as well as I could want it to. I'm thinking I may have to switch out the CapSense resistor for a different one if the circuit doesn't work as well on the actual board? I will also probably modify some of the LED animations at some point, but I felt comfortable trying to move the programming of an Arduino UNO onto the Attiny85 chips I had ordered. 

    To do this I used the Arduino IDE and Arduino UNO as ISP following this guide. It worked really smoothly (as long as you follow all the instructions) ((I tried to go without the capacitor between GND and RESET on the Arduino, didn't work...))

    The had to re-arrange which pins I was using for what when switching from the Arduino and Attiny. I ended up using pins 0, 1 and 4 on the Attiny85 for the LEDs as these are PWM outputs. I'm using 3 and 5 for the CapSense circuit and have one pin, number 2, left to try and do something with. I'm bummed that it's not enough for I2C but I still haven't fully wrapped my head around the badge/add-on addressing. 

    Now I have my Arduino Sketch running 95% correctly off an Attiny85. Very cool. (One LED isn't behaving correctly in some of the animations but I can handle that). Being that my board will require an Attiny85 now, I'm starting to think about either getting the microchip programmed during the manufacturing process, or adding in a 6 pin ISP header into my design so I can re-flash the boards using some sort of pogo-pin jig down the line. This might be easier than having the board manufacturer program the boards, not entirely sure.

    I'm enjoying figuring out this process. My process probably appears a bit haphazard but it's (sort of) working for me.

    This MrTwinkleTwinkie stream popped up the other day and was really helpful pointing out how I should've done my board design last week. Between that and the Getting to Blinky 4.0 series by Contextual Electronics I'll be better prepared when...

    Read more »

  • That was fast

    Mike Smith03/30/2019 at 00:51 0 comments

    I've received the first shitty pixel boards. While I'm amazed at how fast the turnaround was, I think I need to slow down and think slightly more between steps. 

    Nearly instantaneously after my initial design was approved, I discovered/realized a few things that I would need to change. First off, I didn't know that there was a KiCad footprint for the SAOv1.69bis standard. I instead used a generic 2x3 pin header footprint. While this technically works, using the generic footprint allowed me to place the footprint so close to the edge of the board that if you solder on a shrouded 2x3 connector like I plan to, the connector overhangs the board. I would've realized this had I used the 'official' KiCad footprint from the beginning. Slightly frustrating but I'm really happy to learn. 

    Next to think about are the colors. I mentioned this in a previous post but I haphazardly chose white soldermask and black screenprinting when I saw the cost of the black matte soldermask I had initially considered. I don't know why I didn't choose black soldermask with white screenprinting, because this would've at least shown me a visual approximation of my intended design. Instead, I got this wacky inverted colorway but again, it has me thinking about what I want to do for the next iteration. 

    I have components shipping from digikey at the moment but wont be able to assemble this and test it for a few days. I did get some shrouded connectors delivered and tried setting up the shitty pixel on top of an actual badge to see if I was happy with size and placement of the badge connector. I think I might need more mounting options. It might be nice to be able to solder the connector onto one side or the other so that it can hang off to the left or right of the badge it's attached to. I'm pretty happy with the size though, I didn't want to go 100x100mm thinking it would be far to big, so I started at a 50mm square.

    As previously mentioned, the backside of the add-on needs some attention. I've mocked up a face to put on the back but I haven't settled on that whatsoever. I also believe I'll be removing "defcon 27" from the back as this is an unofficial add-on, I don't feel I have the right to put the defcon name on this, plus shitty add-ons show up outside of defcon. Everything I needed to do to allow light to pass through the substrate seems to be correct. I'm excited to see this with actual LEDs mounted to it.

    To RGB or not to RGB ?

    I designed this board as the thoughts were flowing out of my brain. The first thought three individual single color LEDs. One red, one blue, one green. With the new 1.69bis SAO standard, I keep thinking about how fitting it would be if this add-on had some WS2812b's on it that could be controlled via it's badge host. This seems like a great meta idea being that the design of this add-on is based on a WS2812b but also because it will force me to learn a little more. I believe this would also make the add-on a lot more interesting to others as well. 

    If I do switch out the single color LED's for WS2812b's, I want to be able to have an onboard program running the lights with the option to switch to the data stream coming from the badge. I have no idea how to handle this intellegently, but I figured I could put a physical toggle switch on the add-on to switch between data streams. I tested this with an arduino running a neopixel example sketch with two different animations on two different pins. I wired up a few neopixels to the arduino with a toggle switch in line to switch between the two different data sources. I switched it back multiple times while the program was running and it seemed to handle it OK. Clearly there are some timing hiccups when you switch between the streams, but eventually (~1-2 seconds) the correct animation starts playing. This is proof enough for me that I could have an on-board program running with a physical switch that toggles to the badge's pixel data stream. I'm sure there's...

    Read more »

  • Anthropomorphism

    Mike Smith03/27/2019 at 21:42 0 comments

    I put a face on it. And added a color swatch legend. Now I'm wondering if I can actually get a thing line of silkscreen all the way at the edge of the PCB like this shows. Otherwise, I might switch things up.

  • Invert Your Soldermask!

    Mike Smith03/27/2019 at 16:50 0 comments

    I decided to just go for it and try to get this thing prototyped through PCBWay.  I had initially planned to use matte black soldermask and white silkscreen (a la hack for satan), and that's how everything was designed, but when I actually got to seeing prices for the different options, I decided to go with white soldermask and black screenprinting being that it was less expensive then the matte black I originally wanted. I might switch back to matte black if/when I get many of these produced.

    It took me 5 edits before PCBWay accepted my design.

    The second problem I encountered that caused my design to be rejected multiple times was the need for the soldermask to be inverted. This was apparent to me at first and I had a little trouble understanding what the PCBWay employee was trying to explaining to me, but I eventually figured it out after finding a few instances of others having the same issues. Unfortunately, I had to go all the way back into Inkscape to fix this. 

    On the 5th submission my board design was approved and it's being manufactured as I type this. How exciting. 

    I probably pulled the trigger to early as I'm already having multiple ideas on how to improve/alter this design. 

    I think it would be more fitting (and more meta) to have WS2812b led's on the board itself.

    I also think that it would be much more interesting if the add-on took some sort of input from the badge it was being plugged into. After all, the new shitty add on standard gives us two new GPIO pins to potentially stream data from badges to drive pixels on add ons. This seems like a road I should go down. I don't like the idea that there's no way to verify if a badge is sending out pixel data, so in theory this add-on's leds would only light up with specific badges. I'd much rather have a physical switch or some intellegent circuitry to switch between an on-board pixel stream and a badge-driven pixel stream if one exists. 

    Something to think about I guess. 

    Additionally, I switched to the SAO.69 KiCad footprint, whereas I had been using a generic 2x3 pin header footprint. I don't think this changes much, I just happened to see the KiCad footprint file on the shitty add ons project page and felt I should be using the 'real thing'.

    I also think I have too much blank space on the backside of the board. I'm trying to think of something to fill that space. 

  • Shitty Pixel : Day 1

    Mike Smith03/26/2019 at 22:29 0 comments

    I've been inspired by the badges of Defcon and Hackaday Supercon that I've seen the past few years and I want to take a shot at designing my own PCB art badge thing.

    I use a lot of WS2812B leds and thought it would be fun to make a big one with standard red green and blue led's that light up. 

    I traced a microscope's view of an LED in Inkscape to get a vector drawing. I then converted the svg to a KiCad file using the svg2shenzen extension

    As this is my first shot at designing a PCB. I'd like to get someone with experience to check my designs to see that soldermask, silkscreen and copper layers will layout as I've intended as well as to check the validity of my circuitry.

View all 7 project logs

Enjoy this project?



Mike Szczys wrote 04/08/2019 at 16:58 point

Great design. Anyone who's looked close at a WS2812 will know it immediately. Nice!

  Are you sure? yes | no

Sophi Kravitz wrote 03/27/2019 at 18:43 point

Cool! It will be satisfying once complete. You can add art to that big blank area, make the art have LED eyes ;)

  Are you sure? yes | no

Mike Smith wrote 03/27/2019 at 16:22 point

the bond wires will be part of the copper layer on the front side of the circuit board. At least that was my first thought.

  Are you sure? yes | no

Gerben wrote 03/27/2019 at 14:12 point

Cool idea. Any idea of how to do the bond-wires?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates