Acest proiect a inceput prin a fi un tamagotchi clasic - un animalut digital care are nevoie, la in intervale aleatoare de timp, de diferite lucruri: WC, mancare, somn, distractie. Apoi mi-a venit ideea sa adaug un buzzer pentru a avea sunete la apasarea butoanelor iar in final am scris un API pentru cantece in toata regula, nu doar pentru beep-uri de butoane
Pentru proiect, placuta cu microcontrollerul este legata la o placuta care gazduieste butoanele, buzzerul, circuitele lor respective si circuitele pentru logica si alimentarea LCD-ului. LCD-ul se leaga si el la aceasta placuta.
Lista de componente:
Display-ul de Nokia 3310 functioneaza la 3.3V, pe cand microcontrollerul functioneaza la 5 volti. Deci a fost nevoie sa adaptez aceste niveluri de tensiune, atat pentru alimentare cat si pentru semnalele logice. Pentru alimentare am folosit un regulator LM1117 iar pentru logica divizoare de tensiune rezistive. Pentru butoane am folosit rezistente de pullup externe microcontrollerului, si am legat capacitat in paralel cu butoanele. Aceste capacitati au rolul de a elimina din zgomot. Initial mi s-a spus sa pun o capacitate la intrarea buzzerului. Pe simulare mergea totul, dar dupa ce am facut circuitul fizic buzzerul nu suna. Dupa ce am scos capacitatea de acolo, totul a fost bine. Pentru a lega LCD-ul a trebuit sa lipesc fire pe pinii sai. O optiune mai usoara dar pe care am gasit-o mai tarziu, pe wiki proiect pm 2011, e sa fi facut oplacuta imprimata cu trasee pe care sa apas display-ul, vand in vedere ca pinii sunt niste arcuri. Deci in loc de contact cu fludor, contactul sa fie facut prin apasarea pinilor LCD-ului de traseele imprimate.
Placuta adaptoare este un PCB realizat cu ARES. A fost mai complicat pentru ca ares nu avea toate componentele pe care le-am folosit, deci a trebuit sa caut componente cu PCB footprint asemanator. Pentru unele nu am gasit si a trebuit sa mai trag de pini cand am lipit piesele de placa. Oricum, ARES e un soft bun, relativ usor de folosit care ofera multe facilitati. Cea mai frumoasa este ca poti vedea 3D cum va arata placa cu componentele montate pe ea. E util ca sa vezi cat de groase sunt traseele, daca se apropie prea mult unele de altele, etc.
Se observa ca in loc de butoane si buzzer, din cauza inexistentei modelelor respective, am pus rezistente pentru a putea realiza PCB-ul (rezistentele aveau footprint asemenator cu butoanele si buzzerul). Aceeasi problema a fsot si pentru regulatorul LM1117, pentru acare am pus acel tranzistor.
Se observa divizoarele de tensiune pentru semnalele de la microcontroller Reset, Mosi, SerialClock, Enable si Data/Command. Intrarea de PWM in placuta este pinul SPEAKERIN. Masa si alimentarea sunt pinii VCC si GND.
Pinii de iesire din placa sunt cei care incep cu LCD si cei de la iesirea divizoarelor de tensiune (numele lor se termina in OUT). Pinii B1OUT si B2OUT sunt legati la niste pini de intrare de la microcontroller, par restul pinilor cu OUT la sfarsit se leaga pe intrarile digitale ale LCD-ului.
Mediul de dezvoltare folosit a fost AVRStudio 5.1, pentru ca este usor de folosit si rapid. Am folosit o biblioteca third party pentru comunicatia cu LCD-ul. Aceasta biblioteca realizeaza comunicatia prin SPI cu microcontrollerul, avand gata-defintie comenzile pentru LCD si functii de desenare a imaginilor, initializare, stergere a ecranului, etc. Link catre biblioteca se gaseste mai jos, in sectiunea download. Pozele pentru LCD le-am gasit pe google si le-am convertit in format conform bibliotecii folosite folosind aplicatia FastLCD, gasita in arhiva cu biblioteca. Pentru a comanda buzzerul sa cante anumite note am folosit capabilitatile de PWM ale microcontrollerului. Mai multe detalii sunt in comentariile din surse.
Softul de simulare folosit a fost ISIS Proteus. In sectiunea download se va gasi si arhiva cu modelul de LCD. Tot ce trebuie facut pentru a-l instala este sa fie copiat in folderul de instalare ISIS.
Animalutul are nevoi care se declanseaza la intervale random de timp. Cand nu are nicio nevoie, el este fericit. Cand are o nevoie, el este trist. In fiecare din aceste 2 stari se afiseaza pe display o imagine descriptiva. Jocul facut de mine are 2 butoane, B1 si B2. Cand se apasa B1 se intra in meniul de actiuni (Hranire, WC, Somn, Cantec). Fiecare din aceasta actiune corespunde unei nevoi ale animalutului. Daca se apasa B1 in continuare se va trece pe rand prin aceste actiuni pana cand se iese din meniu. Apasarea butnoului B2 pe o actiune va efectua acea actiune. Daca nevoia corespunde actiunii efectuate animalutul va trece din trist in fericit. Fiecare actiune are o imagine a sa, iar actiunea pentru cantec va avea ca efect secundar cantarea unei melodii random la buzzer (PWM).
Daca se efectueaza o actiune si animalutul nu este trist, aceasta nu va avea niciun efect. Ficare eveniment (schimbarea starii animalutului, intrarea in meniu, deplasarea prin meniu, etc.) are un sunet caracteristic.
La final, am obtinut rezultate bune, circuitul proiectat comportandu-se normal, conform descrierii.
model nonkia 3310 LCD pentru proteus
biblioteca comunicatie LCD + FastLCD (soft pentru crearea imaginilor)
schema placutei adaptoare si PCB-lui
simularea in ISIS a displayului (nu merge simultan cu buzzerul in simulare)