Coffee HOWTO

Georgatos Photis gef@ceid.upatras.gr
v0.5, 15 Stycznia 1998
Wersja polska: Leszek Urbañski tygrys@fidonet.org.pl
v1.0, 4 Sierpnia 1998


Jedna z najbardziej zastanawiających uwag o oprogramowaniu, które kiedykolwiek słyszałem - czy ten lub inny program może zrobiæ kawê. Linux POTRAFI ją zrobiæ. I smakuje doskonale! Od długiego czasu ludzkośæ zastanawia siê, czy komputery potrawią robiæ kawê... Ludzie potrzebują kawy, żeby obudziæ siê i nie zasypiaæ przed komputerem przez długi czas. Każdy wie, że najlepsze programy pisze siê w nocy... Głównym problemem jest kontrolowanie ekspresu do kawy komputerem, tak żeby można było sterowaæ go programowo. Ogólnie oznacza to implementacjê przełącznika WŁ/WYŁ w obwodzie kontrolującym zasilanie ekspresu do kawy. Ten dokument został napisany w standardzie ISO-8859-2.

1. Menu

1.1 Kawa francuska

Popularna kawa wśród programistów, ponieważ nie wymaga długiego przygotowania i nadzoru, tak jak programy komercyjne. Jej doskonały smak zainspirował tysiące programistów do napisania wyśmienitych programów, napisanych w pierwszych godzinach dnia. Windowsy na przykład zostały napisane o 5:00 rano, dziêki tej kawie. Wynik gwarantowany.

1.2 Nescaffe

Nescaffe jest dosyæ mocną kawą, gotowaną przez nalewanie gorącej wody do mieszaniny kawy, cukru i wody. Zazwyczaj powinno siê braæ jedną łyżkê kawy i jedną łyżkê cukru, oraz trochê wody w celu zmieszania. W tym czasie powinna zagotowaæ siê gorąca woda. Wtedy zmieszaj ją z resztą - możesz dodaæ mleka. Chociaż możesz używaæ czegoś prostszego niż ekspres do kawy do zagotowania wody, wiele razy widziałem powyższą procedurê.

1.3 Frappe

Popularna wersja powyższej kawy. Właściwie nie jest potrzebny ekspres do kawy, a lodówka do otrzymania zimnej wody i kostek lodu.

1.4 Freddo

Trudny przepis. Przeczytaj coffe-faq (zobacz odnośniki)

1.5 Cappucino (do dodania)

1.6 Espresso (do dodania)

2. Układ elektroniczny

Ogólny schemat wygląda tak:

--------- 0-5V  --------- ~220V  -----------------
|  PC   |===>===| Obwód |========|Ekspres do kawy|
---------       ---------        -----------------

Celem jest wziêcie napiêcia kontrolującego z komputera, które bêdzie napêdzaæ elektrycznie odizolowany układ z przekaźnikiem lub triakiem. Jeżeli twój ekspres do kawy jest duży (wiêcej niż 200W), musisz wybraæ przekaźnik, a jeśli nie, wystarczy triak.

Wszystkie układy tu przedstawione zostały przetestowane raz albo wiêcej, ale TY ODPOWIADASZ ZA SKUTKI UŻYWANIA. Jeżeli nie masz doświadczenia z elektroniką, NIE baw siê z tym, inaczej może ci coś nie wyjśæ...

Powinieneś byæ bardzo ostrożny przy eksperymentach z 220V - można używaæ odpowiedniego bezpiecznika.

2.1 Napiêcie kontrolujące 0-5V z komputera

Oto prosty przykład pobrania napiêcia 0-5V z portu równoległego komputera.

   Widok od tyłu
   Mêskie złącze   -----    Pin 10 - ACK
   DB25            |   |    Pin  9 - D7
                   |   |                           Pin 2 - D0   
~Strobe            v   v                           v   Pin 1 -
    _________________________________________________________
   /                                                         \
   \  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 to ,,Strobe'' (logika odwrotna)

Piny 2-9 to sygnały SZYNY DANYCH (DATA BUS), dokładnie to, co zostało wpisane do (hmm ,,klamek''??? (latches) - przyp. tłum.) komendą OUTB.

Pin 10 to sygnał potwierdzenia (ACK) sterowany przez ciebie, tak żebyæ mógł wyprodukowaæ przerwanie.

Piny 18-25 są zwarte i jest to uziemienie (GND).

Dokładniej:


<= we  pin    Główny  Nazwa    
=> wy  DB25   pin     sygnału   Bit  Uwagi
--------  ----   ------  -------   ---   -----------------------
=>      1       1     -Strobe   C0-   Ustaw niskie napiêcie >0.5us do wysył.
=>      2       2     Dane 0    D0    Ustaw na pierwsze znaczące dane
=>      3       3     Dane 1    D1    ...
=>      4       4     Dane 2    D2    ...
=>      5       5     Dane 3    D3    ...
=>      6       6     Dane 4    D4    ...
=>      7       7     Dane 5    D5    ...
=>      8       8     Dane 6    D6    ...
=>      9       9     Dane 7    D7    Ustaw na ostanie znaczące dane
<=     10      10     -Ack      S6+IRQ Niskie napiêcie ~ 5uS, po zaakcept.
<=     11      11     +Busy     S7-   1 Dla Zajête/Offline/Błąd
<=     12      12     +PaperEnd S5+   1 Dla braku papieru
<=     13      13     +SelectIn S4+   1 Dla wybranej drukarki
=>     14      14     -AutoFd   C1-   Ustaw na 0 dla LF
<=     15      32     -Error    S3+   0 dla Błêdu/Offline/Koñca papieru
=>     16      31     -Init     C2+   Ustaw niskie napiêcie > 50uS do inicjalizacji
=>     17      36     -Select   C3-   Ustaw na 0 do wybrania drukarki
<==>18-25   19-30  GND

2.2 Kontrolowanie za pomocą przekaźnika

Najprostszy możliwy do zbudowania układ to:

                                 Vcc
                                  |
                             +---------+
                             |       __|__
                        Przekaźnik    /^\  Dioda 1N4002
                             |       /---\
                             |         |
                             +---------+
                             |
                           | /
                   4.7K   B|/ C
port równoległy >-\/\/\/\/-|       Tranzystor NPN: BD547A lub 2N2222A
                           |\  E
                           | V
                             |
pin GND portu równ. >--------+
                             |
                         Uziemienie

Połącz Vcc z napiêciem równym napiêciu przekaźnika (zazwyczaj 5 lub 12V). Oczywiście parametry przekaźnika powinny byæ poprawne dla twojego ekspresu.

Barmani czêsto umieszczają przekaźnik ZA tranzystorem, na emiterze (E) zamiast na kolektorze (C). Nie jest to dobre, ponieważ obciąża tranzystor i może byæ powodem zrobienia złej kawy :-). Dioda 1N4002 jest potrzebna do ochrony tranzystora przed napiêciami przekaźnika. Jeśli jej nie użyjesz, tranzystor stanie siê ciemniejszy i zacznie dymiæ...

2.3 Kontrolowanie triakiem - sposób 1

Jeżeli potrzebujesz prostego obwodu, użyj sterownika triaków Motoroli - MOC301[012], razem z triakiem ogólnego zastosowania, takim jak SC 141D. Metoda ta ma zaletê - nie musisz stosowaæ dodatkowego źródła zasilania.

Dla nieindukcyjnych ładunków:

        270     1 +-------+ 6    180
  +5v -VAVAVA-----+       +----VAVAVA-----+-------------- Linia gorąca
                2 |  MOC  |               |
  TTL in ---------+ 3012  +nc            VA  SC141D
                  |       | 4           / |
                nc+       +------------/  |
                  +-------+               +----\/\/\/---- Line Neutralna
                                             OBCIĄŻENIE

Jeżel bêdziesz pracował z napiêciem 220V, wybierz 3021. Do obciążeñ indukcyjnych powinny byæ stosowane kondensatory obejściowe, zobacz ,,Motorola Application Note AN-780. Ekspresy do kawy są raczej obciążeniami opornościowymi, a nie indukcyjnymi (jak silniki), ale kto wie, jaki jest twój...

2.4 Kontrolowanie triakiem - sposób 2

+5VDC
|    180                      180            2.2k
+---/\/\/\----+-----+   +----/\/\/-+--/\/\/\---+-------> 120V
              |    1|   |6         |           |         Gorąca
              |    +=====+         |           | MT1
              |    | MC  | Sterown.|          +-+
              |    | 3032| triaków |        G | | TRIAK
              |    +=====+         |         /| |
              \    2|   |4         |        / +-+
       2N3904  |----+   |          |        |  | MT2
              /     |   +--------- | -------+  |
             V      \              |        |  |
             |      /              |        \  |
             |      \ 43    .01u  ---   10k /  |
             |      /       500V  ---       \  |
             |      |              |        /  |
             +------+              |        |  |            Neutralna
             |                     +--------+--+---o    o--> 120V
             /                                      load
 >-/\/\--|  2N3904
             \
              V
              |
             ---
            ///

Powinieneś zmieniæ rezystory na odpowiednie dla 220V.

Opis obwodu:

MC2032 jest optoizolacyjnym sterownikiem triaka. 180-omowy rezystor zapewnia napiêcie dla diody LED w optoizolatorze. Zmieñ wartośæ rezystora, jeśli to potrzebne, żeby uzyskaæ poprawny prąd (np. 15mA).

Zauważ, że nie możesz testowaæ tego układu bez obciążenia. Triak nie przełączy siê, jeżeli nie bêdzie podłączony do źródła napiêcia zmiennego, nie możesz wiêc testowaæ go bez użycia napiêcia AC i obciążenia. Zauważ napisz ,,500V'' na obudowie kondensatora .01.

3. Oprogramowanie

3.1 Program obsługi

Bêdziesz musiał napisaæ program wykonujący nastêpujące czynności:

Zmieñ PODSTAWÊ na 0x3bc dla /dev/lp0, 0x378 dla /dev/lp1 i 0x278 dla /dev/lp2, zakres na 8.

Dobrze byłoby daæ programowi prawa setuid, żeby każdy mógł piæ kawê! (UWAGA: nie ustawiaj tych praw w ,,usieciowionym'' komputerze, grozi to pożarem itd. wywołanym przez nieuprawnionych użytkowników! - przyp. tłum.)

3.2 Sterownik

Przeczytaj Kernel Hacker's Guide i zaimplementuj sterownik (sądzê, że może on byæ stosowany w trybie użytkownika). Skompiluj go jako moduł, żebyś nie musiał kompilowaæ jądra przy każdym uaktualnieniu. Napisz:

echo cappucino > /dev/coffee

Uzyskasz filiżankê gorącej kawy w minutê. Pamiêtaj, żeby daæ prawidłowe prawa dostêpu do /dev/coffee, zależnie od tego, czy chcesz, żeby kawê robił tylko root, czy nie.

Zaletą tej metody jest obsługa sprzêżenia zwrotnego z ekspresu do kawy przez użycie ACK portu równoległego tak, żeby ,,mądre'' ekspresy mogły tworzyæ przerwanie.

Zrób to jako pracê domową.

3.3 Łączenie siê z Internetem

(zalecam implementacjê tej technologii tylko w sieci LAN, z powodu bezpieczeñstwa - przyp. tłum.)

Jeżeli napisałeś program w C (objaśnienia powyżej), wystarczy zrobiæ prosty skrypt CGI włączający i wyłączający ekspres do kawy. Powinieneś napisaæ kilka ładnych stron WWW wyjaśniających jak zrobiæ kawê i umieściæ je na serwerze WWW Apache...

4. Oznaki przedawkowania

5. Rozszerzenia

Oto nasze pomysły:

6. Odnośniki

7. Inne

7.1 Wstêp

Ten dokument był pierwotnie napisany w jêzyku helleñskim (greckim), ewoluując z małej debaty na liście greckich użytkowników Linuxa, czy Linux potrafi zrobiæ kawê, czy nie. Był on artykułem w naszym piêknym magazynie Linuxowym ,,magaz'': http://www.linux.gr/magaz. Pamiêtaj, że jest on napisany po grecku.

7.2 Autorstwo i nadzór

Nazywam siê Georgatos Photis i jestem (jeszcze-nadal może przez długi czas) studentem wydziału Inżynierii Komputerowej i Informatyki na Uniwersytecie Patras. Jestem zazwyczaj dosyæ zajêty grecką dokumentacją i stronami WWW, ale mogê przyjmowaæ dodatki do tego HOWTO, jeżeli nie bêdziesz niecierpliwy.

7.3 Prawa autorskie

Standardowe prawa autorskie wszystkiego od Linuxa... Przeczytaj wszystkie i wybierz najważniejsze. Inaczej nie możesz kopiowaæ tego dokumentu.

7.4 Dodatkowi autorzy

8. Od tłumacza

Jeżeli znajdziesz jakieś błêdy, daj mi znaæ. :-)