|
OrCad Cadance |
|
|
Autodesk Fusion 360Autodesk
|
|
|
arduino IDEArduino
|
PCB Heart Necklace
Hey Everyone what's up!
So this is my Heart Themed PCB Necklace.
The idea here was to make a necklace from PCB that glows.
The concept that I used for making this Necklace was pretty simple as well.
It's basically a blinky board consisting of 36 LEDs that are controlled by an Attiny84.
MATERIAL REQUIRED
Following are the materials used in this built-
- Attiny84
- LEDs 0603 package
- 10K 0603 Resistor
- SMD Button
- Slide switch
- Custom PCB
- Arduino nano
- Coin Cell holder
- solder paste
GETTING STARTED
I first searched for a heart image that would be suitable for adding leds and componenets, I select this image in the end.
I first imported this image on fusion360 and sketched the exposed white lines.
then I used the extrude function to make this 2D Sketch into a 3D shape.
now we have a 3D Heart shape that will act as a base for our PCB design.
my plan is to convert this 3D shape into a drawing and export the top layer's DXF file so my OrCAD PCB suite can import this DXF file which will be then used to make the PCB Outline and art patterns.
Circuit Study
Now after finalizing the shape, I prepared the schematic which consists of a total of 36 LEDs, 6 LEDs are in parallel and there is a total of 6 different led setups driven by 6 different 8205S N channels MOSFET IC.
This Mosfet IC is then controlled by an Attiny84 MCU, we can change the LED Glow pattern by pressing this button.
After following the schematic and making a PCB Board with these components, I sent the Gerber data to PCBWAY for samples.
Getting PCBs from PCBWAY
I received the PCBs in a week which was really fast.
I choose RED Soldermask for this project with a white silkscreen.
I've Left openings in the soldermask on both sides so the LED would be visible from the topside.
The 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 ASSEMBLY
These are the steps for the main assembly of the FLUX CAP V3 PCB.
- Solder paste Dispensing Process
- Pick & Place Process
- Hotplate Reflow
Because this PCB Doesn't have any Through-hole component, we dont have to add any component with soldering iron, except for the Coin Cell holder on the backside.
SOLDER PASTE
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 PROCESS
After carefully 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 REFLOW
After the "Pick & Place Process", I carefully lifted the whole circuit board and place it on my DIY SMT Hotplate.
I made this Hotplate especially for making projects like these which require SMD soldering. hotplate available in the market were not exactly cheap so I made a minimal version of that which you can check out from here-
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 carefully lift this PCB and try not to shake it as the solder paste is still melted and components might move a bit from their location if shake the circuit too much.
we lift the PCB and then place it on a cooler surface for a little bit, to cool down the heat of PCB.
LED Placement
Now here's something odd, my plan is to add leds on the bottom side of the PCB but the orientation of the LED would be inverted. which means I'm gonna add them upside down so their glow will be visible from the top.
To accomplish this method, I have added 1206 Pads on the PCB and I'm using 0805 Package LEDs with this 1206 PAD, by using smaller LEDs, soldering them would be much easier.
- To solder one LED, we first have to add solder on one side of the pad,
- then place led in its place and reheat the pad again so solder paste will grip the LED from one end.
- When solder paste holds the LED from one side, we add solder paste on the other side and this is basically the entire process of adding led with a soldering iron.
- The trick here is to be quick and let the solder paste dry before removing the tweezer from the led.
By following this process, I soldered the remaining 35 LEDs and this was the result.
I then used a multimeter to test each led for proper soldering.
we just set the multimeter in diode checking mode and place the probes on the positive and negative sides of the led. LEDs are working which means we can now move on to the next step which is to program the Attiny84.
Code and Programming Attiny84
This is the code that I used in this project-
const int switchPin = 7; int pinsCount=6; int pins[] = {0,1,2,3,4,5}; int lightMode = 1; void setup() { pinMode(0, OUTPUT); pinMode(1, OUTPUT); pinMode(2, OUTPUT); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); pinMode(switchPin, INPUT_PULLUP); //digitalWrite(switchPin, HIGH); // internal Pull-up enabled } void loop() { if (digitalRead(switchPin) ==LOW) { lightMode = lightMode + 1; if (lightMode == 4) { lightMode = 1; } } if (lightMode == 1) { digitalWrite(0, HIGH); digitalWrite(1, HIGH); digitalWrite(2, HIGH); digitalWrite(3, HIGH); digitalWrite(4, HIGH); digitalWrite(5, HIGH); delay(300); } else if (lightMode == 2) { digitalWrite(0, LOW); digitalWrite(1, LOW); digitalWrite(2, LOW); digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); delay(300); } else if (lightMode == 3) { for (int i=0; i<pinsCount; i=i+1){ // chasing right digitalWrite(pins[i], HIGH); // switching the LED at index i on delay(90); // 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(90); // stopping the program for 100 milliseconds digitalWrite(pins[i], LOW); // switching the LED at index i off } } }
I'm using an Attiny84 in this project, to program this microcontroller we can do two things here.
1st is to program it via USBASP and Atmel studio which is the hard way or use an Arduino as ISP Setup to flash this MCU.
I'm gonna use the Second option here which is the Arduino as ISP setup.
I have already made a custom programmer that utilizes an Arduino Nano Board to flash a variety of stuff.
To do that, we first need the infamous Spence konde AttinyCore for Arduino IDE which you can download from here https://github.com/SpenceKonde/ATTinyCore
After Installing the core files, connect the following Arduino as ISP pins with PCB Badge in this order.
- VCC to VCC
- GND to GND
- D10 of Arduino Nano to RST Pin of Attiny84
- D11 of Arduino Nano to MOSI
- D12 of Arduino Nano to MISO
- D13 of Arduino Nano to SCK of Attiny84
The Flashing Process is relatively simple
- open the tool menu, and select the attiny84 from boards. do not change any setting.
- select Arduino as ISP as programmer
- select the Right port and hit Burn Bootloader, wait for few seconds and you will be greeted with a done burning bootloader message.
- now go to the sketch menu and hit "upload using programmer"
- and the Attiny84 will get flashed.
PROBLEM 404
After flashing the MCU, I run into a small problem.
I added a load resistor in series with the coin cell to limit the current drawn by LEDs, but the programming header pins were connected directly to LEDs so when the LEDs turn ON, they immediately draw the max current and get burned out.
In the end, almost every LED on the heart board was dead.
To make things right, I had to remove all the LEDs from the bottom side and then again add LEDs by following the same exact process of adding inverted LEDs.
Unfortunately, I ran out of RED LEDs so I had to use blue ones but this was the end result, I tested blue leds with a multimeter again to check the soldering process has been done rightly or not.
THT COMPONENETS
After adding LEDs again, I added the remaining components which were the SMD coin cell holder and the slide switch from the bottom side of the board.
I first added a coin cell holder and then added the slide switch in its place with a regular soldering iron.
COIN CELL
After adding the last two componenets this board was completed and now we can add coin cell to it and see if its works or not.
Result
And it's working!
to turn on the system we use the slide switch and to change the LED animation, we had to use the button on the top side, by pressing it, leds glows in a chasing sequence or they get turned off entirely.
Necklace chain attachment
Now, this is a necklace so I've added this hole at the top side so we can add any regular chain to wear it like a glowing piece of jewelry.
also, we can use it as a keychain or use an ID card strap to wear it as a maker badge.
Well, this is it for today folks, thanks for reading this post, and I'll be back with a new project pretty soon!
const int switchPin = 7;
int pinsCount=6;
int pins[] = {0,1,2,3,4,5};
int lightMode = 1;
void setup()
{
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(switchPin, INPUT_PULLUP);
//digitalWrite(switchPin, HIGH); // internal Pull-up enabled
}
void loop()
{
if (digitalRead(switchPin) ==LOW)
{
lightMode = lightMode + 1;
if (lightMode == 4)
{
lightMode = 1;
}
}
if (lightMode == 1)
{
digitalWrite(0, HIGH);
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
delay(300);
}
else if (lightMode == 2)
{
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
delay(300);
}
else if (lightMode == 3)
{
for (int i=0; i<pinsCount; i=i+1){ // chasing right
digitalWrite(pins[i], HIGH); // switching the LED at index i on
delay(90); // 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(90); // stopping the program for 100 milliseconds
digitalWrite(pins[i], LOW); // switching the LED at index i off
}
}
}
PCB Heart Necklace
*PCBWay community is a sharing platform. We are not responsible for any design issues and parameter issues (board thickness, surface finish, etc.) you choose.
- Comments(1)
- Likes(0)
- 0 USER VOTES
- YOUR VOTE 0.00 0.00
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
More by Arnov Arnov sharma
- WALKPi PCB Version Greetings everyone and welcome back, This is the WalkPi, a homebrew audio player that plays music fr...
- Delete Button XL Greetings everyone and welcome back, and here's something fun and useful.In essence, the Delete Butt...
- Arduino Retro Game Controller Greetings everyone and welcome back. Here's something fun.The Arduino Retro Game Controller was buil...
- Super Power Buck Converter Greetings everyone and welcome back!Here's something powerful, The SUPER POWER BUCK CONVERTER BOARD ...
- Pocket Temp Meter Greetings and welcome back.So here's something portable and useful: the Pocket TEMP Meter project.As...
- Pico Powered DC Fan Driver Hello everyone and welcome back.So here's something cool: a 5V to 12V DC motor driver based around a...
- Mini Solar Light Project with a Twist Greetings.This is the Cube Light, a Small and compact cube-shaped emergency solar light that boasts ...
- PALPi V5 Handheld Retro Game Console Hey, Guys what's up?So this is PALPi which is a Raspberry Pi Zero W Based Handheld Retro Game Consol...
- DIY Thermometer with TTGO T Display and DS18B20 Greetings.So this is the DIY Thermometer made entirely from scratch using a TTGO T display board and...
- Motion Trigger Circuit with and without Microcontroller GreetingsHere's a tutorial on how to use an HC-SR505 PIR Module with and without a microcontroller t...
- Motor Driver Board Atmega328PU and HC01 Hey, what's up folks here's something super cool and useful if you're making a basic Robot Setup, A ...
- Power Block Hey Everyone what's up!So this is Power block, a DIY UPS that can be used to power a bunch of 5V Ope...
- Goku PCB Badge V2 Hey everyone what's up!So here's something SUPER cool, A PCB Board themed after Goku from Dragon Bal...
- RGB Mixinator V2 Hey Everyone how you doin!So here's a fun little project that utilizes an Arduino Nano, THE MIXINATO...
- Gengar PCB Art Hey guys and how you doing!So this is the GENGAR PCB Badge or a Blinky Board which is based around 5...
- R2D2 Mini Edition So here's something special, A Mini R2D2 PCB that speaks ASTROMECH.Astromech is a fictional language...
- C-3PO Blinky Board Hey guys and how you doing!So this is the C3P0 PCB Badge or a Blinky Board which is based around 555...
- WALKPi Breadboard Version Greetings everyone and welcome back, Here's something loud and musical.Similar to a traditional walk...
-
Build a Walking Robot: Theo Jansen Style 3D Printed Octopod
166 0 4 -
-
-
kmMiniSchield MIDI I/O - IN/OUT/THROUGH MIDI extension for kmMidiMini
145 0 0 -
DIY Laser Power Meter with Arduino
227 0 3 -
-
-
Box & Bolt, 3D Printed Cardboard Crafting Tools
192 0 2