Electronics Design

Group Assignment

Individual Assignment

You can access the group assignment here.

Group Assignment

This week focused on hands-on use of professional lab equipment to analyze, debug, and understand real microcontroller-based circuits. The goal was to measure electrical parameters, visualize signals, and interpret communication between devices using industry-standard tools.

Lab Equipment Used

Digital Multimeter – ZOYI ZT301

Used to measure voltage, current, resistance, frequency, and continuity. It was essential for verifying PCB traces, checking 5V and 3.3V power rails, testing components, and detecting short circuits before powering boards.

Digital Oscilloscope – OWON TAO3104A (100 MHz, 1 GSa/s, 4-channel)

Used to visualize real-time waveforms and analyze signal behavior. We measured frequency, amplitude, duty cycle, and waveform shape. It helped us understand PWM signals, timing behavior, and signal stability.

Logic Analyzer – Saleae Logic 8 (8 Digital + 1 Analog, up to 100 MHz)

Used to capture and decode digital communication protocols such as UART and I²C. It allowed us to observe real data transmission, analyze timing relationships, and decode serial communication automatically.

Function Generator – GW Instek AFG-2125

Used to generate controlled sine, square, and triangle waveforms across different frequencies and amplitudes. It was tested using a piezoelectric crystal to observe vibration and sound generation at various frequencies.

Programmable Bench Power Supply – 30V / 5A (B&K Precision 912xA Series)

Provided regulated DC power with adjustable voltage and current limiting. It was used to safely power microcontroller boards, measure current consumption, and protect circuits from overcurrent damage.

Practical Experiments

We used a Seeed Studio XIAO RP2040 to generate PWM-based waveforms such as sine, square, triangle, sawtooth, ramp, and pulse. The oscilloscope was used to visualize and verify the signals, while the logic analyzer decoded UART and I²C communication from the board.

We also powered a custom handheld device using the bench supply to monitor real-time current consumption and performed an LED brightness experiment to observe how PWM duty cycle affects current draw.

Key Learning Outcomes

This week strengthened our practical electronics and embedded systems debugging skills by connecting theoretical knowledge to real laboratory measurements.

History of Electronics

Introduction

Electronics is the science and technology of controlling electric current to do useful tasks. This includes things like amplifying sound, switching signals, processing information, and controlling machines. Modern electronics is everywhere — in phones, computers, cars, and even household appliances. But it wasn’t always this small and powerful. Let’s start from the beginning.

1. Early Electronics: Vacuum Tubes

In the early 1900s, the main electronic devices were vacuum tubes. These are glass tubes with electrodes inside that can control the flow of electricity. They could:

Vaccum tube

Vacuum tubes made early radios, televisions, and the first computers possible. But they had big problems:

Because of these issues, engineers wanted a smaller, more reliable alternative.

2. The Birth of the Transistor

In 1947, scientists at Bell Labs invented the transistor. A transistor is a tiny device that can:

Transistor

Transistors are made of semiconductors, usually silicon. They are:

Transistors completely changed electronics. Radios, computers, and many other devices became smaller, faster, and more practical. Today, billions of transistors fit on a single tiny chip.

3. Integrated Circuits (ICs)

By the 1960s, engineers realized that connecting lots of transistors together on a circuit board was still bulky and complicated. The solution was the Integrated Circuit (IC):

Integrated Circuit

ICs are used in almost every electronic device today. For example:

Thanks to ICs, devices that once filled entire rooms could now fit in your pocket.

4. Levels of Integration in Integrated Circuits

As semiconductor fabrication technology improved, engineers were able to place increasing numbers of transistors onto a single silicon chip. The classification of ICs is based on the approximate number of transistors integrated into one chip.

The levels of integration are defined as follows:

SSI – Small Scale Integration

Transistor Count: Fewer than 100 transistors per chip

MSI – Medium Scale Integration

Transistor Count: 100 to 3,000 transistors per chip

LSI – Large Scale Integration

Transistor Count: 3,000 to 100,000 transistors per chip

VLSI – Very Large Scale Integration

Transistor Count: 100,000 to 10 million transistors per chip

ULSI – Ultra Large Scale Integration

Transistor Count: More than 10 million transistors per chip

Each step made electronics smaller, faster, cheaper, and more reliable. Today, electronics are everywhere, from your phone to cars, drones, and smart homes.

Active and Passive Components

Electronic components are classified into active and passive devices based on how they interact with energy within a circuit.

Active Components

Active components are devices that deliver power or energy to a circuit. They are capable of introducing energy in the form of voltage or current, typically by using an external power source.

Characteristics of Active Components

Because of their ability to provide amplification and control, active components are essential in signal processing, switching, and communication systems.

Examples of Active Components

Passive Components

Passive components are devices that utilize, absorb, store, or dissipate energy supplied by active components. They do not generate energy on their own.

Characteristics of Passive Components

Examples of Passive Components

Summary Comparison

Feature Active Components Passive Components
Energy Role Energy donors Energy acceptors
Power Gain Yes No
External Power Required Yes No
Signal Amplification Possible Not possible

In summary, active components introduce and control energy in a circuit, while passive components manage, store, or dissipate the energy provided by active sources.

Resistors

A resistor is a two-terminal passive electronic component that limits, regulates, or restricts the flow of electric current in a circuit

Resistor image

If too much electricity flows, components can overheat, LEDs can burn out, and circuits can get damaged.

A resistor protects components by limiting current, dividing voltage, and controlling signal levels in a circuit.

Measured in ohms, they convert electrical energy into heat to protect components, divide voltages, and bias active elements.

Very Simple Example

If you connect an LED directly to a battery, it may burn out because too much current flows through it.

But if you add a resistor in series, it reduces the current, keeps the LED safe, and allows it to glow properly.

Property of Resistance

Resistance is the property of a material to oppose the flow of electric current.

Resistance Formula

The resistance (R) of a conductor depends on:

The mathematical expression is:

R = ρ (L / A)

Where:

Unit of Resistance

Resistance is measured in Ohms (Ω).

Classification of Resistors

Resistors are mainly classified into two types:

  1. Fixed Resistors
  2. Variable Resistors

1. Fixed Resistors

Fixed resistors have a constant resistance value that cannot be changed.

Types of Fixed Resistors

2. Variable Resistors

Variable resistors allow the resistance value to be adjusted manually.

Types of Variable Resistors

Embedded Microcontroller Simulation

Embedded microcontroller simulation is the process of testing and running a microcontroller-based system in a virtual environment before building the physical hardware. It allows designers to verify circuit connections, program behavior, and overall system functionality without using real components.

Wokwi

Wokwi homepage

The objective of this task was to simulate and test a microcontroller circuit using an online simulator before building it on physical hardware. Instead of directly connecting components on a real board, I first verified the circuit design and program behavior in a virtual environment to reduce errors and avoid damaging components.

For this purpose, I used the Wokwi Online Simulator.

Creating a New Project

Next, I created a new project in the simulator. I first clicked on the Profile section and navigated to My Projects. From there, I selected the New Project option to start a fresh design. I then chose the Raspberry Pi Pico board from the available hardware options and selected Arduino as the programming environment. This set up a new workspace with the required board and code editor ready for development.

Understanding the Setup

After creating the project, the simulator automatically generated:

Wokwi homepage

Writing the Code

I modified the default Arduino code to test basic functionality such as blinking an LED.


            void setup() {
                pinMode(5, OUTPUT); // Built-in LED pin for Raspberry Pi Pico
            }

            void loop() {
                digitalWrite(5, HIGH);
                delay(1000);
                digitalWrite(5, LOW);
                delay(1000);
            }
            
Wokwi homepage

I clicked the Start Simulation button. The built-in LED connected to GPIO 5 started blinking, confirming that the code was working correctly.

Observation

The simulation successfully demonstrated the basic operation of the Raspberry Pi Pico using Arduino code. The LED blinked at a 1000 ms interval, confirming correct pin configuration and program execution.

Learning Outcome

Conclusion

Using Wokwi allowed me to safely test and debug my microcontroller code without requiring physical hardware. This helps reduce errors before implementing the design in a real embedded system.

Pushbutton with OLED

Objective

To interface a pushbutton and an OLED display with a Raspberry Pi Pico and display different messages on the screen depending on the button state.

Components Used

Working Principle

The pushbutton is configured as a digital input using the INPUT_PULLUP mode. In this configuration:

The OLED display communicates with the Raspberry Pi Pico using the I2C communication protocol. The program continuously reads the button state. If the button is pressed, a specific message is displayed on the OLED. If the button is not pressed, a different message is displayed.

Circuit Connections

Pushbutton Connections

One terminal of the pushbutton is connected to GPIO 2.
The other terminal is connected to GND.
No external resistor is required because the internal pull-up resistor is enabled in the program.

OLED Display Connections (I2C)

OLED Pin Connected To Pico
VCC 3.3V
GND GND
SDA GPIO 4
SCL GPIO 5

Program Code


            #include <Arduino.h>
            #include <U8g2lib.h>
            #include <Wire.h>

            U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);

            const int buttonPin = 2;

            void setup() {
                pinMode(buttonPin, INPUT_PULLUP);
                u8g2.begin();
            }

            void loop() {
                int buttonState = digitalRead(buttonPin);

                u8g2.clearBuffer();
                u8g2.setFont(u8g2_font_ncenB08_tr);

                if (buttonState == LOW) {
                    u8g2.drawStr(0, 30, "Button Pressed!");
                } 
                else {
                    u8g2.drawStr(0, 30, "Press the Button");
                }

                u8g2.sendBuffer();
                }
            

Code Explanation

In the setup function, the button pin is configured as INPUT_PULLUP and the OLED display is initialized using the U8g2 library.

In the loop function, the program reads the button state. The display buffer is cleared before writing new content. If the button is pressed (LOW), the display shows "Button Pressed!". If the button is not pressed (HIGH), the display shows "Press the Button". The buffer is then sent to the display.

Display with button

Expected Result

When the button is not pressed, the OLED displays:
Press the Button

When the button is pressed, the OLED displays:
Button Pressed!

Electronic Design

KiCad

KiCad is a free and open-source Electronic Design Automation (EDA) software suite used for designing electronic schematics and printed circuit boards (PCBs). It provides a complete workflow for electronic product development — from circuit design and simulation to PCB layout and manufacturing file generation.

The software includes several integrated tools, such as:

KiCad

Schematic Editor

Create a New Project

  1. Click File in the top left corner.
  2. Select New Project.
  3. Choose the folder where you want to save your project.
  4. Enter your project name.
  5. Click Save.
KiCad

Files Created Automatically

When a new project is created in KiCad, the software automatically generates several important files. Each file serves a specific purpose in the design process.

1. .kicad_pro (Project File)

The .kicad_pro file is the main project file. It stores the overall project settings such as:

This file acts as the central control file that links the schematic and PCB files together. When you open a KiCad project, this file loads all associated design data.

2. .kicad_sch (Schematic File)

The .kicad_sch file contains the schematic design of the project.

It stores:

This file represents the logical design of the circuit — how components are electrically connected — but not their physical placement.

3. .kicad_pcb (PCB Layout File)

The .kicad_pcb file contains the printed circuit board layout.

It stores:

This file represents the physical design of the circuit board that will be manufactured.

Kicad Project Manager

The KiCad Project Manager is the main control window that appears when you open a KiCad project. It acts as the central hub for managing all files and tools related to a specific electronic design project.

From the Project Manager, you can create a new project, open an existing project, and access all major KiCad design tools such as the Schematic Editor, PCB Editor, Symbol Editor, and Footprint Editor. Instead of opening each tool separately, the Project Manager provides organized access in one place.

The left side of the window typically displays the project files, including the .kicad_pro project file, .kicad_sch schematic file, and .kicad_pcb PCB layout file. This allows you to quickly navigate between different parts of your design.

The top menu bar provides options such as File, Edit, View, Tools, Preferences, and Help. Through these menus, you can configure project settings, manage libraries, access the Plugin and Content Manager, and adjust design preferences.

In summary, the KiCad Project Manager serves as the starting point and organizational center of a KiCad project. It connects the schematic design, PCB layout, libraries, and configuration settings into a single structured workflow.

kicad homepage

1. Schematic Editor

Used to create and edit the project schematic. This is where circuit diagrams are drawn by placing symbols and connecting them with wires.

2. Symbol Editor

Used to create, modify, and manage schematic symbols. It allows editing of global or project-specific symbol libraries.

3. PCB Editor

Used to design the printed circuit board layout. Components are placed on the board and connected using copper tracks.

4. Footprint Editor

Used to create and edit PCB footprints. Footprints define the physical pad layout of components on the board.

5. Gerber Viewer

Used to open and preview Gerber files. This helps verify manufacturing files before sending them to a PCB fabrication service.

6. Image Converter

Used to convert bitmap images into schematic symbols or PCB footprints. This is helpful for adding logos or custom graphics to a design.

7. Calculator Tools

Provides electrical calculation tools such as resistor value calculators, track width calculators, and other design-related utilities.

8. Drawing Sheet Editor

Used to edit the drawing sheet format, including borders and title blocks, for schematic and PCB documents.

9. Plugin and Content Manager

Used to manage downloadable libraries, plugins, and external content from KiCad and third-party repositories.

In the Project Manager window, locate the Schematic Editor icon, and click it to open the Schematic Editor.

Schematic Design (Eeschema)

To begin designing the circuit, the Schematic Editor must be opened from the KiCad Project Manager.

KiCad
Fig. 1: Screenshot of Eeschema - Schematic Capture Editor in KiCad

When you open Eeschema, a new window appears with a blank schematic sheet. You will see options such as Add Components, Place Wire, Net Label, and other tools.

kicad interface

Add Components

  1. Press A on your keyboard.
  2. Or click the Add Symbol icon in the right toolbar.

A window called Choose Symbol will open. On the left side, you will see different libraries. On the right side, you will see the available components (symbols) from the selected library.

KiCad

Use the search bar at the top of the Choose Symbol window.

You can further filter the results by using keywords or by selecting a specific library name.

Click on a symbol to see its preview. Check the pin count, pin names, and symbol type to ensure it matches your requirement. After verifying the details, click OK to select the symbol.

Move your cursor to the schematic sheet and left click to place the component. You can place multiple copies by clicking again at different locations. Press Esc to stop placing the component.

KiCad Library Management

To streamline the design process and ensure access to common mechanical and electrical components, I utilized the KiCad Plugin and Content Manager.

KiCad default libraries
Default KiCad libraries
KiCad FabLab library setup
KiCad FabLab library setup

Installing KiCad FabLib

Make sure you have KiCad 8 or later installed before proceeding with the installation.

Installation Method: From KiCad Plugin Repository

Warning:
This installation method depends on the KiCad team accepting a merge request of the latest stable version. The version available through the Plugin and Content Manager may not always be the most recent release. If you need the absolute latest version, refer to the Install from File method instead.

Follow the steps below to install KiCad FabLib using the official KiCad plugin source:

Go to:
Tools → Plugin and Content Manager

or press:
Ctrl + M

You can also find the Plugin and Content Manager in the KiCad Project Manager window under the Tools menu.

In the Plugin and Content Manager window, click on the Libraries tab.

Look for "KiCad FabLib" in the list of available libraries under the Libraries tab.

Click the Install button next to KiCad FabLib.

After installation, click Apply Pending Changes to complete the process.

Once completed, the KiCad FabLib library will be available for use in your projects.

Libraries in KiCad are used whenever you need electronic components or mechanical elements for your schematic and PCB design. A library contains predefined symbols for schematics and footprints for PCB layouts. Instead of creating components manually every time, libraries allow you to quickly insert standardized, ready-to-use parts into your project.

You use the default KiCad libraries when working with common components such as resistors, capacitors, diodes, connectors, and microcontrollers. These libraries are sufficient for most general electronic designs and follow industry standards.

External libraries, such as KiCad FabLib, are used when you require specific components that are not available in the default libraries. For example, in fabrication laboratory environments, FabLab libraries provide commonly used SMD components, footprints tailored for PCB milling machines, and standardized parts used in academic or prototyping workflows.

Libraries are typically accessed during two main stages of design. The first stage is during schematic design, where you select symbols from a symbol library. The second stage is during PCB layout, where the corresponding footprints from footprint libraries are assigned and placed on the board.

Using properly managed libraries ensures consistency, reduces design errors, saves time, and improves compatibility with manufacturing processes.

So after I imported the needed components from the library,

Rotating and Flipping Before Placement

  • Press R to rotate 90°.
  • Press X to flip horizontally.
  • Press Y to flip vertically.

Editing Component Properties

  • Double-click the placed component.
  • Edit:
    • Reference (Example: R1, C1)
    • Value (Example: 10k, 100nF)
    • Footprint (Important for PCB design)
    • Datasheet link (optional)

What is a Footprint?

A footprint defines the physical layout of a component on the PCB. It includes pad size, pad spacing, drill holes, and overall package shape. The schematic symbol and PCB footprint are separate and must be linked.

Wiring and Electrical Checks

Add Wires

  1. Press W.
  2. Click from one pin to another.
  3. Press Esc to stop wiring.

Run Electrical Rules Check (ERC)

Click on ERC in the top toolbar or go to Inspect → Electrical Rules Checker.

In the ERC window, click Run to analyze the schematic for electrical issues.

Review all reported errors and warnings. Double-click on each issue to locate it in the schematic and correct the problem.

Repeat the process until no unresolved errors or critical warnings remain.

PCB Design

PCB design is the process of converting a schematic circuit diagram into a physical printed circuit board layout. In this stage, electronic components are arranged on a board and electrically connected using copper tracks. While the schematic represents the logical connections between components, the PCB design defines their physical placement, routing, board dimensions, and manufacturing details.

To begin PCB design in KiCad, first complete the schematic and ensure there are no electrical errors by running the Electrical Rules Check (ERC). Once the schematic is verified, open the PCB Editor from the KiCad Project Manager by clicking on PCB Editor.

To transfer the design from the schematic to the PCB layout, return to the Schematic Editor and select Tools → Update PCB from Schematic. In the update window that appears, click Update PCB. This process imports all assigned footprints and electrical connections into the PCB Editor.

After updating, open the PCB Editor. The component footprints will appear in the workspace along with thin connection lines called ratsnest lines. These lines represent the electrical connections that must be routed using copper tracks. The next step is to arrange the components properly on the board and begin routing according to the indicated connections.

Define Board Outline (Edge.Cuts)

  1. Select Edge.Cuts layer
  2. Draw board boundary
  3. Ensure closed shape

Arrange Components

  1. Move footprints inside board outline
  2. Place related components close together
  3. Keep connectors near board edges
KiCad schematic

PCB Trace (Routing Tracks) in KiCad

What is a PCB Trace?

A PCB trace is a copper path that electrically connects component pads on the PCB. It replaces the wires from your schematic.

Before Routing Traces

  1. Update PCB from schematic.
  2. Arrange all component footprints properly.
  3. Define board outline (Edge.Cuts layer).
  4. Set proper track width (based on current requirements).

Step 1: Select Route Tool

  1. Open PCB Editor.
  2. Press X on your keyboard.
  3. Or click the Route Tracks icon from the right toolbar.

Step 2: Start Routing

  1. Click on a pad (start point).
  2. A trace will attach to your cursor.
  3. Move towards the destination pad.
  4. Click to create corners if needed.
  5. Click on the destination pad to complete connection.

Routing Tips

Changing Trace Width

  1. Before routing, select track width from the top toolbar.
  2. Choose predefined width or create custom width in Board Setup.

Switching Layers (For 2-Layer Boards)

  1. While routing, press V to add a via.
  2. The trace will switch to the other copper layer.

Deleting a Trace

Dragging or Adjusting Trace

Check Design Rules

  1. Click Inspect → Design Rules Checker (DRC).
  2. Fix any clearance or connection errors.

Good Practice

Rectangle and Edge Cut in KiCad PCB Editor

What is Edge.Cuts?

The Edge.Cuts layer defines the physical boundary of the PCB. This outline tells the manufacturer where the board should be cut. The shape must always be a fully closed loop.

Drawing a Rectangle Board Using Edge.Cuts

Step 1: Open PCB Editor

  1. Open your project.
  2. Click PCB Editor.

Step 2: Select Edge.Cuts Layer

  1. Go to the right-side Layers Manager.
  2. Select Edge.Cuts.

Important: Always confirm the active layer is Edge.Cuts before drawing.

Step 3: Draw Rectangle Using Rectangle Tool

  1. Click Add Graphic Rectangle (right toolbar).
  2. Click once to set the first corner.
  3. Move the cursor to define board size.
  4. Click again to complete the rectangle.

Alternative Method: Draw Rectangle Using Lines

  1. Select Add Graphic Line.
  2. Click to draw the first edge.
  3. Draw four lines (top, right, bottom, left).
  4. Ensure the final line connects exactly to the starting point.

Setting Exact Dimensions

  1. After drawing the rectangle, double-click one edge.
  2. Edit the coordinates manually if precise dimensions are required.
  3. You can also enable grid spacing for accurate sizing.

Checking the Edge Cut

Important Rules

Good Practice

KiCad PCB layout

3D Viewer in KiCad PCB Editor

What is 3D Viewer?

The 3D Viewer allows you to see your PCB in a realistic 3D model. It helps you check component placement, board shape, and overall design appearance before fabrication.

Step 1: Open PCB Editor

  1. Open your project.
  2. Click PCB Editor.

Step 2: Open 3D Viewer

  1. Click View in the top menu.
  2. Select 3D Viewer.
  3. Or press Alt + 3 (shortcut).

A new window will open showing your PCB in 3D.

Basic Controls in 3D Viewer

Checking in 3D Viewer

If Components Do Not Appear in 3D

Render Options

Good Practice

KiCad 3D final view

Individual Project

Overview

For the individual assignment, I designed a PCB for the LED blinker circuit I had previously built and simulated during the Electronics week. The goal was to take that design and turn it into a real, fabrication ready PCB layout using KiCad.

Downloading Additional Components

Not all components are available in KiCad's default library. For this project, I needed a S4B-PH-SM4-TB connector, which was not available in KiCad. I downloaded it from SnapMagic, a library of ready-to-use schematic symbols and footprints. This is a useful method whenever a component is missing from KiCad's built-in libraries.

SnapMagic homepage
SnapMagic homepage
Searching for the component on SnapMagic
Searching for the S4B-PH-SM4-TB component
Downloading the symbol and footprint
Downloading the symbol and footprint
Selecting the KiCad file from the list of downloadable formats
Selecting the KiCad file from the list of downloadable formats

Adding the Component to KiCad

Once downloaded, I imported the component into KiCad by adding it to a local library. The downloaded package includes both the schematic symbol and the PCB footprint, so it can be used directly in the schematic editor and then carried through to the PCB layout.

Symbol and Footprint Libraries Manager in KiCad
Opening the Symbol and Footprint Libraries Manager in KiCad
Adding a new library entry using the '+' button
Click the '+' button to add a new library entry
Entering the file path for the downloaded library
Enter the file path pointing to the downloaded SnapMagic library folder
Right-clicking a symbol in the schematic editor
Right-click on the component symbol in the schematic editor to edit its properties
Assigning the correct footprint file path to the component
Assign the correct footprint file path so KiCad links the symbol to the physical footprint
Selecting the S4B-PH-SM4-TB component from the library browser
Select the S4B-PH-SM4-TB component from the library browser to confirm it loaded correctly
Clicking 'Show' to preview the footprint
Click 'Show'
Right-clicking in the PCB Editor to access footprint options
Right-click in the PCB Editor to access footprint placement options
Opening footprint properties from the context menu
Click 'Properties' to open the footprint properties dialog
Browsing to select the correct footprint path
Browse to and select the correct footprint path from the downloaded library
Confirming the selected footprint file path
Confirm the selected file path, KiCad will now use this footprint for the component
3D preview of the S4B-PH-SM4-TB connector footprint
3D preview of the S4B-PH-SM4-TB connector showing the imported footprint
Adjusting component rotation in the footprint properties
Adjust the rotation value in properties to orient the connector correctly on the board

PCB Layout

With all components placed in the schematic, I opened the PCB Editor and arranged them within the board outline. I kept the layout compact while maintaining enough clearance between parts for reliable fabrication.

Components placed within the board outline in the PCB Editor
Components arranged within the board outline in KiCad's PCB Editor
Compact component layout with clearances maintained
No errors

Routing Traces

I routed all the copper traces manually, connecting the pads according to the ratsnest (the unconnected net lines from the schematic). I used appropriate trace widths for power and signal lines to ensure the board meets fabrication requirements.

Manually routed copper traces connecting all component pads
All copper traces routed manually, following the ratsnest to connect component pads

Design Rules Check (DRC)

Once routing was complete, I ran the Design Rules Checker (DRC) to verify the board had no errors — checking for minimum trace widths, clearances, unconnected nets, and board outline integrity. All errors were resolved before moving on.

3D Preview

I used KiCad's 3D Viewer to do a final visual check of the board — confirming component placement, orientation, and the overall footprint of the design before exporting.

Final 3D view of the completed PCB design in KiCad
Final 3D view of the completed PCB in KiCad's 3D Viewer, confirming component placement and orientation

Key Learnings