Ascii Art Printer

Autor

Ciobanu Andreea-Corina, Grupa 331CB

Introducere

Proiectul consta in crearea unui sistem care va desena Ascii Art. Sistemul va fi format dintr-un suport de desen (in cazul curent: tabla alba) si un suport pentru marker care va fi deplasat pe suprafata de desen de catre doua motoare pas cu pas iar inclinatia lui fata de tabla va fi controlata folosind un motor servo. Imaginea care va fi desenata va fi transmisa catre Arduino folosind un adaptor MicroSD.

Descriere generală

  • Imaginea desenata va fi stocata pe un card microSD.
  • Suportul markerului va fi actionat de doua motoare stepper prin 2 curele.
  • Instrumentul de scris va fi controlat folosind un motor servo.
  • Pentru folosirea motoarelor va fi folosit un shield L293D.

Schema bloc

Hardware Design

Componente:

  • 2 x Arduino Uno
  • 2 x Motor Stepper Nema17
  • 1 x Motor Servo
  • Adaptor MicroSD
  • Shield control motoare L293D
  • 2 x Curea GT2 1m
  • 2 x Fulie GT2 16 dinti
  • 1 x Card microSD
  • Tabla
  • Marker
  • Suport marker

Schema electrica:

Software Design

Dezvoltarea a fost facuta folosind mediul de dezvoltre dedicat Arduino IDE.

Bibliotecile externe folosite
  • Wire.h: folosirea protocolului I2C pentru transmiterea caracterelor citite de pe card (functii folosite: begin, requestFrom, available, onRequest, write)
  • AFMotor.h: controlul motoarelor pas cu pas (functii folosite setSpeed, step)
  • Servo.h: controlul motorului servo (functii folosite: attach, write)
  • SD.h: comunicarea cu cardul SD (functii folosite: begin, open, available, read, close)
Variabile folosite

Master

  • myservo: referinta catre motorul servo folosit
  • lastRow: numarul de caractere scrise pe linia actuala pana la momentul curent
  • stepsPerRevolution: numarul de pasi per rotatie completa a motorului
  • motor0, motor1: referinte catre cele doua motoare pas cu pas
  • character: caracterul primit de la slave

Slave

  • myFile: referinta catre fisierul din care se vor citi datele
  • character: caracterul citit din fisier
Functii folosite

Master

  • setup(): functie in care sunt initializate motoarele pas cu pas si motorul servo; este setata pozitia initiala a motorului servo
  • loop(): citeste de la slave cate un caracter si apeleaza functia write_character(character)
  • write_character(character): deplaseaza motoarele in functie de caracterul primit ca parametru; daca markerul va fi lipit de tabla sau departat folosind motorul servo va fi introdus un mic delay pentru a lasa timp suportului de marker sa se stabilizeze

Slave

  • setup(): initializeaza comunicarea I2C si realizeaza comunicarea cu portul SD
  • requestEvent(): va citi un catacter din fisierul de pe cardul SD si il va transmite master-ului

Rezultate Obţinute

Aparatul va desena imediat dupa pornire caracterele din fisierul text regasit pe cardul microSD.
Markerul este ghidat de cele doua motoare pas cu pas pe suprafata tablei folosind doua curele cu dinti a caror deplasare este limitata de fuliile fixate pe axul motoarelor.
Motorul servo il va departa de tabla daca caracterul citit este spatiu sau il va apropia daca a fost citit un caracter ce trebuie desenat.



La finalul unei linii se va regasii in fisierul de input caracterul “*” care va marca faptul ca linia curenta s-a incheiat iar markerul va fi deplasat catre inceputul urmatoarei linii.
Dupa desenarea tuturor caracterelor marcata prin citirea caracterului ” markerul va fi ghidat la inceputul desenului, pentru a nu il acoperi.
Un demo al functionarii proiectului este disponibil aici: Real-time Fast-Forward

Concluzii

Proiectul a fost foarte educativ si distractiv in acelasi timp. Avand in vedere limitarile actuale consider ca a fost un pic mai dificil sa realizez proiectul asa cum mi-as fi dorit initial: nu am avut acces la imprimanta 3d pentru a crea suportii pentru motoarele pas cu pas care sunt destul de grele si nici pentru suportul markerului, asa ca am folosit ce a fost la indemana pentru a crea un proiect cat mai atractiv.

Download

In arhiva se va gasi codul sursa si fisierul de input pentru desenul “Dino looking over the wall”.

Jurnal

  • 25 aprilie: alegere tema proiect
  • 26 aprilie: comanda piese necesare
  • 30 aprilie: sosire piese
  • 8 mai: testare componente; fixarea firelor de conexiune ale motoarelor pe shield
  • 9 mai: comanda fulii corecte (fara rulment)
  • 12 mai: sosire comanda #2
  • 15-16 mai: creare suport de marker si fixarea motoarelor pe tabla
  • 22-23 mai: lucru la program
  • 29-31 mai: testare proiect, filmare si actualizare pagina de wiki

Bibliografie/Resurse

pm/prj2021/alazar/ascii_art_printer.txt · Last modified: 2021/05/31 17:22 by andreea.ciobanu0503
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