ESP32 DIP Switch
DIP (Dual In-line Package) switch thường được sử dụng trong điện tử cho mục đích cấu hình, như thiết lập địa chỉ thiết bị, bật hoặc tắt các tính năng, v.v. Trong hướng dẫn này, chúng ta sẽ học cách sử dụng DIP switch với ESP32. Cụ thể, chúng ta sẽ tìm hiểu:
- DIP switch là gì và cách hoạt động
- Cách kết nối DIP switch với ESP32
- Cách lập trình ESP32 để đọc trạng thái ON/OFF của DIP switch
- Cách lập trình ESP32 để đọc số nguyên được thiết lập bởi DIP switch
DIP (Dual In-line Package) switch thường được sử dụng trong điện tử cho các mục đích cấu hình, như thiết lập địa chỉ thiết bị, kích hoạt hoặc vô hiệu hóa các tính năng, và nhiều hơn nữa. Trong hướng dẫn này, chúng ta sẽ khám phá việc sử dụng DIP switch với ESP32. Cụ thể, chúng ta sẽ đề cập đến các chủ đề sau:
- Hiểu DIP switch là gì và nguyên lý hoạt động của nó.
- Kết nối DIP switch với ESP32.
- Lập trình ESP32 để phát hiện trạng thái ON/OFF của DIP switch.
- Lập trình ESP32 để diễn giải giá trị số nguyên được thiết lập bởi DIP switch.

Phần Cứng Cần Thiết
| 1 | × | mô-đun phát triển ESP-WROOM-32 | ||
| 1 | × | Alternatively, ESP32 Uno-form board | ||
| 1 | × | Alternatively, ESP32 S3 Uno-form board | ||
| 1 | × | USB Cable Type-A to Type-C (for USB-A PC) | ||
| 1 | × | USB Cable Type-C to Type-C (for USB-C PC) | ||
| 1 | × | DIP Switch | ||
| 1 | × | breadboard (bo mạch thí nghiệm) | ||
| 1 | × | dây jumper (dây nối) | ||
| 1 | × | (Khuyến nghị) Screw Terminal Expansion Board for ESP32 | ||
| 1 | × | (Khuyến nghị) Breakout Expansion Board for ESP32 | ||
| 1 | × | (Khuyến nghị) Power Splitter for ESP32 |
Or you can buy the following kits:
| 1 | × | DIYables ESP32 Starter Kit (ESP32 included) | ||
| 1 | × | DIYables Sensor Kit (30 sensors/displays) | ||
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Về DIP Switch
DIP switch là thành phần cơ bản cho việc cấu hình thiết bị, cho phép người dùng điều chỉnh các thông số như địa chỉ thiết bị, cài đặt giao tiếp, mã bảo mật, chế độ hoạt động và tùy chọn hệ thống trên nhiều ngành công nghiệp và ứng dụng khác nhau.
Một DIP switch bao gồm nhiều công tắc trượt nhỏ được nhóm lại với nhau, với mỗi công tắc được gọi là một "vị trí". DIP switch có nhiều loại khác nhau được xác định theo số vị trí chúng cung cấp. Các tùy chọn bao gồm DIP switch 2 vị trí, 4 vị trí, 5 vị trí, 6 vị trí, 8 vị trí và 10 vị trí...
Mỗi vị trí trên DIP switch tương ứng với một bit của số có thể cấu hình. Bằng cách chuyển các vị trí giữa ON và OFF, người dùng có thể thiết lập giá trị số mong muốn. Tính linh hoạt này cho phép cấu hình chính xác các thông số theo yêu cầu cụ thể.
Sơ Đồ Chân

Một DIP switch bao gồm hai hàng chân, với số chân trong mỗi hàng tương ứng với số vị trí công tắc có sẵn. Ví dụ, một DIP switch 4 vị trí chứa tổng cộng 8 chân, được phân bố đều với 4 chân ở mỗi bên. Trong cấu trúc DIP switch, mỗi cặp chân đối diện tạo thành một công tắc trượt. Điều quan trọng cần lưu ý là không cần phân biệt giữa các chân ở hai bên vì chúng có thể hoán đổi cho nhau.
Cách Hoạt Động
Trong DIP switch, khi một công tắc ở vị trí ON, điều này cho thấy công tắc đang đóng, tạo ra một kết nối điện cho phép dòng điện chạy qua.
Ngược lại, khi một công tắc ở vị trí OFF, có nghĩa là công tắc đang mở. Trong trạng thái này, kết nối điện bị gián đoạn, ngăn không cho dòng điện chạy qua công tắc.
Để làm rõ:
- Vị trí ON: Tạo thành mạch kín, cho phép dòng điện chạy qua.
- Vị trí OFF: Tạo thành mạch hở, ngăn chặn dòng điện chạy qua.
Khi kết nối một bên của công tắc với GND và bên kia với chân ESP32, và cấu hình chân ESP32 như là một đầu vào số pull-up, bảng sau minh họa mối quan hệ giữa vị trí công tắc và giá trị đọc từ ESP32:
| Vị trí công tắc DIP | Biểu diễn nhị phân | Trạng thái mạch | Trạng thái chân ESP32 |
|---|---|---|---|
| ON | 1 | ĐÓNG | LOW |
| OFF | 0 | MỞ | HIGH |
Trong các phần tiếp theo, chúng ta sẽ sử dụng DIP switch 4 vị trí làm ví dụ. Bạn có thể dễ dàng áp dụng cho DIP switch 2 vị trí, 3 vị trí, 5 vị trí, 6 vị trí, 8 vị trí và 10 vị trí...
Sơ Đồ Đấu Nối

This image is created using Fritzing. Click to enlarge image
Nếu bạn chưa rõ cách cấp nguồn cho ESP32 và các linh kiện khác, xem: Cách Cung Cấp Nguồn Điện Cho ESP32.
Mã ESP32 - DIP Switch
Chúng ta sẽ học thông qua hai đoạn mã:
- Đọc trạng thái ON/OFF của từng vị trí trên DIP switch.
- Mã hóa các vị trí thành một số.
Mã ESP32 - Đọc trạng thái ON/OFF của DIP switch
Các Bước Nhanh
- Nếu đây là lần đầu bạn sử dụng ESP32, hãy xem ESP32 - Cài Đặt Phần Mềm.
- Thực hiện đấu nối như hình trên.
- Kết nối bo ESP32 với máy tính của bạn qua cáp micro USB
- Mở Arduino IDE trên máy tính.
- Chọn đúng bo ESP32 (ví dụ: ESP32 Dev Module) và cổng COM.
- Thực hiện đấu nối như sơ đồ trên
- Kết nối ESP32 với máy tính qua cáp USB
- Mở Arduino IDE
- Chọn đúng bo mạch và cổng
- Nhấp nút Upload trên Arduino IDE để tải mã lên ESP32
- Chuyển từng vị trí trên DIP Switch sang ON từng cái một.
- Xem kết quả trên Serial Monitor.
Mã ESP32 - Mã hóa trạng thái của DIP switch thành một số
Các Bước Nhanh
- Nếu đây là lần đầu bạn sử dụng ESP32, hãy xem ESP32 - Cài Đặt Phần Mềm.
- Thực hiện đấu nối như hình trên.
- Kết nối bo ESP32 với máy tính của bạn qua cáp micro USB
- Mở Arduino IDE trên máy tính.
- Chọn đúng bo ESP32 (ví dụ: ESP32 Dev Module) và cổng COM.
- Tải mã trên lên ESP32
- Chuyển từng vị trí trên DIP switch sang ON từng cái một.
- Xem kết quả trên Serial Monitor, nó sẽ trông như bên dưới.
Xin lưu ý rằng giá trị phụ thuộc vào vị trí của mỗi công tắc trượt. Bảng dưới đây hiển thị ánh xạ giữa vị trí ON/OFF và giá trị số nguyên cho DIP switch 4 vị trí:
| Vị trí-1 | Vị trí-2 | Vị trí-3 | Vị trí-4 | Giá trị nhị phân | Giá trị thập phân |
|---|---|---|---|---|---|
| OFF | OFF | OFF | OFF | 0000 | 0 |
| OFF | OFF | OFF | ON | 0001 | 1 |
| OFF | OFF | ON | OFF | 0010 | 2 |
| OFF | OFF | ON | ON | 0011 | 3 |
| OFF | ON | OFF | OFF | 0100 | 4 |
| OFF | ON | OFF | ON | 0101 | 5 |
| OFF | ON | ON | OFF | 0110 | 6 |
| OFF | ON | ON | ON | 0111 | 7 |
| ON | OFF | OFF | OFF | 1000 | 8 |
| ON | OFF | OFF | ON | 1001 | 9 |
| ON | OFF | ON | OFF | 1010 | 10 |
| ON | OFF | ON | ON | 1011 | 11 |
| ON | ON | OFF | OFF | 1100 | 12 |
| ON | ON | OFF | ON | 1101 | 13 |
| ON | ON | ON | OFF | 1110 | 14 |
| ON | ON | ON | ON | 1111 | 15 |
Video Tutorial
Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.