ค้นหาโค้ด

ESP32 บทเรียน 13/55 - Arduino ส่งเสียงบี๊บด้วย Active Buzzer | ชุดเรียนรู้ IoT ESP32 ของ SunFounder

ESP32 บทเรียน 13/55 - Arduino ส่งเสียงบี๊บด้วย Active Buzzer | ชุดเรียนรู้ IoT ESP32 ของ SunFounder

ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีควบคุมออดแบบแอคทีฟ (active buzzer) โดยใช้ไมโครคอนโทรลเลอร์ ESP32 และทรานซิสเตอร์ โปรเจกต์นี้เกี่ยวข้องกับการเปิดและปิดออด เพื่อสร้างเสียงบี๊บ ด้วยความสามารถ Wi-Fi และ Bluetooth ในตัวของ ESP32 คุณสามารถขยายโปรเจกต์นี้ไปสู่แอปพลิเคชัน IoT ที่ซับซ้อนมากขึ้นได้ในอนาคต

ส่วนประกอบที่เราจะใช้ประกอบด้วยบอร์ด ESP32 ออดแบบแอคทีฟ ทรานซิสเตอร์ (S8050) และตัวต้านทาน โดยการต่อวงจรส่วนประกอบเหล่านี้อย่างถูกต้อง เราจะสามารถควบคุมเสียงของออดผ่าน ESP32 ได้ นอกจากนี้ เราจะให้ภาพรวมโดยย่อของการเดินสายไฟและโค้ดที่จำเป็นเพื่อให้โปรเจกต์นี้ทำงานได้ สำหรับคำอธิบายเพิ่มเติม โปรดดูวิดีโอประกอบบทช่วยสอนนี้ (ในวิดีโอที่ 00:00)

ทรานซิสเตอร์ S87050

อธิบายฮาร์ดแวร์

ส่วนประกอบหลักของโปรเจกต์นี้ประกอบด้วยไมโครคอนโทรลเลอร์ ESP32 ออดแบบแอคทีฟ และทรานซิสเตอร์ S8050 ESP32 เป็นไมโครคอนโทรลเลอร์ที่ทรงพลังซึ่งมีทั้ง Wi-Fi และ Bluetooth ทำให้สามารถใช้งานโปรเจกต์ IoT ได้หลากหลาย ออดแบบแอคทีฟจะสร้างเสียงเมื่อมีการจ่ายแรงดันไฟฟ้า ในขณะที่ทรานซิสเตอร์ S8050 ทำหน้าที่เป็นสวิตช์เพื่อควบคุมออดด้วยสัญญาณแรงดันไฟฟ้าต่ำจาก ESP32

ทรานซิสเตอร์มีขา 3 ขา ได้แก่ ขาคอลเลกเตอร์ (collector) ขาเบส (base) และขาอิมิตเตอร์ (emitter) เมื่อมีการจ่ายแรงดันไฟฟ้าไปที่ขาเบสผ่านตัวต้านทาน จะทำให้กระแสไหลจากคอลเลกเตอร์ไปยังอิมิตเตอร์ จึงเป็นการจ่ายไฟให้กับออด การตั้งค่านี้ช่วยให้เราสามารถควบคุมออดได้อย่างปลอดภัยโดยไม่ทำให้ขา GPIO ของ ESP32 รับภาระเกินไป

แผนผังวงจร ESP32-13-buzzer

รายละเอียดจาก Datasheet

ผู้ผลิต SunFounder
หมายเลขชิ้นส่วน TMBB 12 A05
แรงดันไฟฟ้าที่ใช้งาน 3–8 V
แรงดันไฟฟ้าที่กำหนด 5 V
กระแสไฟฟ้าสูงสุด 30 mA
ความถี่การสั่น 2700 ± 300 Hz

 

  • ใช้ตัวต้านทาน 1 kΩ เพื่อจำกัดกระแสไฟฟ้าที่เข้าสู่ขาเบสของทรานซิสเตอร์
  • ตรวจสอบให้แน่ใจว่าเชื่อมต่อออดแบบแอคทีฟอย่างถูกต้อง โดยขั้วบวกและขั้วลบต้องตรงกัน
  • ตรวจสอบการเชื่อมต่อขาอีกครั้งเพื่อป้องกันการลัดวงจร
  • ใช้เบรดบอร์ดเพื่อให้การเชื่อมต่อและการปรับแต่งง่ายขึ้น
  • ออดสามารถทำงานได้ทั้งที่ 3.3V และ 5V แต่ควรจ่ายไฟตามความต้องการของวงจรของคุณ

คำแนะนำการเดินสายไฟ

ESP32-13-buzzer-wriing

ในการเดินสายไฟส่วนประกอบ เริ่มต้นโดยเสียบออดแบบแอคทีฟเข้ากับเบรดบอร์ด เชื่อมต่อขั้วบวกของออดเข้ากับขา 3.3V บน ESP32 ขั้วลบของออดควรเชื่อมต่อกับขาคอลเลกเตอร์ของทรานซิสเตอร์ S8050 จากนั้นเสียบทรานซิสเตอร์ S8050 เข้ากับเบรดบอร์ด โดยให้ด้านแบนหันเข้าหาคุณ ขาซ้าย (คอลเลกเตอร์) เชื่อมต่อกับขั้วลบของออด ขากลาง (เบส) เชื่อมต่อกับตัวต้านทาน 1 kΩ และขาขวา (อิมิตเตอร์) เชื่อมต่อกับกราวด์

จากนั้น นำปลายอีกด้านของตัวต้านทาน 1 kΩ ไปเชื่อมต่อกับขา GPIO 14 บน ESP32 สุดท้าย เชื่อมต่อขาอิมิตเตอร์ของทรานซิสเตอร์เข้ากับรางกราวด์บนเบรดบอร์ด ตรวจสอบให้แน่ใจว่าการเชื่อมต่อทั้งหมดแน่นหนา และตรวจสอบการวางตำแหน่งของขาอีกครั้งก่อนจ่ายไฟให้วงจร

ตัวอย่างโค้ดและคำอธิบาย

นี่คือภาพรวมโดยย่อของโค้ดที่ควบคุมออด ขั้นแรก เรากำหนดขาที่เชื่อมต่อกับออด:

const int buzzerPin = 14; // ขาของออด

บรรทัดนี้ตั้งค่าตัวแปร buzzerPin เพื่ออ้างอิงถึงขา 14 บน ESP32 ซึ่งใช้ควบคุมออด

ถัดไป เราตั้งค่าขาของออดเป็นเอาต์พุตในฟังก์ชัน setup():

void setup()
{
  pinMode(buzzerPin, OUTPUT); // ตั้งเป็นเอาต์พุต
}

วิธีนี้ช่วยให้ ESP32 รู้ว่าต้องใช้ขา 14 ในการส่งสัญญาณเพื่อเปิดและปิดออด

ในฟังก์ชัน loop() เราสร้างลูป for เพื่อกระตุ้นการทำงานของออดหลายครั้ง:

for (int i = 0; i < 50; i++) // ลูป 50 ครั้งและเล่นเสียงสั้น ๆ ในแต่ละครั้ง
{
  digitalWrite(buzzerPin, HIGH); // ตั้งเป็น HIGH เพื่อให้ออดส่งเสียง
  delay(3); // หน่วงเวลา 3 มิลลิวินาที
  digitalWrite(buzzerPin, LOW); // LOW เพื่อปิดออด
  delay(3); // 
}

ลูปนี้จะทำให้ออดบี๊บ 50 ครั้ง โดยแต่ละครั้งใช้เวลา 3 มิลลิวินาที หลังจากลูปเสร็จสิ้น จะมีการหน่วงเวลา 1 วินาทีก่อนที่จะทำซ้ำ

การสาธิต / สิ่งที่คาดหวัง

เมื่อเดินสายไฟและโค้ดถูกต้องแล้ว การจ่ายไฟให้ ESP32 ควรกระตุ้นการทำงานของออด ทำให้เกิดเสียงบี๊บเป็นชุด หากออดไม่ส่งเสียง ให้ตรวจสอบการเชื่อมต่อ โดยเฉพาะทิศทางการวางของทรานซิสเตอร์และตัวต้านทาน ตรวจสอบให้แน่ใจว่าใช้ขา GPIO ที่ถูกต้องในโค้ด และแหล่งจ่ายไฟเพียงพอ (ในวิดีโอที่ 01:30)

ไทม์สแตมป์ในวิดีโอ

  • 00:00 เริ่มต้น
  • 1:45 แนะนำโปรแกรมออด
  • 5:57 การเดินสายไฟออดและทรานซิสเตอร์ S8050
  • 9:57 โค้ด Arduino สำหรับ ESP32 Buzzer
  • 12:52 การเลือกบอร์ด ESP32 และพอร์ต COM
  • 14:05 3.1 การสาธิตโปรเจกต์ออด

ภาพ

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
812-ESP32 Tutorial 13/55- Arduino code for controlling buzzer
ภาษา: C++
const int buzzerPin = 14; // the buzzer pin

void setup()
{
  pinMode(buzzerPin, OUTPUT); // Set as output
}

void loop()
{
  for (int i = 0; i < 50; i++) // Loop 50 times and play a short tone each time
  {
    digitalWrite(buzzerPin, HIGH); // Set to HIGH to make the buzzer sound
    delay(3); // Wait for 3 milliseconds
    digitalWrite(buzzerPin, LOW); // LOW to turn off the buzzer
    delay(3); // 
  }
  delay(1000); // Wait for 1s before starting the next loop
}

แหล่งข้อมูลและเอกสารอ้างอิง

ไฟล์📁

แผ่นข้อมูล (pdf)