กลับไปหน้ารวมไฟล์
play-a-melody-by-notes-sent-from-a-phone-08f804.md

ชื่อโปรเจกต์: จัดไปวัยรุ่น! สั่ง Arduino เล่นเพลงผ่านมือถือแบบเท่ๆ

โปรเจกต์นี้เกิดจากไอเดียขำๆ ตอนพี่กำลังงมหาทางเล่นกับ Bluetooth Module HC-05 ว่ะ ตอนแรกกะว่าจะทำแอปมือถือลองสั่ง เปิด-ปิด LED บน Board Arduino ผ่าน Bluetooth เฉยๆ

พอพี่ลองส่งข้อความจากมือถือไปที่ Arduino ตัว Serial Port มันก็รับค่าเป็นตัวอักษร (Characters) ออกมา ทีแรกกะแค่คุมไฟ LED แต่ไปๆ มาๆ พี่ก็ปิ๊งไอเดียว่า "เชดเข้!" (WOW) พี่สามารถพิมพ์ตัวโน้ตเพลงในมือถือแล้วส่งให้ Arduino เล่นเพลงได้เลยนี่หว่า หลังจากนั้นไม่กี่นาทีพี่ก็นั่งแต่งเพลงเล่นกับลูกสาวจนเพลินเลยล่ะ

รูปแบบโน้ตเพลงมันก็จะหน้าตาประมาณนี้:

2C..DE.E.D.D.C.C.

โดยที่ "2" คือการตั้งค่า Octave (ระดับเสียง) ของโน้ตถัดไป พี่เซ็ตช่วงไว้ที่ 2 ถึง 5

ส่วนจุด "." คือไม่มีเสียง (Pause) หรือตัวหยุดนั่นแหละ ระยะเวลาที่หยุดจะนานเท่ากับตอนเล่นโน้ตหนึ่งตัวพอดี น้องจะใช้สัญลักษณ์อื่นแทนจุดก็ได้นะ ไปแก้เอาใน Code เลย

แอปพลิเคชันบนมือถือ (Phone application)

ส่วนตัวแอป "Melody player" บนมือถือ พี่ใช้ MIT App Inventor 2 ทำ หน้าตา User Interface (UI) บ้านๆ ก็จะออกมาประมาณนี้:

Picture 1

ในแอปจะมี "Pair BlueTooth" เป็น ListPicker ไว้เลือกอุปกรณ์, มี TextBox ชื่อ "Melody" เอาไว้กรอกโน้ต, และปุ่มอีก 3 ปุ่มคือ "PlayMelody", "SpeedUp" และ "SpeedDown" อ้อ อย่าลืมลาก Clock Component มาใส่ด้วยล่ะ

ส่วนในพาร์ท "Blocks" ก็ต่อจิ๊กซอว์ตามรูปด้านล่างนี้เลย หล่อเท่เลยงานนี้!

Blocks part of MIT app inventor 2

Code ของ Arduino ก็หมูมาก ดูตามข้างล่างได้เลยน้อง

ข้อควรระวังเรื่องการต่อวงจร:

  • พี่ใช้ Potentiometer 10k มาคุมความดังของลำโพง แต่น้องจะใช้อะไรก็ได้ที่มี หรือจะใช้ Resistor (ประมาณ 100 Ohm) ก็ได้นะ
  • ส่วน Switch ตรง Bluetooth Module น่ะ เอาไว้ปิดตอนจะ Upload Code ลง Board Arduino เพราะพี่ใช้ Arduino Nano ถ้าไม่ปิด Switch มันจะชนกับ Serial Port จน Upload ไม่เข้า ห้ามช็อตนะตัวนี้!

รายละเอียดทางเทคนิคแบบจัดเต็ม (EXPANDED TECHNICAL DETAILS)

Remote Melodic Synthesis Bridge

โปรเจกต์ไอเดียกระฉูดตัวนี้จะเปลี่ยน Arduino ที่ต่อ Buzzer ให้กลายเป็นเครื่องดนตรีผ่านแอปบน Smartphone ของน้องๆ

  • MIT App Inventor Musical Interface: หน้าแอปบนมือถือจะมี "Piano Keyboard" พอกดปุ่มปุ๊บ แอปจะส่งค่า Frequency Byte (เช่น 'C4') ไปที่ Arduino ผ่าน Bluetooth
  • Square-Wave Tone Generator: Arduino รับคำสั่งโน้ตมาแล้วใช้ฟังก์ชัน tone() สั่งงาน Piezoelectric Speaker โดยตัว Firmware จะจัดการเรื่อง Timings ทั้งตอนกดค้าง (Hold) และตอนปล่อย (Release) ให้เป๊ะที่สุด

การเล่นสนุกเพิ่มเติม (Interaction)

  • Wireless Polyphonic Simulation: (เวอร์ชันแอดวานซ์) ลองใช้ Arduino สัก 2-3 ตัว Sync กันผ่าน Bluetooth เพื่อเล่นประสานเสียง (Chords) หรือทำเพลงหลายแนวพร้อมกันจากแอปตัวเดียวดูดิ สู้งานนะน้อง!

ข้อมูล Frontmatter ดั้งเดิม

title: "Play a melody by notes sent from a phone"
description: "Plays a text of notes sent from a phone to arduino through bluetooth"
author: "viliamk"
category: ""
tags:
  - "audio"
views: 1059
likes: 0
price: 1499
difficulty: "Easy"
components:
  - "1x Arduino UNO"
  - "1x Rotary Potentiometer, 10 kohm"
  - "1x HC-05 Bluetooth Module"
  - "1x Speaker: 3W, 4 ohms"
  - "1x Toggle Switch, Toggle"
tools: []
apps:
  - "1x MIT App Inventor 2"
downloadableFiles: []
documentationLinks: []
passwordHash: "669a31c65475f68311bb2fed99deba1e153b862a07e9efe45349454aa51f4402"
encryptedPayload: "U2FsdGVkX18D0meB9NsdAF2FfxZ6PwayylnTSKt18gebuwErQQJyZkDPvgYiDpdLEcO5eHQ8vXfbYdNRU6nPEgoy6F+84QXy9prVPR+Msr8="
seoDescription: "Play a Melody on Arduino using Notes sent from a Phone via Bluetooth. A simple wireless music control project."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/play-a-melody-by-notes-sent-from-a-phone-08f804_cover.jpg"
lang: "th"