Blog

2026-07-02 · 5 min read

IoT: Analog, Digital và Mạch Điều Khiển

Phân biệt tín hiệu analog, digital, chân INPUT/OUTPUT và tư duy đọc mạch điều khiển cơ bản.

Analog and digital signal levels in an IoT circuit

Tín hiệu là ngôn ngữ của mạch IoT

Một hệ thống IoT luôn xoay quanh việc đọc tín hiệu và phản hồi tín hiệu. Nút bấm, cảm biến ánh sáng, cảm biến nhiệt độ, relay, LED hay màn hình LCD đều giao tiếp với board thông qua điện áp.

Để đọc và điều khiển đúng, ta cần phân biệt hai kiểu tín hiệu phổ biến: analog và digital.

Biểu đồ so sánh tín hiệu analog và digital

Digital: chỉ có LOW và HIGH

Tín hiệu digital chỉ có hai trạng thái.

LOW  = gan 0V
HIGH = gan VCC

Với Arduino Uno, HIGH thường gần 5V. Với ESP32, HIGH thường gần 3.3V. Đây là chi tiết quan trọng, vì không phải board nào cũng dùng cùng mức điện áp logic.

So sánh mức điện áp logic của Arduino và ESP32

Digital phù hợp với những trạng thái rõ ràng:

  • Nút đang nhấn hay đang thả.
  • Cửa đang mở hay đang đóng.
  • LED đang bật hay đang tắt.
  • Relay đang kích hay không kích.

Analog: giá trị thay đổi liên tục

Tín hiệu analog không chỉ có hai mức. Nó có thể thay đổi liên tục trong một khoảng điện áp.

Ví dụ cảm biến ánh sáng có thể trả về giá trị thấp khi phòng tối, tăng dần khi có thêm ánh sáng và đạt mức cao khi chiếu đèn trực tiếp.

Analog phù hợp với dữ liệu có cường độ:

  • Độ sáng.
  • Nhiệt độ.
  • Độ ẩm đất.
  • Âm lượng.
  • Vị trí biến trở.

Trên Arduino, ta thường đọc analog bằng analogRead(). Giá trị trả về không phải điện áp trực tiếp, mà là số đã được bộ ADC chuyển đổi từ điện áp đầu vào.

INPUT và OUTPUT

Một chân INPUT dùng để đọc điện áp từ bên ngoài. Nó giống một điểm quan sát: board nhìn vào chân đó để biết tín hiệu đang thấp hay cao.

Một chân OUTPUT dùng để xuất điện áp ra ngoài. Khi gọi:

digitalWrite(pin, HIGH);

board đưa chân đó lên mức cao. Khi gọi:

digitalWrite(pin, LOW);

board kéo chân đó xuống mức thấp, gần GND.

Điểm quan trọng: INPUT không nên được dùng để cấp dòng cho linh kiện. Nếu muốn bật LED, còi hoặc relay, hãy dùng chân OUTPUT và mắc mạch đúng dòng cho phép.

Tư duy mạch điều khiển

Một mạch điều khiển cơ bản thường có ba phần:

Tin hieu dau vao -> Xu ly tren board -> Tin hieu dau ra

Ví dụ với nút bấm điều khiển LED:

Nut bam -> Arduino doc HIGH/LOW -> Arduino bat hoac tat LED

Board không “hiểu” nút bấm theo nghĩa con người. Nó chỉ đọc điện áp ở chân input. Code của ta quyết định điện áp đó có nghĩa là gì và cần phản hồi ra sao.

Luồng input, xử lý trên board và output trong mạch điều khiển

Vì sao LED sáng hoặc tắt?

LED sáng khi hai đầu của nó có chênh lệch điện áp đúng chiều.

D4 ---- LED ---- Dien tro ---- GND

Trong mạch trên:

  • digitalWrite(D4, HIGH) làm D4 gần 5V, LED sáng.
  • digitalWrite(D4, LOW) làm D4 gần GND, LED tắt.

Nếu hai đầu LED đều gần 5V, LED không sáng. Nếu hai đầu đều gần GND, LED cũng không sáng. LED cần một đầu cao, một đầu thấp để có dòng điện đi qua.

Checklist khi đọc mạch điều khiển

Khi nhìn một mạch mới, hãy đọc theo thứ tự này:

  1. Nguồn chính là 5V, 3.3V hay nguồn ngoài?
  2. GND của các module đã nối chung chưa?
  3. Linh kiện nào là đầu vào?
  4. Linh kiện nào là đầu ra?
  5. Chân input có bị thả nổi không?
  6. Chân output có đang cấp quá dòng cho linh kiện không?

Nếu trả lời được các câu này, bạn đã có nền đủ chắc để viết code điều khiển mà không phải đoán mò.

IoT: Analog, Digital và Mạch Điều Khiển | Bui Thuy Ngoc