KY-008 là module diode laser đỏ 650nm, phổ biến trong bộ kit Arduino 37 module. Khác với LED thông thường phát ánh sáng khuếch tán, laser diode tạo ra chùm ánh sáng kết hợp (coherent), đơn sắc và hội tụ. Bài này giải thích nguyên lý vật lý làm cho laser diode khác biệt, quy tắc an toàn quan trọng, và ứng dụng laser tripwire thực tế.
Nguyên Lý Hoạt Động
1. Laser Diode vs LED — Sự Khác Biệt Cơ Bản
Cả laser diode và LED đều là p-n junction semiconductor phát sáng khi dòng điện chạy qua. Nhưng cơ chế khác nhau hoàn toàn.
LED (Light Emitting Diode):
Electron + Hole → Photon (phát xạ tự phát)
Bước sóng: dải rộng 20-50nm (ví dụ 630-680nm)
Hướng: phân kỳ mọi hướng ~120°
Phase: ngẫu nhiên (incoherent)
Laser Diode:
Electron + Hole → Photon (phát xạ tự phát)
Photon đó kích thích electron khác → 2 photon cùng tần số + cùng pha (stimulated emission)
2 photon đó kích thích → 4 photon → ... → cascade
Buồng cộng hưởng khuếch đại → Chùm laser ra ngoài
2. Buồng Cộng Hưởng Fabry-Pérot
Đây là điểm cốt lõi tạo ra laser. Laser diode có hai mặt tinh thể được chẻ phẳng (cleaved facets) ở hai đầu — đóng vai trò gương bán phản chiếu:
Gương bán phản Gương bán phản
R₁ ≈ 30% R₂ ≈ 30%
GND ──┤ p-layer ├──────────────────────────────┤ n-layer ├── VCC
↑ Mặt chẻ (gương) Mặt chẻ (gương) ↑
Photon bouncing:
→→→→→ Phản xạ ←←←←←
→→→→→ Phản xạ ←←←←← → Khi đủ khuếch đại
→→→→→ Phản xạ ←←←←← → Thoát ra ngoài qua mặt gương bán phản
───────────────────── → Chùm laser hội tụ
Ngưỡng laser (Threshold current):
- Dưới ngưỡng: phát xạ tự phát (như LED) — ánh sáng yếu, phân kỳ
- Trên ngưỡng: phát xạ cưỡng bức thắng → chùm laser hội tụ, mạnh
KY-008 mặc định hoạt động trên ngưỡng khi cấp điện đúng (điện trở 1kΩ tích hợp giới hạn dòng phù hợp).
3. Đặc Điểm Chùm Laser 650nm
Chùm sáng laser (so sánh với LED):
LED: Laser diode:
╱│╲ ─────→
╱ │ ╲ ─────→ (song song, divergence nhỏ ~10-20°)
╱ │ ╲ ─────→
[LED] [Laser]
Góc: ~120° Góc: ~10-20° (trước khi đi qua thấu kính hội tụ)
Bước sóng: dải rộng (~20-50nm) Bước sóng: rất hẹp (<1nm, thường <0.1nm)
Bước sóng 650nm — màu đỏ: Đây là giới hạn giữa đỏ và gần hồng ngoại. Mắt người nhạy nhất với 550nm (xanh lá), kém nhạy với 650nm → 650nm cần công suất quang học cao hơn để nhìn thấy tương đương với 550nm. Tuy nhiên, 650nm rất rẻ để sản xuất → phổ biến nhất trong laser diode thương mại.
4. Mạch Trong KY-008
KY-008 module (cực đơn giản):
Pin S (Signal)
│
[1kΩ] ← Điện trở hạn dòng tích hợp
│
[Laser Diode Anode]
[Laser Diode Cathode]
│
GND
Không có IC điều khiển. Không có điều chỉnh công suất. Chỉ là laser diode + điện trở nối tiếp:
- Cấp 5V: dòng ≈ (5V – V_f) / 1kΩ ≈ (5 – 2.5) / 1000 = 2.5mA → công suất quang học thấp nhưng đủ thấy được
- Tăng cao hơn 5V → có thể hỏng diode
Thông Số Kỹ Thuật
| Thông số | Giá trị |
|---|---|
| Điện áp hoạt động | 5V (3.3V cũng hoạt động nhưng yếu hơn) |
| Điện trở hạn dòng | 1kΩ (tích hợp trên module) |
| Bước sóng | 650nm (đỏ) |
| Công suất quang | ~5mW (tùy dòng điện) |
| Phân kỳ chùm tia | ~10–30° (trước thấu kính) |
| Class laser | IIIa / Class 3R |
| Kích thước module | 15mm × 13mm |
Phân Loại An Toàn Laser
QUAN TRỌNG — Đọc trước khi dùng:
| Class | Công suất | Mức độ nguy hiểm |
|---|---|---|
| Class 1 | <0.4mW (visible) | An toàn hoàn toàn |
| Class 2 | 1–1mW | An toàn — reflex blink bảo vệ |
| Class 3R / IIIa | 1–5mW | Nhìn trực tiếp >0.25s có thể hại mắt |
| Class 3B / IIIb | 5–500mW | Nguy hiểm — bỏng võng mạc nhanh |
| Class 4 | >500mW | Cháy da, mắt, vật liệu |
KY-008 là Class 3R (~5mW):
- KHÔNG nhìn trực tiếp vào chùm tia
- KHÔNG chiếu vào mắt người khác
- Phản xạ khuếch tán (từ giấy, tường) thường an toàn
- Phản xạ gương (từ gương, kim loại nhẵn) vẫn nguy hiểm
Sơ Đồ Chân (Pinout)
KY-008 Module (nhìn từ phía sau board):
S Middle GND
│ │ │
[1kΩ] │ │
│ │ │
[Laser Diode Anode ─── Cathode]
| Chân | Ký hiệu | Chức năng |
|---|---|---|
| 1 | S (Signal) | Nối với 1kΩ → anode laser diode |
| 2 | (Middle) | Cùng nối với S qua PCB trace — thường bỏ qua |
| 3 | GND | Cathode laser diode, đất |
Thực tế sử dụng: Nối VCC (5V) vào S (hoặc Middle), GND vào GND → laser sáng. Muốn bật/tắt qua MCU: dùng transistor NPN hoặc MOSFET điều khiển dòng.
So Sánh Laser Diode Modules Phổ Biến
| Module | Bước sóng | Công suất | Ghi chú |
|---|---|---|---|
| KY-008 | 650nm (đỏ) | ~5mW | Phổ biến nhất, kit 37 module |
| Laser xanh 532nm | 532nm | 5-50mW | Đắt hơn, mắt nhạy hơn → thấy rõ hơn |
| Laser tím 405nm | 405nm | 5-50mW | Phổ UV, tẩy vải/keo UV |
| Laser IR 850nm | 850nm | 10-100mW | Không thấy bằng mắt thường |
Kết Nối Phần Cứng
Kết Nối KY-008 với ESP32 — Điều Khiển Trực Tiếp GPIO
Cách 1: Nối thẳng (đơn giản)
ESP32 DevKit V1 KY-008
───────────────────── ─────────────
3V3 hoặc 5V ──────────────→ S (Signal)
GND ──────────────────────→ GND
Laser luôn sáng khi có nguồn. Không điều khiển ON/OFF từ MCU.
Cách 2: Điều khiển bật/tắt qua GPIO (đúng cách)
ESP32 GPIO → 2N2222 NPN Transistor → Laser
ESP32 2N2222 NPN KY-008
───────────────── ────────────── ───────
GPIO5 ─────────────→ Base (qua 1kΩ)
Collector ──────────→ S (Signal)
Emitter ──────────→ GND (chung)
5V ───────────────→ VCC KY-008 (trực tiếp)
GND ──────────────→ GND (chung)
Tại sao cần transistor: GPIO ESP32 (3.3V, 12mA max) không đủ dòng/điện áp để cấp laser 5V cần ~5mA. Transistor NPN làm “công tắc”: GPIO HIGH → transistor dẫn → laser sáng.
Kết Nối KY-008 với Arduino Uno
Arduino Uno 5V → cấp trực tiếp hơn:
Arduino Uno KY-008
───────────────────── ─────────────
Pin 9 (PWM/Digital)────→ S (Signal) ← GPIO Uno 5V, 40mA — đủ dùng
GND ──────────────────→ GND
Arduino Uno GPIO có thể cấp 40mA — đủ cho KY-008 (chỉ ~5mA). Không cần transistor.
Mạch Laser Tripwire (Thực Tế)
[KY-008 Laser] ─────────────────────────────→ [LDR]
│ ~1-5m │
Arduino Arduino Uno
GPIO9 A0 (đọc LDR)
Pull-up 10kΩ:
VCC─[10kΩ]─┬─ A0
│
[LDR]
│
GND
Khi laser chiếu vào LDR → LDR điện trở thấp → A0 thấp. Khi beam bị chắn → LDR điện trở cao → A0 cao → báo động.
Code Arduino IDE
Code Bật Tắt Laser Đơn Giản — Arduino Uno
/*
* KY-008 Laser Module — Bật tắt laser
* Board: Arduino Uno
* Kết nối: S→Pin9, GND→GND
* (Điện trở 1kΩ đã có trên module — không cần thêm)
*
* AN TOÀN: Không hướng laser vào mắt người
*/
const int LASER_PIN = 9;
void setup() {
Serial.begin(9600);
pinMode(LASER_PIN, OUTPUT);
digitalWrite(LASER_PIN, LOW); // Tắt laser ban đầu
Serial.println("=== KY-008 Laser - Arduino Uno ===");
Serial.println("AN TOÀN: Không hướng laser vào mắt!");
}
void loop() {
// Bật laser 2 giây
digitalWrite(LASER_PIN, HIGH);
Serial.println("Laser: BẬT");
delay(2000);
// Tắt laser 1 giây
digitalWrite(LASER_PIN, LOW);
Serial.println("Laser: TẮT");
delay(1000);
}
Code Laser Tripwire — Arduino Uno
/*
* Laser Tripwire — Cảnh báo khi beam bị cắt
* Board: Arduino Uno
* Kết nối:
* Laser KY-008: S→Pin9, GND→GND
* LDR (ở đầu thu): một đầu→A0, một đầu→GND; Pull-up 10kΩ từ A0→5V
* Buzzer: +→Pin8, -→GND
*
* Đặt laser và LDR thẳng nhau, cách 0.5m-5m
* Khi có người cắt ngang beam → LDR không nhận laser → báo động
*/
const int LASER_PIN = 9;
const int LDR_PIN = A0;
const int BUZZER_PIN = 8;
int beamThreshold; // Ngưỡng — đo khi beam thẳng, set = 80% giá trị đó
bool alarmTriggered = false;
void calibrate() {
Serial.println("Calibrating — giữ nguyên beam 3 giây...");
delay(2000);
int beamValue = analogRead(LDR_PIN);
// Ngưỡng: nếu LDR đọc thấp hơn 70% giá trị ban đầu → beam bị cắt
beamThreshold = beamValue * 0.7;
Serial.print("Beam value: "); Serial.println(beamValue);
Serial.print("Threshold set to: "); Serial.println(beamThreshold);
Serial.println("Tripwire active!");
}
void setup() {
Serial.begin(9600);
pinMode(LASER_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(BUZZER_PIN, LOW);
// Bật laser để calibrate
digitalWrite(LASER_PIN, HIGH);
delay(500); // Ổn định
calibrate();
}
void loop() {
int ldrValue = analogRead(LDR_PIN);
if (ldrValue < beamThreshold) {
// Beam bị cắt → báo động
if (!alarmTriggered) {
alarmTriggered = true;
Serial.println("!!! BEAM BỊ CẮT — CÓ NGƯỜI QUA !!!");
}
// Còi báo liên tục
tone(BUZZER_PIN, 1000);
} else {
// Beam bình thường
if (alarmTriggered) {
alarmTriggered = false;
Serial.println("Beam khôi phục — bình thường");
}
noTone(BUZZER_PIN);
}
delay(50); // Polling 50ms
}
Code ESP32 — Laser Tripwire + Timestamp
/*
* Laser Tripwire — ESP32 với transistor NPN điều khiển laser
* Board: ESP32 DevKit V1
* Laser: Base transistor → GPIO5 (qua 1kΩ); Collector → KY-008 S; Emitter → GND
* LDR: GPIO34 (ADC1, input-only); Pull-up 10kΩ từ LDR → 3V3
*/
const int LASER_CTRL = 5; // Điều khiển transistor → bật/tắt laser
const int LDR_PIN = 34; // ADC1_CH6, input-only
int beamBaseline; // Giá trị LDR khi beam bình thường
int threshold; // Ngưỡng phát hiện
void calibrate() {
Serial.println("Calibration: giữ beam thẳng, chờ 2 giây...");
delay(2000);
int sum = 0;
for (int i = 0; i < 20; i++) {
sum += analogRead(LDR_PIN);
delay(50);
}
beamBaseline = sum / 20;
threshold = beamBaseline * 7 / 10; // 70% của baseline
Serial.printf("Baseline ADC: %d | Threshold: %d\n", beamBaseline, threshold);
Serial.println("Tripwire ACTIVE!");
}
void setup() {
Serial.begin(115200);
pinMode(LASER_CTRL, OUTPUT);
analogSetAttenuation(ADC_11db);
analogReadResolution(12);
// Bật laser
digitalWrite(LASER_CTRL, HIGH);
delay(500);
calibrate();
}
void loop() {
int ldrVal = analogRead(LDR_PIN);
if (ldrVal < threshold) {
// Beam bị cắt
Serial.printf("[%lums] !!! BEAM CẮT! LDR=%d (threshold=%d) !!!\n",
millis(), ldrVal, threshold);
delay(500); // Debounce
}
delay(50);
}
Kết Quả Mong Đợi
=== KY-008 Laser Tripwire ===
Calibration: giữ beam thẳng, chờ 2 giây...
Baseline ADC: 3850 | Threshold: 2695
Tripwire ACTIVE!
[12345ms] !!! BEAM CẮT! LDR=1200 (threshold=2695) !!!
[13890ms] !!! BEAM CẮT! LDR=980 (threshold=2695) !!!
Ứng Dụng Thực Tế
| Ứng dụng | Chi tiết |
|---|---|
| Laser tripwire cảnh báo | Bảo vệ cửa, kho hàng |
| Đếm vật thể đi qua | Đếm sản phẩm trên băng chuyền |
| Laser level marker | Đánh dấu đường thẳng khi lắp đặt |
| Demo nguyên lý laser/quang học | Giáo dục |
| Photo booth trigger | Chụp ảnh khi người đi qua |
Lưu Ý Khi Sử Dụng
1. AN TOÀN MẮT — Quan trọng nhất
KY-008 là Class 3R (~5mW). Không nhìn trực tiếp vào chùm tia. Không chiếu về phía mắt. Phản xạ từ gương/kim loại nhẵn vẫn nguy hiểm. Phản xạ từ giấy/tường (diffuse) thường an toàn nhưng tránh nhìn trực tiếp điểm sáng. Đặc biệt nguy hiểm với trẻ em — không để trẻ em chơi module laser không có giám sát.
2. Không điều chỉnh dòng vượt quá điện trở 1kΩ tích hợp
Điện trở 1kΩ bảo vệ diode khỏi quá dòng. Không bỏ điện trở hoặc shunt để “tăng sáng” → sẽ hỏng diode laser ngay lập tức. Dòng quá cao làm hỏng buồng cộng hưởng không sửa được.
3. Transistor hoặc MOSFET khi điều khiển từ ESP32
GPIO ESP32 chỉ 3.3V, 12mA max. Laser cần 5V để sáng đúng, dòng ~5mA. Dùng transistor NPN (2N2222, BC547, S8050) hoặc N-MOSFET (2N7000) để điều khiển. GPIO → base transistor (qua 1kΩ) → transistor đóng/mở mạch laser.
4. Calibrate tripwire tại chỗ thực tế
Độ sáng phòng, khoảng cách, loại LDR đều ảnh hưởng baseline ADC. Luôn calibrate sau khi lắp đặt xong — không dùng giá trị threshold cố định. Code calibration đo giá trị khi beam bình thường → set ngưỡng 70-80% giá trị đó.


