This is an old revision of the document!


Spotify Remote Controller

Introducere

  • Autor: Cosmina Mihoreanu
  • Grupă: 334CB

În proiectul de față îmi propun implementarea unui controller remote pentru player-ul de muzică de pe Spotify. Dispozitivul se va conecta la internet și va comunica cu Spotify pentru a controla diverse aspecte ale player-ului curent. Controlul se va face printr-o suită de butoane, din care se va putea pune pauză piesei curente, se va putea da play în continuare, skip forward sau backward în playlistul curent, seta starea de shuffle și controla volumul. Se va putea alege și un mod de funcționare în care volumul este ajustat automat în funcție de zgomotul din jur.

Scopul principal al proiectului este de a ușura interacțiunea cu Spotify, reducând-o la câteva butoane cu cele mai importante funcții. Astfel, nu mai este nevoie să accesezi dispozitivul pe care asculți muzică de fiecare dată când vrei să controlezi starea player-ului curent. Ideea provine tocmai din dorința de a avea o astfel de soluție de control centralizată pentru uzul personal, pentru a elimina pe cât posibil nevoia de a tot naviga continuu între ceea ce lucrez și player-ul de muzică. Din aceleași motive consider că proiectul ar fi util pentru persoanele care sunt obișnuite să asculte des muzică în timp ce se ocupă și de alte activități.

Descriere generală

Proiectul va cuprinde modulele reprezentate, la modul general, în schema bloc de mai jos.

Piesa centrală a sistemului este placa de dezvoltare ESP32. Prin pinii GPIO placa va primi input de la o suită de butoane care sunt acționate de utilizator pentru controlul dispozitivului. Acțiunile disponibile vor fi cele de bază pentru controlul unui player de muzică: on/off, pauză, play, skip înainte și înapoi, modificare status shuffle, ajustare volum și activare a modului de ajustare automată a volumului pe baza inputului analog primit de la un senzor de sunet cu microfon, conectat la ESP32.

Placa va comunica prin protocolul SPI cu un ecran LCD spre care va trimite date despre starea curentă a player-ului: vor fi afișate titlul și numele artistului, precum și timpul de redare la care s-a ajuns în orice moment.

Pentru toate informațiile și funcționalitățile implementate pe placă, aceasta se va conecta la o rețea Wi-Fi disponibilă și se va autentifica și comunica prin request-uri HTTP cu API-ul Spotify. Muzica disponibilă este, desigur, cea asociată user-ului pentru care se face autentificarea.

Hardware Design

Piese utilizate:

  • placă ESP32-WROOM-32D
  • display LCD TFT ST7789
  • senzor sunet KY-037
  • rotary encoder KY-040
  • 5 push buttons
  • 1 buton rotary encoder

Schemă electrică:

Constrângeri cablaj

  • Pinul de input de la senzorul de sunet este tras la pinul GPIO36 al plăcii, deoarece este nevoie de un pin de tip ADC_1. Pinii de ADC_2 pun probleme de funcționare în cazul activării funcției de WiFI pe ESP32, esențială pentru acest proiect.
  • Butoanele sunt conectate la placă la pinii GPIO33, 32, 25, 26, 27, aceștia fiind pini pe care există rezistențe interne de pull-up. Pinii 36, 39, 34, 35 nu au legate astfel de rezistențe.
  • Display-ul este conectat la pinii corespunzători protocolului SPI, conform datasheet-ului plăcii (VSPI_MOSI și VSPI_CLK).

Software Design

  • Mediu de dezvoltare: Visual Studio Code + PlatformIO
  • Biblioteci externe:
    • Adafruit ST7735 and ST7789 Library
    • Adafruit GFX Library
    • Adafruit BusIO
    • Adafruit Unified Sensor
    • ArduinoJson
    • SPI
    • WiFi
    • HTTPClient
  • Flow general: la inițializare ESP32-ul se va conecta la internet folosind biblioteca WiFi și apoi va comunica prin cereri HTTP cu API-ul Spotify, prin funcțiile expuse de bibliotecii HTTPClient; apăsarea butoanelor și acționarea rotary encoder-ului vor genera întreruperi care vor seta și modifica variabile și flag-uri globale, ale căror valori vor fi verificate continuu în bucla „loop” din main.cpp; aceste modificări vor declanșa generarea de noi cereri HTTP corespunzătoare, iar răspunsurile la acestea vor updata informația afișată pe ecran.

Rezultate Obţinute

Concluzii

Download

Jurnal

  • 29 aprilie - creat pagină proiect
  • 1 mai - primit piese (ecran, senzor, placă, expansion board)
  • 3 mai - completat documentație milestone 1 + comandat piese noi (butoane noi și rotary encoder)
  • 11 mai - completat documentație milestone 2 (hardware) + cablaj inițial pe breadboard si expansion board

Bibliografie/Resurse

pm/prj2024/azamfir/cosmina.mihoreanu.1715955403.txt.gz · Last modified: 2024/05/17 17:16 by cosmina.mihoreanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0