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.