Una ciabatta controllata da USB

Da raspibo.
Jump to navigation Jump to search

A dire il vero questo progetto non e' realizzato con Raspberry PI ma con un Atmega8, potete comunque attaccare questa ciabatta a un HUB collegato al Raspberry PI per accendere e spegnere apparati. (Occorre l'HUB perche' quando tutti i Rele' sono attaccati forse non basta la corrente fornita dalle porte USB del Raspberry PI).

Ecco le foto:

USBpowerstrip.jpg

USBpsopen.jpg

Il progetto usa la libreria v-usb che implementa USB 1.1 completamente via software in microcontrollori atmega.

Come si vede dalla foto della ciabatta aperta ci sono due circuiti (collegati fra loro con un cavo flat):

  • quello attaccato al frutto, che ha la presa USB e il microcontrollore
  • quello fissato sul fondo dove sono installati i 4 rele' (con i 4 transistor BC547 e i diodi 1N4007 come descritto qui)

Tutto il circuito e' alimentato via USB. La tensione di rete e' attaccata solamente ai contatti delle commutazioni dei rele'.

Ecco lo schema elettrico della scheda USB:

Powerstrip.png

e questo e' lo schizzo della scheda rele' (sono 4 circuiti uguali con il transistor NPN che pilota un rele')

Powerele.png

Il software

PowerStrip.tgz

Il software si compone di due parti, una da caricare sul Atmega8 a bordo della ciabatta e l'altra serve per generare il comando che potete usare con un Raspberry PI o un altro computer.

Il circuito prevede l'uso di uno dei programmatori per AtMega della Tux graphics. Se usate un altro programmatore i fili sono gli stessi ma il connettore e' diverso.

Compilate il firmware (occorre sulla macchina GNU-Linux la toolchain per avr, avr-gcc)

cd firmware
make hex

poi collegato il programmatore caricate l'hex sulla scheda

make flash
make fuse

(se non settate i "fuse" non funziona, dovete settare il clock del microcontrollore indicando la presenza dell'oscillatore quarzato a 12Mhz).

A questo punto andate nella directory commandline. Ci sono due comandi: uno scritto in C e uno in Python. Per la versione C occorre il pacchetto Debian libusb-dev (o l'equivalente in altre distro), per la versione python occorre python-usb.

Per python se avete la libreria pyusb (caricata col pacchetto python-usb) tutto dovrebbe funzionare subito, per il C occorre chiamare "make".

Come Funziona

I quattro rele' sono indicati con le prime 4 lettere dell'alfabeto a,b,c,d, minuscole se il rele' e' spento e maiuscole se e' acceso. Il comando set-out (o set-out.py) ha gli stessi parametri (dovete essere root per accesere alle porte USB direttamente).

# ./set-out status
OUT is abcd

significa che sono tutti spenti.

La sequenza che segue e' auto-esplicativa. Accendo il primo e il terzo rele', controllo quali sono accesi, poi spengo il terzo e accendo il quarto, controllo quali sono accesi, Accendo il secondo, controllo, Spengo il secondo, controllo, accendo tutto, controllo, spengo tutto, controllo.

# ./set-out AC
# ./set-out status
OUT is AbCd
# ./set-out cD
# ./set-out status
OUT is AbcD
# ./set-out B
# ./set-out status
OUT is ABcD
# ./set-out b
# ./set-out status
OUT is AbcD
# ./set-out ABCD
# ./set-out status
OUT is ABCD
# ./set-out abcd
# ./set-out status
OUT is abcd