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
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 input.
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)
La fiecare 5 secunde, Arduino trimite un messaj de awake “UP” pentru a evita deconectarea automata.
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.
Detalii Implementare
Rezultate Obţinute
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) dar chiar a fost ok.
Download
Cod sursa pe github:
Sketch Arduino:
Proiect Android Studio
APK propriu zis
Bibliografie/Resurse