เปลี่ยนอุปกรณ์บ้านๆ ให้กลายเป็นสถานีวิทยุส่วนตัว เพื่อลดการติดหน้าจอมือถือ
สวัสดีชาว Maker สายหาทำทุกคนครับ! 🛠️ พวกเราอยู่ในยุคที่หยิบมือถือขึ้นมาทีไร ก็โดนโซเชียลมีเดียสูบเวลาไปเป็นชั่วโมงๆ จะเปิดวิทยุ FM ฟังแก้เหงา รายการก็มีแต่โฆษณาขายยาหรือเพลงที่ไม่ค่อยโดนใจเอาซะเลย คุณ [Trwmato] ก็เจอปัญหานี้เหมือนกันครับ เลยตัดสินใจทำ "สถานีวิทยุส่วนตัว" ขึ้นมาซะเลย จะได้ลดการจับมือถือลง (Screen time) แล้วนั่งฟังอะไรเพลินๆ ระหว่างทำงานแทน!
ฮาร์ดแวร์ไม่ต้องหรู ขอแค่รู้ใจก็พอ 🖥️
โปรเจกต์นี้ไม่ได้ใช้อุปกรณ์อะไรที่อลังการเลยครับ พระเอกของเราคือบอร์ดจิ๋วแต่แจ๋วอย่าง Raspberry Pi Zero ที่ทำหน้าที่เป็นสมองกลหลัก ควบคู่ไปกับตัวส่งสัญญาณ FM Transmitter สำหรับกระจายเสียงเข้าวิทยุ FM รุ่นคุณปู่ หรือถ้าบ้านใครไฮเทคหน่อย ระบบนี้ก็สามารถส่งเสียงออกทาง Bluetooth ได้เหมือนกันครับ!
💡 Maker's Tip: บอร์ดตระกูล Raspberry Pi Zero หรือ Pi รุ่นเล็กๆ เหมาะกับการนำมาทำ Home Server หรือ Music Streamer มากๆ ครับ เพราะประหยัดไฟ เปิดทิ้งไว้ได้ 24 ชั่วโมง! หากเพื่อนๆ กำลังมองหา บอร์ด Raspberry Pi Zero, สายเคเบิล, อุปกรณ์เชื่อมต่อ Bluetooth หรือโมดูลอิเล็กทรอนิกส์ต่างๆ สำหรับโปรเจกต์สาย Linux แวะมาช้อปปิ้งของพร้อมส่งได้ที่ Globalbyte Shop เลยครับ หรือจะทัก LINE OA Globalbyteshop มาให้เราช่วยจัดเซ็ตอุปกรณ์ก็ยินดีครับ!
ความตึงมันอยู่ที่ "ซอฟต์แวร์" ต่างหาก! 💻
การจะเอาเพลงหรือพอดแคสต์ (Podcast) มาเปิดไม่ใช่เรื่องยากครับ เพราะเขาใช้โปรแกรม podget ในการดูดข่าวและพอดแคสต์จาก RSS Feed มาเก็บไว้แบบอัตโนมัติ
แต่ความ "หาทำ" ที่แท้จริงคือการเขียนตรรกะ (Logic) จัดการคิวเพลงครับ! คุณ [Trwmato] เล่นเขียน Shell Script (Bash) เพียวๆ เพื่อมาคุมเพลย์ลิสต์! โดยสคริปต์นี้จะทำหน้าที่:
มิกซ์คอนเทนต์แบบสุ่ม ทั้งไฟล์เพลงในเครื่อง (Local content) และพอดแคสต์ที่เพิ่งโหลดมาใหม่
เช็กอายุของไฟล์ (Retention) เพื่อลบของเก่าทิ้ง และให้ความสำคัญกับข่าวสารสดใหม่เป็นอันดับแรก
ระบบป้องกันการเล่นซ้ำ (Anti-repetition) เพื่อไม่ให้เราต้องฟังเพลงเดิมๆ วนไปมาจนหลอนหู
⚠️ อย่าดูถูกพลังของ Bash Script!
หลายคนอาจจะยี้เวลาพูดถึง Bash Script เพราะมองว่ามันเก่าและเขียนยาก แต่จริงๆ แล้วมันคือเครื่องมือที่ทรงพลังและทำงานร่วมกับ Linux OS ได้เสถียรที่สุดครับ ถ้าใครอยากอัปสกิล ลองไปอ่านเทคนิค Better Bash Scripting หรือการทำ Critical sections ใน Bash Scripts ดูครับ รับรองว่าตาสว่าง!
▼ เปิดดูตัวอย่างการเขียน Shell Script จัดคิว ▲ ซ่อนรายละเอียดโค้ด
ตัวอย่างไอเดีย Bash Script ที่ใช้ในโปรเจกต์ 📝
แม้ว่าซอร์สโค้ดเต็มๆ จะมีหลายไฟล์ แต่หัวใจหลักคือสคริปต์ที่เช็กพอดแคสต์ใหม่และนำมาเรียงคิวเล่น ลองดูตัวอย่างแนวคิดการเขียนลูปด้วย Bash ได้เลยครับ:
Copy Code
#!/bin/bash
# ตัวอย่างสคริปต์จำลองการดึงพอดแคสต์และสุ่มเพลง (Concept Example)
PODCAST_DIR="/home/pi/podcasts"
MUSIC_DIR="/home/pi/music"
echo "🔄 กำลังอัปเดต Podcast ล่าสุดด้วย podget..."
podget --silent
echo "🎵 เริ่มทำการสร้าง Playlist ประจำวัน"
# เลือก Podcast ล่าสุดที่เพิ่งโหลดมา
LATEST_POD=$(ls -t $PODCAST_DIR/*.mp3 | head -n 1)
# สุ่มเพลงโลคัลมา 3 เพลง
RANDOM_MUSIC=$(ls $MUSIC_DIR/*.mp3 | shuf -n 3)
# ส่งเข้าโปรแกรมเล่นเพลง (เช่น mplayer หรือ cvlc)
echo "▶️ กำลังเล่นข่าวล่าสุด: $LATEST_POD"
mplayer "$LATEST_POD"
for song in $RANDOM_MUSIC; do
echo "▶️ กำลังเล่นเพลง: $song"
mplayer "$song"
done
echo "✅ จบคิวรายการของวันนี้!"
หากสนใจโค้ดต้นฉบับทั้งหมด (pi-fm-kitchen-radio) ตามไปดูได้ที่ลิงก์อ้างอิงด้านล่างครับ
โปรเจกต์เล็กๆ ที่ต่อยอดได้ระดับองค์กร 🏢
แนวคิดการใช้ Raspberry Pi + Shell Script ในการจัดการคิวเสียงแบบนี้ เป็นจุดเริ่มต้นที่ดีมากๆ ในการนำไปประยุกต์ทำ "สถานีวิทยุกระจายเสียง" สำหรับโรงเรียน, วิทยุชุมชน, หรือเสียงตามสายในบริษัทครับ เพราะมันโคตรจะเข้าใจง่าย แก้ไขง่าย (Easy to understand and modify) แถมไม่มีค่าบริการรายเดือนใดๆ ทั้งสิ้น!
📚 แหล่งข้อมูลศึกษาเพิ่มเติมและดาวน์โหลดโค้ด:
*คำเตือนและข้อแนะนำ: เนื้อหาบทความนี้สรุปและแปลมาจากโปรเจกต์ในต่างประเทศ การกระจายเสียงผ่านคลื่นวิทยุ FM ในบางประเทศอาจมีข้อบังคับทางกฎหมาย (กสทช.) หากต้องการทำโปรเจกต์กระจายเสียงระยะไกล โปรดตรวจสอบข้อกฎหมายหรือเลือกใช้สัญญาณ Bluetooth ภายในพื้นที่ส่วนบุคคลแทนครับ แนะนำให้ศึกษาโค้ดจาก
GitHub ต้นฉบับ ก่อนลงมือทำครับ