This shows you the differences between two versions of the page.
pm:prj2025:iotelea:sara_denisa.florean [2025/05/27 20:50] sara_denisa.florean |
pm:prj2025:iotelea:sara_denisa.florean [2025/05/28 02:57] (current) sara_denisa.florean [Bibliografie/Resurse] |
||
---|---|---|---|
Line 17: | Line 17: | ||
=== Care a fost ideea de la care am pornit? === | === Care a fost ideea de la care am pornit? === | ||
- | Ideea a pornit din dorința de a crea un sistem care să adauge o **dimensiune educativă jocurilor de Lego**, prin integrarea unei tehnologii simple și accesibile. Astfel, am conceput un dashboard care monitorizează viteza mașinii Lego, adăugând un buzzer care semnalizează momentele importante dintr-o cursă, cum ar fi startul și depășirea vitezei maxime admise. | + | Ideea a pornit din dorința de a crea un sistem care să adauge o **dimensiune educativă jocurilor de Lego**, prin integrarea unei tehnologii simple și accesibile. Astfel, am conceput un dashboard care monitorizează viteza mașinii Lego, adăugând un buzzer care semnalizează momentele importante dintr-o cursă. |
=== De ce cred că este util? === | === De ce cred că este util? === | ||
Line 26: | Line 26: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | Acest sistem permite **monitorizarea vitezei unei mașini de Formula 1 miniatură** printr-un **Arduino UNO**, cu **feedback vizual pe LCD** și **auditiv prin buzzer**, iar utilizatorul poate interacționa prin butoane. | + | Acest sistem permite **monitorizarea vitezei unei mașini de Formula 1 miniatură** printr-un **Arduino UNO**, cu **feedback vizual pe LCD** și **auditiv prin buzzer**, iar utilizatorul poate interacționa prin **butoane**. |
- | * **Arduino UNO** este unitatea principală de control. Acesta primește semnale de la componente externe și controlează LCD-ul, butoanele, buzzer-ul, senzorul Hall și magnetul. | + | * **Arduino UNO** este unitatea principală de control. Acesta primește semnale de la componente externe și controlează LCD-ul, butoanele, buzzer-ul și senzorul Hall. |
- | * **LCD** afișează informațiile relevante, cum ar fi viteza, numărul de lap-uri. | + | * **LCD** afișează informațiile relevante, cum ar fi viteza, numărul de lap-uri, timpul scurs de la începerea cursei, rezumatul cursei după terminarea acesteia. |
* **Senzorul Hall** detectează rotațiile roții mașinii, iar magnetul montat pe roată interacționează cu senzorul pentru a calcula viteza. | * **Senzorul Hall** detectează rotațiile roții mașinii, iar magnetul montat pe roată interacționează cu senzorul pentru a calcula viteza. | ||
- | * **Butoanele** permit utilizatorului să interacționeze cu sistemul (de exemplu, pentru a începe cursa, pentru a afișa viteza maximă, numărul de lap-uri). | + | * **Butoanele** permit utilizatorului să interacționeze cu sistemul (de exemplu, pentru a începe/încheia cursa, pentru a afișa viteza maximă, numărul de lap-uri). |
- | * **Buzzer-ul** semnalează momente cheie ale cursei, cum ar fi startul sau depășirea limitei de viteză. | + | * **Buzzer-ul** semnalează momente cheie ale cursei, cum ar fi startul/finalul sau depășirea limitei de viteză. |
{{:pm:prj2025:iotelea:sara_pm.png?600}} | {{:pm:prj2025:iotelea:sara_pm.png?600}} | ||
Line 68: | Line 68: | ||
=== Senzor Hall 3144E === | === Senzor Hall 3144E === | ||
- | Senzorul Hall 3144E este un senzor digital unipolar care detectează câmpuri magnetice. Este folosit în proiect pentru a detecta rotațiile unei roți și a calcula viteza vehiculului. | + | Senzorul Hall 3144E este un senzor digital unipolar care detectează câmpuri magnetice. Este folosit în proiect pentru a detecta rotațiile unei roți și a calcula viteza mașinii de jucărie. |
**Conectarea pinilor:** | **Conectarea pinilor:** | ||
Line 122: | Line 122: | ||
==== ➤ Descrierea fluxului aplicației ==== | ==== ➤ Descrierea fluxului aplicației ==== | ||
- | Aplicația se comportă ca un **sistem de monitorizare a vitezei pentru o mașinuță în miniatură** care parcurge un circuit. Fluxul logic principal este următorul: | + | Aplicația se comportă ca un **sistem de monitorizare a vitezei pentru o mașinuță în miniatură** care parcurge un circuit. Fluxul principal este următorul: |
=== 1. Inițializare === | === 1. Inițializare === | ||
Line 135: | Line 135: | ||
=== 3. Start cursă === | === 3. Start cursă === | ||
- | * Se pornește o numărătoare inversă (3...2...1...) cu semnale sonore la fiecare pas. | + | * Se pornește o numărătoare inversă (3...2...1...) cu **semnale sonore** la fiecare pas. |
* Sistemul setează `raceActive = true`, resetează contoarele și începe monitorizarea. | * Sistemul setează `raceActive = true`, resetează contoarele și începe monitorizarea. | ||
Line 142: | Line 142: | ||
Înregistrează timpul `millis()` și calculează viteza în km/h folosind formula: `v = (circumferință roată / timp_tură_secunde) * boost * 3.6` | Înregistrează timpul `millis()` și calculează viteza în km/h folosind formula: `v = (circumferință roată / timp_tură_secunde) * boost * 3.6` | ||
* Pe LCD se afișează: | * Pe LCD se afișează: | ||
- | * Viteza curentă | + | * **Viteza curentă** |
- | * Timpul scurs de la începutul cursei | + | * **Timpul scurs** de la începutul cursei |
* Dacă viteza depășește pragul impus (`speedLimit`), se generează o alertă vizuală + sonoră. | * Dacă viteza depășește pragul impus (`speedLimit`), se generează o alertă vizuală + sonoră. | ||
=== 5. Stop cursă === | === 5. Stop cursă === | ||
- | * Cursa se încheie automat când lapsCompleted >= totalLaps sau la apăsarea butonului de START/STOP. | + | * Cursa se încheie automat când **lapsCompleted >= totalLaps** sau la **apăsarea butonului de START/STOP**. |
* Se calculează: | * Se calculează: | ||
- | * Viteza medie (pe baza tuturor măsurătorilor) | + | * **Viteza medie** (pe baza tuturor măsurătorilor) |
- | * Numărul de ture (presupunând ca fiecare pulasație înregistrată reprezintă o parcurgere a circuitului, senzorul având o poziție fixă) | + | * **Numărul de ture** (presupunând ca fiecare pulasație înregistrată reprezintă o parcurgere a circuitului, senzorul având o poziție fixă) |
* Se afișează mesaj de final și statistici pe LCD. | * Se afișează mesaj de final și statistici pe LCD. | ||
=== 6. Revenire la starea inițială === | === 6. Revenire la starea inițială === | ||
- | * După afișare, aplicația revine automat la ecranul de bun venit, pregătită pentru o nouă cursă. | + | * După afișare, aplicația revine automat la **ecranul de bun venit**, pregătită pentru **o nouă cursă**. |
==== ➤ Mediu de dezvoltare ==== | ==== ➤ Mediu de dezvoltare ==== | ||
Line 170: | Line 170: | ||
Am reușit să implementez toate funcționalitățile pe care mi-am dorit să le implementez atunci când am ales proiectul, având chiar câteva sound-uri și afișaje extra pentru o experiență mai amplă atunci când este folosit dashboard-ul. | Am reușit să implementez toate funcționalitățile pe care mi-am dorit să le implementez atunci când am ales proiectul, având chiar câteva sound-uri și afișaje extra pentru o experiență mai amplă atunci când este folosit dashboard-ul. | ||
+ | Am modificat partea de hardware astfel încât dashboard-ul să aibă un aspect estetic. | ||
[[https://drive.google.com/drive/u/0/folders/1PzVqeifVU6tNrAW6V_fTyDVcEYwUXtAq | F1 Car Dashboard]] | [[https://drive.google.com/drive/u/0/folders/1PzVqeifVU6tNrAW6V_fTyDVcEYwUXtAq | F1 Car Dashboard]] | ||
+ | ===== Concluzii ====== | ||
+ | Deși am început cu o idee simplă, complexitatea a crescut pe măsură ce am integrat componente hardware, afișaj dinamic și logica de control într-un singur sistem. | ||
+ | |||
+ | Acest proiect m-a ajutat să înțeleg și să aplic concepte esențiale precum: | ||
+ | * **Gestionarea întreruperilor hardware** (ISR) pentru detecția în timp real. | ||
+ | * **Debouncing software** pentru a trata corect semnalele instabile de la butoane. | ||
+ | * **Actualizarea eficientă a informației pe LCD**, evitând flicker sau suprapuneri. | ||
+ | * **Structurarea clară a codului**, cu funcții dedicate fiecărui modul logic. | ||
+ | |||
+ | În final, am reușit să livrez un **sistem funcțional, interactiv și ușor de utilizat**, cu o experiență completă de tip dashboard pentru curse de mașinuțe. | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | Arhivă: {{:pm:prj2025:iotelea:sara_denisa.florean:F1_Car_Dashboard.zip}} |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | |
+ | ===== Jurnal ===== | ||
- | 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**. | + | **08.05.2025** – Am ales tema proiectului și am realizat descrierea aplicației împreună cu lista componentelor hardware necesare.\\ |
- | </note> | + | **10.05.2025** – Am achiziționat materialele și am început proiectarea hardware pe breadboard.\\ |
+ | **14.05.2025** – Am testat independent principalele componente: senzorul Hall, buzzer-ul, butoanele și afișajul LCD.\\ | ||
+ | **15.05.2025** – Am implementat funcționalitățile de bază: afișarea mesajului de start și semnalul sonor de întâmpinare.\\ | ||
+ | **16.05.2025** – Am finalizat integrarea tuturor modulelor hardware și am început testele combinate. Am realizat schema electrică și diagrama de cablaj, pe care le-am încărcat în documentația proiectului.\\ | ||
+ | **19.05.2025** – Am adăugat suport pentru sunete distincte (start, avertizare, final) și afișaje dinamice pe LCD în funcție de starea cursei.\\ | ||
+ | **21.05.2025** – Am actualizat logica software: numărătoare inversă, calcul viteză, oprire automată la finalul cursei.\\ | ||
+ | **24.05.2025** – Am finalizat integrarea logicii software cu afișajul și am completat întreaga documentație pe wiki.\\ | ||
+ | **25.05.2025** - Am confecționat cutia pentru dashboard.\\ | ||
Line 197: | Line 216: | ||
=== Resurse Hardware === | === Resurse Hardware === | ||
+ | * [[https://docs.arduino.cc/resources/datasheets/A000066-datasheet.pdf| Arduino UNO Datasheet]] - Fișă tehnică completă pentru placa Ardunio UNO | ||
* [[https://components101.com/sites/default/files/component_datasheet/A3144-Datasheet.pdf|A3144 Hall Effect Sensor Datasheet]] – Fișă tehnică completă pentru senzorul Hall A3144 | * [[https://components101.com/sites/default/files/component_datasheet/A3144-Datasheet.pdf|A3144 Hall Effect Sensor Datasheet]] – Fișă tehnică completă pentru senzorul Hall A3144 | ||
- | * [[https://content.arduino.cc/assets/UNO-TH_Rev3e_sch.pdf|Arduino UNO Pinout (Schematic)]] – Schematics oficiale pentru placa UNO | + | * [[https://www.handsontec.com/dataspecs/module/I2C_1602_LCD.pdf|LCD - I2C Datasheet]] - Fișă tehnică completă pentru ecranul LCD - I2C |