Week 10 – Output Devices
This week is basically about creating physical output such as light, motion or sound. The output might be based of the input data that we captured during the last week. I may develop a new controller or use the one that I developed during electronic production week.
AI prompt: ""
Assignment Overview
- Measure the power consumption of an output device
- Add an output device to a microcontroller board you've designed, and program it to do something
| Day | Activity | Status |
|---|---|---|
| Thursday | Class, Group Assignment 📐 and Group Assignment Documentation📝 | Pending |
| Friday | Week Planning 📅, LAB Activity 🛠 and Documentation 📝 | Pending |
| Saturday | Brainstorm for Machine Building week | Pending |
| Final Project 🛠 and Documentation 📝 | Pending | |
| Sunday | Watch Input Week 📺 | Pending |
| Monday | LAB Activity 🛠 | Pending |
| Reflection and Learnings 💡 | Pending | |
| Complete Documentation - Regional Review 📝 | Pending | |
| Tuesday | Regional Review 👨🏫💬 | Pending |
| Lab Activity 🛠 | Pending | |
| Watch Prof. Neil’s 2025 Lectures 📺 | Pending | |
| Wednesday | Go the Extra Mile - On Final Project⚙️ | Pending |
| NuEval - Final Documentation 🏁 | Pending | |
| Make instagram Reel 🎬🚀 | Pending |
Group Assignment
As part of the group assignment, we calculated the power consumption of a servo motor and Neopixel LEDs using bench power supply.
Output Device - Neopixel
As my project is on integrating Neopixel RGBs with Traditional embroidery work I choose to work with Neopixel WS2818B in my output device week.
These Neopixel are connected in series supply pins and ground pins of all Neopixels are connected and data-out of first is connected to data in of next Neopixel , the first one takes off it's values and passes on the information to next one, the next one takes it off and my message hops through them.
WS2818B is the IC inside the NEOPIXEL 5050. The package 5050 is from Adafruit Industry.
PIN Functions
- Pin 1: VDD power supply
- Pin 2: DOUT Control Data Signal Output
- Pin 3: VSS Ground
- Pin 4: DIN COntrol Data pin signal input
Absolute values
| Parameter | Symbol | Ratings | Unit |
|---|---|---|---|
| Power supply voltage | VDD | +3.5 ~ +5.3 | V |
| Input voltage | VI | -0.5 ~ VDD + 0.5 | V |
| Operation junction temperature | Topt | -25 ~ +80 | °C |
| Storage temperature range | Tstg | -40 ~ +105 | °C |
Microcontroller Board
While designing my week 8 electronic production I added totaL 4 Neopixels one connected to Pin D10 and 3 connected to pin D10. I added them already because I knew that my project involves Neopixels as output device.
- Pin D9 has 3 Neopixels
- Pin D10 has 1 Neopixel
My Objective in testing Neopixel:
- Understand the Neopixel Protocol
- Single-wire Control, Self-Clocking (no separate clock wire)
- Each Neopixel needs 3 bytes of data (Red, Green, Blue) - Total 24bits
- Thus after transmission for each pixel,the data is reduced 24bit
- Operates at roughly 800kHz (1.25us per bit)
- After the data for the entire strip is sent, the data line is held low for a reset period typically >50µs
- Power Measurement deciding battery rating
- Brightness Level 005 --> Voltage 5.016V --> Current 0.044A --> Power 0.202W
- Brightness Level 050 --> Voltage 5.033V --> Current 0.052A --> Power 0.263W
- Brightness Level 100 --> Voltage 5.033V --> Current 0.060A --> Power 0.303W
- Brightness Level 150 --> Voltage 5.033V --> Current 0.072A --> Power 0.362W
- Brightness Level 200 --> Voltage 5.025V --> Current 0.080A --> Power 0.402W
- Brightness Level 255 --> Voltage 5.033V --> Current 0.092A --> Power 0.462W
- ESP-32C6 Consumption --> Voltage 5.025V --> Current 0.044A --> Power 0.222W
- Identify the way of portable/battery 5V power supply for LEDs
- Control the Neopixel with PIOs customizable processor around the main processor
- Develop program blocks based on Niel's Micropython Library
- Use array for RED, GREEN and BLUE value
- Use PWM to control the LEDs
To measure power, I planned to turn on 1 Neopixel with White color with different brightness levels.
#include // Include NeoPixel library
#define PIN D9 // Define NeoPixel data line
#define NUMPIXELS 3 // Total no. of NeoPixels at D9
// Create an object named 'pixels'
// Parameters:
// 1. Number of LEDs
// 2. Pin used for communication
// 3. LED type + signal speed (GRB order + 800kHz timing)
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
pixels.begin();
// Initialize NeoPixel communication
// Sets the pin as OUTPUT and prepares internal buffers
pixels.setBrightness(50);
// Set overall brightness (0 to 255)
}
void loop() {
// Loop through each LED (index 0 → 2)
for (int i = 0; i < NUMPIXELS; i++) {
pixels.setPixelColor(i, pixels.Color(255, 255, 255));
// Set color of LED at position 'i'
// pixels.Color(R, G, B)
// (255,255,255) = White (full intensity of all colors)
}
pixels.show();
// VERY IMPORTANT:
// Sends all color data to LEDs
// Without this → LEDs will NOT update
}
Brightness level range : 0 to 255
Charlieplexing
I designed a microcontroller board using ATTiny 1624 and LED Matrix of 5 Rows and 4 Columns as (n) x (n-1). The Charlieplexing concept states that I can control (n) x (n-1) LEDs using n pines of a micro-controller. Thus, here I can control 20 leds using 5 pins of micro-controller ATTiny 1624 IC.
As I wanted to embed the PCB into clothing, I wanted to make the matrix with in 30mm x 30mm area the so I need to go for double layer PCB.
Because of time constrain and under pressure, I chose to use Autoroute tool to trace the paths, however the DRC gave about 344 errors of Trace width and and Trace spacing and made the circuit very complex.What Went Wrong
Because of time constrain and under pressure, I chose to use Autoroute tool to trace the paths, however the DRC gave about 344 errors of Trace width and and Trace spacing and made the circuit very complex.
What I Learned
My instructor advice me to do manual routing, even though it takes time. Then I figure out optimal way of doing manual and auto routing.
- First, draw a pencil sketch of micro-controller PIN layout and optimally arrange de-coupling capacitors, pull-up resistors, TX/RX straight connection, SDA and SPI lines, Power and GND lines.
- Second, I arranged the components I placed the LEDs at proper equal distance to have symmetric placing and then connected columns and planned to connect row on the Kapton take 3 layers
- Third, I flipped the properly arranged components and moved within the edge-cut layer boundary.
- Forth, after completing above 60-70 % traces manually, and leave the traces that can not be routed, then perform autorouting. The unroute traces will be connected by vias by freerouting tool.
- Fifth, check the positions of Vias and very nearer traces, and rearrange them.
- Last, do the DRC - design rule check.
AS this was the complex circuit, I got feedback in the regional review of making 3-Layer PCB, making third layer of connections on Kapton Tape. This I remover the connection that I wanted on Kapton tape from the PCB schematics, so that the Freerouter do not route them and I can connect them later.
Double-Layer PCB Milling
I first time tried the double layer PCB milling in my fab academy journey.
What Went Wrong
At the step-3 after top layer outline cute, I flipped in the wrong direction and thus the via-holes for top layer and trace of bottom layer was not matching after step 4, which is bottom layer tracing.
What I Learned
Always double check the alignment of vias and bottom layer traces of before starting the Trace Bottom layer operation. I milled the PCB again.
3-Layer PCB Fabrication
The Steps I followed are:
- First, solder the via-holes.
- Second, solder the top LED-Matrix layer.
- Third, solder the bottom layer starting with ATtiny first and then other components.
- Forth, leaser cut the Kapton Tape.
- Fifth, placed the kapton tape and soldered the third layer.
Then, I downloaded the top trace layer PNG without traces it included only pads and outline. and Then I used Gimp to edit the PNG.
I used Gimp, I selected the Brush and then adjusted it's size, aspect-ratio, and hardness. and then drew the black pads (basically connecting the LED pads vertically to have LED cutout).
I used xTool F1 Ultra to cut the Kaptop tape for third layer and followed the steps in this Week 8th Group Assignment. First I downloaded, installed and open the xTool Studio 1.6.6.
We need to either convert the SVG in the xTool SW or we need to use already converted SVG using Inkspace. I already have the file that I converted to SVG using Inkscape. Now I clicked New project --> Import SVG --> Verify the Scale --> Set the frame --> set the material --> Set power 90% --> set speed between 1500-3000 --> no. of pass 5 --> repeat operation multiple time until it is you see while line on the cutting path.
Test and Validation coming soon....!!
What Went Wrong
What I Learned
Always double check the alignment of vias and bottom layer traces of before starting the Trace Bottom layer operation. I milled the PCB again.