Search Code

Hướng dẫn ESP32 14/55 - Phát nốt nhạc tùy chỉnh bằng bộ kit học IoT SunFounder ESP32

Hướng dẫn ESP32 14/55 - Phát nốt nhạc tùy chỉnh bằng bộ kit học IoT SunFounder ESP32

Trong hướng dẫn này, chúng ta sẽ học cách sử dụng vi điều khiển SunFounder ESP32 để phát các nốt nhạc bằng còi báo động thụ động và một transistor. Dự án nhằm mục đích minh họa cách tạo ra âm thanh với tần số cụ thể bằng cách điều khiển còi qua các chân GPIO của ESP32.

Chúng ta sẽ kết nối một còi báo động thụ động với ESP32, cho phép chúng ta tạo ra các nốt nhạc khác nhau dựa trên tần số được cung cấp. Thiết lập này bao gồm việc sử dụng một transistor để bật và tắt còi ở tốc độ cao, tạo ra sóng âm thanh mà chúng ta có thể nghe được. Để làm rõ hơn về dự án, hãy xem video (trong video ở phút 00:30).

Sơ đồ mạch ESP32-13-còi báo động

Giải thích phần cứng

Các thành phần chính được sử dụng trong dự án này bao gồm vi điều khiển SunFounder ESP32, một còi báo động thụ động và một transistor NPN (2N8050). ESP32 là một bo mạch phát triển mạnh mẽ với khả năng Wi-Fi và Bluetooth tích hợp, làm cho nó linh hoạt cho nhiều ứng dụng IoT. Trong trường hợp này, nó sẽ tạo ra tín hiệu để điều khiển còi.

Còi báo động thụ động hoạt động bằng cách tạo ra âm thanh khi có điện áp xoay chiều được đặt vào nó. Không giống như còi chủ động, có bộ dao động tích hợp, còi thụ động yêu cầu tín hiệu bên ngoài để tạo ra âm thanh. Transistor hoạt động như một công tắc, cho phép ESP32 điều khiển còi mà không cần cấp nguồn trực tiếp, đảm bảo rằng định mức dòng điện của vi điều khiển không bị vượt quá.

Transistor S87050

Chi tiết từ bảng dữ liệu

Nhà sản xuất SunFounder
Số bộ phận Còi báo động thụ động
Điện áp hoạt động 3,3 V - 5 V
Tần số cộng hưởng 2 kHz - 4 kHz
Dòng điện tiêu thụ ≤ 30 mA
Mức áp suất âm thanh ≥ 70 dB
Kiểu đóng gói Xuyên lỗ
Ghi chú / biến thể Không có

 

  • Đảm bảo đúng cực tính khi kết nối còi báo động.
  • Sử dụng điện trở giới hạn dòng điện cho chân nền của transistor.
  • Kết nối còi với nguồn điện tương thích với định mức điện áp của nó.
  • Cẩn thận không vượt quá định mức dòng điện tối đa của transistor.
  • Giữ dây nối gọn gàng để tránh đoản mạch.
  • Kiểm tra mạch trước khi tải mã lên để tránh hư hỏng linh kiện.
  • Sử dụng bảng mạch breadboard để kết nối linh kiện dễ dàng.
  • Đảm bảo khử nhiễu tín hiệu đầu vào nếu sử dụng nút nhấn.
  • Cân nhắc thêm tản nhiệt cho transistor nếu sử dụng ở dòng điện cao.

Hướng dẫn nối dây

ESP32-13-buzzer-wriing

Để nối dây các linh kiện, hãy bắt đầu bằng cách kết nối cực dương của còi báo động thụ động với chân 3.3V trên ESP32. Cực âm của còi nên được kết nối với cực thu của transistor NPN. Chân phát của transistor nên được nối với đất (GND) của ESP32.

Tiếp theo, kết nối một điện trở 1 kΩ từ chân nền của transistor đến chân GPIO 14 trên ESP32. Điện trở này giới hạn dòng điện chạy vào chân nền của transistor. Cuối cùng, đảm bảo rằng tất cả các kết nối đất được nối chung với nhau để cung cấp một điểm tham chiếu chung cho mạch.

Ví dụ mã & hướng dẫn chi tiết

const int buzzerPin = 14; // chân còi báo động

void setup()
{
  pinMode(buzzerPin, OUTPUT); // Đặt làm đầu ra
}

Trong mã, chúng ta định nghĩa một biến hằng số buzzerPin được đặt là 14, chỉ ra chân GPIO được kết nối với chân nền của transistor. Trong hàm setup(), chúng ta đặt chân này làm OUTPUT, cho phép ESP32 điều khiển còi.

void loop()
{
  for (int i = 0; i < 50; i++) // Lặp 50 lần và phát một âm ngắn mỗi lần
  {
    digitalWrite(buzzerPin, HIGH); // Đặt HIGH để làm còi kêu
    delay(3); // Chờ 3 mili giây
    digitalWrite(buzzerPin, LOW); // LOW để tắt còi
    delay(3); // 
  }
  delay(1000); // Chờ 1 giây trước khi bắt đầu vòng lặp tiếp theo
}

Hàm loop() chứa một vòng lặp for chạy 50 lần. Mỗi lần lặp bật và tắt còi nhanh chóng, tạo ra một âm thanh. Các độ trễ 3 mili giây kiểm soát thời gian còi được kích hoạt và ngừng kích hoạt, trong khi độ trễ 1 giây ở cuối vòng lặp cung cấp một khoảng dừng trước khi lặp lại.

Trình diễn / Điều gì sẽ xảy ra

Sau khi hoàn tất việc nối dây và tải mã lên, bạn sẽ nghe thấy một loạt các âm ngắn được tạo ra bởi còi. Nếu còi không kêu, hãy kiểm tra các kết nối của bạn, đặc biệt là hướng của transistor và giá trị điện trở. Đảm bảo rằng chân đúng được sử dụng trong mã và ESP32 được cấp nguồn đúng cách.

Trong quá trình trình diễn, nếu bạn gặp sự cố, có thể do nối dây sai hoặc sử dụng sai chân cho còi. Kiểm tra việc nối dây theo hướng dẫn và đảm bảo nguồn điện đầy đủ (trong video ở phút 08:15).

Mốc thời gian video

  • 00:00 Bắt đầu
  • 1:52 Giới thiệu về dự án
  • 4:11 Giải thích cách nối dây
  • 8:11 Chọn bo mạch ESP32 và cổng COM trên Arduino IDE
  • 9:53 Giải thích mã Arduino
  • 13:17 Trình diễn dự án
  • 13:58 Mã và trình diễn dự án 2

Hình ảnh

ESP32-13-buzzer-wriing
ESP32-13-buzzer-wriing
ESP32-13-buzzer-schematic
ESP32-13-buzzer-schematic
SunFounder-ESP32-Lesson-13-Beep.mp4_snapshot_07.43.463
SunFounder-ESP32-Lesson-13-Beep.mp4_snapshot_07.43.463
S87050_transistor
S87050_transistor
813-ESP32 Tutorial 14/55- Arduino code for custom music tone
Ngôn ngữ: C++
const int buzzerPin = 14; //buzzer pin
const int resolution = 8; 

// Frequencies of the 7 musical notes (in Hz)
int frequencies[] = {262, 294, 330, 349, 392, 440, 494};


// Function to play a frequency on the buzzer for a given duration
void playFrequency(int frequency, int duration) {
  ledcWriteTone(buzzerPin, frequency); // Start the tone
  delay(duration); // Wait for the specified duration
  ledcWriteTone(buzzerPin, 0); // Stop the buzzer
}

void setup() {
  ledcAttach(buzzerPin, 2000, 8); // Set up the PWM pin
}

void loop() {
  for (int i = 0; i < 7; i++) {
    playFrequency(frequencies[i], 300); // Play each note for 300ms
    delay(50); // Add a brief pause between the notes
  }
  delay(1000); // Wait for 1 second before replaying the sequence
}

Tài nguyên & tài liệu tham khảo

Tập tin📁

Bảng dữ liệu (pdf)