This is an old revision of the document!


Robotel care evita obstacole

Autor: Iordache Matei Cezar Grupa: 335CA

Introducere

Prezentarea pe scurt a proiectului vostru:

Robotel care merge pe 4 roti si evita obstacole.
Se bazeaza pe un servomotor la care e legat un senzor de ultrasunete ce detecteaza obstacolele.

Schema Bloc

Hardware Design

Aici puneţi tot ce ţine de hardware design:

  • listă de piese:
    1. Arduino UNO r3
    2. Shield
    3. L298N Driver
    4. 4 motors
    5. 4 tires
    6. battery box
    7. Ultrasonic senzor HC-SR04
    8. DC Gear Motor

Software Design

Mediul de dezvoltare:

  • software:
    • Arduino IDE 1)
    • VS Code 2)
  • pentru realizarea schemei-bloc:
    • draw.io 3)
  • pentru realizarea schemei electrice:
    • EAGLE 4)

Biblioteci folosite:

  • Servo 5)

Structura codului

Initializari - inainte de orice functie, initializam urmatoarele variabile:

  • pox → clasa care defineste senzorul de puls-oximetru
  • sht → clasa care defineste senzorul de temperatura si umiditate
  • tsLastReport → initializat cu 0, folosita pentru a actualiza display-ul la intervale determinate
  • is_lying → initializat cu -1, ne aflam intr-o stare in care nu se stie daca se minte sau se spune adevarul
  • count → necesar pentru a obtine media valorilor ce trebuie comparata cu threshold-ul
  • melody, tempo, notes, wholenote, divider, noteDuration → variabilele necesare buzzerului pentru a canta melodiile de mintit si spus adevarul (cate o variabila diferita pentru fiecare)

Functii

  • setup() → initializarea pinilor pentru buzzer si LED-uri, initializarea ecran LCD, initializarea senzorului de puls, inregistrarea functie de callback pentru fiecare puls
  • loop() → logica principala a programului: apeleaza pox.update() la fiecare 3 secunde calculeaza pulsul si umiditatea si afiseaza aceste infromatii pe ecran. Daca avem o valoare a pulsului valida (considerata de mine peste 60 bpm) atunci v-om adauga valoarea plusului si a umiditatii la cate o suma si vom incrementa counterul. Se apeleaza si functia make_choice()
  • make_choice() → Cand un counter declarat global ajunge la o valoare predefinita se va calcula media valorilor pentru puls si umiditate si se vor compara fiecare cu un thershold in functie de care se da verdictul de minciuna sau adevar si se apeleaza functia corespunzatoare.
  • sing_lying_song() → se afiseaza pe ecran mesajul “You are lying!” si se porneste buzzer-ul care canta melodia corespunzatoare, apoi se reinitializeaza counterul, tsLastReport si pox;
  • sing_telling_the_truth_song() → se afiseaza pe ecran mesajul “You are telling the truth!” si se porneste buzzer-ul care canta melodia corespunzatoare, apoi se reinitializeaza counterul, tsLastReport si pox;
  • onBeatDetected() → functie callBack care face un LED rosu si buzzerul sa se porneasca de fiecare data cand detecteaza un puls
  • RGB_color(red, green, blue) → seteaza pinii LED-ului RGB cu valorile date ca parametri

Senzorul puls-oximetru trebuie interogat cat mai rapid, altfel datele din buffer-ul sau se pierd. Conform bibliotecii pe care am folosit-o, actualizarea ar trebui facuta la aproximativ 100Hz. Astfel, in cod trebuie apelat cat mai des pox.update()

Rezultate Obţinute

Concluzii

Download

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ă ;-).

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.

Jurnal

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2022/arosca/robot_cu_roti.1653917916.txt.gz · Last modified: 2022/05/30 16:38 by Matei.iordache
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