Reputation: 11
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
#include "Arduino.h"
#include "WiFiMulti.h"
#include "Audio.h"
#include <Adafruit_PN532.h>
#define PN532_IRQ (2)
#define PN532_RESET (3)
Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET);
#define I2S_DOUT 19
#define I2S_BCLK 5
#define I2S_LRC 18
Audio audio;
WiFiMulti wifiMulti;
String ssid = "VODAFONE-794F";
String password = "7kgnyKP2sPKLpA4K";
String getRadioURLFromUID(uint32_t cardid)
{
switch (cardid)
{
case 0x56761F03: // Another UID
return "http://mp3.ffh.de/radioffh/hqlivestream.mp3";
case 0x4E3E0C01: // Another UID
return "http://mp3.ffh.de/radioffh/hqlivestream.mp3";
default:
return ""; // No station mapped to this UID
}
}
void setup()
{
Serial.begin(115200);
WiFi.mode(WIFI_STA);
wifiMulti.addAP(ssid.c_str(), password.c_str());
wifiMulti.run();
if (WiFi.status() != WL_CONNECTED)
{
WiFi.disconnect(true);
wifiMulti.run();
}
Serial.println("WiFi connected.");
audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
audio.setVolume(1);
audio.connecttohost("http://mp3.ffh.de/radioffh/hqlivestream.mp3");
nfc.begin();
// uint32_t versiondata = nfc.getFirmwareVersion();
// if (!versiondata)
// {
// Serial.println("No PN53x board detected.");
// while (1)
// ;
// }
nfc.SAMConfig();
// Serial.println("NFC initialized. Waiting for a tag...");
}
void loop()
{
uint8_t success;
uint8_t uid[7] = {0};
uint8_t uidLength;
// Breaks here
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
if (success)
{
uint32_t cardid = 0;
for (int i = 0; i < uidLength; i++)
{
cardid <<= 8;
cardid |= uid[i];
}
Serial.print("Card ID: ");
Serial.println(cardid, HEX);
String radioURL = getRadioURLFromUID(cardid);
if (radioURL != "")
{
Serial.print("Playing station: ");
Serial.println(radioURL);
audio.stopSong(); // Stop current playback
if (audio.connecttohost("http://mp3.ffh.de/radioffh/hqlivestream.mp3"))
{
log_i("free heap=%i", ESP.getFreeHeap());
Serial.println("Stream started successfully!");
}
else
{
Serial.println("Failed to start stream!");
}
}
else
{
Serial.println("No station mapped to this card.");
}
// delay(2000); // Prevent spamming reads
}
audio.loop(); // Keep audio running
}
void audio_error(const char *info)
{
Serial.print("Audio Error: ");
Serial.println(info);
audio.stopSong();
delay(1000); // Short wait before retry
audio.connecttohost("http://icecast.omroep.nl/radio2-bb-mp3");
}
// 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_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);
}
Upvotes: 1
Views: 24