Page Flipper

  • Nume: Văideanu Renata - Georgia
  • Grupa: 332 CD
  • Îndrumător: Răzvan-Nicolae Vîrtan

Introducere

Proiectul va consta în dezvoltarea și implementarea unui dispozitiv inovator ce simplifică experiența de lectură prin furnizarea automată a paginilor cărții la apăsarea unui buton. Acest dispozitiv reprezintă o soluție ingenioasă pentru cei care doresc confort și eficiență în timpul lecturii, eliminând necesitatea întoarcerii manuale a paginilor. Ideea aparatului s-a născut din dorința de a simplifica lectura cărților tipărite și de a oferi o soluție practică. Dispozitivul este util deoarece îmbunătățește confortul și eficiența în timpul lecturii, permițându-le utilizatorilor să se concentreze mai mult pe conținutul cărții.

Descriere generală

Partea de hardware a proiectului constă într-o placă de plexiglas echipată cu trei picioare robotice: două pentru susținerea cărții și unul pentru întoarcerea paginilor. De asemenea, avem un al patrulea picioruș care trage pagina în mișcare pentru a facilita procesul de întoarcere a paginilor. În plus, includem butoane pentru semnalarea direcției de întoarcere a paginii (stânga sau dreapta). Această structură hardware asigură o funcționare eficientă și fiabilă a dispozitivului, oferindu-i utilizatorului o varietate de posibilități.

Hardware Design

In realizarea proiectului se vor folosi:

  • Arduino UNO R3
  • 5 x servomotor MG90S
  • 3 x modul giroscopic si accelerometru 3 axe MPU6050
  • modul Multiplexor Analogic cu 8 Canale PCA9548A
  • breadboard, butoane, fire, rezistente

Oganizarea pinilor:

  • Pinii PWM 3, 5, 6, 9, 10 vor fi folositi de cele 5 servomotoare
  • Pinii 2 si 4 vor fi solositi pentru cele doua butoane
  • Pinii SCL si SDA vor fi conectati la pinii SCL si SDA ai multiplexorului
  • Pinii Analogici A0, A1 si A2 vor fi solositi pentru multimplexor

Componentele proiectului vor fi conectate conform diagramei:

schemanoucircuit2.jpeg

Detalii ale Schemei:

  • Microcontroler Arduino UNO:
    • Este utilizat pentru a controla servomotoarele și pentru a comunica cu senzori prin intermediul magistralei I2C.
    • Pinii digitali D2-D6 sunt folosiți pentru controlul servomotoarelor (M1-M5).
    • Pinii analogici A4 și A5 sunt utilizați pentru magistrala I2C (SDA și SCL).
  • Multiplexor I2C PCA9548A:
    • Este utilizat pentru a extinde magistrala I2C și a permite comunicarea cu mai multe dispozitive I2C cu aceeași adresă.
    • Conectat la pinul SDA și SCL de pe Arduino.
    • Cele trei module MPU-6050 sunt conectate la diferitele canale (SC0-SC7) ale multiplexorului.
  • Senzori MPU-6050:
    • Sunt conectați la canalele multiplexorului I2C pentru a permite citirea datelor de la mai multe giroscoape cu adrese identice.
    • Fiecare MPU-6050 are pini de alimentare (VLOGIC și VDD) conectați la +5V și GND.
    • Pinii SDA și SCL ai fiecărui MPU-6050 sunt conectați la canalele respective de pe multiplexor.
  • Servomotoare:
    • M1-M5 sunt servomotoarele conectate la pinii D3, D5, D6, D9, D10 ai Arduino pentru controlul mișcării.
    • Fiecare servomotor are pini de alimentare (+5V și GND).
  • Butoane:
    • Două butoane conectate la pinii D8 și D9 ai Arduino, fiecare cu o rezistență de 1K ohmi (R1 și R2).
    • Butoanele vor fi folosite ca trigger care vor incepe procesul de miscare spre stanga sau spre dreapta a paginilor

Mai jos se poate gasi o organizare orientativa a componentelor hardware:

Software Design

Link pentru repo-ul de Git: Repo Git

Mediu de dezvoltare: Arduino IDE

Librarii folosite:

  • Adafruit_MPU6050.h - Această bibliotecă este utilizată pentru a interacționa cu senzorul MPU6050
  • Wire.h - Bibliotecă standard pentru comunicarea I2C pe microcontrolerele Arduino
  • Servo.h - Bibliotecă pentru controlul servomotoarelor.

Principalele functii implementate

  • pcaselect - selectează canalul activ pentru comunicația I2C
  • switch_gyro - selectează senzorul MPU6050 activ
    • 0 - senzorul atasat de servo-ul din dreapta
    • 1 - senzorul atasat de servo-ul din stanga
    • 2 - senzorul atasat de servo-ul din centru
  • init_mpu - implementeaza cele 3 giroscoape la inceput, pentru a putea fi accesate prin intermediul multiplexorului
  • move_weel - folosit pentru mișcarea roții folosite pentru a se da pagina
  • move_upper_leg - folosit pentru a misca piciorul de care este atasat roata
  • left_leg si right_leg - folosit pentru fixarea sau relaxarea picioarelor din partile laterale ale cartii, datoare sa fixeze cartea

M-am folosit de: PCAADDR 0x70: Adresa I2C pentru un comutatorul de canale I2C, PCA9548A. De asemenea, am folosit verctorii steps (steps[i] = 1 pentru pasul curent, pentru a putea monitoriza fluxul de pasi) si first (folosit oentru cei 3 senzori, pentru a i se da servo-ului un imbold pentru a continua miscarea).

Mai in detaliu: In cadrul functiei setup(), se initializeaza pinii din Arduino care urmeaza sa fie folositi ulterior, dar si senzorii. Funcția loop este responsabilă pentru citirea datelor de la senzori, monitorizarea stării butoanelor și efectuarea unor serii de mișcări ale servo-urilor în funcție de aceste stări. Fiecare apăsare a unui buton inițiază o secvență de pași care controlează mișcarea diferitelor componente ale robotului, utilizând datele de la senzorii MPU6050 pentru a ajusta mișcările.se afla codul necesar.

Rezultate Obţinute

img-20240527-wa0003.jpg img-20240527-wa0011.jpg

Mai jos se pot vedea componentele proiectului. colajpiese.jpg

Link video-uri cu testarea proiectului

Asa cum se vede si din vide-uri, din cauza piciorului care trage pagina spre stanga sau spre dreapta care este, probabil, prea scurt, nu se poate face perfect tragerea paginilor.

Concluzii

Proiectul a reprezentat o provocare din punct de vedere hardware, din cauza căutării pieselor necesare. Am început montajul cu două multiplexoare CD74HC4067, dar am realizat foarte curând că nu puteam comunica eficient cu cele trei giroscoape MPU6050. În cele din urmă, am optat pentru un multiplexor PCA9548A, special conceput pentru astfel de operațiuni. Necesitatea utilizării unui multiplexor a venit din faptul că giroscoapele au adresa I2C hard-codată, iar schimbarea acesteia este foarte dificilă. Cu toate acestea, am îndrăgit foarte mult acest proiect și am învățat foarte multe despre protocolul I2C și utilizările sale.

Download

Bibliografie/Resurse

Resurse Hardware:
Resurse Software:
pm/prj2024/rvirtan/page_flipper.txt · Last modified: 2024/05/27 19:22 by renata.vaideanu
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