This is an old revision of the document!


Desk Buddy

Introducere

Proiectul este reprezentat de un mic robotel de birou, creat special pentru a ii oferi utilizatorului interactiuni placute si a ajuta cu singuratatea. Acesta este dotat cu un senzor de atingere si unul de distanta, reactionand la factori externi prin expresii faciale care pot fi vazute pe ecranul sau LCD rotund. Are de asemenea si un servo care serveste la miscarea capului. Atunci cand este atins, robotelul devine fericit, iar atunci cand detecteaza pe cineva la o distanta mai mica de 10 cm, incepe sa isi scuture capul, entuziasmat. Atunci cand este ignorat, robotelul este trist.

Descriere generală

La atingere, ecranul va afisa o expresie faciala fericita. Atunci cand nu mai este atins, robotelul devine trist, iar atunci cand senzorul detecteaza miscare, robotelul devine entuziasmat, anticipand afectiune.

Hardware Design

Listă de piese:

  1. HC-SR04
  2. ESP32
  3. LCD ST7735
  4. Servo motor
  5. Buck
  6. Baterie 9V

Software Design

Mediu de Dezvoltare

  1. Arduino IDE
  2. Librării: TFT_eSPI, ESP32Servo, Wire, SPI, Adafruit

Funcționalități

  • Afișarea expresiilor faciale (fericit, trist, entuziasmat) pe ecranul TFT
  • Detectarea atingerii și a distanței
  • Mișcarea servo motorului în funcție de starea detectată

Exemple

1. measureHCSR04Distance Această funcție măsoară distanța folosind senzorul ultrasonic HC-SR04 și returnează valoarea măsurată în centimetri.

int measureHCSR04Distance() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  duration = pulseIn(echoPin, HIGH);
  int distance = duration * 0.034 / 2;
  if (distance < 2 || distance > 30) {
    return maxDistance;
  }
  return distance;
}

2. adjustServo Această funcție mișcă servo motorul între 0 și 90 de grade de două ori pentru a simula o reacție fizică.

void adjustServo() {
  for (int i = 0; i < 2; i++) {
    myservo.write(0);
    delay(500);
    myservo.write(90);
    delay(500);
    Serial.println("Servo moved to 90 degrees");
  }
}

3. draw…Face() Aceasta functie foloseste libraria Adafruit pentru a desena pe ecran diferite expresii faciale:

void drawHappyFace() {
    tft.init();
    tft.fillScreen(lightPink);

    tft.fillCircle(64, 85, 20, ST7735_BLACK);
    tft.fillRect(44, 65, 45, 20, lightPink);
    tft.fillCircle(40, 64, 20, ST7735_BLACK);
    tft.fillCircle(50, 60, 5, ST7735_WHITE); 

    tft.fillCircle(88, 64, 20, ST7735_BLACK);
    tft.fillCircle(98, 60, 5, ST7735_WHITE); 
}

Funcția principală a programului, care monitorizează senzorul de atingere și senzorul de distanță, schimbând expresiile faciale și ajustând servo motorul în funcție de stările detectate. Aceste fragmente de cod evidențiază principalele funcționalități ale proiectului Desk Buddy, oferind un exemplu clar de implementare pentru interacțiunile robotului. </code>

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

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/prj2024/tdicu/alexandra.burnichi.1716756136.txt.gz · Last modified: 2024/05/26 23:42 by alexandra.burnichi
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