Sistema embarcado para exibição em tempo real da música atualmente em reprodução no Spotify, utilizando microcontroladores ESP8266 ou ESP32 com display OLED.
Este projeto permite visualizar informações da música que está sendo reproduzida na sua conta do Spotify em um display OLED 128x32. São exibidos o nome da faixa, artista e uma barra de progresso da reprodução.
- Microcontrolador ESP8266 (NodeMCU v2) ou ESP32
- Display OLED SSD1306 128x32 pixels (interface I2C)
- Cabos de conexão
| Display OLED | ESP8266/ESP32 |
|---|---|
| VCC | 3.3V |
| GND | GND |
| SDA | GPIO4 (D2) |
| SCL | GPIO5 (D1) |
- PlatformIO IDE ou Arduino IDE
- Conta de desenvolvedor Spotify
- SpotifyArduino - Comunicação com API do Spotify
- ArduinoJson - Parsing de respostas JSON
- Adafruit SSD1306 - Controle do display OLED
- Adafruit GFX - Biblioteca gráfica
- Acesse https://developer.spotify.com/dashboard
- Faça login com sua conta Spotify
- Clique em "Create App"
- Preencha os dados do aplicativo
- Em "Redirect URIs", adicione:
- Para uso com IP:
http://[IP_DO_ESP]/callback/ - Para uso com mDNS:
http://arduino.local/callback/
- Para uso com IP:
- Anote o Client ID e Client Secret
-
Copie o arquivo de exemplo:
cp include/credentials_example.h include/credentials.h -
Edite o arquivo
include/credentials.hcom suas credenciais:#define WIFI_SSID "nome_da_sua_rede" #define WIFI_PASSWORD "senha_da_sua_rede" #define SPOTIFY_CLIENT_ID "seu_client_id" #define SPOTIFY_CLIENT_SECRET "seu_client_secret" #define SPOTIFY_REFRESH_TOKEN "seu_refresh_token"
O Refresh Token é necessário para autenticação com a API do Spotify.
- Abra o arquivo
include/getRefreshToken.cpp - Configure suas credenciais WiFi e Spotify
- Compile e faça upload para o ESP
- Abra o Serial Monitor (115200 baud)
- Anote o endereço IP exibido
- Acesse o IP pelo navegador
- Clique no link de autorização
- Autorize o aplicativo na página do Spotify
- O Refresh Token será exibido na tela e no Serial Monitor
- Copie o token para o arquivo de credenciais
Usando PlatformIO:
pio run -t upload
Usando Arduino IDE:
- Instale as bibliotecas necessárias pelo Library Manager
- Selecione a placa correta (NodeMCU 1.0 ou ESP32 Dev Module)
- Compile e faça upload
ESPotify/
├── src/
│ └── main.cpp # Código principal
├── include/
│ ├── credentials_example.h # Template de credenciais
│ ├── credentials.h # Credenciais (não versionado)
│ └── getRefreshToken.cpp # Utilitário para obter token
├── lib/
│ ├── spotify-api-arduino/ # Biblioteca Spotify
│ ├── ArduinoJson-6.x/ # Biblioteca JSON
│ └── ... # Outras bibliotecas
├── platformio.ini # Configuração PlatformIO
└── README.md # Este arquivo
No arquivo src/main.cpp, modifique a variável:
unsigned long delayBetweenRequests = 5000; // Valor em milissegundosValores recomendados:
- 5000 (5 segundos) - Atualização frequente
- 10000 (10 segundos) - Balanço entre atualização e consumo
- 30000 (30 segundos) - Economia de requisições
Para depuração, descomente a linha no arquivo lib/spotify-api-arduino/src/SpotifyArduino.h:
#define SPOTIFY_DEBUG 1Atenção: O modo debug exibe tokens no Serial Monitor. Não utilize em ambientes não seguros.
No arquivo platformio.ini, comente a seção do ESP8266 e descomente a seção do ESP32:
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200- Verifique se o Client ID e Client Secret estão corretos
- Confirme se o Refresh Token é válido
- Verifique a conexão com a internet
- Confirme as conexões I2C
- Verifique se o endereço I2C está correto (padrão: 0x3C)
- Teste com um scanner I2C para confirmar o endereço
- Verifique o nome da rede e senha
- Confirme se a rede é 2.4GHz (ESP8266 não suporta 5GHz)
- Aproxime o dispositivo do roteador
- Aumente o intervalo entre requisições
- Aguarde alguns minutos antes de tentar novamente
- O ESP8266 possui memória limitada, podendo apresentar instabilidade com uso prolongado
- A API do Spotify possui limite de requisições por minuto
- Certificados SSL podem expirar e necessitar atualização
Este projeto utiliza a biblioteca SpotifyArduino, licenciada sob LGPL 2.1.
- Documentação da API do Spotify: https://developer.spotify.com/documentation/web-api
- Biblioteca SpotifyArduino: https://github.com/witnessmenow/spotify-api-arduino
- Documentação PlatformIO: https://docs.platformio.org
Projeto baseado na biblioteca SpotifyArduino de Brian Lough.