This is an old revision of the document!


Bluetooth Media Player Controller

Introducere

Un controller/telecomanda care se conecteaza la telefon prin Bluetooth si controleaza media player-ul telefonului.

Ideea a pornit de la nevoia practica de a dat seek forward la o melodie atunci cand nu as putea sa fac asta, de exemplu, in timp ce conduc. Acest controller m-ar ajuta sa dau skip forward fara sa:

  • Astept un semafor
  • Iau mana de pe volan
  • Ma uit la telefon
  • Ies din Waze
  • A modifica manual

Ca rezultat, pot sa dau seek forward in melodie fara sa iau ochii de pe drum sau mana de pe volan (daca lipesc controller-ul de volan).

Descriere generală

Hardware Design

Lista de piese:

  • Arduino UNO
  • Modul Bluetooth HC-06/HC-05
  • 4 Butoane pentru pauza/play, seek forward, next si back
  • Potentiometru pentru Volum
  • Rezistente (1k Ohm si 2k Ohm sau alternativ, inca 2 de 1k legate in serie)
  • Fire
  • Baterie 5V

Schema Tinkercad

Implementare Fizica

Software Design

- Parte de software este reprezentata de catre:

  • Programarea Arduino in Arduino IDE
  • Aplicatie Android in Android Studio
  • Biblioteca 3rd-Party:
    • PinChangeInterrupt, da handle la intreruperile de pe pinii care nu au intreruperi de tipul INT0/1

Programul Arduino

  • Programul Arduino are ca scop citirea inputului de la butoane si potentiometru, si tranzmiterea acestor informatii catre telefon prin intermediul modulului Bluetooth HC-06. Pentru a facilita conexiunea cu modulul Bluetooth, folosim interfata UART (Serial).
  • Am folosit intreruperi pentru a da handle la apasatul butoanelor, de asemenea am facut debounce la butoane.
  • Am folosit ADC-ul Arduino pentru a citi valoarea data de Potentiometru, si am tradus-o intr-un range de la 0 la 99, dupa am folosit un timer pentru a transmite aceasta informatie din 100 in 100 ms
  • Codificarea mesajelor s-a facut in felul urmator:
    • Comanda Play/Pause = “P!” (pause/play)
    • Comanda Seek Forward = “F!” (forward)
    • Comanda Next = “N!” (next)
    • Comanda Back = “B!” (back)
    • Volum = ”![0-99]” (! urmat de numere in intervalul 0 - 99)

Aplicatie Android

  • Aplicatia Android creeaza conexiunea cu modulul HC-06 atasat Arduino-ului si obtine toate sesiunile media in decurs pe telefon in acel moment, intr-un thread separat asteapta mesaje de la modulul Bluetooth, le interpreteaza si executa actiunea dorita.

Descrierea codului aplicaţiei (firmware):

  • mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
  • librării şi surse 3rd-party (e.g. Procyon AVRlib)
  • algoritmi şi structuri pe care plănuiţi să le implementaţi
  • (etapa 3) surse şi funcţii implementate

Rezultate Obţinute

Din cauza naturii proiectului, este greu sa adaug imagini asa ca am facut un mic filmulet care demonstreaza functionalitatea.

Link Demo YouTube

Concluzii

Dupa o batalie majora cu API-ul Android, am reusit sa dau skip 10 secunde in fata…

Motivul principal pentru care am facut proiectul a fost si cel mai greu de implementat, dar in final, merge si acum pot sa dau skip in fata fara sa iau ochii de pe drum!

Foarte interesanta implementarea, m-a speriat putin faptul ca a trebuit sa adaug un divizor de tensiune (pinul RX al modulului HC-05/HC-06 are o limita de 3.3V)

Download

Bibliografie/Resurse

pm/prj2023/amocanu/media-player-controller.1685119325.txt.gz · Last modified: 2023/05/26 19:42 by daniel.sohanian
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