COFFEE-HOWTO
di Georgatos Photis, <
[email protected]>
v0.5, 15 Gennaio 1998
L'osservazione sul software pi� noiosa che abbia mai sentito dire � se
questa o quella cosa possano fare il caff�. Linux FA il caff�. Ed �
anche buono! Traduzione italiana a cura di Christopher Gabriel,
[email protected]
Per molto tempo l'umanit� si � chiesta come un computer possa fare il
caff�... Le persone hanno bisogno di caff� per restare sveglie e
stare di fronte ad un computer per molto tempo. Tutti sanno che �
molto meglio scrivere codice durante la notte...
Il problema principale � come poter controllare la macchine del caff�
con il computer, in modo da utilizzare il software per pilotarla.
Queste generalmente significa un interruttore ACCESO/SPENTO
implementato su un circuito che controlla l'alimentazione della
macchina da caff�.
1. Menu
1.1. Alla francese
Caff� molto popolare fra i programmatori poich� non necessita di molta
cura, come tutto il software commerciale. Il suo gusto eccitante ha
ispirato migliaia di programmatori a scrivere software incredibile,
ovviamente scritto sempre nelle prime ore del giorno. Windows per
esempio � stato scritto alle cinque del mattino, grazie a questo
caff�! I risultati sono garantiti.
1.2. Nescaf�
Nescaf� � un caff� molto forte, fatto mescolando acqua calda con una
mistura di caff� e zucchero. Solitamente si prendono un cucchiaio di
caff� e uno di zucchero con pochissima acqua, per miscelarli. Nel
frattempo la vostra acqua dovrebbe gi� bollire. Non appena l'acqua �
calda a sufficienza mescolare tutti assieme e possibilmente aggiungete
del latte. Altrimenti potete usare qualcosa di pi� semplice di una
macchina per caff� per scaldare l'acqua, l'ho visto fare tantissime
volte...
1.3. frappe
Variante popolare del caff� appena menzionato. Attualmente non
necessita di una macchina da caff�, ma di un congelatore per avere
acqua fredda e cubetti di ghiaccio.
1.4. freddo
Questo � molto difficile da fare, leggete le Coffee FAQ ( trovate le
istruzioni delle bibliografia )
1.5. cappuccino (ancora da scrivere)
1.6. (ancora da scrivere) espresso
2. Circuito Elettronico
Il diagramma generale pu� essere una cosa di questo tipo:
--------- 0-5V ---------- ~220V ---------------------
| PC |===>===|Circuito|========| Macchina da caff� |
--------- ---------- ---------------------
Il concetto � quello di prendere il voltaggio di controllo da
computer, che guida un circuito elettronico isolato con un Rel� o un
Triac.
Dovete optare per un circuito Rel� se avete una grande macchina da
caff� ( con un consumo maggiore di 200 Watt ), altrimenti potete
semplicemente usarne uno basato sul Triac.
Tutti i circuiti presentati sono stati sperimentati almeno una volta,
ma i risultati che otterrete saranno TUTTI DI VOSTRA RESPONSABILIT�.
Se non avete esperienze con l'elettronica NON DOVETE provare ad
usarli, altrimenti potete ottenere dei risultati veramente dannosi.
Dovete stare molto attenti mentre sperimentate utilizzando la corrente
elettrica a 220V, e bisogna anche stare attenti a scegliere il
fusibile giusto.
2.1. Pilotare il voltaggio 0-5V dal computer
Ecco un piccolo esempio di come ottenere un voltaggio 0-5V dalla porta
parallela del computer.
Vista posteriore ----- Pin 10 - ACK
Connettore DB-25 | | Pin 9 - D7
Maschio | | Pin 2 - D0
v v v Pin 1 -
~Strobe
____________________________________________________________
/ \
\ 13 12 11 10 9 8 7 6 5 4 3 2 1 /
\ /
\ 25 24 23 22 21 20 19 18 17 16 15 14 /
\______________________________________________________/
Pin 1 � lo Strobe (logica inversa)
Pins 2-9 portano i segnali del bus di dati, esattamente come � scritto
nella documentazione della porta parallela
Pin 10 � il acknowledge signal (ACK), controllato da voi, in modo da
poter produrre un interrupt nella CPU.
Pins 18-25 sono corto-circuitati e rappresentano la massa (GND).
In dettaglio:
<= in DB25 Cent Name of Reg
=> out pin pin Signal Bit Function Notes
------ ---- ---- -------- --- -----------------------------
=> 1 1 -Strobe C0- Set Low pulse >0.5 us to send
=> 2 2 Data 0 D0 Set to least significant data
=> 3 3 Data 1 D1 ...
=> 4 4 Data 2 D2 ...
=> 5 5 Data 3 D3 ...
=> 6 6 Data 4 D4 ...
=> 7 7 Data 5 D5 ...
=> 8 8 Data 6 D6 ...
=> 9 9 Data 7 D7 Set to most significant data
<= 10 10 -Ack S6+ IRQ Low Pulse ~ 5 uS, after accept
<= 11 11 +Busy S7- High for Busy/Offline/Error
<= 12 12 +PaperEnd S5+ High for out of paper
<= 13 13 +SelectIn S4+ High for printer selected
=> 14 14 -AutoFd C1- Set Low to autofeed one line
<= 15 32 -Error S3+ Low for Error/Offline/PaperEnd
=> 16 31 -Init C2+ Set Low pulse > 50uS to init
=> 17 36 -Select C3- Set Low to select printer
== 18-25 19-30, Ground
2.2. Controllare attraverso un rel�
Il circuito pi� semplice che qualcuno possa costruire �:
Vcc
|
+------+
| __|__
Relay /^\ Diode 1N4002
Coil /---\
| |
+------+
|
| /
4.7K B |/ C
parallel port >-\/\/\/\/---| NPN Transistor: BC547A or 2N2222A
data pi |\ E
| V
|
parallel port >--------------+
ground pin |
Ground
Collegate il Vcc allo stesso voltaggio del tipo di rel� ( solitamente
5 o 12V). Ovviamente le specifiche del rel� devono essere adatte alla
vostra macchina da caff�.
I baristi, solitamente, hanno la tendenza di mettere il rel� DOPO il
transistor, al pin emettitore (E) invece che al collettore (C).
Questa � praticamente un disastro poich� il transistor pu� generare un
caff� molto, ma molto cattivo. Il diodo 1N4002 � molto utile per
proteggere il transistor dalla tensione del rel�. Se non lo utilizzate
il transistor diventer� scuro e molto odoroso..
2.3. Controllo attraverso un TRIAC #1
Se desiderate un circuito molto semplice, potete usare il driver triac
MOC301[012] della Motorola, assieme ad un TRIAC multi-funzione come il
SC141D. Questo metodo porta il vantaggio che non necessita di
alimentazione supplementare.
Per un carico non-induttivo usate questa circuiteria
270 1 +-------+ 6 180
+5v -VAVAVA-----+ +----VAVAVA-----+-------------- Line Hot
2 | MOC | |
TTL in ---------+ 3012 +nc VA SC141D
| | 4 / |
nc+ +------------/ |
+-------+ +----\/\/\/---- Line Neutral
LOAD
Se state utilizzando una tensione di 220V, � preferibile un 3021.
Carichi induttivi devono essere utilizzati assieme a dei condensatori
di bypass. Fate riferimento al documento Motorola Application Note
AN-780. Le macchine da caff� usano per lo pi� cariche resistive e non
induttive (come un motore), ma chiss� come � la vostra...
2.4. Controllo attraverso un TRIAC #2
+5VDC
| 180 180 2.2k
+---/\/\/\----+-----+ +----/\/\/-+--/\/\/\---+-------> 120V
| 1| |6 | | Hot
| +=====+ | | MT1
| | MC | TRIAC | +-+
| | 3032| Driver | G | | TRIAC
| +=====+ | /| |
\ 2| |4 | / +-+
2N3904 |----+ | | | | MT2
/ | +--------- | -------+ |
V \ | | |
| / | \ |
| \ 43 .01u --- 10k / |
| / 500V --- \ |
| | | / |
+------+ | | | Neutral
| +--------+--+---o o--> 120V
/ load
>-/\/\--| 2N3904
\
V
|
---
///
Dovete cambiare le resistenza per utilizzare una tensione di 220V.
Descrizione del circuito:
Il MC3032 � un driver TRIAC optoisolatore. La resistenza di 180 Ohm
imposta la corrente per il LED dentro l'optoisolatore. Cambiate il
valore di questa resistenza - se necessario - per ottenere una
corrente accettabile (es. 15 mA).
Da notare che non potete testare questo circuito senza un carico di
tensione. Il TRIAC non cambier� a meno che non sia connesso con una
sorgente di voltaggio AC, quindi non potete testarlo per un semplice
switch senza applicare AC e un carico.
3. Software
3.1. Software
Dovete create un file eseguibile che esegue queste operazioni:
� Ottiene i permessi di I/O chiamandoli dal kernel, con il comando
ioperm: es. ioperm( BASE, range, 1);
� Esegue una istruzione di richiesta in uscita, per impostare il
voltaggio 0.5V sulla porta parallela, es. outb(1, BASE );
� Aspetta il tempo necessario alla preparazione del caff�. Sarebbe
bello se questo intervallo di tempo fosse mostrato nella linea di
comando.
� Quindi deve spegnere la macchina del caff� : outb( 0, BASE );
� Prima di terminare deve restituire la porta parallela con una
istruzione tipo ioperm( BASE, range, 0);
Cambiate BASE = 0x3bc per /dev/lp0, 0x378 per /dev/lp1, e 0x278 per
/dev/lp2, range=8.
Sarebbe molto bello avere questo programma setuid, in modo che tutti
possano bere il caff�!
3.2. Driver di periferica
Leggete qua: kernel hacker's guide, implementate un driver di
periferica (pu� restare in user space, credo). Per favore compilatelo
come un modulo, in modo che non dobbiate compilare il kernel ad ogni
aggiornamento. Quindi scrivete:
echo cappuccino >/dev/coffee
E avrete una calda tazza di caff� pronta in 1 minuto. Ricordatevi di
assegnare i giusti permessi a /dev/coffee, a seconda se solo root pu�
bersi il caff� o meno.
Il vantaggio di questo metodo � che supporta il feedback dalla
macchina da caff� utilizzando l'ACK della porta parallela, quindi
macchine da caff� intelligenti possono produrre un interrupt.
Ecco i compiti per casa.
3.3. Connessione via Internet.
Se avete implementato il programma C ( leggete sopra ), dovete
soltanto scrivere un semplice programma CGI che accende e spegne la
macchina da caff�. Potete anche scrivere qualche pagina web carina,
dove spiegate come fare il caff�, e mettetela in un server web
apache...
4. Sintomi da overdose
� eccitazione
� nervosismo
� insonnia
� tachicardia o aritmia cardiaca
� disturbi gastro-intestinali
� allucinazioni
5. Espansioni
Queste sono le nostre idee:
� Tutto l'hardware e il software descritto in questo documento pu�
essere espanso fino a supportare il tostapane, la bistecchiera, il
forno a microonde etc..
� Creare un Cluster con 8 macchine da caff�. Questo vi permette di
avere del caff� anche se una macchina si spegne. Ovviamente ci
sarano cambiamenti nelle performance
� La prossima release includer� come mettere macchine da caff� in
parallelo.
� Se desiderate la massima automazione avete bisogno di molti altri
circuiti e sensori, in modo da poter controllare il flusso
dell'acqua, la temperatura, la quantit� di caff� etc..
� Verranno in futuro implementate feature per la gestione via SNMP.
� Macchina da caff� seriale a 115Kbps.
6. Riferimenti
�
http://daisy.uwaterloo.ca/~alopez-o/caffaq.html Questa � la Coffee-
FAQ di Internet
�
http://lonestar.texas.net/~andrew/f_pc_.htm Tantissimi circuiti in
ASCII. Alcuni di questi sono per la porta parallela.
�
http://shell.rmi.net/~hisys/parport.html Tutto quello che avreste
voluto sapere sulla porta parallela e non avete mai osato chiedere.
�
http://sunsite.unc.edu/LDP/HOWTO/mini/IO-Port-Programming
Programmazione della porte di I/O per il popolare sistema operativo
Linux.
�
http://www.redhat.com:8080/HyperNews/get/khg.html Come scrivere
driver per periferiche. Avanti, fatelo anche voi!
�
http://www.hut.fi/Misc/Electronics/circuits/parallel_output.html La
pagina web di Tomi Engdahl � un *must* per chiunque si interessi di
elettronica.
�
http://www.yahoo.com/Computers_and_Internet/Internet/
Entertainment/Interesting_Devices_Connected_to_the_Net/Coffee_Machines/
Macchine da caff� online. Sfortunamente non ci sono prove.
�
http://www.cs.su.oz.au/~bob/coffee.html Questa macchinad a caff�
offre solo cappuccino. E` da aggiornare!!
�
http://einstein.et.tudelft.nl/~janssen/ Caff� caldo dall'Olanda.
�
http://circe.chinalake.navy.mil/cgi-bin/spion/snapit.cgi
�
http://www.cl.cam.ac.uk/coffee/coffee.html
�
http://www.menet.umn.edu/coffeecam/
7. etc
7.1. prefazione
Questo documento � stato scritto inizialmente in Greco, risultato di
un piccolo dibattito sulla mailing list linux-greek-users, sul fatto
che Linux possa fare il caff� o meno. C�� stato un articolo sul nostro
bellissimo giornale online su Linux chiamato "magaz":
http://www.linux.gr/magaz. Ricordatevi, questo magaz � in greco.
7.2. Autore
Il mio nome � Georgatos Photis, studente al dipartimento di Ingegneria
Informatica di Patras. Solitamente, sono molto occupato con la
documentazione in greco e la manutenzione di pagine web, ma posso
accettare aggiornamenti per questo HOWTO.
7.3. Copyright
Il mitico copyright che accompagna tutto ci� che � con linux... Per
trovarlo, dovete leggerli tutti e contare quale � il pi� utilizzato.
Altrimenti.. No, non potete copiare questo documento.
7.4. Collaboratori
� Christofer Colombus. Il suo vero nome � Cristobal Colon. E' stato
il primo a portare il caff� dall'America, che lui scopr� per primo
( tra gli Europei ) nel 1492.
� Kostas Lialiambis � colui che si � lamentato sul fatto che non pu�
fare caff� con Linux.
� Panagiotis Vrionis, Yannakopoulos Haralambos hanno contribuito
nelle note umoristiche.