Ciao sono Antonio Luparelli, di professione Ingegnere Informatico e System Integrator. In questo blog cercerò di riportare i casi di studio (Case Study) che quotidianamente affronto in ambito lavorativo e hobbystico. Occasionalmente pubblicherò anche delle ricerche e articoli scritti da me. La tendenza comunque è quella di pubblicare articoli e progetti innovativi su cui lavoro a tempo perso Enjoy Antonio
martedì 28 agosto 2012
Programma predefinito per file .LNK. Win7
I file link(LNK) sono collegamenti per che consentono l'apertura di altri programmi. Purtroppo il programma predefinito per il file con estensione .LNK non esiste.
L'unico modo per risolvere e ripristinare la corretta associazione del programma predefinito per i file LNK è lanciare un fix del registro di windows 7. Scaricate il file allegato di seguito scompattate e lanciate il file con estensione .REG, utilizzando privilegi di amministrazione.
Scarica il file cliccando quì
Enjoy.
Antonio
venerdì 24 agosto 2012
Tennis Machine - Parte 1
Altro progetto fase di Start UP.
Ho deciso di costruire un accrocco, come dicono a Roma, per lanciare la palline da tennis e potermi allenare senza un partner.
Dopo circa un mese di elucubrazioni mentali, sono riuscito a partorire un prototipo, ancora da completare che spare la palline con una velocità di 37,7 m/s(circa 137 Km/h). Facendo un rapido calcolo ha una gittata(teorica) di circa 140 m. E' ancora in fase realizzativa, per ora posto qualche foto, e a breve metterò un video per il primo test.
Il mio segway - YAS - parte 2
Attualmente sono arenato sulla tarature del PID.
Appena avrò trovato i parametri del PID corretti, continuerò con il post ed inizierò a pubblicare tutte le fasi del progetto.
P.S. Le mie figlie anno deciso di rendere la pedana del segway meno anonimo, perciò hanno deciso dei dercorarla:-)
Enjoy.
sabato 14 aprile 2012
Il mio segway - YAS - parte 1

Dicevami che lo scopo di questo progetto è quello di costruirlo con un budget nettamente inferiore, a conti fatti per realizzare il mio prototipo ho speso circa 400€. Fatta questa dovuta introduzione nei prossimi post descriverò come ho fatto a realizzarlo. I componenti utilizzati per la meccanico sono stati 2 motori cc da 250w, 2 batterie da 12v più viti, bulloni, dadi, staffe e ferramenta in generale.
Per la parte elettronica(il cuore del autobilanciamento ho utilizzado un piattaforma opensource con microprocessore denominata Arduino, una manciata di resistenze e condensatori e infine un IMU (Inertial mesurement unit) cioè un'unità di misurazione inerziale in grado di determinare l'accelerazione e la velocità angolare alla quale è sottoposta. Quest'ultima è usata massivamente negli smartphone di ultima generazione.
Nei prossimi post ne parleremo più approfonditamente.
Approposito, dovendo scegliere il nome per questo progetto, dopo qualche titubanza ho optato per un classico nome per i progetti DIY, così ho deciso di battezarlo: YAS (Yet Another Segway) :-)
Enjoy.
Antonio
giovedì 23 febbraio 2012
HowTo - Compilazione Kernel Real Time - Parte 4
Installazione
Se tutto è andato liscio nella nostra Home ci ritroveremo due file linux-headers-2.6.33.2-rt13-CustomRT.deb e linux-image-2.6.33.2-rt13-CustomRT.deb. L'installazione può essere fatta anche da interfaccia grafica, semplicemente facendo doppio click sul file linux-image-2.6.33.2-rt13-CustomRT.deb, al termine dell'installazione installiamo anche l'headers linux-headers-2.6.33.2-rt13-CustomRT.deb.
Se tutto è andato per il meglio riavviando il sistema durante il boot, Grub ci presenterà la possibilità di avviare il sistema con il nuovo kernel realtime. Facciamo ora alcuni test per verificare la reale efficienza del nuovo kernel real time.
Alcuni test
Grazie al pacchetto software SysBench(http://sysbench.sourceforge.net) è possibile eseguire test su CPU, RAM, Theads, Performance del disco... sullo stesso PC avviandolo prima con il kernel configurato di default e poi con quello Real Time. Di seguito i risultati del nostro test:
Kernel vanilla (default) 2.6.28-11-generic | Kernel RealTime 2.6.33.2 |
antonio@antonio-desktop:~$ sysbench --num-threads=20 --test=cpu run sysbench 0.4.10: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 20 Doing CPU performance benchmark Threads started! Done. Maximum prime number checked in CPU test: 10000 Test execution summary: total time: 21.9421s total number of events: 10000 total time taken by event execution: 436.5217 per-request statistics: min: 4.18ms avg: 43.65ms max: 276.19ms approx. 95 percentile: 140.17ms Threads fairness: events (avg/stddev): 500.0000/50.28 execution time (avg/stddev): 21.8261/0.10 | antonio@antonio-desktop:~$ sysbench --num-threads=20 --test=cpu run sysbench 0.4.10: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 20 Doing CPU performance benchmark Threads started! Done. Maximum prime number checked in CPU test: 10000 Test execution summary: total time: 21.3002s total number of events: 10000 total time taken by event execution: 425.1002 per-request statistics: min: 4.22ms avg: 42.51ms max: 98.23ms approx. 95 percentile: 60.25ms Threads fairness: events (avg/stddev): 500.0000/10.16 execution time (avg/stddev): 21.2550/0.02 |
antonio@antonio-desktop:~$ sysbench --num-threads=20 --test=threads run sysbench 0.4.10: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 20 Doing thread subsystem performance test Thread yields per test: 1000 Locks used: 8 Threads started! Done. Test execution summary: total time: 9.7286s total number of events: 10000 total time taken by event execution: 193.7196 per-request statistics: min: 0.35ms avg: 19.37ms max: 235.93ms approx. 95 percentile: 74.65ms Threads fairness: events (avg/stddev): 500.0000/46.77 execution time (avg/stddev): 9.6860/0.10 | antonio@antonio-desktop:~$ sysbench --num-threads=20 --test=threads run sysbench 0.4.10: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 20 Doing thread subsystem performance test Thread yields per test: 1000 Locks used: 8 Threads started! Done. Test execution summary: total time: 8.4843s total number of events: 10000 total time taken by event execution: 169.3573 per-request statistics: min: 0.49ms avg: 16.94ms max: 98.36ms approx. 95 percentile: 43.27ms Threads fairness: events (avg/stddev): 500.0000/34.36 execution time (avg/stddev): 8.4679/0.01 |
Grazie a tutti per l'attenzione.
venerdì 12 agosto 2011
HowTo - Compilazione Kernel Real Time - Parte 3
Per prima cosa effettuaiamo una pulizia del pacchetto rimuovendo residui di precedenti compilazioni.
sudo make-kpkg clean
ora incrociamo le dita, accendiamo un cero alla madonna e lanciamo la compilazione con il comando:
CONCURRENCY_LEVEL=1 fakeroot make-kpkg --append-to-version -CustomRT --initrd kernel_image kernel_headers modules_image
La compilazione dura circa un ora, se durante la compilazione doveste ricevere un messaggio di errore del tipo:
echo “The UTS Release version in include/linux/version.h”; echo ” \”\” “; echo “does not match current version:”; echo ” \”2.6.33-CustomRT\” “; echo “Please correct this.”; exit 2 The UTS Release version in include/linux/version.h does not match current version: “2.6.33-CustomRt” Please correct this. make[1]: *** [debian/stamp/install/linux-image-2.6.33-rc1-amd64] Error 2
allora vi trovate di fronte al bug 498747, che impedisce la compilazione del kernel a causa di alcuni errori nel path degli script. Ci sono due modi per risolvere, il primo è scaricare la patch kpkg-2.6.33.patch, oppure utilizzare il medoto più vecchio del mondo, fare le modifiche manualmente.
Visto che amo tanto fare le cose da me, vi illustro il procedimento per fare le modifiche manualmente:
Andare nella directory ~/linux-2.6.33.2/debian/ruleset/misc aprire il file version_vars.mk con sudo gedit version_vars.mk, e rimuovere la riga:
UTS_RELEASE_HEADER=$(call doit,if [ -f include/linux/utsrelease.h ]; then \
e sostituirla con:UTS_RELEASE_HEADER=$(call doit,if [ -f include/generated/utsrelease.h ]; then \
echo include/generated/utsrelease.h; \
elif [ -f include/linux/utsrelease.h ]; then \
echo include/linux/utsrelease.h; \
else \
echo include/linux/version.h ; \
quindi andare nella directory ~/linux-2.6.33.2/debian/ruleset/targets aprire il file common.mk con sudo gedit common.mk, e rimuovere la riga:
grep LINUX_COMPILER include/linux/compile.h | \
Sostituendola con:
grep LINUX_COMPILER include/generated/compile.h | \
sed -e 's/.*LINUX_COMPILER "//' -e 's/"$$//' >> debian/buildinfo
ifneq ($(strip $(shell test -f version.Debian && cat version.Debian)),)
echo kernel source package used: >> debian/buildinfo
Salvare entrambi i files e rilanciare la procedura di compilazione: CONCURRENCY_LEVEL=1 fakeroot make-kpkg --append-to-version -CustomRT --initrd kernel_image kernel_headers modules_image
oppure
sudo make-kpkg --append-to-version -CustomRT --initrd kernel_image kernel_headers modules_image
Abbiamo finito, nel prossimo tutorial (parte 4) parleremo di come installarlo.
Enjoy
Antonio