Introduction: Chip Shortage
Initially, I didn’t expect the chip shortage 2021 to have a big impact on my hobby projects - turns out I was wrong! Many popular chips like the STM32 or ATmega328 are either sold out everywhere or the prices are insanely high.
Seeking for solutions, a kind person on an electronics Discord server suggested to use the new ATtiny series. Being available and affordable, these chips seemed perfect for me. All my work is based on the megaTinyCore by SpenceKonde. It is an excellent addition to the Arduino IDE which supports a lot of ATtiny-series chips. He did a great job documenting everything. You can buy a breakout board from his own design on his Tindie Store.
I chose the ATtiny 806, which sells for around 0,60€ while writing this article. For the project I had in mind, I had the following requirements:
- Enough memory and software-support to drive around 50 addressable WS2812b LEDs
- I²C support
- Small footprint size
I wanted the upload to be very simple. Therefore, I already added a fitting resistor on the UPDI line. Furthermore, I followed the recommendations from SpenceKonde for the programming header.
My board not only breaks out all the pins of the ATtiny, but also features an I²C port that matches the popular OLED screens and 3 power pins. The included WS2812b LEDs make it very easy to prototype new ideas. An external screw terminal allows you to power the board flexibly.
I wish I had taken more care while designing the silkscreen. Not only would it have been nice to have the pin names on the front, but also many of the included footprints in Kicad lack part orientation.
The PCBs were ordered from Aisler, because I wanted to try out their PreciousParts service. All the parts I needed came in a single package. It was a very pleasant experience and I can certainly see myself using that service again. You can visit this link to order the PCB directly from Aisler!
My PCB is licensed under the Attribution-NonCommercial 3.0 Unported (CC BY-NC 3.0) license. Please respect the following points:
- Improve! Make improvements to my design so it fits your needs, and share your work
- Always give appropriate credit
- Don’t use it commercially
Download project ZIP file
This file includes:
- Kicad source files
To further investigate the suitability of this chip, I designed a small breakout board first. It is very simple and therefore also lacks some desirable features like USB port and controller chip or various protection features. On the other hand, all components are around 1,50€, which would make it suitable for many projects.
It has a LED to indicate power, input capacitor, UPDI programming header including the necessary resistor and 2 addressable WS2812b LEDs. There is not much more to it, you can add 2,54mm pin headers to easily insert it into a breadboard. Being 22mm wide, there are still 2 rows of breadboard pins free on both sides.
The screw terminal is an external power input, however it only tolerates 5V. I made sure to include a few power pins, because the lack of them annoyed me with other development boards.
This circuit is exclusively meant to be a breakout board. It lacks important safety features and shouldn’t be used without additional thoughts!
I used my MHP30 hotplate to reflow-solder all the SMD components onto my board. I still have to learn a lot here, for example I used too much soldering paste. Nevertheless, I am happy with the result.
Once again, I would like to thank SpenceKonde for his fantastic Arduino Core. Please follow his guides to get the board running. Against his recommendation, I used the Arduino UPDI programmer, it worked well for me.
I first used an Arduino Mega 2560, but it didn’t want to work. After switching to an Arduino Nano though, it worked like a charm. Just ensure that you choose the corresponding programmer when uploading.
I²C is a protocol that allows you to control multiple slave devices with only two wires. The used ATtiny806 chip can theoretically support that, but I couldn’t get the libraries to compile. I tried it with the BMP280 sensor as well as with the classic OLED screen. It doesn’t want to work. Surely it would be possible to write your own library for that, but I didn’t feel like investing the time for that.
For the WS2812b LEDs, you are supposed to use a modified library: tinyNeoPixel
I was pleasantly surprised by the capabilities of this chip. Uploads are really simple and the price is very attractive for small projects. It’s unfortunate that I can’t get I²C to work reliable. Maybe I am missing something simple here, so if you have an idea, feel free to drop me an email.
As of now, I didn’t find any other bugs.
The WS2812b LEDs work fine, but I didn’t try long strips yet. I will certainly use my board for projects in the future!
After experimenting a lot, I finally found a library that does support the I²C display I was using! I believe the normal library has some sort of SPI protocol build in, that prevents the compilation. No suitable BMP280 library is found yet, but that’s not a big problem since those chips are sold out everywhere anyways.