Susținerea proiectului de diplomă

N-am mai avut vreme să scriu pe-aici. Nici măcar să mai citesc sau să gândesc altceva decât licență. De la ultimul meu post până vineri, asta a fost unica mea preocupare, cu scurte pauze pentru PW (de care voi scrie imediat), bere și (cred) un film. Deși am avut multe probleme și am terminat la limită, atât cu restanțele cât și cu proiectul de licență, stressul efectiv cauzat de el nu s-a comparat nicicum cu stressu de la admitere.

Până la urmă, proiectul meu s-a numit Platformă mobilă comandată wireless pentru explorarea unei suprafețe. Titlul este cam misleading, de fapt obiectivul proiectului meu a fost să inventez un strat între motoare și senzori și limbaje de programare pentru muritori, un fel de API către dispozitivele astea folosite în roboți autonomi.

M-am stresat mult cu susținerea, am sărit câteva nopți bune înainte de prezentare, lucrarea are până la urmă undeva pe la 50 de pagini de conținut, fără anexe, fără cod, fără altele. Robotul de test până la urmă a mers, cu o punte H (re)făcută în penultima noapte, cu ultimii bani, și cu muuuuuuulte baterii R6 :).

În ultima noapte am pregătit și prezentarea pentru susținere. 8 slide-uri. Și mi-am cumpărat și o cămașă. Neagră. M-am cam tăiat când a ajuns rândul meu la prezentare, eu mi-am notat câteva idei, extinderi ale slide-urilor, dar cum eram obosit n-o fost chiar ușor să vorbesc de la mine. A venit și dl. profesor Vârbănescu la susținere, și per total cele 10 minute au fost ok. La sfârșit, după prezentările practice, dl. Tăpuș ne-a felicitat și ne-a „făcut ingineri”. Cu diplomă. :P Nota finală a fost 9, ceea ce e foarte bine pentru media mea pe ani (7.8).

Mă voi interesa daca am voie să fac lucrarea publică, și dacă da, o voi pune aici.

Sunt foarte fericit că am reușit să fac toată lucrarea, de la concept, la implementare și la documentare, folosind doar unelte opensource. Spre exemplu:

  • Pentru scheme electrice, am folosit gschem
  • Pentru scheme conceptuale, scheme de algoritmi, scheme bloc, dia
  • Pentru cablajele imprimate, am folosit pcb, și ca să trec de la gschem la pcb, xgsch2pcb
  • Pentru diferitele figuri pentru lucrare, inkscape
  • Pentru editare texte, evident OOo, Writer
  • Pentru calcule pe date experimentale, OOo Calculator
  • Pentru prezentare, OOo Impress
  • Pentru dezvoltare de cod, evident, Eclipse, cu CDT, cu AVR Eclipse.

Concluzia e că se poate :) Și merge chiar bine :P

Update: azi Micvs, Gia și Dan au avut și ei susținerea, și au terminat, toți 3, cu 10. Felicitări ;)

PORTC pe ATMega32

Scriu acest post pentru că e util să înveți din nopțile pierdute ale altora, ca să ai timp să-ți pierzi nopțile pe altceva, mai interesant :).

Am ajuns târziu ieri la școală, pentru că am fost să dau jos blana, și m-am hotărât să nu plec până nu fac modulul de condus motorul să meargă (o să scriu mai pe larg despre el, în mai multe posturi despre a mea viitoare licență). Evident, treaba părea simplă și a devenit tot mai groasă pe măsură ce treceau orele.

Am scăpat de câteva conexiuni greșite, mi-am dat seama ca am pus diodele de protecție de peste bobinele de la relee pe dos, totul părea ok până într-un punct. Pun un ATMega32 nou nouț în soclu, setez direct AVR Eclipseu la 1MHz ca sa nu mai resetez fuse-uri, programez, super tare, merge. Pun multimetru pe picioarele ATMega, care ar fi trebuit să tragă tot portul C pe ieșire, pe 0. Jumate din pini erau la 0. Restu, la Vcc. WTF?

Îmi dau seama un pic mai târziu că PC0 și PC1 sunt legați la conectorul meu pentru I2C, și sunte legați la Vcc cu niște pull-up-uri ca să meargă cu brick-urile NXT. Bun. Dar restul? Mai erau cel puțini 3 pini care erau strâmbi. Din care unu exact ăla pe care mi-am legat eu ieșirile pentru comanda la motor. Am mai pierdut vreo oră, două întrebându-l pe prof, căutând scurt-uri pe placă …

Am scos porțile logice, am zis ca poate fac alea ceva. Niet, no luck. Am schimbat controller-ul cu cel de la mașinuța pentru Eurobot, aceeași poveste. Într-un final, pe la 6:45 AM, deja mă ridicasem de pe scaun să merg la șaorma, mă gândesc să mă uit eu pe datasheet la ATMega să vad dacă n-au ei ceva șmecherie cu Portu C. Urmeaza partea cu informație utilă din acest post:

Se pare că ATMega32 (și presupun că și alte ATMega-uri) au anumite PORT-uri din portul C care nu pot fi utilizate pentru I/O în momentul în care este activat JTAG-ul pe controller. Este vorba despre pinii PC5, PC4, PC3 și PC2. Soluția, evident, este să se dezactiveze JTAG-ul. Asta se poate face prin de-programarea siguranței (fuse) JTAGEN de pe ATMega. Eu am folosit AVRDude (pentru Linux), pe Windows foloseam PonyProg. Pentru AVRDude, ca să nu cauți referințe grămadă prin datasheet, există site-ul asta, care îți formează automat comanda pentru avrdude.

Primul meu laborator de PW

După cum am mai scris aici, semestrul ăsta încerc și eu marea cu degetul și sunt asistent la o materie care se numește Programare Web. Pentru cine mă știe, știe că e straigh up my alley, pentru că asta fac de muuuultă vreme, și am o oarecare experiență în domeniu. Prima experiență interesantă a fost când a trebuit să susțin eu laboratoare în fața studenților și să-i sprijin în timp ce se obișnuiau cu PHP, și alte tehnologii web. Dar pe departe mai dificil (dar nu mai puțin interesant) mi-a fost să pregătesc eu un laborator.

PW este o materie nouă, se face pentru prima oară acum, și nu există materiale existente pentru laboratoare (sau pentru curs, for that matter). Deși avem stabilită o tematică generală, în funcție de nivelul cu care se avansează la laborator și de feedback-ul de la studenți, tematica de laborator se mai schimbă. Anyway, cum eu sunt mai proaspăt în treaba asta cu laboratoarele decât colegul meu, Matei, a ajuns acum, în săptămâna a 6-a, rândul meu să inventez un laborator. Și n-a fost simplu.

Partea teoretică merge repede, mai ales dacă știi despre ce e vorba. Dar când am ajuns la partea practică, la partea de ”cum îi fac eu pe oamenii ăștia să aplice cât mai mult din partea teoretică în cod, dar să le ajungă 2h și să nu fie PREA simplu pentru ei”, m-am lovit de un perete. Am văzut studenți care au trecut în 5 minute peste probleme care mie mi-au luat (e drept, acum mai mulți ani) zile întregi să le rezolv. Dar am avut și surpriza ca mulți studenți să se blocheze în chestii elementare. Concluzia de aici e că, după ce ai lucrat mare parte din viață în Web, nu mai știi ce e greu și ce nu e greu pentru un începător, pentru că fiecare vine cu alt soi de pregătire.

Am făcut până la urmă un compromis între ceva dificil și ceva prea simplu, și am pus ca task, în mare, utilizarea unei clase Template (care trebuie doar periată puțin, pentru overloading) pentru separarea codului HTML de cod PHP (asta a fost o întrebare la mai mulți studenți care s-au apucat de teme). Sunt foarte curios care or să fie feedback-ul despre laborator. Deja unul dintre studenți m-a tras de urechi (și are toată dreptatea) că nu am pus laboratorul suficient de repede pe site. Data viitoare știu să mă apuc mai din timp.

RobotChallenge în Viena

Pentru următoarele câteva zile voi fi la Viena, la RobotChallenge, şi voi încerca să postez cât mai multe experienţe robotiste pe ed304.cs.pub.ro, dar voi scrie şi aici despre ce mai văd prin Viena şi cum :). Momentan, pot să spun că sunt plăcut impresionat de hotel (stăm la Gerbergasse), şi că la Viena este destul de frig pentru hanorac :P

Proiecte din CS.Poli

Justificare: În liceu, datorită prieteniei mele cu Cătă Muntean, dar și a faptului că am avut șansa să avem la liceu un director foarte deschis către elevi (dl. Cerbu), am fost implicat în tot soiul de „proiecte” pornite din ideile elevilor și care au existat pentru elevi. Implicarea mea în proiecte mi-a dat o înțelegere mai bună a modului în care funcționează lumea, și, eram sigur, când urma să merg la facultate, treaba asta cu proiectele urma oricum să fie exponențial mai tare decât ce am făcut în liceu și urma să nu îmi mai văd capul de câte proiecte cool o să mă atragă.

Ideea asta ponește parțial de la faptul că singurul lucru pe care mi l-a dat facultatea când am ajuns aici a fost o palmă după cap și o găleată de apă rece peste, ca să îmi revin din asemenea vise și speranțe. Am fost dezamăgit, și, după cum colegii mei care au îndurat 5 ani în CS.PUB știu, prima parte (primii doi ani, cel puțin) nu ajută de nici un fel la construirea moralului. Eu am avut noroc de oameni deosebiți în jurul meu care m-au sprijinit și m-au ajutat să-mi dezvolt unele calități care altfel supersistemul de aici mi le-ar fi inhibat, dar sunt mulți oameni în facultate care nu au. Și ideea asta este despre ei, nu despre mine.

Idee: Ce ar fi dacă cineva (eu?) ar porni un proiect în care să listeze toate proiectele interesante care ruleaza acum în Poli (și când zic interesante mă refer la proiecte care sunt și altceva decât formalități pe hârtie pentru cumpărat echipament). Proiectele de diplomă ar putea avea o secțiune dedicată (cele considerate interesante, anyways), și eventual viitorii ingineri ar putea să facă invitații către colegii lor. Studenți de ani mai mici ar putea fi informați în legătura cu unele lucruri efectiv super tari care se fac în școală și s-ar putea autoîndruma spre responsabilii de proiect. Headhunterii și marile firme internaționale de profil din București și nu numai ar putea sprijini anumite proiecte de care altfel nu au cum să audă. Viitori studenți ar putea găsi ce eu am sperat să găsesc când ajung la facultate. Ar putea exista și o secțiune liberă, unde idei (ca asta) să fie discutate și eventual făcut un matchmaking intern pentru implementarea lor.

Condiții: O asemenea aplicație ar trebui să aibă o bază de utilizatori (care pot să înscrie proiecte) controlată fie prin cunoașterea directă a persoanelor implicate, fie prin baza de date a facultății. Totodată, așa ceva ar avea succes numai dacă proiectele de care știu eu NU sunt singurele proiecte worth mentioning din facultatea noastră. și, mai ales, dacă studenții nu au ajuns înca ATÂT de plante încât să rejecteze și ideile interesante împreună cu orice altceva li se servește în facultate.

Observație: Ideea asta pornește de la ideea menționată anterior și de la conceptul că proiectele studențești ar trebui promovate în cazul în care sunt interesante (nu doar în sesiuni de comunicări științifice) Ideea asta se bazează și pe o idee discutată anterior cu Micvs, idee în care ne gândeam că poate ar fi cool să știm ce fac unii dintre colegii noștri la licențe, pentru că s-ar putea să fie interesant.

Acțiune: Momentan, și probabil la rata asta de idei, timpul meu este și o să fie praf permanent, dar poate că dacă încep eu ceva și îi dau drumu’ la vale către una din organizațiile de prin școală … Sau poate că a mai avut cineva ideea asta și atunci totul e rezolvat :)