Welcome to Hackster!
Hackster is a community dedicated to learning hardware, from beginner to pro. Join us, it's free!
pollux labs
Published © MIT

ESP32 Internet Radio

Access global stations with minimal hardware.

IntermediateFull instructions provided1 hour4,212
ESP32 Internet Radio

Things used in this project

Hardware components

ESP32-S3-Zero
Or a different ESP32
×1
Adafruit I2S 3W Class D Amplifier Breakout - MAX98357A
×1
Speaker: 3W, 4 ohms
Speaker: 3W, 4 ohms
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Schematics

Wiring Diagram

Code

ESP32 Internet Radio Sketch

C/C++
#ESP32 Internet Radio
#https://en.polluxlabs.net

#include "Arduino.h"
#include "WiFi.h"
#include "Audio.h"

// Connections ESP32 <-> Amplifier
#define I2S_DOUT  2
#define I2S_BCLK  3
#define I2S_LRC   4

Audio audio;

// Wifi Credentials
String ssid =    "YOUR NETWORK";
String password = "YOUR PASSWORD";

void setup() {
  Serial.begin(115200);
  WiFi.disconnect();
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid.c_str(), password.c_str());
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  Serial.println("");
  audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
  // Volume (0-100)
  audio.setVolume(10);
  // Radio stream, e.g. Byte.fm
  audio.connecttohost("http://www.byte.fm/stream/bytefm.m3u");
}

void loop()
{
  audio.loop();
}

// Print station info
void audio_info(const char *info) {
  Serial.print("info        "); Serial.println(info);
}
void audio_id3data(const char *info) { //id3 metadata
  Serial.print("id3data     "); Serial.println(info);
}
void audio_eof_mp3(const char *info) { //end of file
  Serial.print("eof_mp3     "); Serial.println(info);
}
void audio_showstation(const char *info) {
  Serial.print("station     "); Serial.println(info);
}
void audio_showstreaminfo(const char *info) {
  Serial.print("streaminfo  "); Serial.println(info);
}
void audio_showstreamtitle(const char *info) {
  Serial.print("streamtitle "); Serial.println(info);
}
void audio_bitrate(const char *info) {
  Serial.print("bitrate     "); Serial.println(info);
}
void audio_commercial(const char *info) { //duration in sec
  Serial.print("commercial  "); Serial.println(info);
}
void audio_icyurl(const char *info) { //homepage
  Serial.print("icyurl      "); Serial.println(info);
}
void audio_lasthost(const char *info) { //stream URL played
  Serial.print("lasthost    "); Serial.println(info);
}
void audio_eof_speech(const char *info) {
  Serial.print("eof_speech  "); Serial.println(info);
}

Credits

pollux labs
12 projects • 21 followers
Fun Microcontroller Projects
Contact

Comments

Please log in or sign up to comment.