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. 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 espresso(ancora da scrivere)

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:

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

5. Espansioni

Queste sono le nostre idee:

6. Riferimenti

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