Ionita Adriana - Alexstrasza Dragon Form

E-mail: adriana.ionita2404@gmail.com

Introducere

Proiectul va consta in realizarea unui dragon, bazat pe modelul Alexstraszei din WoW, care are aripi ce se pot deschide si inchide, poate scoate fum si are anumite parti (cum ar fi ochii) care pot lumina. Fiecare din functionalitati va putea fi declansata de pe telefon, dintr-o aplicatie care va comunica prin Bluetooth cu placuta.

Proiectul in sine nu vine cu utilitati “raspandite”. Proiectul ales are majoritar interes personal intrucat realizarea sa, atat electrica, cat si “artistica” este ceva ce tine de un hobby. Adica proiectul nu rezolva o problema existenta, ci consta in ceva artsy-craftsy din care se pot invata lucruri noi, utile pe viitor.

Ideea a pornit de la realizarea unor aripi in marime naturala, insa, din mai multe motive, am ajuns la decizia scalarii ideii la o dimensiune mai mica. Intrucat nu mi s-a parut suficient de interesant si de complex, am cautat sa integrez ideea intr-un context mai clar. Din moment ce intotdeauna mi-au placut dragonii, am zis ca aceasta este tema perfecta.

Descriere Generala

<fc #000000>Aripile dragonului vor fi controlate de servomotoare, cate unul pentru fiecare aripa, iar ochii vor avea LED-uri. Fumul pe care acesta il va putea scoate va fi generat de un mecanism ce consta in atasarea unei pompe de apa/aer la un cap de tigara electronica. Proiectul va avea atasat si un modul Bluetooth pentru a permite controlarea sa de pe telefon.</fc>

Schema bloc:

Hardware Design

Lista piese:

  • PCB
  • Componente de baza
  • Servomotoare
  • Roti zimtate
  • Cremaliere
  • LED-uri
  • Modul Bluetooth
  • Pompa de aer/apa
  • Atomizor
  • Modul releu
  • Altele
    • Fire
    • Rezistente

Schema electrica: Post implementare:
Cele mai complexe aspecte ale implementarii hardware au fost urmatoarele:

  • Lipirea mecanismul de fum
    • Atomizorul respectiv are si el VCC si GND in capatul destinat bateriei. Problema cu acesta este ca a fost foarte dificil sa lipesc efectiv cele 2 fire necesare pentru alimentare, varful letcon-ului fiind suficient de mare cat sa fi complicat problema.
    • Atasarea pompei fara ruperea lipiturilor pe atomizor a fost de asemenea dificila.
  • Obtinerea unei miscari liniare folosind servo-urile
    • Acest aspect a fost, de departe, cel mai costisitor ca timp.
    • Conceptul parea simplu la inceput: pe servomotor se ataseaza o roata zimtata (care se va roti stanga dreapta) care va actiona o cremaliera care are un profil zimtat care se potriveste cu cel al rotii, rezultand astfel o miscare liniara.
    • Acest ansamblu s-a realizat cu usurinta si a produs rezultatul asteptat. Problema a fost in fixarea cremalierei pe roata. Aceasta a fost rezolvata prin improvizarea unei sine pe care aceasta sa se miste.
    • De asemenea greutatea aripilor a fost tot timpul un aspect luat in calcul. Am folosit materiale cat mai usoare pentru acestea.
    • Totodata imbracarea aripilor a fost tricky pentru ca nu vrei sa ajungi nici cu aripi prea grele, nici cu un material fixat pe “incheieturile” aripilor, nici cu materialul fixat in asa fel incat sa incurce miscarea cremalierei, nici cu un aspect neglijent.
  • Aspectul ^_^
    • Chiar daca acesta nu este neaparat un obiect de studiu in cadrul cursului de PM, a face o placuta sa arate ca un dragon a fost o provocare XD.
    • Absolut tot a fost facut de mine, folosind materiale precum: bete de lemn, material textil, ata, termoplastice (EVA foam, Worbla’s Black Art), hot glue (HMA), super glue si, most important, world’s best invention, banda izolatoare.
    • De asemenea, totul a fost pictat de mana folosind acrilice si culori pe baza de ulei.
    • Mai trebuie mentionat ca toti solzii dragonului, de pe tot corpul, au fost facuti tot de mana, cu letcon-ul.

Software Design

  • Editor text: Vim :-P
  • Compilator: avr-gcc

Structura cod:

Header Scop
avr/io.h Pentru includerea definitiilor IO specifice AVR.
avr/interrupt.h Pentru a permite lucrul cu intreruperi in cadrul timer-elor si modulului Bluetooth.
util/delay.h Pentru a facilita deschiderea aripilor mai lin.
usart.h Biblioteca pentru comunicarea cu modului Bluetooth prin USART.
gpio.h Biblioteca pentru controlul LED-urilor si pompei de aer.
timer1.h Bibliteca pentru facilitarea temporizarii pompei.
servo.h Biblioteca pentru controlul servo-urilor, folosind PWM.

Comunicare placuta - telefon

  • Pentru trimiterea comenzilor de la telefon la placuta, am folosit aplicatia “Bluetooth Terminal HC-05” download-ata de pe Google Play.
  • Aplicatia, pentru a transmite/receptiona date, se conecteaza la modulul Bluetooth HC-05 de pe placuta.
  • Prin aplicatie se pot transmite 3 comenzi valide catre placuta (datele se transmit in format ASCII):
    • Pornire fum ⇒ trimitere caracter ’s’ - Smoke
    • Deschidere aripi ⇒ trimitere caracter ‘o’ - Open
    • Inchidere aripi ⇒ trimitere caracter ‘c’ - Close
  • Intrucat ATmega-ul are 2 interfete prin care se poate comunica prin USART, am ales sa conectez modulul Bluetooth la USART0.
  • Pentru un schimb de date valid, baud rate-ul este setat la 9600 bps, iar formatul frame-ului consta in 8 biti de date, 1 bit de stop si fara paritate.
  • Receptia la placuta se face pe baza de intreruperi. Adica verificarea mesajului primit se face in handler-ul de intrerupere corespunzator.
  • Transmisia de la placuta se face folosind polling. Pentru fiecare mesaj valid receptionat, placuta raspunde cu un mesaj corespunzator ce va fi afisat in aplicatie.

Actionare aripi

  • Aripile sunt controlate de 2 servomotoare, adica prin 2 semnale PWM.
  • Servo-urile sunt conectate pe pinii OC0A si OC0B, adica semnalul este generat folosind un timer pe 8 biti.
  • Chiar daca frecventa minima in acest caz nu ajunge la 50Hz, servo-urile pot face toata miscarea (180 de grade).
  • Initial OCR0A si OCR0B sunt setate la valori opuse (adica unul la 0 grade si celalalt la 180) pentru ca cele 2 aripi se se miste in oglinda.
  • La fiecare comanda primita, aripile se inchid/deschid prin incrementarea/decrementarea OCR0n in mod corespunzator (unul creste, celalalt scade) urmate de un delay.
  • Delay-ul este folosit din 2 motive:
    • Pentru a avea o deschidere a aripilor mai lina (acest lucru justifica necesitatea unui delay).
    • Pentru a lasa sa se execute mereu o miscare completa (inchidere sau deschidere) deoarece se doreste evitare bruscarii mecanismul fizic din spate (acest aspect justifica folosirea unui delay fata de un mecanism de intreruperi).

Actionare mecanism fum

  • Acest mecanism este cel mai simplu din punct de vedere al software-ului.
  • Ansamblul este urmatorul: pompa este atasata de capatul atomizorului la care s-ar pune, de-obicei, bateria acesteia; pentru a alimenta cele 2 componente am folosit 2 baterii de 9V, cate una inseriata cu fiecare componenta; adica, practic, 2 mini-circuite separate; capetele circuitelor sunt legate la intrarile modulului cu releu care nu sunt conectate initial; pentru a actiona mecanismul (prin conectarea celor 2 circuite) trebuie setat pinul de date al modulului cu releu (care este activ pe 0).
  • Odata pornit mecanismul, se porneste timer-ul 1 pentru a declansa oprirea acestuia dupa un timp de aproximativ 2.5s.

Walkthrough







Rezultate

  • Am reusit sa implementez proiectul in intregime, cu toate functionalitatile ok.
  • Atat din punct de vedere hardware, cat si software totul este finalizat.
  • Aspectul final al proiectului a ramas bazat pe Alexstrasza, cu mentiunea ca anumite detalii au fost stilizate si impovizate dupa posibiliati.

Poze finale:

Video demo:

Concluzii

  • Acesta a fost de departe cel mai interesant proiect pe care l-am avut pana acum in facultate.
  • Pentru mine a fost o placere ca am putut sa combin tema de la facultate cu un hobby (cosplay-ul).
  • Pot spune sincer ca intreg proiectul a fost o serie fericita de improvizatii, intrucat nu exista o “reteta” pentru asa ceva XD.
  • Personal, m-am distrat facand acest proiect si sunt foarte incantata de rezultat ^_^.

Download

Bibliografie/Resurse

pm/prj2019/abirlica/alexstraza-dragon-form.txt · Last modified: 2021/06/06 21:21 by dumitru.brigalda
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