Thiết kế Footprint tùy chỉnh trong KiCad
Trung cấp1/8/2026- Tác giả: IoTlabs Maker

Thiết kế Footprint tùy chỉnh trong KiCad

Cách tạo một footprint tùy chỉnh trong Footprint Editor của KiCad cho linh kiện không có sẵn trong thư viện chuẩn, minh họa bằng footprint thực tế của module cảm biến DHT22 trên mạch ESP32.

KiCadFootprintFootprint EditorPCBESP32DHT22

Bài này hướng dẫn tạo footprint tùy chỉnh trong Footprint Editor của KiCad khi thư viện chuẩn không có sẵn linh kiện đúng kích thước — minh họa bằng footprint thật của module DHT22 (khoảng cách chân 2,54mm, hàng đơn 3 chân) trên mạch ESP32 DevKit V4 + DHT22.

Hướng dẫn chi tiết

Hướng dẫn tạo footprint tùy chỉnh trong Footprint Editor của KiCad khi thư viện chuẩn không khớp kích thước thật, minh họa bằng footprint module DHT22 trên mạch ESP32.

1. Giới thiệu

Thư viện footprint có sẵn của KiCad (và các thư viện cộng đồng) bao phủ phần lớn linh kiện phổ biến, nhưng không phải lúc nào cũng có footprint khớp chính xác với linh kiện thật đang cầm trên tay — nhất là các module cảm biến giá rẻ, hàng trôi nổi, hoặc board tự chế. Khi đó, dùng nhầm một footprint "gần giống" có thể khiến pad không thẳng hàng với chân linh kiện thật, dẫn tới hàn lệch hoặc không hàn được. Giải pháp đúng là tự vẽ một footprint tùy chỉnh bằng Footprint Editor của KiCad, khớp chính xác kích thước vật lý đo được.

Bài này dùng module cảm biến DHT22 (AM2302) trong mạch ví dụ ESP32 DevKit V4 + DHT22 làm ca thực hành: đo — vẽ — kiểm tra một footprint tùy chỉnh 3 chân cho đúng module DHT22 thật.

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

DHT22 (AM2302)

1

Linh kiện dùng làm ca thực hành vẽ footprint tùy chỉnh

Thước kẹp (caliper) hoặc datasheet cơ khí

1

Đo/đối chiếu kích thước thật của module trước khi vẽ footprint

3. Sơ đồ kết nối (mạch chạy thật dùng làm ví dụ)

DHT22

ESP32 DevKit V4

VCC

3V3

GND

GND

DATA

GPIO4

4. Vì sao DHT22 cần footprint tùy chỉnh

Thông số cơ khí thực tế của module DHT22 dạng breakout phổ biến (đo được/đối chiếu catalog nội bộ): rộng khoảng 12mm, dài khoảng 28mm, 3 chân hàng đơn khoảng cách tiêu chuẩn 2,54mm nhưng khoảng cách hàng chân theo trục dọc lên tới khoảng 25,4mm — không khớp với các footprint "header 3 chân THT" mặc định trong thư viện chuẩn (thường có 3 chân thẳng hàng sát nhau, không có khoảng lệch lớn như vậy). Đây chính xác là tình huống bắt buộc phải tự vẽ footprint: nếu dùng nhầm footprint header thường, khoảng cách pad trên PCB sẽ không khớp chân module thật.

5. Quy trình vẽ Footprint tùy chỉnh trong Footprint Editor

Bước 1 — Tạo thư viện footprint cá nhân

Mở Footprint Editor từ KiCad, vào menu File → New Library để tạo một thư viện .pretty riêng (ví dụ MyModules.pretty) — nên tách riêng thư viện cá nhân khỏi thư viện hệ thống để dễ quản lý và cập nhật KiCad về sau không bị ghi đè. Sau đó New Footprint để tạo footprint mới, đặt tên rõ ràng, ví dụ DHT22_Sensor_3Pin_2.54mm.

Bước 2 — Đặt pad theo đúng kích thước đo được

Dùng công cụ Pad để đặt 3 pad tương ứng VCC, DATA, GND. Với module DHT22 thật: khoảng cách giữa các pad theo trục ngang là 2,54mm (0.1"), pad nên dùng kiểu THT tròn/oval đường kính lỗ phù hợp với chân linh kiện (thường 0.8–1.0mm cho chân dẹt của DHT22). Đặt pad số 1 (thường là VCC) làm gốc tọa độ (0,0), sau đó dùng bảng thuộc tính pad (Properties) để nhập tọa độ chính xác cho pad 2 và pad 3 thay vì kéo thả bằng mắt — đảm bảo độ chính xác theo đúng số đo.

Bước 3 — Vẽ lớp Silkscreen và Courtyard

Chuyển sang lớp F.Silkscreen, vẽ đường viền thể hiện hình dạng vật lý của module (khối chữ nhật ~12×28mm theo số đo) để khi nhìn vào PCB đã lắp ráp, người hàn biết chính xác module chiếm khoảng không gian nào và định hướng ra sao (thường đánh dấu chân số 1 bằng một chấm tròn hoặc ký hiệu góc vát). Sau đó vẽ lớp Courtyard (F.CrtYd) — vùng bao quanh linh kiện dùng để kiểm tra va chạm (courtyard overlap) khi đặt nhiều linh kiện gần nhau trong PCB Editor, theo đúng khuyến nghị chuẩn IPC.

Bước 4 — Gán thuộc tính và lưu

Đặt tham chiếu mặc định (Reference designator prefix, ví dụ "U" hoặc "S" cho sensor), gán lớp 3D model nếu có (không bắt buộc nhưng hữu ích khi xem trước PCB dạng 3D), rồi lưu footprint vào thư viện .pretty đã tạo ở bước 1.

Bước 5 — Gán footprint tùy chỉnh cho symbol trong Schematic

Quay lại Schematic Editor, dùng công cụ Assign Footprints, tìm đến thư viện cá nhân vừa tạo và chọn đúng footprint DHT22_Sensor_3Pin_2.54mm cho symbol DHT22 trong mạch. Chạy DRC sau khi cập nhật PCB từ Schematic để chắc chắn footprint mới không có lỗi hình học hay vi phạm khoảng cách.

6. Code mẫu ESP32 + DHT22 (mạch thực tế dùng để đối chiếu footprint)

#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."));
    }
  }
}

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

Lỗi

Nguyên nhân

Cách sửa

Pad lệch so với chân thật khi lắp linh kiện

Đo sai kích thước hoặc nhập nhầm tọa độ pad

Đo lại bằng thước kẹp, nhập tọa độ pad bằng bảng thuộc tính thay vì kéo thả bằng mắt

KiCad báo "Duplicate footprint name"

Đặt trùng tên footprint đã có trong cùng thư viện .pretty

Đổi tên footprint mới hoặc kiểm tra lại thư viện trước khi tạo

Footprint không hiện trong danh sách khi Assign Footprints

Thư viện cá nhân chưa được thêm vào Footprint Library Table của project

Vào Preferences → Manage Footprint Libraries, thêm đường dẫn tới thư viện .pretty

DRC báo lỗi Courtyard overlap dù chỉ có 1 linh kiện

Vẽ lớp Courtyard sai vị trí hoặc chồng lên chính pad/silkscreen

Vẽ lại Courtyard bao trọn đúng vùng linh kiện, không cắt qua pad

8. Tổng kết

Khi thư viện footprint chuẩn không khớp với linh kiện thật đang có, đừng ép dùng tạm một footprint gần đúng — hãy đo chính xác và tự vẽ trong Footprint Editor theo 5 bước: tạo thư viện cá nhân, đặt pad đúng tọa độ, vẽ silkscreen + courtyard, gán thuộc tính và lưu, rồi gán lại cho symbol trong schematic. Footprint tùy chỉnh chính xác giúp PCB lắp ráp đúng ngay từ lần đầu, tránh phải sửa lại board vì lệch chân linh kiện.