Pendahuluan
ESP32 adalah mikrokontroler pilihan terbaik untuk proyek Internet of Things (IoT) berbasis audio, berkat chip Wi-Fi dan kemampuan pemrosesan suara yang memadai. Proyek Internet Radio ini memungkinkan ESP32 terhubung ke stasiun radio online dan melakukan streaming audio.
Tutorial ini berfokus pada pendekatan minimalis dan hemat biaya, memungkinkan Anda membangun radio yang berfungsi hanya dengan board ESP32 dan speaker sederhana, tanpa perlu Digital-to-Analog
1. Persiapan dan Komponen
Proyek ini menggunakan library audio yang memanfaatkan kemampuan Internal DAC atau I2S (Inter-IC Sound) ESP32, sehingga meminimalkan jumlah komponen.
1.1. Komponen Hardware
#include <WiFi.h>
#include "Audio.h" // Asumsi menggunakan library 'Audio' yang umum
#include "SD.h"
// --- KONFIGURASI WIFI & SD CARD ---
const char* ssid = "NAMA_WIFI_ANDA";
const char* password = "PASSWORD_WIFI_ANDA";
// Pin SD Card (dapat bervariasi)
#define SD_CS_PIN 5
// Objek Audio dan pin output I2S/DAC
Audio audio;
void setup() {
Serial.begin(115200);
// 1. Inisialisasi Wi-Fi
Serial.print("Menghubungkan ke Wi-Fi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nTerhubung! IP: " + WiFi.localIP().toString());
// 2. Inisialisasi SD Card
if (!SD.begin(SD_CS_PIN)) {
Serial.println("Gagal Inisialisasi Kartu SD!");
// Tambahkan penanganan error
return;
}
Serial.println("Kartu SD terinisialisasi.");
// 3. Konfigurasi Audio
audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT); // Ganti dengan pin I2S yang benar
audio.setVolume(5); // Atur volume (0-21)
// 4. Baca URL dari SD Card dan Mulai Streaming
// Misalnya, membaca file 'radio.txt'
File radioFile = SD.open("/radio.txt");
if (radioFile) {
String url = radioFile.readStringUntil('\n');
url.trim();
Serial.println("Streaming dari URL: " + url);
audio.connecttohost(url.c_str());
radioFile.close();
} else {
Serial.println("File radio.txt tidak ditemukan di SD Card.");
}
}
void loop() {
audio.loop(); // Fungsi wajib untuk menjaga buffer audio tetap berjalan
}
// Tambahkan handler callback audio (penting untuk library audio)
void audio_info(const char *info){
Serial.print("INFO: "); Serial.println(info);
}
// ... [Tambahkan callback audio lainnya]
4. Troubleshooting (Pemecahan Masalah)
Proyek Internet Radio sering mengalami masalah terkait jaringan dan buffer.
Kesimpulan
Proyek Internet Radio adalah cara yang sangat efektif untuk mendemonstrasikan kekuatan ESP32 sebagai perangkat IoT dual-core yang mampu menangani tugas jaringan yang kompleks (Wi-Fi, HTTP request) sekaligus memproses output audio real-time. Dengan memanfaatkan fitur internal ESP32, Anda dapat menciptakan solusi audio yang fungsional dan minimalis.