Mini proiect (26) - Programarea plăcii ESP32 WROOM 32D ca și audio player

Programarea plăcii ESP32 WROOM 32D ca și audio player

Scopul proiectului de azi este să mă familiarizez cu placa ESP32 WROOM, și să conectez un modul audio cu amplificator. Această combinație magică mă ajută să ascult muzică de la un radio de pe internet http://macslons-irish-pub-radio.com/media.asx. Practic după conectarea celor 5 fire la placa CJMCU-1334, se pot conecta orice fel de căști sau boxe cu mufă jack de 3.5mm. Mai departe placa ESP32 face conexiunea la internet pe WIFI și configurează pinii I2S pentru pentru a trimite datele audio către CJMCU-1334. Dacă totul s-a configurat corect atunci muzica redată la Irish pub radio se poate auzi în căști.


Componente:

Schema electronica:


 

 Conectarea pinilor de la stânga la dreapta:

 CJMCU-1334 - ESP32

  • VIN - VCC (5V)
  • GND - GND
  • WSEL - GPIO26
  • DIN - GPIO25
  • BCLK - GPIO27


În sketchul de mai jos am lăsat și configurarea pentru cardul MicroSD, deci dacă ați conecta si o astfel de placă atunci ați putea asculta muzică și de pe un card microSD. Comunicația cu acest tip de card se face folosind protocolul SPI.

Pentru a putea folosi librăria Audio.h e nevoie să o instalați în ArduinoIDE, care se poate descărca de la adresa https://github.com/schreibfaul1/ESP32-audioI2S, iar apoi se importă cum arată poza de mai jos:

Selectează zipul +Ok și compilarea ar trebui să funcționeze:

Sketch de test:

/*
Florin Simedru
Complete project details at https://automatic-house.blogspot.com
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
*/
#include "Arduino.h"
#include "WiFiMulti.h"
#include "Audio.h"
#include "SPI.h"
#include "SD.h"
#include "FS.h"
// Digital I/O used
#define SD_CS 5
#define SPI_MOSI 23
#define SPI_MISO 19
#define SPI_SCK 18
#define I2S_DOUT 25
#define I2S_BCLK 27
#define I2S_LRC 26
Audio audio;
WiFiMulti wifiMulti;
String ssid = "********";
String password = "********";
void setup() {
pinMode(SD_CS, OUTPUT);
digitalWrite(SD_CS, HIGH);
SPI.begin(SPI_SCK, SPI_MISO, SPI_MOSI);
SPI.setFrequency(1000000);
Serial.begin(115200);
SD.begin(SD_CS);
WiFi.mode(WIFI_STA);
wifiMulti.addAP(ssid.c_str(), password.c_str());
wifiMulti.run();
if(WiFi.status() != WL_CONNECTED){
WiFi.disconnect(true);
wifiMulti.run();
}
audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
audio.setVolume(21); // 0...21
audio.connecttohost("http://macslons-irish-pub-radio.com/media.asx");
}
void loop()
{
audio.loop();
}
// optional
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_id3image(File& file, const size_t pos, const size_t size){
Serial.print("id3image "); Serial.printf("at pos: %u, length: %u\n", pos, size);
}
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_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);
}


 Documentatie proiect:

Pentru întrebari și/sau consultanță tehnică vă stau la dispozitie pe blog sau pe email simedruflorin@automatic-house.ro. O seară/zi plăcută tuturor !

Etichete

Afișați mai multe

Arhiva

Afișați mai multe