Autorul poate fi contactat la adresa: Login pentru adresa
Pornind de la placuta de la etapa 1, am realizat un token bancar care permite autentificarea prin introducearea unui cod corect de 6 cifre, apoi, pe baza momentului de timp in care a fost realizata cererea (preia de la un ceas extern timpul), genereaza un cod de 8 cifre care poate fi folosit, mai apoi, in autentificare in posibile proiecte care pot fi realizate cu autentificare pe baza acestui token (Codul este valabil pentru 30 de secunde).
Ideea proiectului mi-a venit in momentul in care am folosit un astfel de token pentru a autoriza o tranzactie online, gandindu-ma daca un astfel de proiect poate fi realizat pornind de la placuta de PM - si, in urma unui research, am realizat ca da, poate fi facut si am ales aceasta tema.
Consider ca acest proiect este util pentru mine, deoarece mi-am imbunatatit cunostintele si am realizat un proiect hardware cap-coada, dar si altora, deoarece pot folosi proiectul pentru a realiza autentificari bazate pe token.
Fisier .sch: saproiect.sch
Mediul de dezvoltare a fost WinAVR, lucrand in Programmer's Notepad pornind de la scheletul laboratorului cu ecranul LCD.
Pentru realizarea codului, am pornit de la libraria de interactiune cu ecranul LCD folosita in laborator (ecranul LCD folosit de catre mine in proiect este compatibil cu cel folosit in laborator, in placuta de test).
Cum interactiunea cu ceasul extern se face cu protocolul I2C, a trebuit sa implementez acest protocol de comunicare. Am preluat cod din datasheet-ul microcontrollerului, pentru partea de trimitere date catre slave (ceas), pentru primirea de date am incercat si a functionat sa adaptez acest cod astfel incat sa primesc la microcontroller informatia pe care doream sa o primesc (valoarea unui registru de pe ceas - secunde, minute sau ore).
Interactiunea cu tastatura a fost simpla, prin interogari de tipul (PINA & (1 « PAx)) == 0 → astfel, determin care buton este apasat si realizez actiunea corespunzatoare: - 1-6 - adaug la codul introdus inca o cifra, la atingerea unui cod de 6 cifre se verifica daca este codul de siguranta sau nu (daca este, afiseaza corect si codul generat, daca nu afiseaza incorect), urmand sa se blocheze inputul pana la apsarea tastei * - * - daca nu este blocat (nu a fost introdus un cod de 6 cifre), atunci sterge, daca exista, ultima cifra introdusa; daca este blocat, atunci reseteaza codul introdus si userul este promptat sa introduca din nou codul de siguranta.
Generarea codului o fac in cel mai simplu mod posibil: iau timpul de la ceas, il folosesc ca seed la random (secunde / 30 + minute * 60 + ore * 3600), apoi generez cele 8 cifre ca '0'+rand()%10.
Codul folosit se afla in urmatoarea arhiva: sirbu_alexandru_332cb_proiectpm.zip
Realizarea acestui proiect a fost fun (chiar daca am intampinat mici probleme - arderea unui ecran LCD, citerea proasta a unui datasheet si faptul ca mi-am dat seama ca mai am nevoie de piese pe ultima suta de metri). Problema a fost faptul ca m-am apucat tarziu de el (ultimele doua saptamani pentru realizarea etapei a 2-a), fiind, astfel presat de timp si de alte teme, insa am reusit sa-l fac functional pana la urma. Per total, mi-a placut sa lucrez si faptul ca am reusit sa-l duc pana la final si sa am un proiect functional cu functionalitatile pe care le-am dorit este un lucru cu care pot sa ma mandresc.
1. Realizarea placutei de etapa 1
2. Realizarea unui research pentru realizarea proiectului dorit si gasirea pieselor necesare
3. Comandarea pieselor
4. Realizarea implementarii hardware
5. Realizarea implementarii software (in paralel cu 4)