#include #include #include #include "spi_master.h" #include "playlist_manager.h" #include "controller.h" #include #include "esmp3.h" #include #include #include #include #include #include #include #include Controller controller; Audio audio; PlaylistManager* pm; MFRC522* rfid; FTPServer ftp(SD); void setup() { pinMode(PIN_CS_SD, OUTPUT); digitalWrite(PIN_CS_SD, HIGH); pinMode(PIN_CS_RFID, OUTPUT); digitalWrite(PIN_CS_RFID, HIGH); Serial.begin(115200); WiFi.begin("Schlenz", "1410WischlingenPanda"); log_i("Connecting to WiFi..."); uint8_t i=9; while(WiFi.status() != WL_CONNECTED) { Serial.print(i); Serial.print("... "); delay(1000); i--; if (i==0) { Serial.println("Could not connect to WiFi. Restarting in 1s."); delay(1000); ESP.restart(); } } Serial.println(); Serial.print("Connected to WiFi. IP address: "); Serial.println(WiFi.localIP()); ArduinoOTA.begin(); log_i("Waiting for OTA..."); for(int i=0; i<20; i++) { ArduinoOTA.handle(); delay(100); } Serial.println("Setting up audio..."); audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT); audio.setVolume(1); audio.forceMono(true); audio.setBufsize(30000, -1); audio.setConnectionTimeout(1000, 1000); Serial.println("Initializing SPI..."); SPI.begin(); //SPI.setHwCs(false); //SPIMaster::initialize(); Serial.print("Initializing SD card..."); //SPIMaster::enable_sd(); while(!SD.begin(PIN_CS_SD, SPI, 25000000)) { for(int i=0; i<10; i++) { if(SPI.transfer(0xFF)==0xFF) break; delay(10); } Serial.print("."); delay(100); } Serial.println(); Serial.println("Initializing PlaylistManager..."); pm = new PlaylistManager(); Serial.println("Setting up rfid reader..."); pinMode(PIN_CS_RFID, OUTPUT); MFRC522DriverPin* pin = new MFRC522DriverPinSimple(PIN_CS_RFID); MFRC522Driver* spi = new MFRC522DriverSPI(*pin); rfid = new MFRC522(*spi); rfid->PCD_Init(); MFRC522Debug::PCD_DumpVersionToSerial(*rfid, Serial); Serial.println("Setting up buttons..."); pinMode(PIN_BTN_VOL_UP, INPUT_PULLUP); pinMode(PIN_BTN_VOL_DOWN, INPUT_PULLUP); pinMode(PIN_BTN_TRACK_NEXT, INPUT_PULLUP); pinMode(PIN_BTN_TRACK_PREV, INPUT_PULLUP); Serial.println("Setup finished."); audio.setVolume(12); ftp.begin("", ""); } void loop() { ArduinoOTA.handle(); controller.handle(); audio.loop(); ftp.handleFTP(); } 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); controller.eof_mp3(); } 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); }