Hey everyone what's up!
So here's something SUPER cool, A PCB Board themed after Goku from Dragon Ball!
The idea here was to make a simple PCB badge that includes Goku, I placed a few LEDs on this board in such a way that when it is being driven by an Attiny13A, it glows in a chasing pattern and it creates an illusion of Goku firing his famous Kamehameha wave.
For those who dont know who Goku is or what is Kamehameha wave, well Goku is an alien from outer space who was raised by an earthling and he fights bad guys, basically Japanese superman.
This PCB is a Version 2, I already made V1 back in 2021 and it was pretty functional, the only problem with that version was I used ATtiny84 in that, and right now attiny84 is pretty hard to get because of the chip shortage so I modified my design and used an Attiny13A instead.
https://www.hackster.io/413148/goku-pcb-badge-f26f11
In this article, I'm gonna show you guys the whole built process of this badge so let's get started
MATERIAL REQUIREDHere's a shortlist of componenets I used in this built-
- Attiny13A
- Custom PCB
- 8205S Mosfets
- 0603 RED LEDs (Blue would look better)
- Coin Cell Holder (SMD)
- 10K Resistance
- 1K Resistance
- USB Type C port
I selected ATtiny13 for this project for a simple reason, it's powerful enough to run a simple chaser switch that utilizes 5 output pins. it's also cheap and easy to program and widely available.
The ATTINY13-20PU is an 8-bit high-performance low-power AVR RISC-based Microcontroller that combines 1kB ISP flash memory, 64B SRAM, 64B EEPROM, a 32B register file, and a 4-channel 10-bit A/D converter. The device supports a throughput of 20 MIPS at 20MHz and operates between 2.7 to 5.5V.
It's made by Microchip now and it's best for applications like driving a bunch of stuff which is what I'm doing in this project.
https://www.microchip.com/en-us/product/ATtiny13A
As for using some high-power MCU like an Arduino board, it will work better but the problem would be the size and form factor. It would also be overkill to use a full-fleshed MCU just for driving a couple of leds.
DESIGNSchematic
The design of this PCB Badge is pretty simple and straightforward. To drive LEDs I used Mosfet which is controlled by an Attiny13A.
5 Mosfets are being used and each of them drives Four LEDs that are connected in parallel.
I made this Schematic in my OrCad PCB Suite and then converted it into a Board file.
PCB Design
The main attraction of this project was the Goku Image or silkscreen that I have placed on its top side.
What I did was, I search for a black and white goku image and then converted it into a BMP image as my OrCad PCB Suite only imports images in BMP format.
After importing the image of Goku into my PCB design as a Silkscreen layer, I placed all the componenets around the board and finalize the design.
LEDs were placed in the shape of a ball or an orb that is being fired from GOKU's palm.
Getting PCBs From PCBWAYAfter Finalizing the PCB, I sent the Gerber data to PCBWAY for samples.
I choose Yellow Soldermask for this project with a white silkscreen.
I've added graphics on the Topside of the PCB to increase the aesthetic of the PCB, Quality of the PCB I received was just awesome.
I have Been using their service for a while and I have to say, it's pretty decent for getting started.
Checkout PCBWAY from here- https://www.pcbway.com/
PCB ASSEMBLYPCB Assembly includes the following steps-
- Solder paste dispensing
- Pick & place process
- Hotplate Reflow
- TESTING Process
- Adding SMD Coin Cell Holder
Now the first step is to add solder paste to each components pad one by one.
To Apply solder paste, I'm using a Solderpaste Dispensing Needle with a Wide syringe, and the solder paste I'm using is a regular solder paste consisting of 63% Tin 37% Lead.
PICK & PLACE PROCESSAfter applying Solderpaste we move on to the next step which is to add componenets to their assigned location.
I used an ESD Tweezer to place each component in its place.
HOTPLATE REFLOWAfter the "Pick & Place Process", I carefully lifted the whole circuit board and place it on my DIY SMT Hotplate.
the hotplate heats the PCB from below up to the solder paste melting temp, as soon as the PCB reaches that temp, solder paste melts and all the components get soldered to their pads, we lift the PCB and then place it on a cooler surface for a little bit, to cool down the heat of PCB.
Testing!Now before adding the coin cell holder, I tested whether LEDs were soldered properly or not by using a Multimeter set in Diode checking mode.
I connected the positive probe of the multimeter to the positive of the first column and negative to its negative.
By doing this I tested all five columns, because LEDs are connected in parallel in each column, all leds will glow.
After testing that each LED is soldered properly, I then move on to the next process which was to add an SMD Coin Cell holder on the backside of the PCB.
ADDING COIN CELLAt last, I added an SMD Coin Cell holder on the backside in its assigned location with a soldering iron.
This SMD coin cell holder is the only component in this PCB that is not being added by solder paste.
After this, we just need to flash the ATtiny13 with the main code and power this board up!
CODEHere's the code that I used.
I made some changes in it which includes changing the pin number as the previous version had a different pinout because it utilizes attiny84 but now I'm using attiny13A.
int pinsCount=5; // declaring the integer variable pinsCount
int pins[] = {0,1,2,3,4}; // declaring the array pins[]
void setup() {
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
}
void loop() {
for (int i=0; i<pinsCount; i=i+1){ // chasing right
digitalWrite(pins[i], HIGH); // switching the LED at index i on
delay(70); // stopping the program for 100 milliseconds
digitalWrite(pins[i], LOW); // switching the LED at index i off
}
for (int i=pinsCount-1; i>0; i=i-1){ // chasing left (except the outer leds)
digitalWrite(pins[i], HIGH); // switching the LED at index i on
delay(70); // stopping the program for 100 milliseconds
digitalWrite(pins[i], LOW); // switching the LED at index i off
}
}
Programming the Attiny13AWe cannot directly program ATTINY13 through any USB, there's a method for programming the Attiny straight from the USB port but I'm not doing that.
Instead, I'll be using the ISP flashing method which will utilize the SPI Pins of attiny13A to burn the bootloader in it and then Flash.
Getting Attiny13 Core Installed on Arduino IDE
Before starting the Flashing process, we first need to download and install the Attiny13 Core files in Arduino IDE. https://github.com/MCUdude/MicroCore
- Open the Arduino IDE.
- Open the File > Preferences menu item.
- Enter the following URL in Additional Boards Manager URLs: https://mcudude.github.io/MicroCore/package_MCUdu...
- the Tools > Board > Boards Manager... menu item.
- Wait for the platform indexes to finish downloading.
- Scroll down until you see the MicroCore entry and click on it.
- Click Install.
- After installation is complete close the Boards Manager window.
Preparing the Arduino as ISP setup
AVRs chips usually come blank, they need to be set up to be Arduino IDE compatible but to do that you need an AVR programmer do to that, for example, a USBASP.
Fun Fact, you could make your own AVR Programer with an Arduino Uno or a Nano board in a very easy step.
- Connect your Arduino board with com port and select Example>ArduinoISP, upload this sketch onto your board.
- After uploading, go to the tools menu and choose the Arduino as ISP option in the programmer section.
- Now for flashing Attiny13A, we can select the Attiny13A in the Board section.
The programming process uses VCC, GND, RST, MISO, MOSI, and SCK.
- 5V of Arduino to VCC of Attiny
- GND to GND
- D10 of Arduino to RST of Attiny
- D11 of Arduino to MOSI of Attiny
- D12 of Arduino to MISO of Attiny
- D13 of Arduino to SCK of Attiny
Unfortunately, my SOIC8 IC Clip was not working properly (one of its pins got broken down) so I had to manually solder six wires to MCU's SPI Pins and then connect it with the Arduino Nano which was flashed with the Arduino as ISP Sketch.
Here's how I flashed the ATtiny13,
- connect the Board to the Arduino as ISP Setup
- choose the right port, right programmer (Arduino as ISP), and hit Burn Bootloaderwait for a few seconds, you will get done burning the bootloader message.
- Now Open the sketch that you want to upload to this AttinyGo to the Sketch menu and select Upload using the programmer.
- And your Sketch will get uploaded onto the Attiny13.
As for the power source for this project, we can power it up with two methods.
- Use CR2032 Coin Cell
- TYPE C Cable connected with a 5V Smartphone charger
With a little bit of creativity, we can convert anything into a PCB which was kinda my goal here.
Goku V2 is working properly as it should and now I can finally say that this version is the final one and it doesn't need any further development.
Special thanks to PCBWAY for supporting this project, you can check them out for getting great PCB Service at less cost!
This is it for today folks, thanks for reading this article.
And I'll be back with a new project pretty soon!
Comments