Senin, 10 November 2025

Internet Radio ESP32 Tanpa Amplifier, DAC, dan Display

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

KomponenKeteranganFungsi Utama
ESP32 Dev ModuleTipe apa pun (DevKit V1, NodeMCU-32S, dll.).Otak pemrosesan dan koneksi Wi-Fi.
Kartu MicroSD & AdapterDiperlukan untuk menyimpan file konfigurasi stasiun radio.Menyimpan data konfigurasi.
Speaker atau HeadphoneSpeaker kecil 4-8 Ohm atau headphone biasa.Output suara.
Kabel Jumper & BreadboardUntuk menghubungkan speaker ke pin ESP32.Koneksi sirkuit.

#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.

MasalahKemungkinan PenyebabSolusi
Suara Patah-patah/TerputusBuffer audio tidak terisi tepat waktu (latensi Wi-Fi buruk).Periksa kualitas sinyal Wi-Fi. Tambahkan lebih banyak delay atau atur ukuran buffer di library audio.
Tidak ada suara sama sekaliPengkabelan pin I2S/Speaker salah, atau library tidak dikonfigurasi dengan benar.Cek kembali pinout audio.setPinout(...) dengan pin yang Anda gunakan. Pastikan volume diatur di atas 0.
Gagal inisialisasi SD CardPin CS salah, atau kartu SD diformat tidak benar.Pastikan SD_CS_PIN sudah benar. Gunakan kartu SD dengan format FAT32.
Error: Gagal Terhubung ke HostURL streaming stasiun radio mati atau salah.Verifikasi URL streaming di browser Anda. Coba URL streaming yang berbeda dan pastikan formatnya (misalnya, .mp3 atau .aac).

 

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.

 

Referensi

Wi-Fi hotspot dengan captive portal