Linux & Hardware Interface on USB Bus
Lo scopo di questo articolo è quello di far conoscere agli utenti una interfaccia che integra un bus I/O digitale e analogico gestibile tramite la ormai nota USB.
L'interfaccia in questione K8055 è prodotta in kit o già assemblata dalla
Velleman reperibile in Italia da
Futura Elettronica.
L'interfaccia K8055 dispone di 5 ingressi e 8 uscite digitali open collector, 2 ingressi analogici e 2 uscite analogiche DAC e PWM (
PulseWidthModulation) ed è alimentata direttamente dalla presa USB.
In particolare gli ingressi digitali 1 e 2 dispongono della funzionalità di contatore azzerabile via software e la regolazione del tempo di
AntiRimbalzo.
Come facilmente intuibile le applicazioni che possono essere sviluppate sono davvero molteplici, come ad esempio centrali di allarme, centrali domotiche, controllo e rilevazione di grandezze fisiche e chi più ne ha più ne metta.
Per iniziare occore aver procurato una interfaccia K8055, installato un kernel del ramo 2.6 con supporto USBFS abilitato, installato le
LibUsb dalla v0.1.8 o superiore, e recuperato uno dei pacchetti software per realizzare i primi esperimenti.
Ho preferito utilizzare il pacchetto k8055-utbm v0.3 prelevabile da
http://soft.pmad.net/files/k8055/ invece di quello indicato sul sito della Velleman in quanto è perfettamente funzionante e non mi ha dato problemi di compilazione.
Scaricate e installate il software:
# tar -xvjf k8055-utbm-src-0.3.tbz
# cd k8055_src/
# ./build_linux
Connettete il dispositivo alla porta USB, il led dell'uscita 8 comincia a lampeggiare per un paio di secondi... il dispositivo è pronto a ricevere i comandi!
Vediamo la sintassi:
# ./k8055 --help
K8055 version 0.3 UTBM Build
Copyright (C) 2004 by Nicolas Sutre
Copyright (C) 2005 by Bob Dempsey
Copyright (C) 2005 by Julien Etelain and Edward Nys
Syntax : ./k8055 [-P:(number)] [-D:(value)] [-A1:(value)] [-A2:(value)] [-NUM:(number) [-DELAY:(number)]]
[-DBT1:(value)] [-BDT2:(value)] [-reset1] [-reset2] [-debug]
-P:(number) Set board number
-D:(value) Set digital output value (8 bits in decimal)
-A1:(value) Set analog output 1 value (0-255)
-A2:(value) Set analog output 2 value (0-255)
-NUM:(number) Set number of measures
-DELAY:(number) Set delay between two measures (in msec)
-DBT1:(value) Set debounce time for counter 1 (in msec)
-DBT2:(value) Set debounce time for counter 2 (in msec)
-reset1 Reset counter 1
-reset2 Reset counter 2
-debug Activate debug mode
Exemple : ./k8055 -P:1 -D:147 -A1:25 -A2:203
Output : (timestamp);(digital);(analog 1);(analog 2);(counter 1);(counter 2)
Note : timestamp is the number of msec when data is read since program start
Example : 499;16;128;230;9;8
499 : Measure done 499 msec after program start
16 : Digital input value is 10000 (I5=1, all other are 0)
128 : Analog 1 input value is 128
230 : Analog 2 input value is 230
9 : Counter 1 value is 9
8 : Counter 2 value is 8
Attiviamo l'uscita digitale 2:
#./k8055 -D:2
Procuratevi un multimetro possibilmente digitale e misuriamo la tensione dall'uscita analogica DAC1:
# ./k8055 -A1:64
# ./k8055 -A1:128
# ./k8055 -A1:255
# ./k8055 -A1:0
Verifichiamo lo stato degli ingressi:
# ./k8055
otterrete un output simile a questo se tenuto premuto il tasto 5:
499;16;128;230;9;8
dove il secondo valore corrisponde all'ingresso 5 (5° bit) in decimale 16.
ATTENZIONE: COLLEGARE AGLI INGRESSI E ALLE USCITE TENSIONI E CARICHI INDICATI NELLE SPECIFICHE DEL PRODUTTORE PENA IL DANNEGGIAMENTO DELLA SCHEDA O DEL PERSONAL COMPUTER.
SI CONSIGLIA DI CONNETTERE INTERFACCE DI ESTENSIONE ISOLATE GALVANICAMENTE (FOTOACCOPIATORI-RELE').
Buon divertimento ! ! ! ... Ma non è finita qua
--
GiuseppeVentrella - 07 Jun 2006
Inizio pagina