Pagine

lunedì 30 novembre 2009

TechnoRiver: creare codici a barre su windows

Per creare codici a barre esistono moltissimi plugin, software per qualsiasi sistema operativo.

Per windows la maggior parte dei software è shareware o in versione demo.

TechnoRiver è un piccolo plugin; una volta installato, se si apre wordpad o un qualsiasi altro software di gestione testi, è possibile andare nel menù Inserisci->Oggetto.

A questo punto nella lista degli oggetti troverete anche la voce "TechnoRiver Freebar component" come in figura.

Una volta selezionato potete scrivere il vostro codice in formato CODE39.

Semplice e veloce può essere una buona alternativa gratuita ad altri software di questo genere.

venerdì 27 novembre 2009

Arduino e lettore RFID ID-12 Innovations

Premessa: RFID

RFID significa Radio Frequency IDentification ed è un sistema di identificazione di oggetti, animali e persone.
Questo sistema richiede un lettore ed uno o più TAG (o transponder) che non sono altro che oggetti "montati" in qualche modo sull'oggetto da riconoscere.
Quando il TAG passa in prossimità del lettore invia un identificativo univoco (solitamente in formato esadecimale).
La portata di questo sistema è di pochi centimetri ma, grazie ad antenne, è possibile anche arrivare a distanza di qualche metro: tale caratteristica rende questa tecnologia particolarmente interessante.
Facciamo un paio di esempi per semplificare il tutto: un utilizzo classico può trovarsi in fabbrica.
Quando arrivano dei rotoli di metallo ci applico un tag rfid e lo registro. Tutte le volte che un rotolo di metallo esce dal magazzino passa sotto un lettore rfid che identifica l'uscita del rotolo stesso (non DI UN rotolo ma proprio DI QUEL rotolo...) aggiornando la quantità nel database...
Un altro esempio può essere un sistema di tibratura aziendale: all'ingresso dell'ufficio metto un lettore RFID e metto a disposizione di ciascun dipendente un badge che non è altro che un TAG RFID: quando il dipendente entra o esce passa il badge sul lettore che registra ingresso e uscita.
In questo articolo vedremo come montare un lettore RFID su arduino e inviare il segnale al computer. Questo esperimento è stato fatto in collaborazione con Enkel.

Componenti

Gli elementi che servono sono i seguenti:

  • Un arduino da usare come gestore di input ed output tra il lettore, il led ed il PC
  • Un modulo lettore RFID: io ho scelto l'Innovations ID-12
  • Un adattatore di piedinatura per il modulo necessario perchè l'ID-12 ha una piedinatura non compatibile per una breadboard.
  • Uno o più TAG a 125kHz a forma di badge, disco, portachiavi o altro.
  • Componentistica varia (led, buzzer, resistenze)

Procedimento

Prima di tutto occorre saldare il modulo ID-12 (di cui potete trovare il datasheet) sull'adattatore di piedinatura per renderlo compatibile con i fori della breadboard.
Successivamente bisogna collegare i piedini come l'immagine che segue. Alcuni esempi, compreso il datasheet, propone anche di utilizzare un BJT sul piedino del led in modo da amplificare il segnale.
Così facendo, oltre al LED disegnato in figura, è possibile anche inserire un buzzer che permette, nel momento in cui si avvicina il TAG, di segnalare il recepimento della informazione sia in modo visivo (LED), sia in modo sonoro (BUZZ).

Usando una foto effettuata da noi:


La cosa più interessante è stato il codice utilizzato. Abbiamo usato lo sketch per arduino in questa pagina: http://www.arduino.cc/playground/Code/ID12.
Lo riporto di seguito per completezza:

// RFID reader ID-12 for Arduino
// Based on code by BARRAGAN
// and code from HC Gilje - http://hcgilje.wordpress.com/resources/rfid_id12_tagreader/
// Modified for Arudino by djmatic
// Modified for ID-12 and checksum by Martijn The - http://www.martijnthe.nl/
//
// Use the drawings from HC Gilje to wire up the ID-12.
// Remark: disconnect the rx serial wire to the ID-12 when uploading the sketch


void setup() {
Serial.begin(9600); // connect to the serial port
}

void loop () {
byte i = 0;
byte val = 0;
byte code[6];
byte checksum = 0;
byte bytesread = 0;
byte tempbyte = 0;

if(Serial.available() > 0) {
if((val = Serial.read()) == 2) { // check for header
bytesread = 0;
while (bytesread < 12) { // read 10 digit code + 2 digit checksum
if( Serial.available() > 0) {
val = Serial.read();
if((val == 0x0D)||(val == 0x0A)||(val == 0x03)||(val == 0x02)) { // if header or stop bytes before the 10 digit reading
break; // stop reading
}

// Do Ascii/Hex conversion:
if ((val >= '0') && (val <= '9')) {
val = val - '0';
} else if ((val >= 'A') && (val <= 'F')) {
val = 10 + val - 'A';
}

// Every two hex-digits, add byte to code:
if (bytesread & 1 == 1) {
// make some space for this hex-digit by
// shifting the previous hex-digit with 4 bits to the left:
code[bytesread >> 1] = (val | (tempbyte << 4));

if (bytesread >> 1 != 5) { // If we're at the checksum byte,
checksum ^= code[bytesread >> 1]; // Calculate the checksum... (XOR)
};
} else {
tempbyte = val; // Store the first hex digit first...
};

bytesread++; // ready to read next digit
}
}

// Output to Serial:

if (bytesread == 12) { // if 12 digit read is complete
Serial.print("5-byte code: ");
for (i=0; i<5; i++) {
if (code[i] < 16) Serial.print("0");
Serial.print(code[i], HEX);
Serial.print(" ");
}
Serial.println();

Serial.print("Checksum: ");
Serial.print(code[5], HEX);
Serial.println(code[5] == checksum ? " -- passed." : " -- error.");
Serial.println();
}

bytesread = 0;
}
}
}

L'ouput di questo sketch, passando sopra i vari TAG è stato il seguente:

5-byte code: 01 06 8E 2C 95
Checksum: 30 -- passed.
5-byte code: 01 07 84 6B 3F
Checksum: D6 -- passed.
5-byte code: 01 06 8E 1E DE
Checksum: 49 -- passed.
5-byte code: 01 06 8E 2C 95
Checksum: 30 -- passed.


E per chiudere, una foto con birra sullo sfondo e i TAG in primo piano:

mercoledì 25 novembre 2009

Mouse See&Touch

Premessa

Oggi si parla molto di Software Opensource. Con questo termine si intendono programmi liberamente distribuiti ai quali viene allegato il codice sorgente.
In questo modo ogni persona che conosce adeguatamente il linguaggio con il quale quel software è stato scritto, può modificare, migliorare, plasmare il software (scaricato da internet o acquistato dal fornitore) rispetto i propri gusti ed esigenze. Anche wikipedia, parlando di open source fa riferimento solo al software e mai all'hardware.
In questi ultimi anni, però, la comunità si sta muovendo anche nella direzione del hardware open source. In tal caso il produttore, oltre a vendere l'hardware prodotto mette online o fornisce su supporto magnetico, gli schemi per produrre tale hardware in modo del tutto trasparente. In questo modo, se una persona possiede le adeguate conoscenze, può replicare l'oggetto e crearselo "in casa".
Un esempio di questo è la scheda Arduino, prodotto tutto italiano del quale andare fieri: esso è acquistabile online ma si può autocostruire da zero scaricando gli schemi elettronici messi a disposizione sul sito.
Tralascio in questa sede qualsiasi considerazione su questo modello di business che porterebbe il post in una direzione non desiderata e mi limiterò a parlarvi del Mouse See&Touch.

See&Touch: mouse open source per disabili

Il mouse See&Touch significa letteralmente Guarda e Tocca.
L'esigenza che cerca di soddisfare è quella di alcune persone affette da una forma di deficienza motoria che impedisce loro di effettuare movimenti con il mouse di tipo laterale.
Costoro, infatti, riescono solo a effettuare movimenti verticali con la propria mano e, talvolta, senza nemmeno riuscire a dosare la forza.
Per queste persone due ragazzi di Torino, Giovanni Di Mingo e Bruno Benente, hanno progettato e costruito questo mouse.
La richiesta iniziale era stata fatta da Unisinf (unità di soccorso informatico) al GlugTo (Linux User Group di Torino).
Giovanni Di Mingo, socio del GlugTo, ha iniziato a progettare e costruire il mouse See&Touch, rilasciandolo come progetto open source su SourceForge:
http://sourceforge.net/projects/seetouch/
Unisinf e Datarc hanno annunciato in piu' occasioni che il progetto Mouse See&Touch e' open source, come risulta dai seguenti link:
Per chi volesse provarlo già montato e funzionante senza spenderci del tempo sopra... può pensare di acquistarlo presso questo link.
L'autore ve ne sarà grato e voi avreste un'alternativa opensource ad altre tipologie di mouse che potete modificare a vostro piacimento:
http://stores.shop.ebay.it/openhardwaresoftwaresolutions

martedì 17 novembre 2009

Tiddlywiki: un wiki semplicissimo da usare

Premessa

Un wiki è un sistema di condivisione formidabile che permette a più utenti di modificare le pagine direttamente su web senza programmi esterni, senza dover installare software ma interagendo direttamente con il nostro browser. Esistono diversi esempi di wiki su internet ma, a titolo di esempio, basti citare wikipedia la più famosa enciclopedia online redatta completamente da volontari in tutti il mondo e in diverse lingue grazie al wiki.
La maggior parte dei wiki sebbene del tutto trasparente per l'utente e facile da usare (come la struttura usata da wikipedia denominata mediawiki), richiedono l'installazione di software su un server di diversi software quali un webserver (solitamente apache), un sql server (solitamente Mysql) ed un linguaggio che interpreti le informazioni ed i contenuti (solitamente PHP) restituendo una pagina facilmente fruibile dall'utente.

Tiddlywiki: facilità d'uso prima di tutto

Tiddlywiki, a differenza degli altri strumenti che permettono di creare dei wiki, sfrutta una tecnologia decisamente più semplice.
In parole povere, l'utente deve semplicemente scaricare il file,
aprirlo con il browser e iniziare ad usarlo. Punto. I suoi punti di forza sono che non
è necessaria alcuna installazione, la possibilità di utilizzo è agevole con qualsiasi sistema operativo (Linux, Mac, Windows) e qualsiasi browser (Firefox, Camino, Explorer) e soprattutto, estrema portabilità: si può infatti mettere il file su una chiavetta e portarsela in giro sempre con sè.
Ovviamente, per contro, questo wiki ha un uso prettamente personale o, comunque, non permette l'aggiornamento da parte di troppi utenti contemporaneamente. La sua pretesa, comunque, non va certo in questa direzione.
Andando sul tecnico si può dire che gestisce tutti i contenuti in un unico file html ed il motore che permette la modifica, l'aggiornamento, l'aggiunta e la visualizzazione dei contenuti è una serie di javascript che vengono automaticamente caricati sul browser quando apro il file.

Opzioni, configurazioni, informazioni

Il sito principale è http://www.tiddlywiki.com/. Da qui, premendo il link download, si può scaricare il file.
Se si vuole avere una panoramica dei comandi e della sintassi da usare, è possibile fare riferimento a questa pagina http://tiddlywiki.org/wiki/TiddlyWiki_Markup.
TiddlyWiki mette a disposizione anche dei plugin quali la creazione di feed RSS e altre amenità; non avendone ancora testati, però, non mi esprimo in merito ma se qualche lettore ne avesse provati può scrivermelo volentieri.

venerdì 13 novembre 2009

Presenza al Dorkbot Milano 19/11/2009

Il dorkbot è una manifestazione con cadenza mensile che si propone di fare incontrare persone che "lavorano" con l'elettricità in modo più o meno creativa. Artisti, designer, studenti, hobbisti: tutti possono essere i fruitori o i presentatori in questi incontri se maneggiano l'elettricità...

Il 19 settembre del 2009 parteciperò come oratore: se qualcuno dovesse trovarsi da quelle parti (circolo ARCI Metisagge vicino Porta Garibaldi a Milano) imposterò insieme ad un amico (Enkel) un talk sull'uso di Arduino come programmatore di processori AVR. In passato avevo già parlato di questo argomento in questo blog.

sabato 24 ottobre 2009

Linux Day 2009 Torino

Sabato 24 ottobre 2009 ci sarà il Linux Day in tutta Italia.
Il Linux Day è una giornata dedicata a Linux in cui le associazioni che sponsorizzano questo sistema operativo (i LuG), organizzano eventi a tema ed installazioni gratuite sui computer degli utenti che lo richiedono.

A Torino ci sono due associazioni e questi sono i loro siti di riferimento con informazioni sul tema:
Questo anno terrò un talk tecnico su Arduino e Linux presso Cascina Rocca Franca.
In particolare farò vedere come è possibile hackerare il Linksys NSLU2 come mostrato in un mio precedente articolo su questo blog, installando una debian a bordo.
Successivamente mostrerò come Linux possa interfacciarsi con Arduino per creare anche delle applicazioni a livello aziendale.

Questa è la presentazione del mio talk.

martedì 22 settembre 2009

Blat: mail automatiche da Windows

Premessa

Ci sono delle situazioni in cui si desidera l'invio di mail in maniera automatica.
In ambiente Linux e MacOSX questa è una operazione molto semplice grazie al comando mail.
In ambiente Windows, al contrario, non esistono dei programmi all'uopo integrati nel sistema.
Questa esigenza è particolarmente sentita da coloro che amministrano server o macchine remote con windows delle quali, magari, si vuol conoscere periodicamente lo stato di salute o informazioni di varia natura.
Un'altra situazione può essere l'utente che vuole spedire delle newsletter a coloro che sono abbonati al proprio sito web etc etc etc.
In questo articolo vi parlerò di Blat, un ottimo programmino che risponde a queste esigenze in ambiente Windows.

Blat: invio di mail da Prompt MsDOS

Blat è una piccola utility gratuita che funziona da linea di comando e consente di inviare e-mail singole o a più utenti contemporaneamente (tipo newsletter).
Gli autori informano che è possibile usarla anche per fare dello SPAM ma, in questo caso, è necessario pagare 10.000$ agli autori stessi.
Ad un messaggio creato con Blat si possono allegare testi o file in generale con codifica qualsiasi ma non è finita qui.
E' anche possibile mandare mail a server NNTP (server newsgroup) ed in generale qualsiasi tipo di mail siamo abituati a spedire con il nostro programma di posta, blat può inviarlo da linea di comando.
Con delle discrete capacità di programmazione lo si può facilmente integrare all'interno di script che elaborino dei dati ed inviino un report a vari destinatari e qualsiasi cosa la fantasia possa suggerire.

Download e installazione di BLAT

Il sito Web principale di questo
tool è: http://www.blat.net

Da qui è possibile scaricarlo ed installarlo tenendo conto che con poco meno di 100kb avrete un programma di invio mail pienamente funzionante.
Per l'installazione è sufficiente copiare l'esegubile nella cartella
C:\Windows
oppure C:\Windows\System32

Prima di inviare mail con Blat, però, è necessario procedere con una breve configurazione tramite il prompt dei comandi (si da per scontato che l'utente sappia aprire il prompt).
Tale configurazione consiste nell'informare il programma quale sia il Server SMTP di riferimento ed il nome
del mittente che apparirà a chi riceverà le future mail.
Per far ciò si può digitare un comando come segue:

blat -install mail.server.it prova@server.it

Dove mail.server.it è l'indirizzo del vostro server SMTP e prova@server.it
è l'indirizzo del mittente delle e-mail.
Se tutto è andato a buon fine, Blat risponderà che il server SMTP è stato impostato.
Purtroppo queste informazioni di profilo saranno immagazzinate nel registro di Windows e questo implica che se non siete amministratori del sistema sarete interdetti da tali modifiche.

Spedire un'e-mail con Blat

A questo punto tutto è pronto.
Possiamo cimentarci con il primo invio di mail:

blat - -to altraprova@gmail.it -subject "Prova" -body "Hello World"

Questa linea di comando è composta da quattro parametri:

  • (-) il trattino iniziale comunica al programma che il corpo del messaggio non sarà un file di testo ma seguirà una opzione -body.
  • -to comunica l'indirizzo mail del destinatario
  • -subject specifica l'oggetto della mail
  • -body da usare in concomitanza con il trattino iniziale: specifica il corpo del messaggio

Se invece del trattino iniziale si desidera scrivere un messaggio su un file di testo e spedirlo come corpo della mail, possiamo variare il comando precedente come segue:

blat prova.txt -to altraprova@gmail.it -subject "Prova"

In questo caso abbiamo specificato che il corpo dell'e-mail dovrà essere
preso dal file prova.txt
Oltre alle opzioni specificate in questo breve articolo ve ne sono molte altre disponibili. Come sempre accade per questo tipo di utility, esiste una opzione di help che ci viene in aiuto:

blat /?

Come detto precedentemente questo strumento è utilissimo soprattutto se inserito nel contesto di uno script.
Sicuramente colma una lacuna, secondo me enorme, del sistema operativo in questione che non prevede uno strumento integrato che risponda a questa esigenza.