Arduino UNO R4 Piezo Buzzer

Trong hướng dẫn này, chúng ta sẽ học cách điều khiển buzzer sử dụng Arduino UNO R4. Chúng ta sẽ đi qua các chi tiết về cách thực hiện điều này:

Arduino UNO R4 còi piezo

Thiết Bị Cần Thiết

1×Arduino UNO R4 WiFi hoặc Arduino UNO R4 Minima
1×(Tùy chọn) DIYables STEM V4 IoT, tương thích với Arduino Uno R4 WiFi
1×Arduino UNO R4 Minima (Có thể thay thế)
1×Cáp USB Type-C
1×Active Piezo Buzzer 3-24V
1×Module Active Piezo Buzzer
1×Module Passive Piezo Buzzer
1×breadboard (Bo mạch thí nghiệm)
1×Dây Jumper
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino UNO R4
1×(Khuyến nghị) Breadboard Shield for Arduino UNO R4
1×(Khuyến nghị) Enclosure for Arduino UNO R4
1×(Khuyến nghị) Power Splitter for Arduino UNO R4
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V4 IoT Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Giới Thiệu Về Buzzer

Buzzer tạo ra âm thanh như tiếng beep hoặc giai điệu. Chúng có nhiều loại khác nhau, mỗi loại có những tính năng riêng. Hãy cùng tìm hiểu các loại này dựa trên những đặc điểm cụ thể:

  • Phương thức điều khiển:
    • Active Buzzer
    • Passive Buzzer
  • Cơ chế tạo âm thanh:
    • Piezo Buzzer
    • Buzzer tiêu chuẩn
  • Yêu cầu điện áp:
    • Điện áp thấp (3-5V)
    • Điện áp cao (12V)

    Hãy cùng tìm hiểu kỹ hơn.

    Active Buzzer và Passive Buzzer

    • Active Buzzer:
      • Nó tạo tiếng kêu khi có điện cấp vào.
      • Nó cần điện liên tục để duy trì tiếng kêu.
      • Dễ sử dụng với nguồn điện.
      • Thường được dùng trong hệ thống báo động đơn giản.
    • Passive Buzzer:
      • Cần tín hiệu riêng biệt thay đổi để tạo tiếng kêu.
      • Có thể tạo ra nhiều âm thanh khác nhau bằng cách điều chỉnh tín hiệu.
      • Cần thiết lập phức tạp hơn để hoạt động.
      • Thường được sử dụng để tạo nhạc hoặc âm thanh khác nhau.

      Piezo Buzzer và Buzzer Thường

      • Piezo Buzzer:
        • Hoạt động bằng tinh thể áp điện.
        • Phát ra âm thanh trong trẻo, tần số cao.
        • Linh hoạt trong việc tạo ra các tông và tần số khác nhau.
        • Hiệu quả và thường được dùng trong báo động và thiết bị âm nhạc.
      • Buzzer Thường:
        • Hoạt động bằng cuộn dây điện từ.
        • Tạo ra âm thanh đơn giản, tiếng kêu vo vo.
        • Ít biến đổi về tông.
        • Thường thấy trong thiết bị đơn giản như chuông cửa và báo động cơ bản.

        Trên thị trường, bạn có thể tìm thấy active buzzer 3V-24V. Bạn có thể sử dụng nó như active buzzer 3-5V hoặc như buzzer điện áp cao (12V...).

        • Nếu bạn kết nối buzzer này với chân Arduino UNO R4, nó sẽ tạo ra âm thanh tiêu chuẩn, phù hợp cho những việc như tiếng bàn phím.
        • Nếu bạn kết nối buzzer này thông qua relay với điện áp cao, nó sẽ tạo ra âm thanh to, phù hợp cho báo động.

        Trong hướng dẫn này, chúng tôi sẽ đề cập cách sử dụng buzzer cần 3-5V, cả loại active và passive. Đối với buzzer cần 12V, xem hướng dẫn Arduino UNO R4 - buzzer 12V tại đây: Arduino UNO R4 - Buzzer

        Sơ Đồ Chân

        Buzzer thường có hai đầu kết nối.

        • Chân âm (-): kết nối với GND (0V)
        • Chân dương (+): kết nối trực tiếp hoặc thông qua relay để nhận tín hiệu điều khiển từ Arduino UNO R4
        còi piezo sơ đồ chân

        Cách Active Buzzer Hoạt Động

        • Khi bạn kết nối VCC với chân dương, piezo buzzer sẽ tạo ra âm thanh liên tục.
        how còi piezo works
        • Để tạo ra các tông khác nhau với piezo buzzer, gửi sóng vuông với tần số cụ thể đến chân dương. Các tần số khác nhau tạo ra các tông khác nhau. Để phát giai điệu, thay đổi tần số của sóng vuông.
        how còi piezo works

        Cách Passive Buzzer Hoạt Động

        • Passive buzzer không tạo ra âm thanh liên tục chỉ bằng cách kết nối VCC với chân dương, khác với active buzzer.
        • Tương tự như active buzzer, khi bạn áp dụng sóng vuông với tần số nhất định (và chu kỳ nhiệm vụ 50%) vào chân dương, piezo buzzer sẽ tạo ra âm thanh. Các tần số khác nhau tạo ra các tông khác nhau. Bạn có thể tạo thành giai điệu bằng cách thay đổi tần số của tín hiệu trên chân dương.

Sơ Đồ Kết Nối

  • Sơ đồ kết nối giữa Arduino Uno R4 và piezo buzzer
Arduino UNO R4 buzzer sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

  • Sơ đồ kết nối giữa Arduino Uno R4 và module piezo buzzer
Arduino UNO R4 buzzer module sơ đồ đấu dây

This image is created using Fritzing. Click to enlarge image

Cách Lập Trình Cho Buzzer

Sử dụng thư viện Arduino UNO R4 giúp việc phát giai điệu trở nên đơn giản. Bạn không cần hiểu cách tạo sóng vuông. Bạn chỉ cần sử dụng hai hàm từ thư viện: tone()noTone().

Code Arduino UNO R4

/* * Mã Arduino UNO R4 này được phát triển bởi newbiely.vn * Mã Arduino UNO R4 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino-uno-r4/arduino-uno-r4-piezo-buzzer */ #include "pitches.h" #define BUZZER_PIN 6 // The Arduino UNO R4 pin connected to the buzzer // notes in the melody: int melody[] = { NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4 }; // note durations: 4 = quarter note, 8 = eighth note, etc.: int noteDurations[] = { 4, 8, 8, 4, 4, 4, 4, 4 }; void setup() { // iterate over the notes of the melody: for (int thisNote = 0; thisNote < 8; thisNote++) { // to calculate the note duration, take one second divided by the note type. //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. int noteDuration = 1000 / noteDurations[thisNote]; tone(BUZZER_PIN, melody[thisNote], noteDuration); // to distinguish the notes, set a minimum time between them. // the note's duration + 30% seems to work well: int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); // stop the tone playing: noTone(BUZZER_PIN); } } void loop() { // no need to repeat the melody. }

Các Bước Nhanh

Thực hiện theo các hướng dẫn từng bước sau:

  • Nếu đây là lần đầu bạn sử dụng Arduino Uno R4 WiFi/Minima, hãy tham khảo hướng dẫn về Arduino UNO R4 - Cài Đặt Phần Mềm.
  • Kết nối piezo buzzer với Arduino Uno R4 theo sơ đồ đã cung cấp.
  • Kết nối bo mạch Arduino Uno R4 với máy tính bằng cáp USB.
  • Khởi động Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch Arduino Uno R4 phù hợp (ví dụ: Arduino Uno R4 WiFi) và cổng COM.
  • Sao chép và dán code đã cung cấp vào Arduino IDE.
  • Để tạo file có tên pitches.h trong Arduino IDE, thực hiện một trong các cách sau:
    • Nhấp vào nút bên dưới biểu tượng serial monitor và chọn New Tab.
    • Hoặc bạn có thể nhấn Ctrl+Shift+N trên bàn phím.
    Arduino ide 2 adds file
    • Đặt tên file là pitches.h và nhấp nút OK.
    Arduino ide 2 adds file pitches.h
    • Sao chép code bên dưới và dán vào file có tên pitches.h.
    /************************************************* * Public Constants *************************************************/ #define NOTE_B0 31 #define NOTE_C1 33 #define NOTE_CS1 35 #define NOTE_D1 37 #define NOTE_DS1 39 #define NOTE_E1 41 #define NOTE_F1 44 #define NOTE_FS1 46 #define NOTE_G1 49 #define NOTE_GS1 52 #define NOTE_A1 55 #define NOTE_AS1 58 #define NOTE_B1 62 #define NOTE_C2 65 #define NOTE_CS2 69 #define NOTE_D2 73 #define NOTE_DS2 78 #define NOTE_E2 82 #define NOTE_F2 87 #define NOTE_FS2 93 #define NOTE_G2 98 #define NOTE_GS2 104 #define NOTE_A2 110 #define NOTE_AS2 117 #define NOTE_B2 123 #define NOTE_C3 131 #define NOTE_CS3 139 #define NOTE_D3 147 #define NOTE_DS3 156 #define NOTE_E3 165 #define NOTE_F3 175 #define NOTE_FS3 185 #define NOTE_G3 196 #define NOTE_GS3 208 #define NOTE_A3 220 #define NOTE_AS3 233 #define NOTE_B3 247 #define NOTE_C4 262 #define NOTE_CS4 277 #define NOTE_D4 294 #define NOTE_DS4 311 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_FS4 370 #define NOTE_G4 392 #define NOTE_GS4 415 #define NOTE_A4 440 #define NOTE_AS4 466 #define NOTE_B4 494 #define NOTE_C5 523 #define NOTE_CS5 554 #define NOTE_D5 587 #define NOTE_DS5 622 #define NOTE_E5 659 #define NOTE_F5 698 #define NOTE_FS5 740 #define NOTE_G5 784 #define NOTE_GS5 831 #define NOTE_A5 880 #define NOTE_AS5 932 #define NOTE_B5 988 #define NOTE_C6 1047 #define NOTE_CS6 1109 #define NOTE_D6 1175 #define NOTE_DS6 1245 #define NOTE_E6 1319 #define NOTE_F6 1397 #define NOTE_FS6 1480 #define NOTE_G6 1568 #define NOTE_GS6 1661 #define NOTE_A6 1760 #define NOTE_AS6 1865 #define NOTE_B6 1976 #define NOTE_C7 2093 #define NOTE_CS7 2217 #define NOTE_D7 2349 #define NOTE_DS7 2489 #define NOTE_E7 2637 #define NOTE_F7 2794 #define NOTE_FS7 2960 #define NOTE_G7 3136 #define NOTE_GS7 3322 #define NOTE_A7 3520 #define NOTE_AS7 3729 #define NOTE_B7 3951 #define NOTE_C8 4186 #define NOTE_CS8 4435 #define NOTE_D8 4699 #define NOTE_DS8 4978
    • Nhấp nút Upload trong Arduino IDE để tải code lên Arduino UNO R4.
    tải mã lên Arduino IDE
    • Lắng nghe giai điệu.

Chỉnh Sửa Code Arduino UNO R4

Bây giờ, chúng ta sẽ thay đổi code để phát bài hát "Jingle Bells".

Chúng ta chỉ cần chỉnh sửa hai mảng: int melody[]int noteDurations[].

/* * Mã Arduino UNO R4 này được phát triển bởi newbiely.vn * Mã Arduino UNO R4 này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino-uno-r4/arduino-uno-r4-piezo-buzzer */ #include "pitches.h" #define BUZZER_PIN 6 // The Arduino UNO R4 pin connected to the buzzer // notes in the melody: int melody[] = { NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_G5, NOTE_C5, NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_D5, NOTE_D5, NOTE_E5, NOTE_D5, NOTE_G5 }; // note durations: 4 = quarter note, 8 = eighth note, etc, also called tempo: int noteDurations[] = { 8, 8, 4, 8, 8, 4, 8, 8, 8, 8, 2, 8, 8, 8, 8, 8, 8, 8, 16, 16, 8, 8, 8, 8, 4, 4 }; void setup() { // iterate over the notes of the melody: int size = sizeof(noteDurations) / sizeof(int); for (int thisNote = 0; thisNote < size; thisNote++) { // to calculate the note duration, take one second divided by the note type. //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. int noteDuration = 1000 / noteDurations[thisNote]; tone(BUZZER_PIN, melody[thisNote], noteDuration); // to distinguish the notes, set a minimum time between them. // the note's duration + 30% seems to work well: int pauseBetweenNotes = noteDuration * 1.30; delay(pauseBetweenNotes); // stop the tone playing: noTone(BUZZER_PIN); } } void loop() { // no need to repeat the melody. }

※ Lưu ý:

Code đã đề cập sử dụng hàm delay(), hàm này sẽ dừng các code khác không chạy trong khi giai điệu đang phát. Để ngăn chặn điều này, bạn có thể sử dụng thư viện ezBuzzer. Thư viện này cho phép buzzer kêu beep hoặc phát giai điệu mà không dừng các code khác.

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.

Thử Thách Bản Thân