This shows you the differences between two versions of the page.
|
pm:prj2025:iotelea:sara_denisa.florean [2025/05/27 20:44] 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. | ||
| === 4. În timpul cursei === | === 4. În timpul cursei === | ||
| - | * La fiecare 100 ms se verifică dacă s-au înregistrat pulsații noi de la senzorul Hall. | + | * Detectează fiecare trecere a mașinuței prin fața senzorului Hall: |
| - | * Se calculează viteza curentă (în m/s) și se adaugă la media generală. | + | Î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ă === | ||
| - | * Se oprește monitorizarea (`raceActive = false`) | + | * 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 |