ESP32 Eğitimi 41/55 - Micro SD kart kullanarak MP3 Çalar | SunFounder'ın ESP32 IoT Öğrenme kiti
Bu eğitimde, ESP32 mikrodenetleyicisi ve bir mikro SD kart kullanarak bir MP3 çalar oluşturacağız. ESP32, mikro SD kartta saklanan ses dosyalarını okuyacak ve sesi bir ses amplifikatörü ve hoparlör aracılığıyla çıkaracaktır. Bu proje, ESP32, bir ses amplifikatörü ve bir mikro SD kart dahil olmak üzere çeşitli bileşenleri birleştirerek müzik çalmanızı basit bir şekilde sağlar.
Süreç boyunca gerekli bağlantıları, kodlamayı ve yaygın sorunların nasıl giderileceğini ele alacağız. Daha fazla görsel rehberlik için ilişkili videoyu (videoda 00:00'da) izlemeyi unutmayın.
Donanım Açıklaması
Bu projede kullanılan ana bileşenler ESP32 mikrodenetleyicisi, bir mikro SD kart, bir ses amplifikatörü ve bir hoparlördür. ESP32, yerleşik Wi-Fi ve Bluetooth özelliklerine sahip güçlü bir mikrodenetleyicidir ve bu da onu IoT projeleri için ideal kılar. Ses çalmanın işlenmesini ve kontrolünü o yönetecektir.
Mikro SD kart, MP3 formatındaki ses dosyalarını depolamak için kullanılır. ESP32'ye bağlanır ve programın dosyaları okumasına ve ses verilerini amplifikatöre göndermesine olanak tanır. Ses amplifikatörü, ESP32'den gelen dijital sinyali alır ve hoparlörü sürmek için yükselterek sesin duyulmasını sağlar.
Veri Sayfası Ayrıntıları
| Üretici | SunFounder |
|---|---|
| Parça numarası | ESP32 |
| Mantık/IO voltajı | 3,3 V |
| Besleme voltajı | 5 V |
| Çıkış akımı (kanal başına) | 2 A maks. |
| Tepe akımı (kanal başına) | 3 A maks. |
| PWM frekansı kılavuzu | 40 kHz'e kadar |
| Giriş mantık eşikleri | 0,3 x VCC (düşük), 0,7 x VCC (yüksek) |
| Gerilim düşümü / RDS(on) / doyum | 0,15 V |
| Termal sınırlar | 85 °C |
| Paket | WROOM-32 |
| Notlar / varyantlar | Çeşitli ses kitaplıklarıyla uyumludur |
- Mikro SD kartın FAT32 olarak biçimlendirildiğinden emin olun.
- Bozulmayı önlemek için ses amplifikatörünü bağlarken bir direnç kullanın.
- Kesintileri önlemek için güç kaynağı bağlantılarını sabit tutun.
- Sistemi çalıştırmadan önce gevşek bağlantılar için kablolamayı kontrol edin.
- Hata ayıklama bilgileri için seri çıkışı izleyin.
- Daha iyi ses kalitesi için düşük empedanslı hoparlörler kullanın.
- En iyi performans için, ses çalarken ESP32'nin görevlerle aşırı yüklenmediğinden emin olun.
SD_MMC mikro SD erişimi için kullanılır ve AudioOutputI2S ses çıkışı için kullanılır.
Bağlantı Talimatları


Bileşenleri birbirine bağlamak için güç kaynağını bağlayarak başlayın. ESP32'deki 5 V'u ses amplifikatörünün VCC pinine bağlayın. Ardından, ESP32'deki toprak pinini amplifikatörün toprak pinine bağlayın. ESP32'den genellikle GPIO25 olan ses çıkış pini, 10 kΩ'luk bir direnç üzerinden amplifikatörün giriş pinine bağlanmalıdır.
Hoparlör için, onu ses amplifikatörünün çıkış pinlerine bağlayın. Hoparlörün polaritesi olmadığını unutmayın, bu yüzden onu her iki şekilde de bağlayabilirsiniz. Mikro SD kartı ESP32 üzerindeki belirlenmiş yuvaya takın. Sistemi çalıştırmadan önce tüm bağlantıları tekrar kontrol ettiğinizden emin olun.
Kod Örnekleri ve Açıklama
Sağlanan kodda, ses çalma ve SD kart erişimi için gerekli kitaplıkları dahil ederek başlıyoruz. Ana tanımlayıcılar mp3, file ve out olup sırasıyla MP3 üretecini, ses dosyası kaynağını ve ses çıkışını temsil eder.
AudioGeneratorMP3 *mp3;
AudioFileSourceSD_MMC *file;
AudioOutputI2S *out;
Burada, MP3 üreteci ve ses dosyası kaynağı için işaretçiler bildiriyoruz. setup() fonksiyonunda, seri iletişimi ve SD kartı başlatıyoruz.
void setup() {
Serial.begin(115200);
if (!SD_MMC.begin()) {
Serial.println("SD kart bağlanamadı!");
}
file = new AudioFileSourceSD_MMC("/To Alice.mp3");
out = new AudioOutputI2S(0, 1);
}
Bu alıntıda, SD kartın başarıyla bağlanıp bağlanmadığını kontrol ediyoruz. Başarısız olursa, bir hata mesajı yazdırılır. Ardından MP3 dosyasını ve ses çıkış modunu ayarlıyoruz.
void loop() {
if (mp3->isRunning()) {
if (!mp3->loop()) mp3->stop();
} else {
Serial.println("MP3 bitti");
delay(1000);
}
}
Bu döngü, MP3 dosyasının hala çalıp çalmadığını kontrol eder. Çalmıyorsa, çalmanın tamamlandığını belirten bir mesaj yazdırır. Tam kod, daha fazla referans için makalenin altında yüklenecektir.
Gösterim / Beklentiler
Her şey bağlandığında ve kod yüklendiğinde, mikro SD kart takıldığında hoparlörden sesin çaldığını duymalısınız. Kartı taktıktan sonra ESP32'yi sıfırladığınızdan emin olun. Ses çalmazsa, kablolamayı kontrol edin ve ses dosyasının kodda doğru adlandırıldığından emin olun (videoda 05:00'da).
Yaygın tuzaklar, mikro SD kartın doğru biçimlendirilmemesi veya desteklenmeyen ses dosyası formatlarının kullanılmasıdır. Dosyaların MP3 formatında olduğundan ve gerektiği gibi kök dizine veya belirtilen klasöre yerleştirildiğinden her zaman emin olun.
Video Zaman Damgaları
- 00:00 Başlangıç
- 2:19 Projeye giriş
- 4:27 Dokümanlar sayfası
- 5:32 Ses amplifikatörü için bağlantı
- 8:00 ESP32 için mikroSD kart biçimlendirme
- 10:16 Kitaplık ve Kod
- 15:16 Arduino IDE'de ESP32 kartını ve COM portunu seçme
- 16:58 Mikro SD karttan ESP32 kullanarak Şarkı Çalma
- 19:14 18650 pil kullanarak ikinci demo
#include "AudioFileSourceSD_MMC.h"
#include "AudioOutputI2S.h"
#include "AudioGeneratorMP3.h"
#include "SD_MMC.h"
#include "FS.h"
// Declare pointers for the MP3 generator, file source, and output.
AudioGeneratorMP3 *mp3;
AudioFileSourceSD_MMC *file;
AudioOutputI2S *out;
void setup() {
// Start the serial communication.
Serial.begin(115200);
delay(1000);
// Initialize the SD card. If it fails, print an error message.
if (!SD_MMC.begin()) {
Serial.println("SD card mount failed!");
}
// Open the MP3 file from the SD card. Replace "/To Alice.mp3" with your own MP3 file name.
file = new AudioFileSourceSD_MMC("/To Alice.mp3");
// Set up the I2S output on ESP32's internal DAC.
out = new AudioOutputI2S(0, 1);
// Set the output to mono.
out->SetOutputModeMono(true);
// Initialize the MP3 generator with the file and output.
mp3 = new AudioGeneratorMP3();
mp3->begin(file, out);
}
void loop() {
// If the MP3 is running, loop it. Otherwise, stop it.
if (mp3->isRunning()) {
if (!mp3->loop()) mp3->stop();
}
// If the MP3 is not running, print a message and wait for 1 second.
else {
Serial.println("MP3 done");
delay(1000);
}
}
Common Course Links
Common Course Files
Kaynaklar ve referanslar
-
BelgelendirmeESP32 Tutorial 41/55 - SunFounder doc page for playing music from memory carddocs.sunfounder.com
Dosyalar📁
Dosya mevcut değil.