KiCad: Từ Schematic đến PCB hoàn chỉnh và Quy trình đầy đủ để đặt hàng nhà máy
Trung cấp1/8/2026- Tác giả: IoTlabs Maker

KiCad: Từ Schematic đến PCB hoàn chỉnh và Quy trình đầy đủ để đặt hàng nhà máy

Đi từ mạch thử nghiệm ESP32 + DHT22 trên breadboard đến một board PCB hoàn chỉnh: vẽ schematic trong Eeschema, gán footprint, layout trong PCB Editor, chạy DRC và xuất Gerber để đặt hàng nhà máy.

KiCadPCBSchematicGerberESP32DHT22Thiết kế PCB

Bài này đi qua toàn bộ quy trình thiết kế PCB trong KiCad, từ schematic đến file Gerber sẵn sàng đặt hàng, dùng một mạch cảm biến ESP32 DevKit V4 + DHT22 làm ví dụ chạy thật xuyên suốt bài viết.

Hướng dẫn chi tiết

Đi từ mạch thử nghiệm ESP32 + DHT22 trên breadboard đến file Gerber sẵn sàng đặt hàng nhà máy, qua đầy đủ các bước Eeschema, gán footprint, PCB Editor, DRC và xuất Gerber trong KiCad.

1. Giới thiệu

Khi một mạch thử nghiệm trên breadboard đã chạy ổn định, bước tiếp theo để biến nó thành sản phẩm thật là thiết kế PCB (Printed Circuit Board). KiCad là phần mềm EDA (Electronic Design Automation) mã nguồn mở, miễn phí, được dùng rộng rãi trong cộng đồng maker và cả trong công nghiệp. Bài này trình bày toàn bộ quy trình chuẩn "từ schematic đến PCB" trong KiCad — từ vẽ sơ đồ nguyên lý (Eeschema), gán chân linh kiện thật (footprint), sắp xếp và đi dây trên PCB Editor, kiểm tra luật thiết kế (DRC), cho tới xuất file Gerber để đặt hàng nhà máy.

Để quy trình không chỉ là lý thuyết suông, bài viết dùng một mạch thật làm ví dụ xuyên suốt: ESP32 DevKit V4 đọc cảm biến nhiệt độ/độ ẩm DHT22 qua một chân GPIO digital. Mạch này đã được cắm breadboard, nạp code và chạy thật (code đầy đủ ở mục 5) — đây chính là mạch mà chúng ta sẽ "lên" schematic và PCB trong các bước tiếp theo.

2. Linh kiện cần có

Linh kiện

Số lượng

Ghi chú

ESP32 DevKit V4

1

Board điều khiển chính, dual-core 240MHz, WiFi/BLE

DHT22 (AM2302)

1

Cảm biến nhiệt độ/độ ẩm, giao tiếp 1-Wire

Điện trở 10kΩ

1

Kéo lên (pull-up) cho chân DATA của DHT22 — khuyến nghị theo datasheet

Breadboard + dây jumper

1 bộ

Dựng mạch thử nghiệm trước khi lên PCB

3. Sơ đồ kết nối (mạch thử nghiệm)

DHT22

ESP32 DevKit V4

VCC

3V3

GND

GND

DATA

GPIO4 (qua điện trở kéo lên 10kΩ về 3V3)

Đây chính là mạch mà chúng ta sẽ chuyển thành schematic KiCad ở mục tiếp theo. Ba tín hiệu (VCC, GND, DATA) tương ứng với ba dây nối/net trong schematic.

4. Quy trình đầy đủ: từ Schematic đến Gerber trong KiCad

Bước 1 — Vẽ Schematic trong Eeschema

Tạo một Project KiCad mới, mở Schematic Editor (Eeschema). Đặt symbol cho từng linh kiện trong mạch thật ở trên: một symbol MCU/module cho ESP32 DevKit (hoặc symbol header nếu dùng board rời cắm lên PCB con), một symbol cho DHT22 (3 chân: VCC, GND, DATA/OUT), và một symbol điện trở 10kΩ. Nối dây (wire) giữa các chân đúng như bảng kết nối ở mục 3: VCC DHT22 nối 3V3, GND nối GND, DATA nối vào một chân GPIO của ESP32 (ví dụ GPIO4) và đồng thời nối qua điện trở 10kΩ về đường 3V3 (pull-up).

Sau khi vẽ xong, dùng công cụ Annotate Schematic Symbols để KiCad tự đánh số tham chiếu (U1, R1, J1...) cho từng linh kiện, tránh trùng lặp reference designator. Chạy Electrical Rules Check (ERC) để phát hiện sớm các lỗi như chân chưa nối, xung đột output-output, hoặc thiếu nguồn.

Bước 2 — Gán Footprint cho từng linh kiện

Footprint là "dấu chân" vật lý của linh kiện trên PCB — kích thước pad, khoảng cách chân, kiểu hàn (THT hay SMD). Dùng công cụ Assign Footprints (hoặc Footprint Assignment Tool) để gán mỗi symbol schematic với một footprint thật trong thư viện: DHT22 dùng footprint header 3 chân THT với khoảng cách chân 2,54mm (đúng như module thật), điện trở 10kΩ dùng footprint THT axial hoặc SMD 0805 tùy loại thực tế đang có, ESP32 DevKit thường được đặt lên PCB dạng "dán module" hoặc dùng footprint hàng chân header cắm xuống board chính. Đây là bước bắt buộc — không có footprint, netlist sẽ không thể chuyển sang PCB Editor được.

Bước 3 — Sang PCB Editor và đi dây (Routing)

Từ Eeschema, cập nhật PCB từ Schematic (Update PCB from Schematic) để đưa toàn bộ netlist + footprint sang PCB Editor. Các linh kiện xuất hiện thành từng cụm với các đường "ratsnest" (dây kéo thẳng) thể hiện các kết nối logic còn thiếu. Việc tiếp theo:

  • Vẽ đường viền board (Edge.Cuts layer) đúng kích thước và hình dạng mong muốn.

  • Sắp xếp vị trí linh kiện hợp lý — DHT22 nên đặt gần mép board, tránh nguồn nhiệt, vì nó đo nhiệt độ môi trường.

  • Đi dây (route track) từng ratsnest: track tín hiệu (DATA) có thể dùng bề rộng tối thiểu tiêu chuẩn (0.25mm), track nguồn (3V3, GND) nên rộng hơn để chịu dòng tốt hơn — có thể tính bằng công cụ track width calculator dựa trên dòng tiêu thụ thực tế của ESP32.

  • Có thể đổ vùng phủ đồng (copper pour / zone) cho GND để tạo mặt phẳng đất, giảm nhiễu và trở kháng.

Bước 4 — Design Rule Check (DRC)

Trước khi xuất file sản xuất, luôn chạy DRC trong PCB Editor. DRC kiểm tra khoảng cách tối thiểu giữa track/pad (clearance), track có bị đứt đoạn (unrouted net) hay không, kích thước lỗ khoan (drill) có hợp lệ với độ dày đồng đã chọn hay không, và các vi phạm luật thiết kế khác theo thiết lập Board Setup → Design Rules. Một PCB không được xem là hoàn chỉnh nếu DRC còn báo lỗi.

Bước 5 — Xuất Gerber và kiểm tra lại

Dùng File → Fabrication Outputs → Gerbers để xuất các lớp cần thiết: lớp đồng trên/dưới (F.Cu/B.Cu), lớp mặt nạ hàn (F.Mask/B.Mask), lớp in lụa (F.Silkscreen/B.Silkscreen), lớp viền board (Edge.Cuts), cùng file khoan (Drill File, định dạng Excellon). Sau khi xuất, nên mở lại toàn bộ Gerber bằng Gerber Viewer (có sẵn trong KiCad) để kiểm tra trực quan: các lớp có chồng khớp nhau không, có thiếu layer nào không, có lỗi hình học bất thường không — đây là bước kiểm tra chéo cuối cùng trước khi gửi cho nhà máy.

Bước 6 — Đặt hàng tại nhà máy PCB

Quy trình đặt hàng nhìn chung tương tự nhau ở hầu hết nhà máy chế tạo PCB: nén toàn bộ file Gerber + Drill vào một file .zip, tải lên hệ thống đặt hàng của nhà máy, hệ thống sẽ tự parse và hiển thị preview để bạn xác nhận số lớp, kích thước board, độ dày, màu lớp phủ (solder mask) trước khi thanh toán. Giá tham khảo cho PCB 2 lớp, số lượng nhỏ (mẫu thử nghiệm) thường ở mức vài USD/board tùy nhà máy và thời gian giao hàng, nhưng chi phí thực tế phụ thuộc rất nhiều vào số lớp, kích thước, số lượng đặt và nhà cung cấp — nên xem đây là quy trình chung, không phải một báo giá cụ thể.

5. Code mẫu ESP32 + DHT22 (mạch thực tế dùng làm ví dụ)

#include <DHT.h>

#define DHTPIN 4
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

const unsigned long TELEMETRY_INTERVAL_MS = 2000;
unsigned long lastTelemetryAt = 0;

void setup() {
  Serial.begin(115200);
  delay(200);
  Serial.println();
  Serial.println(F("=== ESP32 + DHT22 - Vi du minh hoa cho bai viet KiCad/PCB ==="));
  Serial.println(F("Boot OK. Khoi tao cam bien DHT22..."));

  dht.begin();

  Serial.println(F("San sang doc du lieu."));
}

void loop() {
  unsigned long now = millis();
  if (now - lastTelemetryAt >= TELEMETRY_INTERVAL_MS) {
    lastTelemetryAt = now;

    float humidity = dht.readHumidity();
    float temperatureC = dht.readTemperature();

    Serial.print(F("{\"temperature_c\":"));
    if (isnan(temperatureC)) {
      Serial.print(F("null"));
    } else {
      Serial.print(temperatureC, 1);
    }
    Serial.print(F(",\"humidity_pct\":"));
    if (isnan(humidity)) {
      Serial.print(F("null"));
    } else {
      Serial.print(humidity, 1);
    }
    Serial.print(F(",\"uptime_ms\":"));
    Serial.print(now);
    Serial.println(F("}"));

    if (isnan(humidity) || isnan(temperatureC)) {
      Serial.println(F("[WARN] Doc cam bien DHT22 that bai - kiem tra day noi hoac dien tro keo len DATA."));
    }
  }
}

6. Từ mạch thật lên Schematic — đối chiếu từng phần

Mạch thật (breadboard)

Trong Schematic KiCad

Dây đỏ DHT22 VCC → 3V3 ESP32

Net "3V3" nối chân VCC symbol DHT22 và chân 3V3 symbol ESP32

Dây đen DHT22 GND → GND ESP32

Net "GND" (thường gán label GND toàn cục)

Dây vàng DHT22 DATA → GPIO4

Net tín hiệu nối DATA và GPIO4, có thêm nhánh qua R1 (10kΩ) về 3V3

Điện trở cắm rời trên breadboard

Symbol Device:R với giá trị 10k, sau đó gán footprint THT/SMD tương ứng

Việc đối chiếu này giúp người mới hình dung rõ: schematic không phải một khái niệm trừu tượng, mà là bản vẽ điện có cùng cấu trúc kết nối như mạch breadboard đã chạy thật — chỉ khác ở chỗ nó chuẩn hóa để máy tính hiểu và tự động sinh ra file sản xuất.

7. Lỗi thường gặp

Lỗi

Nguyên nhân

Cách sửa

PCB Editor báo "Footprint not found"

Symbol trong schematic chưa được gán footprint

Chạy lại Assign Footprints, kiểm tra thư viện footprint đã được thêm vào project

DRC báo "Clearance violation"

Hai track/pad đặt quá gần nhau so với luật thiết kế

Tăng khoảng cách track hoặc điều chỉnh Board Setup → Design Rules cho phù hợp với năng lực nhà máy

Gerber xuất ra thiếu lớp Edge.Cuts

Quên bật lớp viền board khi export Fabrication Outputs

Kiểm tra lại danh sách layer được chọn trong hộp thoại Plot trước khi xuất

Đọc cảm biến DHT22 luôn trả về NaN sau khi lên PCB

Thiếu điện trở kéo lên trên track DATA, hoặc track quá dài không có pull-up ổn định tín hiệu

Đảm bảo R1 10kΩ được đặt gần chân DATA và nối đúng về 3V3 trên layout thực tế, không chỉ trên schematic

8. Tổng kết

Quy trình "từ schematic đến PCB" trong KiCad gồm 6 bước cốt lõi: vẽ schematic và annotate, gán footprint, chuyển sang PCB Editor và đi dây, chạy DRC, xuất Gerber, và đặt hàng nhà máy.

Mỗi bước đều có công cụ kiểm tra riêng (ERC cho schematic, DRC cho PCB, Gerber Viewer cho file xuất), tận dụng đầy đủ các công cụ này giúp giảm thiểu rủi ro phải làm lại board vì lỗi thiết kế.

Mạch ESP32 + DHT22 trong bài chỉ có 3 tín hiệu nhưng đã đủ minh họa toàn bộ luồng công việc; với mạch phức tạp hơn (nhiều cảm biến, nhiều lớp đồng), quy trình vẫn giữ nguyên các bước này, chỉ khác về độ phức tạp khi routing và số luật DRC cần tuân thủ.