This shows you the differences between two versions of the page.
|
pm:prj2026:ciprian.popescu0411:alexandru.nehoianu [2026/05/23 18:13] alexandru.nehoianu |
pm:prj2026:ciprian.popescu0411:alexandru.nehoianu [2026/05/23 19:28] (current) alexandru.nehoianu |
||
|---|---|---|---|
| Line 108: | Line 108: | ||
| Scheletul codului: | Scheletul codului: | ||
| ^ Funcție ^ Rol ^ | ^ Funcție ^ Rol ^ | ||
| - | |batteryStatusCallback| Actualizează variabila | + | | batteryStatusCallback | Actualizează variabila //batteryStatus// cu noul nivel al bateriei de la telefon | |
| + | | subscribeToBatteryService | Subscribe la serviciul de Bluetooth pentru baterie. Se primesc notificări când se modifică nivelul bateriei și sunt gestionate de funcția batteryStatusCallback | | ||
| + | | amsCallBack | Actualizează informațiile despre melodia redată pe telefon (titlu, artist, durată, stare etc.). Pentru a determina tipul informației primite, am urmărit specificațiile din documentația AMS | | ||
| + | | subscribeToAMS | Subscribe la Apple Media Service | | ||
| + | | printTime | Afișează (pe Serial) data curentă | | ||
| + | | getCurrentTime | Sincronizează ceasul microcontroller-ului cu ceasul de la telefon (prin Bluetooth) | | ||
| + | | printTrack | Afișează informații (pe Serial) despre melodia redată | | ||
| + | | sensorCallback | Citește valorile senzorilor și modifică modul de afișare (Dark Mode / Light Mode) dacă este nevoie. Funcția este un task FreeRTOS care se apelează automat la 2 secunde| | ||
| + | | reminderCallback | Verifică lista cu remindere și semnalează pornirea alarmei. Funcția este un task FreeRTOS care se apelează automat la o secundă | | ||
| + | | httpGETRequest | Creează și trimite cererea HTTP la serverul REST. Întoarce răspunsul de la server | | ||
| + | | WiFiStationDisconnected | Încearcă reconectarea la WiFi | | ||
| + | | parseReminderList | Se parsează răspunsul primit de la server și se actulizează lista cu remindere. Răspunsul conține titlul și timpul reminder-ului | | ||
| + | | drawCustomCentredString | Afișează un text centrat la coordonatele date | | ||
| + | | drawDividers | Desenează liniile orizontale care delimitează secțiunile interfeței grafice | | ||
| + | | updateHeaderView | Afișează pe ecran timpul și informațiile de la senzori | | ||
| + | | updateDateBarView | Afișează pe ecran data curentă | | ||
| + | | drawRemindersList | Desenează pe ecran lista cu remindere | | ||
| + | | updateMediaScrubber | Afișează pe ecran titlul melodiei redate pe telefon și desenează o bară care se actualizează cu progresul melodiei| | ||
| + | | setup | Se inițializează senzorii, display-ul și conexiunea la WiFi și Bluetooth | | ||
| + | | loop | Se actulizează interfața grafică, se acționează buzzer-ul și se fac periodic cereri la serverul HTTP | | ||
| - | + | <note> | |
| - | <note tip> | + | Videoclip demo: https://youtube.com/shorts/l6caujJPsVg |
| - | 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 | + | |
| </note> | </note> | ||
| - | ===== Rezultate Obţinute ===== | + | Optimizările pe care le-am realizat sunt legate de Bluetooth. Prima optimizare a fost alegerea BLE (Bluetooth Low Energy) în loc de Bluetooth obișnuit. BLE consumă mult mai puțină energie (pe microcontroller, dar și pe telefon) și oferă toate serviciile de care am nevoie. A doua optimizare constă în folosirea funcției de //subscribe// la un serviciu Bluetooth. Folosind subscribe, primesc notificări doar atunci când se modifică datele (de exemplu se schimbă melodia) și nu trebuie să fac polling constant. De asemenea, în cadrul funcțiilor de callback (funcții care se apelează automat când primesc o notificare Bluetooth) am evitat instrucțiunile complexe și doar am setat anumite flag-uri, pe care le-am tratat ulterior în loop. |
| - | <note tip> | + | <note> |
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Link Github: https://github.com/neho2245/proiect_pm |
| </note> | </note> | ||
| + | |||
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| Line 133: | Line 148: | ||
| Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | ||
| - | </note> | ||
| - | |||
| - | ===== Jurnal ===== | ||
| - | |||
| - | <note tip> | ||
| - | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
| </note> | </note> | ||
| ===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
| - | <note> | + | Resurse: |
| - | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * https://developer.apple.com/library/archive/documentation/CoreBluetooth/Reference/AppleMediaService_Reference/Introduction/Introduction.html |
| - | </note> | + | * https://www.bluetooth.com/wp-content/uploads/Files/Specification/HTML/Assigned_Numbers/out/en/Assigned_Numbers.pdf |
| + | * https://github.com/Bodmer/TFT_eSPI | ||
| + | * https://github.com/h2zero/NimBLE-Arduino | ||
| + | * https://esp32.com/viewtopic.php?t=9875 | ||
| <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||