  COFFEE-HOWTO
  di Georgatos Photis, <gef@ceid.upatras.gr>
  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,
  cgabriel@pluto.linux.it

  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1..  MMeennuu

  11..11..  AAllllaa ffrraanncceessee

  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1..22..  NNeessccaaff

  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1..33..  ffrraappppee

  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1..44..  ffrreeddddoo

  Questo  molto difficile da fare, leggete le Coffee FAQ ( trovate le
  istruzioni delle bibliografia )


  11..55..  ccaappppuucccciinnoo ((aannccoorraa ddaa ssccrriivveerree))

  11..66..  eesspprreessssoo ((aannccoorraa ddaa ssccrriivveerree))



  22..  CCiirrccuuiittoo EElleettttrroonniiccoo

  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2..11..  PPiilloottaarree iill vvoollttaaggggiioo 00--55VV ddaall ccoommppuutteerr

  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..22..  CCoonnttrroollllaarree aattttrraavveerrssoo uunn rreell

  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2..33..  CCoonnttrroolllloo aattttrraavveerrssoo uunn TTRRIIAACC ##1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 _M_o_t_o_r_o_l_a _A_p_p_l_i_c_a_t_i_o_n _N_o_t_e
  _A_N_-_7_8_0.  Le macchine da caff usano per lo pi cariche resistive e non
  induttive (come un motore), ma chiss come  la vostra...


  22..44..  CCoonnttrroolllloo aattttrraavveerrssoo uunn TTRRIIAACC ##2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3..  SSooffttwwaarree



  33..11..  SSooffttwwaarree

  Dovete create un file eseguibile che esegue queste operazioni:

    Ottiene i permessi di I/O chiamandoli dal kernel, con il comando
     iiooppeerrmm: es. _i_o_p_e_r_m_( _B_A_S_E_, _r_a_n_g_e_, _1_)_;

    Esegue una istruzione di richiesta in uscita, per impostare il
     voltaggio 0.5V sulla porta parallela, es. _o_u_t_b_(_1_, _B_A_S_E _)_;

    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 _i_o_p_e_r_m_( _B_A_S_E_, _r_a_n_g_e_, _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3..22..  DDrriivveerr ddii ppeerriiffeerriiccaa


  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..33..  CCoonnnneessssiioonnee vviiaa IInntteerrnneett..

  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
  aappaacchhee...


  44..  SSiinnttoommii ddaa oovveerrddoossee


    eccitazione

    nervosismo

    insonnia

    tachicardia o aritmia cardiaca

    disturbi gastro-intestinali

    allucinazioni


  55..  EEssppaannssiioonnii

  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6..  RRiiffeerriimmeennttii


    http://daisy.uwaterloo.ca/~alopez-o/caffaq.html Questa  la CCooffffeeee--
     FFAAQQ 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7..  eettcc

  77..11..  pprreeffaazziioonnee

  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7..22..  AAuuttoorree

  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7..33..  CCooppyyrriigghhtt

  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7..44..  CCoollllaabboorraattoorrii


    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.



