Lansator automat de mingi pentru animale

Introducere

  • 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.
  • 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.
    • 2. Un servomotor este acționat pentru a lansa o minge de ping pong.
    • 3. În același timp, se înregistrează automat pe un card de memorie: numărul aruncării curente, ora la care s-a produs evenimentul.
  • Informațiile înregistrate sunt afișate instant și pe un ecran LCD, oferind utilizatorului un rezumat clar și util despre activitatea recentă.
  • Acest proces permite nu doar o interacțiune distractivă între animal și dispozitiv, ci și o monitorizare eficientă a utilizării în timp. Sistemul este intuitiv și ușor de utilizat, integrând detecție, semnalizare, acționare și raportare într-un singur mecanism compact.

Descriere generală

  • Pentru a asigura o comunicare eficientă între microcontroller și componentele periferice, proiectul integrează mai multe protocoale standard, fiecare având un rol specific în buna funcționare a sistemului.
  • Protocolul I2C este folosit pentru a controla ecranul LCD, permițând afișarea în timp real a informațiilor esențiale precum numărul lansărilor și momentul în care acestea au avut loc. Tot prin I2C este gestionată și semnalizarea LED-urilor, oferind un mod simplu și ordonat de control asupra acestora.
  • Pentru stocarea datelor, sistemul utilizează protocolul SPI, prin care microcontrollerul comunică cu modulul de card SD. Acest protocol asigură transferuri rapide și fiabile, necesare pentru scrierea imediată a evenimentelor înregistrate.
  • În ceea ce privește acționarea mecanică, PWM (Pulse Width Modulation) este folosit pentru a controla servomotorul, oferind precizie în mișcarea brațului care lansează mingea.

Schemă bloc:

Hardware Design

  • Listă de piese:
Componenta Utilitate Link achizitie
1 Arduino UNO R3 Unitatea centrală de control – coordonează senzorii, motorul, afișajul și stocarea datelor. https://www.optimusdigital.ro/ro/compatibile-cu-arduino-uno/1678-placa-de-dezvoltare-compatibila-cu-arduino-uno-atmega328p-i-ch340.html?search_query=arduino+uno&results=129
2 Senzor ultrasonic HC-SR04 Măsoară distanța până la animal pentru a detecta dacă se află suficient de aproape de mecanism. https://www.optimusdigital.ro/ro/senzori-senzori-ultrasonici/12897-senzor-ultrasonic-hc-sr04-.html?search_query=senzor+ultrasonic&results=42
3 Servomotor ES08MA Lansează mingea de ping pong printr-o mișcare de împingere. https://www.optimusdigital.ro/ro/motoare-servomotoare/802-servomotor-de-metal-12g-es08ma.html?search_query=servomotor&results=116
4 Semafor LED-uri LED-ul verde indică că sistemul este activ, iar cel roșu se aprinde când animalul se apropie. https://sigmanortec.ro/modul-led-semafor-56mm-33-5v
5 Buzzer Emite un semnal sonor scurt când se apasă butonul pentru lansare. https://www.optimusdigital.ro/ro/audio-buzzere/8177-buzzer-activ-sfm-20b-3-24-v.html?search_query=buzzer&results=62
6 Modul SD card Scrie pe card informații despre numărul lansărilor și timpul la care au avut loc. https://www.optimusdigital.ro/ro/altele/98-modul-cititor-card-sd.html?search_query=modul+cititor+SD&results=5
7 Card SD Stochează datele logate de sistem. Card SD – Kingston
8 Breadboard Asigură conexiunile temporare între componente fără lipire. https://www.optimusdigital.ro/ro/prototipare-breadboard-uri/13249-breadboard-300-puncte.html?search_query=breadboard&results=125
9 LCD 16×2 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
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:

  • LCD (rol: afișare informații despre lansări):
    • VCC: conectat la 5V al plăcuței, pentru alimentare.
    • GND: conectat la GND al plăcuței.
    • SDA (Serial Data): conectat la pinul A4 al plăcuței (comunicare I2C).
    • SCL (Serial Clock): conectat la pinul A5 al plăcuței (comunicare I2C).
  • Buzzer (rol: semnal sonor la aruncare):
    • Terminal de semnal: conectat la pinul digital D9 al plăcuței.
    • Terminal de masă: conectat la GND al plăcuței.
  • Senzor ultrasonic (rol: detectarea distanței animalului):
    • VCC: conectat la 5V al plăcuței.
    • GND: conectat la GND al plăcuței.
    • TRIG (trig declanșare ultrasunete): conectat la pinul D3.
    • ECHO (răspuns după reflexie): conectat la pinul D4.
  • Semafor LED-uri (rol: semnalizare vizuală a prezenței animalului):
    • LED verde: conectat la pinul D6 (aprins permanent cât timp sistemul e activ).
    • LED roșu: conectat la pinul D7 (aprins când animalul este detectat la mai puțin de 30 cm).
    • Terminal GND: conectate la GND al plăcuței.
  • Modul cititor SD card (rol: salvare date despre lansări):
    • VCC: conectat la 5V al plăcuței.
    • GND: conectat la GND al plăcuței.
    • MISO (Master In Slave Out): conectat la pinul D12.
    • MOSI (Master Out Slave In): conectat la pinul D11.
    • SCK (Serial Clock): conectat la pinul D13.
    • CS (Chip Select): conectat la pinul D10.

Cablaj electric:

Software Design

Mediu de dezvoltare utilizat

  • Arduino IDE – utilizat pentru scrierea codului sursă, compilare și upload pe placa Arduino UNO R3.

Librarii folosite

  • Wire.h : Bibliotecă nativă Arduino care permite comunicarea pe magistrala I2C. Este folosită pentru comunicarea cu afișajul LCD, permițând transmiterea datelor în mod eficient pe două fire (SDA, SCL).
  • LiquidCrystal_I2C.h: Bibliotecă specializată pentru controlul afișajelor LCD compatibile cu interfața I2C.
  • Servo.h: Bibliotecă pentru controlul precis al servomotoarelor cu semnal PWM. În cadrul proiectului, servomotorul este folosit pentru a simula aruncarea mingii atunci când se apasă butonul: servo.attach(pin) leagă motorul de un pin PWM si servo.write(unghi) setează poziția motorului (180° pentru lansare, 0° pentru reset).
  • SPI.h: Bibliotecă nativă pentru comunicarea prin protocolul SPI. Este folosită în mod implicit de SD.h pentru accesul la cardul SD.
  • SD.h: Permite manipularea fișierelor pe un card SD – deschidere, scriere, citire și închidere. Este folosită pentru logarea automată a fiecărei aruncări de minge, împreună cu timestamp-ul în milisecunde.

Organizarea componenței software

  • 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:
        * digitalWrite(TRIG, LOW);
        * delayMicroseconds(2);
        * digitalWrite(TRIG, HIGH);
        * delayMicroseconds(10);
        * durata = pulseIn(ECHO, HIGH);
        * distanta_cm = durata * 0.034 / 2;
 
  • 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.
        * digitalWrite(LED_VERDE, HIGH);  // activ permanent
        * digitalWrite(LED_ROSU, HIGH);   // activat doar la apropiere
        * digitalWrite(BUZZER, HIGH);     // semnal sonor
 
  • 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);
    • delay(500);
    • servomotor.write(0);
  • 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”:
        * logFile.print("Aruncare ");
        * logFile.print(aruncareNumar);
        * logFile.print(" la ");
        * logFile.print(timestamp);
        * logFile.println(" ms");
 
  • 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.
  • 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.

Rezultate Obţinute

Concluzii

  • 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 16×2 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.

pm/prj2025/atoader/alexandra.marinica.txt · Last modified: 2025/05/28 13:17 by alexandra.marinica
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0