This shows you the differences between two versions of the page.
pm:prj2025:atoader:alexandra.marinica [2025/05/28 01:32] alexandra.marinica |
pm:prj2025:atoader:alexandra.marinica [2025/05/28 13:17] (current) alexandra.marinica |
||
---|---|---|---|
Line 5: | Line 5: | ||
* Proiectul propus reprezintă un mecanism inteligent de lansare a mingilor pentru animale de companie, având ca scop atât stimularea activității fizice, cât și monitorizarea interacțiunilor cu dispozitivul. Sistemul funcționează autonom, în colaborare cu utilizatorul, și integrează mai mulți senzori și actuatori pentru a oferi o experiență interactivă și eficientă. | * Proiectul propus reprezintă un mecanism inteligent de lansare a mingilor pentru animale de companie, având ca scop atât stimularea activității fizice, cât și monitorizarea interacțiunilor cu dispozitivul. Sistemul funcționează autonom, în colaborare cu utilizatorul, și integrează mai mulți senzori și actuatori pentru a oferi o experiență interactivă și eficientă. | ||
* Dispozitivul este conceput pentru a detecta automat apropierea animalului de zona de lansare. Atunci când animalul se află la o distanță mică (sub 30 cm), se aprinde un LED roșu, oferind un semnal vizual clar pentru stăpân că animalul este pregătit să interacționeze cu dispozitivul. | * Dispozitivul este conceput pentru a detecta automat apropierea animalului de zona de lansare. Atunci când animalul se află la o distanță mică (sub 30 cm), se aprinde un LED roșu, oferind un semnal vizual clar pentru stăpân că animalul este pregătit să interacționeze cu dispozitivul. | ||
- | * La apăsarea unui buton de către stăpân, sistemul inițiază o secvență bine definită: | + | * La apăsarea unui buton de către stăpân sau atingerea senzorului capacitativ, sistemul inițiază o secvență bine definită: |
* 1. Se activează un buzzer, care emite un sunet scurt, confirmând acțiunea. | * 1. Se activează un buzzer, care emite un sunet scurt, confirmând acțiunea. | ||
* 2. Un servomotor este acționat pentru a lansa o minge de ping pong. | * 2. Un servomotor este acționat pentru a lansa o minge de ping pong. | ||
Line 24: | Line 24: | ||
Schemă bloc: | Schemă bloc: | ||
- | {{:pm:prj2025:atoader:schema_descriere_generala.png?600|}} | + | {{:pm:prj2025:atoader:schema0_alexandra_marinica.png?600|}} |
Line 45: | Line 45: | ||
| 9 | LCD 16x2 I2C | Afișează în timp real informațiile despre lansări: număr și timestamp. | [[https://www.optimusdigital.ro/ro/optoelectronice-lcd-uri/2894-lcd-cu-interfata-i2c-si-backlight-albastru.html?search_query=lcd+i2c&results=17]] | | | 9 | LCD 16x2 I2C | Afișează în timp real informațiile despre lansări: număr și timestamp. | [[https://www.optimusdigital.ro/ro/optoelectronice-lcd-uri/2894-lcd-cu-interfata-i2c-si-backlight-albastru.html?search_query=lcd+i2c&results=17]] | | ||
| 10 | Fire de conexiune | Leagă toate componentele între ele pe breadboard și la Arduino. | [[https://www.optimusdigital.ro/ro/fire-fire-mufate/881-set-fire-mama-mama-40p-15-cm.html?search_query=fire+mam+mama&results=59]] | | | 10 | Fire de conexiune | Leagă toate componentele între ele pe breadboard și la Arduino. | [[https://www.optimusdigital.ro/ro/fire-fire-mufate/881-set-fire-mama-mama-40p-15-cm.html?search_query=fire+mam+mama&results=59]] | | ||
+ | | 11 | Senzor capacitiv TTP223B | Senzor atingere capacitiv. Atunci cand stapanul il foloseste, servomotorul se porneste si mingea este aruncata. | [[https://ardushop.ro/ro/senzori/640-senzor-capacitiv-ttp223b-6427854007988.html?gad_source=1&gad_campaignid=17003133061&gbraid=0AAAAADlKU-4Xi_18LCpVDq-h4iNe_1208&gclid=EAIaIQobChMI7Mbtvt_EjQMV58tEBx3DmR-AEAQYASABEgJg8fD_BwE]] | | ||
- | Schema electrica: | + | ** Schema electrica: ** |
+ | |||
+ | {{:pm:prj2025:atoader:schema_el_alexandra_marinica.png?600|}} | ||
- | {{:pm:prj2025:atoader:schema_electrica_alexandra_marinica.png?600|}} | ||
Line 84: | Line 86: | ||
* SCK (Serial Clock): conectat la pinul D13. | * SCK (Serial Clock): conectat la pinul D13. | ||
* CS (Chip Select): conectat la pinul D10. | * CS (Chip Select): conectat la pinul D10. | ||
+ | |||
+ | |||
+ | ** Cablaj electric: ** | ||
+ | |||
+ | {{:pm:prj2025:atoader:cablaj1_alexandra_marinica.jpeg?400|}} | ||
+ | |||
+ | |||
+ | {{:pm:prj2025:atoader:cablaj2_alexandra_marinica.jpeg?400|}} | ||
+ | |||
Line 109: | Line 120: | ||
**Organizarea componenței software** | **Organizarea componenței software** | ||
- | * Componenta de detecție (senzor ultrasonic) -> Senzorul de distanță este utilizat pentru a detecta prezența animalului în fața mecanismului. Se emite un semnal ultrasonic prin pinul TRIG și se măsoară timpul de întoarcere cu pinul ECHO. Din această durată se calculează distanța în centimetri. Dacă distanța este mai mică de 20 cm, sistemul consideră că animalul s-a apropiat de dispozitiv, aprinzând LED-ul roșu ca semnal pentru utilizator. Codul utilizează funcțiile digitalWrite() și pulseIn() pentru a declanșa impulsuri ultrasonice și a calcula timpul de întoarcere, convertit apoi în distanță în centimetri: | + | * 1. Componenta de detecție (senzor ultrasonic) -> Senzorul de distanță este utilizat pentru a detecta prezența animalului în fața mecanismului. Se emite un semnal ultrasonic prin pinul TRIG și se măsoară timpul de întoarcere cu pinul ECHO. Din această durată se calculează distanța în centimetri. Dacă distanța este mai mică de 20 cm, sistemul consideră că animalul s-a apropiat de dispozitiv, aprinzând LED-ul roșu ca semnal pentru utilizator. Codul utilizează funcțiile digitalWrite() și pulseIn() pentru a declanșa impulsuri ultrasonice și a calcula timpul de întoarcere, convertit apoi în distanță în centimetri: |
+ | <code java> | ||
* digitalWrite(TRIG, LOW); | * digitalWrite(TRIG, LOW); | ||
* delayMicroseconds(2); | * delayMicroseconds(2); | ||
Line 116: | Line 128: | ||
* durata = pulseIn(ECHO, HIGH); | * durata = pulseIn(ECHO, HIGH); | ||
* distanta_cm = durata * 0.034 / 2; | * distanta_cm = durata * 0.034 / 2; | ||
+ | </code> | ||
- | * Componenta de feedback vizual și auditiv -> LED-ul verde este aprins continuu, semnalizând starea activă a sistemului. LED-ul roșu este aprins doar când animalul se află la mai puțin de 20 cm. Buzzerul este activat temporar la fiecare aruncare. | + | * 2. Componenta de feedback vizual și auditiv -> LED-ul verde este aprins continuu, semnalizând starea activă a sistemului. LED-ul roșu este aprins doar când animalul se află la mai puțin de 20 cm. Buzzerul este activat temporar la fiecare aruncare. |
+ | <code java> | ||
* digitalWrite(LED_VERDE, HIGH); // activ permanent | * digitalWrite(LED_VERDE, HIGH); // activ permanent | ||
* digitalWrite(LED_ROSU, HIGH); // activat doar la apropiere | * digitalWrite(LED_ROSU, HIGH); // activat doar la apropiere | ||
* digitalWrite(BUZZER, HIGH); // semnal sonor | * digitalWrite(BUZZER, HIGH); // semnal sonor | ||
+ | </code> | ||
- | * Componenta de acționare mecanică (servo) -> La apăsarea butonului, servomotorul este rotit la 180 de grade (poziția de aruncare), apoi revine la 0 grade. | + | * 3. Componenta de acționare mecanică (servo) -> La apăsarea butonului, servomotorul este rotit la 180 de grade (poziția de aruncare), apoi revine la 0 grade. |
* servomotor.write(180); | * servomotor.write(180); | ||
* delay(500); | * delay(500); | ||
* servomotor.write(0); | * servomotor.write(0); | ||
- | * Componenta de logare (scriere pe SD) -> La fiecare aruncare, se scrie în fișierul log.txt un mesaj de tipul „Aruncare X la Y ms”: | + | * 4. Componenta de logare (scriere pe SD) -> La fiecare aruncare, se scrie în fișierul log.txt un mesaj de tipul „Aruncare X la Y ms”: |
<code java> | <code java> | ||
* logFile.print("Aruncare "); | * logFile.print("Aruncare "); | ||
Line 137: | Line 152: | ||
- | * Componenta de afișare (LCD) -> Sistemul afișează mesaje precum „Mingea a fost aruncata” și, ulterior, ultima aruncare cu timpul în secunde, extras automat din fișierul logat. | + | * 5. Componenta de afișare (LCD) -> Sistemul afișează mesaje precum „Mingea a fost aruncata” și, ulterior, ultima aruncare cu timpul în secunde, extras automat din fișierul logat. |
- | * Funcția citesteUltimaLinie() parcurge fișierul log.txt și reține ultima linie pentru afișare. Este utilă pentru extragerea rapidă a ultimei activități. | + | * 6. Funcția citesteUltimaLinie() parcurge fișierul log.txt și reține ultima linie pentru afișare. Este utilă pentru extragerea rapidă a ultimei activități. |
+ | * 7. Senzorul de touch -> În proiectul meu, am utilizat un senzor de touch capacitiv (TTP223) ca metodă alternativă de interacțiune, înlocuind butonul fizic tradițional. Acesta detectează simpla atingere a utilizatorului, fără a necesita apăsare mecanică, declanșând astfel secvența de aruncare a mingii prin activarea servomotorului. Senzorul este conectat la pinul digital D8 al plăcii Arduino și este citit în bucla principală loop() folosind digitalRead(TOUCH_PIN). Când este detectată o atingere (ieșire HIGH), sistemul pornește buzzerul, rotește servomotorul, înregistrează aruncarea pe cardul SD și afișează informațiile pe LCD. Această metodă de activare adaugă un plus de modernitate și confort în utilizarea sistemului, eliminând contactul fizic direct cu un buton. | ||
+ | </note> | ||
+ | ===== Rezultate Obţinute ===== | ||
+ | <note> | ||
+ | [[https://github.com/alexandraraluca/Proiect_pm_alexandra_m_lansator|Cod sursa]] | ||
+ | [[https://youtube.com/shorts/S59aTsuWsHI?feature=share|Demo live]] | ||
</note> | </note> | ||
+ | |||
+ | |||
+ | ===== Concluzii ===== | ||
+ | |||
+ | <note warning> | ||
+ | |||
+ | * Realizarea acestui proiect mi-a oferit o experiență extrem de plăcută și valoroasă, fiind primul proiect de acest tip pe care l-am implementat integral — combinând componente hardware diverse, control prin PWM, interacțiune cu fișiere și afișare pe LCD. A fost o ocazie excelentă să pun în practică cunoștințele acumulate și să înțeleg cum colaborează diferite module într-un sistem embedded. | ||
+ | * Desigur, nu au lipsit nici provocările. Am încercat inițial să folosesc un senzor de distanță VL53L0X, care comunică prin I2C, însă din cauza unor dificultăți în inițializare și compatibilitate, acesta nu a funcționat corespunzător. În cele din urmă, am ales să îl înlocuiesc cu senzorul ultrasonic HC-SR04, iar pentru afișare am optat pentru un ecran LCD 16x2 cu interfață I2C, care s-a integrat perfect în proiect. | ||
+ | |||
+ | * Această experiență m-a ajutat să înțeleg mai bine nu doar componentele hardware, ci și provocările reale ale dezvoltării unui sistem funcțional. Sunt mulțumita de rezultat și nerăbdătoare să explorez proiecte și mai complexe în viitor. | ||
+ | |||
+ | </note> | ||
+ | |||
+ | |||
+ | |||
+ | |||