Bật tắt đèn bằng tiếng vỗ tay (Cảm biến âm thanh) sử dụng Arduino
Tiếp tục chủ đề tự học Arduino dành cho người mới bắt đầu, trong nội dung bài viết hôm nay mình sẽ hướng dẫn cho các bạn cách làm một dự án Bật tắt đèn bằng tiếng vỗ tay sử dụng cảm biến âm thanh một dự án thật thú vị cho những người đam mê ngành điện tử.
Để hiểu hơn về cấu tạo và cách hoạt động của tất cả cảm biến có trong dự án .Các bạn có thể tìm đọc bài viết về Arduino miễn phí dành cho người mới nhập môn.
Cảm biến âm thanh
Cảm biến âm thanh giúp nhận biết và phát hiện cường độ âm thanh của môi trường xung quanh. Thích hợp để làm các ứng dụng cơ bản về nhận biết, giám sát các tiếng động của môi trường xung quanh, và nhiều ứng dụng thú vị khác. Độ nhạy có thể được điều chỉnh bằng chiết áp trên module để phù hợp với từng nhu cầu ứng dụng.
Nó sử dụng một microphone, mạch khuếch đại tín hiệu, máy dò biên độ và bộ đệm. Khi phát hiện âm thanh nó sẽ qua mạch khuếch đại để khuếch đại tín hiệu rồi gửi tín hiệu digital qua chân “OUT”.
Thông số kỹ thuật
- Điện áp hoạt động: 3.3V – 5V
- Xuất ra kiểu tín hiệu: digital (0 hoặc 1)
- Kích thước: 3.4cm * 1.6cm
Sơ đồ đấu nối
Các linh kiện cần thiết cho dự án
Tên linh kiện | Số lượng | Shopee |
Arduino Uno R3 | 1 | Mua ngay |
Cáp nạp | 1 | Mua ngay |
Relay 5V/1 kênh | 1 | Mua ngay |
Dây cắm (Đực – Cái) | 1 | Mua ngay |
Cảm biến âm thanh | 1 | Mua ngay |
Code cảm biến âm thanh Arduino
int sound_sensor = 7; int relay = 4; int clap = 0; long detection_range_start = 0; long detection_range = 0; boolean status_lights = false; void setup() { pinMode(sound_sensor, INPUT); pinMode(relay, OUTPUT); } void loop() { int status_sensor = digitalRead(sound_sensor); if (status_sensor == 0) { if (clap == 0) { detection_range_start = detection_range = millis(); clap++; } else if (clap > 0 && millis()-detection_range >= 50) { detection_range = millis(); clap++; } } if (millis()-detection_range_start >= 400) { if (clap == 2) { if (!status_lights) { status_lights = true; digitalWrite(relay, HIGH); } else if (status_lights) { status_lights = false; digitalWrite(relay, LOW); } } clap = 0; } }