The Big Bang Theory, la definició més aproximada de Geek

setembre 25, 2010

Per fi és cap de setmana! Entre tanta àlgebra, física i càlcul durant la setmana és hora de relaxar-se i explotar els petits plaers. I que millor que amb l’estrena de la nova temporada de “The Big Bang Theory!

Al meu parer, és la meva serie preferida juntament amb House M.D., òbviament no puc comparar-les doncs tracten de temàtiques i gèneres totalment diferents, ambdues però, amb diàlegs realment intel·ligents i que sempre deixen sorpresos als espectadors. No obstant “Big Bang” compta amb un punt fort des de el meu punt de vista, aconsegueix transmetre amb una claredat embriagadora l’”esperit geek” (vegeu la definició a la Wikipedia), cosa que em plena d’orgull a la vegada que aconsegueix arrancar-me moltes rialles degut a les similituds que hi trobo entre la vida dels personatges i la meva.

Si heu seguit l’enllaç anterior haureu vist que us he posat la definició amb anglès, ho he fet perquè la de la Viquipèdia no m’agradava, la veritat és que hi ha molta diversitat d’opinions sobre la definició de geek. La meva definició personal, i crec que la de molts altres és exactament o molt pareguda a la que dona “The Big Bang Theory“. La majoria de definicions que és poden trobar per Internet us diran alguna cosa com: “Tipus de friki amant de les noves tecnologies, la informàtica i Internet”.

Per a mi es molt poc ajustada i realista, amb aquesta definició qualsevol que es compra un telèfon mòbil recent sortit al mercat és un geek. Lògicament això no és així, a banda de les noves tecnologies en general ens agraden totes les rames de la ciència, sobretot la física i l’electrònica. Som éssers molt curiosos que sempre tenim la pregunta “per què?” al cap, cosa que ens du sovintment a ser autodidactes, la majoria dels geeks saben programació, no utilitzen Windows (o molt poc) (molts en gran soltura) i tenen una gran capacitat d’aprenentatge autònom, tot i que aquestes característiques no tenen perquè ser comunes, també pots trobar geeks que es dediquen a desenvolupar fórmules matemàtiques a les taules de classe o a fer petits invents amb el material que troben per on poden, dissenyadors 3D…, i òbviament també en pots trobar alguns que son una autèntica navalla suïssa, és a dir, de tots els colors. El que si compartim tots en comú (més o menys) són els gustos pel cinema, els videojocs i la música: La ciència ficció és la nostra predilecció, a molts també ens agraden els animes japonesos (però no acostumem a llegir manga, aquests son els Otakus) i solem escoltar les BSO de les nostres pel·lícules i videojocs preferits, ah sí! I ens agrada molt “The Big Bang Theory“!

Bé, crec que no hi ha millor definició de geek que veure un capítol de “The Big Bang Theory” (De fet us en deixo dos, el primer i l’últim, per als nouvinguts i per als que ja ens hem tragat les 3 temporades):

http://www.megavideo.com/v/AQY3BBDC9168563040d2348a4d23c7e08c22f3ea

http://www.megavideo.com/v/SB22MF5V3eb463a5bff606ab4ab6dfe5d69dad72

Live long and prosper!

P.D.: Podeu identificar ràpidament a un geek llegint el seu “facebook“, “twitter“, “identi.ca” o similars, tranquils, si ho és, segur que en té. :P


Recopilació de llibres digitals de la UPC

setembre 11, 2010

Ja us vaig presentar ahir upcdigital, un programa que permet baixar i unir en un sol fitxer els llibres procedents de la bibliotècnia de la Universitat Politècnica de Catalunya.

Per mostrar-vos els resultats que n’he tret i sobretot per servir d’utilitat, us penjaré aquí tots els llibres que m’he baixat per al primer curs del Grau en Ciències i Tecnologies de la Telecomunicació, no obstant son assignatures molt genèriques, així que teòricament també serviran per altres carreres. (Format pdf)

Àlgebra Lineal i Equacions Diferencials:

Àlgebra Lineal: Problemes resolts

Àlgebra Lineal: Problemes, exercicis i qüestions

Àlgebra Lineal: Fonaments i estructures

Àlgebra Lineal: Problemas resueltos (castellà)

Equacions diferencials

Equacions diferencials: Teoria y práctica (castellà)

Càlcul:

Aprenentatge de càlcul 1

Aprenentatge de càlcul 2

Càlcul diferencial diverses variables

Càlcul integral

Problemes de càlcul diferencial d’1 variable

Problemes de càlcul diferencial d’n variables

Fonaments de càlcul

Fonaments d’electrònica:

Electrònica en alterna

Fonaments bàsics

Fonaments de física:

Mecànica newtoniana (també inclou ones)

Fonaments d’ordinadors:

D’aquests he decidit no descarregar-ne cap perquè a Internet hi ha manuals i tutorials de C/C++ molt millors del que et pots trobar a la bibliotècnia.

Universitat Politècnica de Catalunya

I si voleu, podeu descarregar-vos tots els llibres de cop: Llibres.zip

Que tingueu una molt bona diada de Catalunya! Feliç 11 de Setembre!


Un programa casolà per baixar llibres digitals de la UPC

setembre 10, 2010

Benvolguts lectors,

Aquest any començo els meus estudis a la UPC. El que us vaig a presentar ara pot ser molt útil per a estudiants d’aquesta universitat.

Molts de vosaltres ja sabreu que molts dels llibres estan en format digital i es poden descarregar des de la bibliotècnia, el problema però, és que solen estar dividits en múltiples arxius i toca descarregar-los un per un, amb la qual cosa acabes sense empremta als dits de tant de fer click, a part de que et toca configurar el proxy del navegador per poder descarregar-los des de fora de la pròpia biblioteca de la universitat.

El cas es que he desenvolupat un program (òbviament per a distribucions GNU/Linux) que permet estalviar-te la tediosa feina de descarregar els llibres arxiu per arxiu. A més la configuració del proxy es realitza “automàgicament“. Es tan simple com indicar-li l’enllaç amb els arxius i l’usuari i la contrasenya de la intranet de la politècnica.

Podeu descarregar-vos el programa aquí: UPCDIGITAL.tar.gz

Per descomprimir-lo obriu una terminal i situeu-vos a la carpeta on es troba l’arxiu:

cd carpeta

Tot seguit desempaquetem:

tar -zxvf UPCDIGITAL.tar.gz

Ara ja podeu accedir a la carpeta on es troba el programa, llegiu-vos el fitxer README per saber com instal·lar el programa i fer-lo funcionar, també hi ha informació de contacte per si voleu aportar alguna millora. Com podreu comprovar es tracta d’un shell script, i per tant no necessita compilar-se.

Moltes gràcies i espero que us sigui útil!


Fitxat per GNULinux.cat

setembre 10, 2010

Recentment els col·laboradors de GNULinux.cat, i en especial Guillem Gilabert que ha comptat en mi des de el primer moment per millorar el seu programa tv3 en els temes de l’instal·lador i la GUI, han pres la noble decisió d’adherir-me com a col·laborador de la web i formar part del seu equip, ja sigui publicant nous articles o mantenint contacte a través de la seva llista de correu.

Amb aquest post pretenc en primer lloc, agrair a l’equip de GNULinux.cat la seva decisió, i en segon donar a conèixer aquest magnífic bloc dedicat plenament al Software Lliure en llengua catalana, una combinació que dona com a resultat una mescla molt valuosa.

GNULinux.cat

Per acabar m’agradaria dir que faré tot el possible per mantenir-me actiu i ajudar en el que sigui.

Cordialment,

Aitor Ruano Miralles (aitorkun)

Enllaç al bloc: http://www.gnulinux.cat


La meva opinió sobre la situació actual de Catalunya

juliol 2, 2010

Estimats lectors,

Deixaré de banda per un moment el fil característic d’aquest bloc per expressar la meva opinió d’un tema que considero de gran importància i essencial per al futur de la meva nació i de moles altres que possiblement es troben en la mateixa situació.

Com molts sabreu el passat dia 28 de Juny de 2010 el Tribunal Constitucional després de la presentació del recurs del PP i el Defensor del Pueblo va dictar sentència a l’Estatut que des de el 2005 s’estava coent al forn del govern de la Generalitat i que expressa la voluntat dels catalans. Podeu veure un resum de les conseqüències d’aquesta sentència a Vilaweb.

No s’ha escoltat la nostra voluntat, i a sobre s’atreveixen a desvalorar l’ús de la nostra llengua, negar-nos la pròpia divisió territorial i disminuir-nos les competències jurídiques entre molts altres, i el que em sembla increïble en ple segle XXI, reiterar fins a 8 cops la frase “la indivisible unidad de España”, a mi, i segurament a molts altres aquesta mena d’afirmacions tant insistents em recorden a una de les més fortes èpoques de repressió a Espanya dels últims temps. No hi havia prou en mencionar-ho un cop.

El govern català ja s’està plantejant de crear un altre Estatut, però que no veuen que aquest text no fa més que humiliar a la nostra nació? Des de Madrid se’n foten de nosaltres. Què volen, esperar 5 anys més? Això em demostra una cosa, la culpa no és tota del govern español, de fet, estan fent bé la seva feina, seguir al peu de la lletra la seva arcaica constitució, no son ells els que tenen un problema d’idees, identitat i coordinació, som nosaltres, els catalans, però sobretot els partits catalans els que no son capaços de defensar amb força la voluntat del seu poble, acomodats a les seves cadires i intentant mantenir una bona relació i reputació amb els que manen, Espanya. I quina és la forma de mantenir aquest equilibri entre govern central i nació? Ah, clar, amb una autonomia ajustada i estatuts fins i enganyosos. És hora d’una renovació política amb partits seriosos, compromesos i d’idees clares.

En la democràcia (“poble”, “governar”) son els ciutadans els que mouen els fils d’una nació mitjançant els seus representants polítics, a Catalunya però, sembla ser que el concepte de democràcia no es té molt clar, son els polítics els que mitjançant textos inútils mobilitzen a la població per fer-los creure que tot va bé. Despertem-nos, ara que la retallada ha estat tant forta que ha dolgut a qualsevol catalanoparlant, i veiem amb els nostres propis ulls, els ulls del poble que la situació és insostenible, i que si volem preservar la nostra cultura, lleis, llengua i tradicions ens hem de plantejar seriosament una alternativa a l’autonomia, d’independència.

En primer lloc, em de fer sentir-nos més enllà del que diguin els partits (el que els interesse) i el que sigui publicat a la premsa. Em de cridar ben fort, amb coratge, com els vells temps en que Catalunya era la viva imatge de la lluita per les idees. Per això proposo, com molts altres secessionistes que a la manifestació del dia 10 de Juliol inundem els carrers d’estelades mostrant al món que l’època de l’autonomia s’ha acabat i que no ens conformem amb això, tapem als polítics i els seus enganys amb la voluntat del poble català. Per la nostra cultura i identitat pròpia! Som una nació!

Em de fer adonar als governs de la força de la nació, que vegin que una modificació de la constitució és necessària, i a partir d’aquí, mitjançant referèndum proclamar d’independència si així ho vol el poble, em de fer que inclús els autonomistes ho vegin necessari. Les llibertats socials son tant importants com les individuals.

Estrenem aquesta nova etapa política amb una nació unida, autodeterminada i forta. Visca Catalunya Lliure!

Aitor Ruano Miralles,

a Amposta el 2 de Juliol de 2010


Reproductor de vídeo/webcam amb C i OpenCV

juny 21, 2010

Bones gent!

Aquesta entrada la dedicaré a fer un petit tutorial d’iniciació a la llibreria OpenCV per a C. Aquesta llibreria desenvolupada per Intel es completament lliure i està encarada al tractament d’imatges, de fet el seu nom complet és Open Computer Vision Library (Llibreria Oberta de Visió per Ordinador) i és realment potent i optimitzada.

Però no us penseu que aquesta llibreria tan sols ens ofereix eines per voltar imatges, canviar els colors o retallar-les, sinó que a més, ofereix capçaleres per control de xarxes neuronals i altres algoritmes per a la detecció d’objectes, moviments, cares… I si recordem que un vídeo no es més que una successió d’imatges, la llibreria OpenCV també permet el tractament de dades de vídeo podent modificar cadascun dels píxels de cada fotograma. Increíble!

Realment, el potencial d’OpenCV radica en la seva senzilla aplicació per a la intel·ligència artificial i el reconeixement de patrons, però com això encara es una mica lluny per als nouvinguts he decidit començar amb un simple reproductor de vídeo o webcam amb llenguatge C, on podrem veure fàcilment com rescatar imatges, fer alguna petita transformació i mostrar-les per pantalla a una velocitat adequada. Tot això amb dos úniques llibreries, OpenCV i la estàndard de C de entrada/sortida.

Abans de començar, recordo però que aquest tutorial no et servirà per aprendre C, sinò com a iniciació a OpenCV, i per tant necessitaràs tenir abans uns coneixements intermitjos del llenguatge. Jo vaig començar aprenent C amb “Aprenda ANSI C como si estuviera en primero“. Si encara no estàs iniciat en el món de la programació es bo començar amb llenguatges senzills i interpretats com és Python, amb molta documentació i realment potent.

Logo d'OpenCV

Be doncs, amb aquesta preliminar introducció comencem amb el tutorial:

Instal·lació de la llibreria OpenCV

OpenCV s’ofereix tant per a sistemes tipus Unix (GNU/Linux i MacOS) com per a Microsoft Windows. En aquest tutorial s’explicarà amb més detall l’instal·lació sota GNU/Linux doncs és el S.O. que utilitzo i amb el que em trobo familiaritzat.

Per a aquells que utilitzen en les seves distribucions GNU/Linux sistemes de paquets i repositoris com .deb o .rpm i apt-get o yum la instal·lació es pot realitzar fàcilment ja sigui des de la línia de comandes o amb un entorn gràfic. Els paquets necessaris son: libcv-dev i libhighgui-dev

En un sistema deb com Ubuntu la instal·lació es pot realitzar executant la següent comanda a la terminal: sudo apt-get install libhighgui-dev

Ja que libhighgui-dev depèn de libcv-dev

El programa d’exemple ha estat desenvolupat amb la versió 2.0.0. que es troba als repositoris oficials d’Ubuntu 10.4, la més recent en aquesta data és la 2.1.0. Si es vol realitzar el tutorial amb aquesta versió es poden seguir les instruccions d’instal·lació de http://opencv.willowgarage.com/wiki/InstallGuide. Us demanarà resoldre algunes dependències com gtk, libjpeg, ffmpeg… Recomano que seguiu la instal·lació descrita en aquest tutorial si us voleu estalviar cert temps, mal de caps i possibles incompatibilitats després.

Per als usuaris de Microsoft Windows, crec, no ho sé a ciència certa, amb l’instalador potser en teniu prou. Si no és així, per favor referiu-vos a les instruccions d’instal·lació oficials. Per a MacOS seguiu les instruccions: http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port

Descàrrega del programa d’exemple

Us deixo dos enllaços als arxius comprimits (tar.gz i zip) amb el codi d’exemple que utilitzarem en aquest tutorial:

Veureu que dintre d’aquests arxius hi ha quatre fitxers:

  1. Llicència GPL, sentiu-vos lliures de modificar i compartir el programa (gpl-3.0.txt)
  2. Codi font del programa, el que realment interessa (reproductor.c)
  3. Executable del programa, i686 32 bits (reproductor)
  4. Makefile per a la compilació en entorns Unix (Makefile)

Començaré detallant el codi font del reproductor i posteriorment passaré a explicar com compilar i executar l’aplicació.

El codi font

El fitxer reproductor.c comença amb una breu descripció del programa i els termes legals de la llicència GPL v.3, això no té més transcendència, anem al que realment importa.

Capçaleres

Les capçaleres necessàries per realitzar les tasques del reproductor són bàsicament <cv.h> i <highgui.h>. La <stdio.h> està inclosa per poder mostrar un missatge d’error en cas de fallada, però no és una capçalera transcendental. A continuació faré una breu descripció de les capçaleres importants:

<cv.h> Inclou tots els tipus de dades i funcions per al tractament d’imatges, pràcticament tot el potencial d’OpenCV radica en aquesta llibreria i això la converteix en la més important. Tot el que et puguis imaginar que pots fer a una fotografia es realitza amb funcions incloses en aquesta capçalera: retallar, voltar, contrastar, combinar, generar, formatar, colorejar…

<highgui.h> Aquesta està orientada a propiciar d’una manera fàcil i ràpida finestres per a la visualització d’imatges generades amb <cv.h> i l’obtenció i salvació d’imatges i vídeos. L’estil de les finestres s’adapta al predeterminat del sistema on corre el programa, per exemple, en gnome serà de tipus gtk, en KDE serà Qt i en MacOS Cocoa. A més, inclou altres funcions útils com la manipulació de temps d’espera i detecció d’events de ratolí i teclat com veure’m.

Bé, anem a la festa de casa int main(int argc, char* argv[]), quin nom més extrany…

Variables

El primer que em de fer és declarar les variables que necessitarem durant l’execució del programa, importants per al funcionament bàsicament en son tres:

IplImage *frame: Aquesta inicialitza un punter a una estructura de dades IplImage, és la forma bàsica d’OpenCV de representar qualsevol tipus d’imatge, ja sigui RGB, escala de grisos, blanc i negre… En aquest cas, “frame” serà un fotograma del vídeo o de la Webcam, el fotograma actual, i serà el que es mostrarà per pantalla, després s’actualitzarà i es mostrarà el següent, d’aquesta forma obtindrem la seqüència de fotogrames que necessitem.

CvCapture *video: Aquesta inicialitza un punter a una estructura de dades CvCapture, és la forma bàsica d’OpenCV d’obtenir i rescatar dades d’un vídeo, ja pot ser un arxiu local com un vídeo provinent de la Webcam, d’aquesta estructura em podem treure dades essencials com el fotograma actual, fotogrames per segon, nombre de fotogrames… La majoria de tipus de variable d’OpenCV segueixen la nomenclatura d’aquesta, del tipus Cv(nom), IplImage és una de les poques excepcions.

int fps: Servirà per salvar els fotogrames per segon del vídeo o la Webcam i així realitzar els càlculs necessaris per adaptar el reproductor a la velocitat de successió de la seqüència. Per exemple, una pel·lícula sol reproduir-se a 24 fps, mentre que la Webcam del meu portàtil funciona a 100 fps.

La variable char key salvarà les tecles que espitxem, i en cas de que una d’aquestes sigui “ESC” finalitzarà el programa.

Funcions

El programa comença amb un condicional if-else que simplement verifica si l’usuari ha introduït algun argument al programa, si és així aquest argument hauria de ser una ruta a un arxiu de vídeo, si no n’ha introduït cap la font de vídeo serà la Webcam.

video = cvCaptureFromFile(argv[1]): Aquesta funció rescata el vídeo indicat en el seu argument (tipus cadena de caràcters), que ha de ser evidentment una ruta cap a l’arxiu. Això permet preparar a l’estructura vídeo per realitzar el flux de la pel·lícula.

fps = (int)cvGetCaptureProperty(video, CV_CAP_PROP_FPS): Aquesta ens permet obtenir les dades del tipus d’estructura CvCapture. Els seus arguments són dos: El punter a l’estructura, en aquest cas video, que conté el flux de la pel·lícula i un identificador de la propietat, en aquest cas CV_CAP_PROP_FPS, que indica la dada que volem obtenir, es dedueix que la dada que obtenim amb aquest identificador són els fps del vídeo. Fem un cast a int perquè el valor que retorna es de tipus double.

video = cvCaptureFromCAM(-1): Aquesta funció és molt pareguda a l’anterior, però enlloc d’obtenir el flux de un arxiu de vídeo ho fa de la Webcam indicada en l’argument. Un -1 indica que no importa quina càmera sigui, per exemple quan tan sols n’hi ha una, els nombres de 0 cap endavant indiquen l’índex de la càmera quan n’hi ha més d’una.

El següent pas és crear la finestra per visualitzar el flux de vídeo:

cvNamedWindow(“aitorkun”, CV_WINDOW_AUTOSIZE): Crea i mostra una finestra amb el nom donat al primer argument i la propietat del segon, de totes formes, l’única opció suportada fins ara és CV_WINDOW_AUTOSIZE que ajusta les dimensions de la finestra al seu contingut. Per a referir-se en properes funcions a aquesta finestra es fa mitjançant el nom donat al primer argument, en aquest cas “aitorkun”.

Fet això entrem al loop principal del programa que genera la seqüència d’imatges:

frame = cvQueryFrame(video): Obtenim el fotograma actual del flux de vídeo indicat en l’argument i el desem a l’estructura de dades IplImage *frame.

cvFlip(frame, NULL, 1): Aquesta funció es pròpia de <cv.h> i el que realitza es un gir de la imatge donada al primer argument. El segon argument indica la estructura de dades de destí, per exemple una altra IplImage, en el nostre cas, però, amb el valor NULL indiquem que volem desar la imatge voltada a la mateixa variable “frame” sobreescrivint l’anterior. Per al tercer argument els valors positius indiquen un gir horitzontal, un valor 0 indica gir vertical i valors negatius un gir tant vertical com horitzontal.

cvShowImage(“aitorkun”, frame): Molt fàcil, aquesta funció mostra la imatge “frame” dintre la finestra “aitorkun”, és a dir, el primer argument indica la finestra sobre la que es mostra la imatge del segon argument.

key = cvWaitKey(1000/fps): En el nostre cas aquesta funció realitza una “doble funció”. Per una banda funciona de temporitzador per pausar l’execució del programa durant el temps indicat en el seu argument (en milisegons), i per l’altra ens retorna un enter amb el codi de la tecla espitxada durant aquest període de temps, en cas de no haver-se espitxat cap tecla retorna un 0. Aquest funció dintre del bucle while resulta de gran utilitat per actualitzar els fotogrames a la velocitat adequada de reproducció de la pel·lícula. Per exemple, un vídeo a 24 fps actualitza el fotograma cada 0.04 segons, ja que mostra 24 fotogrames cada segon. Com que aquest valor s’ha de passar a la funció en milisegons es multiplica per 1000. Així doncs 1/24 * 1000 = 1000/24, on 24 son els fps. Això significa que en aquest cas l’execució normal del programa s’aturarà durant 0.04 segons, i un cop passat aquest temps tornarà a començar el bucle while, actualitzarà el fotograma a frame = cvQueryFrame(video), el mostrarà per pantalla i així successivament.

Finalment, en cas de que l’usuari hagi espitxat la tecla “ESC”, finalitzem el programa:

cvDestroyWindow(“aitorkun”): Destrueix la finestra “aitorkun”, és a dir, tanca la finestra i allibera la memòria.

cvReleaseCapture(&video): Allibera la memòria ocupada pel punter “video”, no volem que es quede el vídeo fent de les seves en segon pla!

Quasi bé totes les funcions que hem utilitzat pertanyen a <highgui.h>, son totes aquelles que involucren vídeo i finestres, de fet, la única que pertany a <cv.h> és cvFlip(frame, Null, 1).

Compilació i execució

Per a entorns Unix com GNU/Linux i MacOS és suficient amb el compilador de C GCC (GNU C Compiler). Per poder compilar les aplicacions que contenen capçaleres d’OpenCV és necessari especificar a GCC la ruta on es troben les capçaleres, les llibreries que aquestes requereixen i els enllaçadors. En el cas de Debian i derivats, com Ubuntu, les capçaleres s’instal·len predeterminadament a /usr/include/opencv/ i les llibreries a /usr/lib/

En Microsoft Windows no sé on s’instal·len els fitxers, però suposo que si es fa en l’instal·lador donarà l’opció de triar les rutes de destí. Tant si utilitzes un IDE (Integrated Development Environment) com es Dev-C++ o Eclipse o un compilador individual com MinGW o Cygwin hauràs d’especificar les rutes.

Per a GCC o qualsevol compilador basat en ell com Cygwin la sintaxis bàsica per compilar una aplicació OpenCV és aquesta:

gcc [programa.c] -o [programa] -I[capçaleres] -L[llibreries] -lcv -lhighgui

Essent [capçaleres] i [llibreries] les rutes de la ubicació de les capçaleres i les llibreries d’OpenCV indicades amb l’opció -I i -L respectivament. L’opció -l indica els enllaçadors de les llibreries i [programa.c] i [programa] son el codi font i l’executable resultant respectivament.

En el meu cas (Ubuntu 10.4, GCC) queda així:

gcc reproductor.c -o reproductor -I/usr/include/opencv/ -L/usr/lib/ -lcv -lhighgui

Es recomanable en Microsoft Windows que l’executable resultant acabi amb extensió .exe.

Per agilitar el procés de compilació es recomanable en entorns Unix crear un fitxer de text anomenat Makefile i utilitzar el programa Make de GNU per automatitzar la compilació, d’aquesta manera és més fàcil aplicar canvis al programa, de totes maneres amb la línia anterior es suficient. Dintre dels arxius comprimits hi ha una mostra de fitxer Makefile. Es pot compilar l’aplicació situant-se amb la terminal a la carpeta amb el Makefile i el codi font i teclejant make.

Un cop compilat el programa es pot executar amb un simple ./[nomdelprograma] a la terminal i situat a la carpeta de l’executable. En Microsoft Windows un simple “doble click” sobre el .exe serà suficient, a no ser que vulgueu reproduir un vídeo, llavors haureu d’especificar la ruta de l’arxiu a la línia de comandes de Windows.

El resultat hauria de quedar semblant a això:

Recordeu que si especifiqueu la ruta de un arxiu de vídeo podreu reproduir una pel·lícula! En cas contrari veureu la vostra Webcam, si en teniu.

Fins aquí el tutorial, espero que us hagi quedat tot més o menys clar i que us hagi servit d’ajuda. Fins la propera!

P.D.: OpenCV no està orientat al tractament de so, així que no té suport per descodificar àudio i per tant per reproduir la música de les pel·lícules, potser en un cert temps incorporo una altra llibreria per incloure’l, però si algun dels lectors vol millorar el programa, endavant! :D


Atmel AVR ATmega1281 ISP Dev-board

juny 20, 2010

Hola lectors/es!

Com soc molt dolent descrivint-me a mi mateix i fent presentacions, començaré el meu nou “blog” amb una entrada prou útil, crec.

Adjunto aquí en uns arxius tar.gz i zip (per a aquells que utilitzen Microsoft Windows) amb l’esquema i el disseny d’un programador i placa de desenvolupament per a l’Atmel ATmega1281. Aquests dos fitxers (l’esquema i el disseny) son en format Eagle (v. 5.9.0.), .sch i .brd respectivament.

Atmel AVR ATmega1281

Per què Eagle? Perquè és gratuït, multiplataforma i suficient potent i professional. Tot i això hagués preferit utilitzar Software Lliure, que dona a l’usuari final més llibertat i control sobre el que executa, el “freeware”, com Eagle, tan sols garanteix que no et costi ni un cèntim de la butxaca adquirir el programa. Desafortunadament no vaig trobar cap solució de Software Lliure que s’adaptés a mi, però no us preocupeu, tard o d’hora n’hi haurà una.

Retornant al fil anterior, el fitxer .brd et permetrà crear els fitxers Gerber/Excellon, necessaris per elaborar plaques professionalment, per exemple a Gold Phoenix PCB. De totes maneres, si vols fer-les manualment pots imprimir la teva pròpia placa a casa, però recorda que els components son SMT (Surface Mount Technology). Paciència i compte amb el pols!

Atmel AVR ATmega1281

Deixo aquí una llista amb algunes de les característiques de la placa:

  • Programació ISP: La més econòmica, tan sols necessites un AVRISP mkII (sobre 30 €) o compatible, o si vols pots fer-ne un tu mateix!
  • Aquest mètode de programació funciona en tots els S.O.!
  • Accés a tots els pins.
  • Rellotge a 16MHz, la màxima freqüència suportada pel microcontrolador.
  • Permet canviar el voltatge de referència del convertidor analògic/digital (predeterminat 5V).
  • Consum de 5V en funcionament.
  • L’he fet tan petit com he pogut!

De totes maneres, si t’agrada fer les coses per tu mateix, o simplement no t’agrada la meva placa, pots utilitzar el fitxer .sch de punt de partida per a fer la teva pròpia.

També existeixen plaques ISP ja elaborades que estan a la venta i son prou econòmiques, m’he topat amb aquesta per al ATmega128 per uns 19 €

Per a aquells que son nous en aquest món i s’han perdut una mica amb el tema del la programació del microcontrolador, deixo aquí un parell d’enllaços útils:

  1. Mètodes i explicació de la programació dels AVR de Atmel
  2. Informació general sobre els AVR de Atmel

Sento si molts dels enllaços refereixen a pàgines web de llengua anglesa, la documentació en català encara és escassa en aquesta rama. Però per això estem els “bloguers” catalans. Amb un temps escriuré una nova entrada explicant el procés general de desenvolupament d’aplicacions amb microcontroladors, ja siguin PIC’s o Atmels per a aquells que es vulguin introduir en aquest món.

Si us plau, per obtenir informació addicional dels temes tractats en aquesta entrada navegueu pels enllaços.

Ara sí, l’esquema i el disseny:

Molta sort!


Follow

Get every new post delivered to your Inbox.