Introducing The Shitty Add-On V1.69bis Standard

A project log for Shitty Add-Ons

Stop calling it 'SAO'.

benchoffBenchoff 02/25/2019 at 01:586 Comments

I would like to preface this by saying this is not the official, final release of the Shitty Add-On V.1.69bis standard. There are a few things still being worked out, especially concerning the function of the two additional pins. However, AND!XOR has already published some reference designs for a SAO using an I2C EEPROM, identical to the Tide Pod SAO of last year. Additional functionality that should be possible will be fleshed out in the future. The reason this is standard is being published now is because it’s better to put things out into the world than wait until something is perfect.

By all accounts, the Shitty Add-On standard is a success, but it was not perfect. Mechanically, standard 2x2 headers aren't very strong, and that goes doubly so if you're using SMD male headers on the add-on. Not many people used the I2C bus, but there were a lot of people that wanted to extend their WS2812 or APA101 RGB LED strings.

A standard isn't a standard unless there's a better one, so now the community of badge makers has settled on a newer, betterer standard for Shitty Add-Ons. It's Shitty Add-On V.1.69bis (SAO.69), and it vastly increases the capability of the Shitty Add-On standard while retaining backwards compatibility.

Because of the need for a low-cost connector, and the need to retain backwards compatibility, SAO.69 will use a standard 0.1" 2x3 connector.

Badges use 2x3 female (non pinned) headers, 0.1” pitch. Similar to last year, but 6 pins. It is highly suggested that badges use through-hole connectors, lest SAOs rip off your pads. These may be keyed, but through-hole 2x3 keyed connectors are either impossible to find or absurdly expensive. The thing you want look for to find a keyed badge connector is, '2x3 Pin 6 Pin With Polarizing Key'. eBay will turn up results for that, but you can only buy 100 at a time. AliExpress reportedly has them, but they're $0.40 USD / piece.

The best connector. It's unobtainable. I own 75% of the world's supply.

Needless to say, the keyed badge connector is rare, expensive, and difficult to find. However, it perfectly solves the problem of Add-Ons coming loose. These connectors have been verified as fitting a standard IDC shrouded header. Use the best badge connector at your own risk.

Add-ons use a 2x3 male, pinned, shrouded connectors. These are actually some of the cheapest and most ubiquitous connectors available, and if you have a device that has an AVR ISP header, this is the same connector. As with the badges, it is highly suggested you use a through-hole header for mechanical strength.

The pin out for SAO.69 is exactly the same as last year's version, with the addition of two 'GPIO' pins off to the right. These will be used for various add-on types, support for addressable RGB LEDs, and serial connections.

Of course, we expect most badges to only use power, and even here we have specifications: Maximum power draw by a Shitty Add-On is 1.1 millihorsepower. If a Shitty Add-on drives a GPIO pin, it MUST be through a resistor of at least 330 ohms. No signals may exceed 3.6V. For power-only add-ons, Utilize only VCC (3v3) and GND to do whatever you want. Other pins should be NC. Don’t exceed 1.1 millihorsepower draw on your SAO.

With the addition of two new pins, we have some options for serially-addressable LEDs. For WS2812 (or NeoPixel) LEDs, badges can support WS2812-based SAOs by outputting a WS2812 datastream from the badge to an SAO to sync or drive an RGB pattern. Badges can either connect the end of their existing WS2812 strand’s data line to GPIO1, or connect a badge GPIO to GPIO1 to send a datastream meant purely for the SAO strand. Note that if you're extending the badge's strand of WS2812s, remember to add ~10 more to your 'strand length'.

For APA102 (or DotStar) LEDs, drive them similar to how WS2812 works, except with two pins. GPIO1 is used for data (DO / MISO), and GPIO2 is the clock (CO / CLK). Badges may also directly connect the output of the last LED in a APA102 chain to this pin provided that the pin never exceeds 3.3V. If the APA102s are driven by a higher voltage (e.g., 5 volts), a voltage divider may be used on the badge-side to bring the output down to 3.3V. SK9822 LEDs are basically the same as APA102.

Serial/UART data is also kinda supported, but using serial on an SAO is generally a bad idea. The main reason for this is that some badges will have multiple SAO ports, all using a single bus for all pins. This means when utilizing serial, someone would have to standardize a common “badgebus” language on top of serial to differentiate a target between multiple SAOs on the same serial bus, lest there be crosstalk, etc. This is similar to what is required for nodes in pub/sub use cases like MQTT. Notes on the implementation of serial include:

And It's Backwards Compatible!

Although we hope the new mechanical spec will give us more resilient add-ons, there are already thousands of these add-ons deployed. SAO.69 is backwards compatible with existing add-ons! Badges still get female headers, and add-ons still get male pins. SAO.69 standard just adds two pins to the right.

There has been some talk about adding a shitty mechanical standard, such as a 3mm hole for zip ties, or somewhere an M3 bolt could be added. While this would be a fantastic for loose add-ons, the shitty 'do what you want' option works better for us.

Is this the best standard? No, not at all. That's where the Shitty Add-On standard gets its name. There's no way to tell if a Shitty Add-On supports WS2812, APA102, or serial connections. There's some talk of a resistor-based voltage divider between VCC and GND, connected to GPIO1. This could, in theory, be used to query a badge to detect if it's a WS2812, APA102, or Serial connection. We have no idea how this would work yet. Alternatively, we could add an I2C Flash chip onto each badge, with a tiny bit of data saying what the badge is. Again, Shitty Add-On Standard.


zia.malik262 wrote 10/04/2022 at 17:02 point

i want to program MAX2870 as frequency band (860 - 970 MHz) genrator. please guide and if any link code please share 

  Are you sure? yes | no

davedarko wrote 08/19/2022 at 07:36 point

seems like some picture links here are broken

  Are you sure? yes | no

Nate Larson wrote 04/19/2019 at 15:50 point

Digi-Key is now stocking part numbers SFH11-NBPC-D03-ST-BK-ND and SBH11-NBPC-D03-ST-BK-ND that should work for this.

  Are you sure? yes | no

oshpark wrote 04/19/2019 at 13:25 point

Any suggestion of part numbers for the 6 pin connectors? Thanks!

  Are you sure? yes | no

Nick Sayer wrote 04/19/2019 at 22:07 point

There are a number of choices for the SAO connector - that's easy.

For the badge, there's exactly one choice with a minimum purchase of 1000 and a 4 week lead time.

  Are you sure? yes | no

davedarko wrote 04/20/2019 at 06:54 point

Hm, I bought them in ten packs on aliexpress, but the price was rather high. Aaand it's sold out atm.

  Are you sure? yes | no