Este repositório contém um projeto que permite subir um servidor em um ESP32 utilizando MicroPython e consumir a API pública do Spotify. O projeto envolve a comunicação entre o ESP32 e uma API intermediária que filtra as respostas da API do Spotify para otimizar o uso de memória no dispositivo.
O projeto está organizado em duas partes principais:
- Servidor Microdot no ESP32: Um servidor web rodando no ESP32 que permite realizar requisições à API do Spotify.
- API Intermediária: Um servidor Node.js que atua como um intermediário entre o ESP32 e a API do Spotify para filtrar e simplificar as respostas, contornando o problema de memória limitada do ESP32.
O ESP32 possui apenas 512 KB de memória, o que pode ser insuficiente para lidar com grandes volumes de dados retornados pela API do Spotify. Para superar essa limitação, uma API intermediária é utilizada para filtrar e processar as respostas, enviando apenas os dados essenciais ao ESP32.
O projeto ainda possui funcionalidades básicas, mas já oferece interações interessantes com o servidor. Atualmente, você pode:
- Visualizar a Música Atual: Exibe o nome da música no display oled.
- Pausar a Reprodução: Permite pausar a música em reprodução.
- Retomar a Reprodução: Reproduz a música pausada com um único click.
- ESP32;
- 4 jumpers;
- Display OLED 128x96;
- Protoboard;
- Cabo USB compatível com o ESP32;
- Computador (opcional).
- Thonny: IDE para programação em MicroPython;
- Git: Controle de versão;
- Node.js: Ambiente de execução para a API intermediária;
- Navegador web para acessar o servidor;
- Editor de código de sua preferência (opcional).
-
Monte os componentes na protoboard, conectando os pinos do display OLED ao ESP32 da seguinte forma:
- GND do display OLED ao GND do ESP32;
- VCC do display OLED ao 3v3 do ESP32;
- SCL do display OLED ao D4 do ESP32;
- SDA do display OLED ao D5 do ESP32.
-
Conecte o cabo USB ao ESP32 e ao seu computador.
Para baixar o projeto e configurar o ambiente, siga os passos abaixo:
-
Clone o repositório:
git clone https://github.com/AdryelliReiz/ASPMicrodotServerSpotifyAPI.git cd ASPMicrodotServerSpotifyAPI -
O projeto é dividido em duas partes:
- Servidor Microdot: Arquivos para rodar no ESP32.
- API Intermediária: Localizada na pasta
server. Utilize o comando abaixo para instalar as dependências:
cd server npm installPara iniciar a API, use:
node index.js
Os logs no terminal exibirão o IP e a porta de acesso.
-
No arquivo
connectAsAp.py, configure as variáveiswifiepasswordcom o nome e a senha da rede Wi-Fi. Lembre-se que o ESP32 suporta apenas redes 2.4 GHz. Se a sua rede wifi só possui conexão 5G, será necessário criar uma sub-rede para dispositivos IoTs 2.4G nas configurações do seu roteador. -
No arquivo
pagehome.py, configure as variáveisclient_ideclient_secretcom o ID e o segredo da sua aplicação do Spotify. Siga os passos abaixo para obter essas informações:- Acesse o Spotify Developer Dashboard e crie uma aplicação.
- Copie o
Client IDe oClient Secrete cole nas variáveis correspondentes. - Defina a URL de redirecionamento como
http://IP_DO_ESP32:PORT/callback.
-
No mesmo arquivo, defina
url_apicom o IP e a porta da API intermediária eredirect_uricom a URL de redirecionamento configurada no Spotify.
- Conecte o ESP32 ao computador e abra o Thonny.
- Carregue todos os arquivos
.pydo diretório do projeto para o ESP32. - Execute o arquivo
main.pydiretamente pelo Thonny para iniciar o servidor Microdot.
- Abra seu Spotify app e coloque alguma música para tocar.
- Verifique o IP do ESP32 na rede e acesse-o via navegador (exemplo:
http://192.168.0.10:8000). - Realize o processo de autenticação do Spotify, seguindo o fluxo de autorização da API.
- Utilize a interface para realizar ações como reproduzir e pausar músicas.
Este projeto demonstra a integração do ESP32 com a API do Spotify utilizando uma abordagem criativa para contornar limitações de hardware. Diversas outras funcionalidades podem ser implementadas com base neste template, dependendo da criatividade e das necessidades do usuário.
Este projeto foi desenvolvido com base em um trabalho apresentado na disciplina de Computação Física e Aplicações, ministrada pelo Professor Fábio Nakano na Universidade de São Paulo, Campus USP Leste. A ideia inicial veio de um repositório criado pelo professor, ao qual eu dei continuidade e adaptei para um novo propósito.
- Repositório Original: BasicESP32SetupWithMicropython
- Desenvolvido por: Adryelli Reis, aluna de Graduação em Sistemas de Informação da Universidade de São Paulo.
- Contribuidor -Edgar Lira, aluno de Graduação em Sistemas de Informação da Universidade de São Paulo.
Agradeço ao Professor Fábio Nakano pelo conteúdo inspirador e suporte ao longo do curso.

