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.
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.
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.
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.
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ần5V, LED sáng.digitalWrite(D4, LOW)làm D4 gầnGND, 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:
- Nguồn chính là
5V,3.3Vhay nguồn ngoài? GNDcủa các module đã nối chung chưa?- Linh kiện nào là đầu vào?
- Linh kiện nào là đầu ra?
- Chân input có bị thả nổi không?
- 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ò.