This shows you the differences between two versions of the page.
|
pm:prj2023:amocanu:media-player-controller [2023/05/26 19:42] daniel.sohanian [Rezultate Obţinute] |
pm:prj2023:amocanu:media-player-controller [2023/05/29 23:52] (current) daniel.sohanian [Rezultate Obţinute] |
||
|---|---|---|---|
| Line 21: | Line 21: | ||
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| - | Lista de piese: | + | *Lista de piese: |
| - | * Arduino UNO | + | * Arduino UNO |
| - | * Modul Bluetooth HC-06/HC-05 | + | * Modul Bluetooth HC-06/HC-05 |
| - | * 4 Butoane pentru pauza/play, seek forward, next si back | + | * 4 Butoane pentru pauza/play, seek forward, next si back |
| - | * Potentiometru pentru Volum | + | * Potentiometru pentru Volum |
| - | * Rezistente (1k Ohm si 2k Ohm sau alternativ, inca 2 de 1k legate in serie) | + | * Rezistente (1k Ohm si 2k Ohm sau alternativ, inca 2 de 1k legate in serie) |
| - | * Fire | + | * Fire |
| - | * Baterie 5V | + | * Baterie 5V |
| === Schema Tinkercad === | === Schema Tinkercad === | ||
| Line 39: | Line 39: | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| - | - Parte de software este reprezentata de catre: | + | * Parte de software este reprezentata de catre: |
| - | * Programarea Arduino in **Arduino IDE** | + | * Programarea Arduino in **Arduino IDE** |
| - | * Aplicatie Android in **Android Studio** | + | * Aplicatie Android in **Android Studio** |
| - | + | * Biblioteca 3rd-Party: | |
| - | * Biblioteca 3rd-Party: | + | * **PinChangeInterrupt**, da handle la intreruperile de pe pinii care nu au intreruperi de tipul INT0/1 |
| - | * **PinChangeInterrupt**, da handle la intreruperile de pe pinii care nu au intreruperi de tipul INT0/1 | + | |
| ==== Programul Arduino ==== | ==== Programul Arduino ==== | ||
| Line 50: | Line 49: | ||
| * 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)**. | * 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 **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 | * 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: | * Codificarea mesajelor s-a facut in felul urmator: | ||
| Line 58: | Line 57: | ||
| * Comanda Back = "B!" (back) | * Comanda Back = "B!" (back) | ||
| * Volum = "![0-99]" (! urmat de numere in intervalul 0 - 99) | * 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 ==== | ==== 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. | * 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. | ||
| - | <note tip> | + | ==== Detalii Implementare ==== |
| - | Descrierea codului aplicaţiei (firmware): | + | * Pentru mai multe detalii, codul este comentat si poate fii accesat pe GitHub-ul din sectiunea **Download** |
| - | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | |
| - | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | <note important> |
| - | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | **Permisiuni Aplicatie** |
| - | * (etapa 3) surse şi funcţii implementate | + | * Aplicatia Android necesita permisiuni speciale **"Special Notification Permission"** care trebuie data manual si explicit din setarile telefonului. |
| </note> | </note> | ||
| + | |||
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| * Din cauza naturii proiectului, este greu sa adaug imagini asa ca am facut un mic filmulet care demonstreaza functionalitatea. | * Din cauza naturii proiectului, este greu sa adaug imagini asa ca am facut un mic filmulet care demonstreaza functionalitatea. | ||
| - | * [[https://www.youtube.com/watch?v=i9CvQSy_Pqk|Link Demo YouTube]] | + | |
| + | <html> | ||
| + | <iframe | ||
| + | src="https://www.youtube.com/embed/i9CvQSy_Pqk" | ||
| + | title="YouTube video player" | ||
| + | frameborder="0" | ||
| + | allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" | ||
| + | allowfullscreen | ||
| + | style="aspect-ratio: 16/9; width: 100%;" | ||
| + | ></iframe> | ||
| + | </html> | ||
| Line 80: | Line 90: | ||
| Dupa o batalie majora cu API-ul Android, am reusit sa dau skip 10 secunde in fata... | 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! | + | 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) | + | 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 ===== | ===== Download ===== | ||
| * Cod sursa pe github: | * Cod sursa pe github: | ||
| * https://github.com/Sohanian-Daniel/Arduino-Bluetooth-Media-Controller | * https://github.com/Sohanian-Daniel/Arduino-Bluetooth-Media-Controller | ||
| - | |||
| * Sketch Arduino: | * Sketch Arduino: | ||
| * {{:pm:prj2023:amocanu:sohanian_daniel_arduino_sketch.zip|}} | * {{:pm:prj2023:amocanu:sohanian_daniel_arduino_sketch.zip|}} | ||