Coffee HOWTO Georgatos Photis gef@ceid.upatras.gr v0.5, 15 Stycznia 1998 WWeerrssjjaa ppoollsskkaa:: LLeesszzeekk UUrrbbaaññsskkii ttyyggrryyss@@ffiiddoonneett..oorrgg..ppll 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 implemen tacjê prze³±cznika W£/WY£ w obwodzie kontroluj±cym zasilanie ekspresu do kawy. Ten dokument zosta³ napisany w standardzie ISO-8859-2. ______________________________________________________________________ Spis tre¶ci 1. Menu 1.1 Kawa francuska 1.2 Nescaffe 1.3 Frappe 1.4 Freddo 1.5 Cappucino (do dodania) 1.6 Espresso (do dodania) 2. Uk³ad elektroniczny 2.1 Napiêcie kontroluj±ce 0-5V z komputera 2.2 Kontrolowanie za pomoc± przeka¼nika 2.3 Kontrolowanie triakiem - sposób 1 2.4 Kontrolowanie triakiem - sposób 2 3. Oprogramowanie 3.1 Program obs³ugi 3.2 Sterownik 3.3 £±czenie siê z Internetem 4. Oznaki przedawkowania 5. Rozszerzenia 6. Odno¶niki 7. Inne 7.1 Wstêp 7.2 Autorstwo i nadzór 7.3 Prawa autorskie 7.4 Dodatkowi autorzy 8. Od t³umacza ______________________________________________________________________ 11.. MMeennuu 11..11.. KKaawwaa ffrraannccuusskkaa 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. 11..22.. NNeessccaaffffee 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ê. 11..33.. FFrraappppee Popularna wersja powy¿szej kawy. W³a¶ciwie nie jest potrzebny ekspres do kawy, a lodówka do otrzymania zimnej wody i kostek lodu. 11..44.. FFrreeddddoo Trudny przepis. Przeczytaj coffe-faq (zobacz odno¶niki) 11..55.. CCaappppuucciinnoo ((ddoo ddooddaanniiaa)) 11..66.. EEsspprreessssoo ((ddoo ddooddaanniiaa)) 22.. UUkk³³aadd eelleekkttrroonniicczznnyy 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. 22..11.. NNaappiiêêcciiee kkoonnttrroolluujj±±ccee 00--55VV zz kkoommppuutteerraa 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 22..22.. KKoonnttrroolloowwaanniiee zzaa ppoommoocc±± pprrzzeekkaa¼¼nniikkaa 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æ... 22..33.. KKoonnttrroolloowwaanniiee ttrriiaakkiieemm -- ssppoossóóbb 11 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 ,,_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. Ekspresy do kawy s± raczej obci±¿eniami oporno¶ciowymi, a nie indukcyjnymi (jak silniki), ale kto wie, jaki jest twój... 22..44.. KKoonnttrroolloowwaanniiee ttrriiaakkiieemm -- ssppoossóóbb 22 +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. 33.. OOpprrooggrraammoowwaanniiee 33..11.. PPrrooggrraamm oobbss³³uuggii Bêdziesz musia³ napisaæ program wykonuj±cy nastêpuj±ce czynno¶ci: · Zdobywa uprawnienia do u¿ywania przestrzeni adresowej I/O, przez odwo³anie do j±dra komend± iiooppeerrmm, np. _i_o_p_e_r_m_(_P_O_D_S_T_A_W_A_, _z_a_k_r_e_s_, _1_)_; · Wykonuje instrukcjê ustawiaj±c± napiêcie 0-5V w porcie równoleg³ym, np. _o_u_t_b_(_1_, _P_O_D_S_T_A_W_A_)_; · Czeka, a¿ kawa bêdzie gotowa. By³oby nie¼le, je¿eli móg³by odczytaæ ten czas z linii komend. · Wy³±cza wtedy ekspres: _o_u_t_b_(_0_, _P_O_D_S_T_A_W_A_)_; · Przed koñcem, powinien oddaæ port - _i_o_p_e_r_m_(_P_O_D_S_T_A_W_A_, _z_a_k_r_e_s_, _0_)_; Zmieñ PODSTAWÊ na 0x3bc dla /dev/lp0, 0x378 dla /dev/lp1 i 0x278 dla /dev/lp2, _z_a_k_r_e_s na 8. Dobrze by³oby daæ programowi prawa setuid, ¿eby ka¿dy móg³ piæ kawê! (UWAGA: _n_i_e ustawiaj tych praw w ,,usieciowionym'' komputerze, grozi to po¿arem itd. wywo³anym przez nieuprawnionych u¿ytkowników! - przyp. t³um.) 33..22.. SStteerroowwnniikk 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±. 33..33.. ££±±cczzeenniiee ssiiêê zz IInntteerrnneetteemm (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 AAppaacchhee... 44.. OOzznnaakkii pprrzzeeddaawwkkoowwaanniiaa · podniecenie · nerwowo¶æ · bezsenno¶æ · czêstoskurcz lub arytmia serca · zaburzenia ¿o³±dkowe · niepokój, pobudzenie 55.. RRoozzsszzeerrzzeenniiaa Oto nasze pomys³y: · Opisany tutaj sprzêt i oprogramowanie mo¿e zostaæ rozszerzone do obs³ugi grzanek, wo³owiny, jab³ecznika itp. · Zestaw o¶miu ekspresów. To pozwoli ci przyrz±dziæ kawê nawet wtedy, gdy jeden jest ju¿ w u¿yciu. Bêdzie to oczywi¶cie mieæ wp³yw na wydajno¶æ. (mo¿e RAIC - Redundant Array of Independent Coffee- machines :-))))) - przyp. t³um.) · Ekspres do kawy o równoleg³ym wektorze bêdzie w przysz³ym wydaniu. · Je¿eli bêdzie ci potrzebna maksymalna automatyzacja, wymagane bêd± dodatkowe uk³ady i czujniki, ¿eby¶ móg³ kontrolowaæ poziom wody, temperaturê i jako¶æ kawy. · W bliskiej przysz³o¶ci zaimplementujemy obs³ugê SNMP. · Szeregowy ekspres do kawy na 115Kbps. 66.. OOddnnoo¶¶nniikkii · http://daisy.uwaterloo.ca/~alopez-o/caffaq.html Internet Coffee-FAQ · http://lonestar.texas.net/~andrew/f_pc.htm Wiele uk³adów w ASCII. Niektóre z nich s± przeznaczone dla portu równoleg³ego. · http://shell.rmi.net/~hisys/parport.html Wszystko, co chcieliby¶cie siê dowiedzieæ o porcie równoleg³ym, ale boicie siê zapytaæ. · http://sunsite.unc.edu/LDP/HOWTO/mini/IO-Port-Programming Programowanie portów I/O w systemie Linux. · http://www.redhat.com:8080/HyperNews/get/khg.html Jak napisaæ w³asne sterowniki urz±dzeñ. Zrób to! · http://www.hut.fi/Misc/Electronics/circuits/parallel_output.html Strona Tomi'ego Engdahl'a jest KONIECZNA do zobaczenia przez ka¿dego lubi±cego elektronikê. · http://www.yahoo.com/Computers_and_Internet/Internet/Entertainment/Interesting_Devices_Connected_to_the_Net/Coffee_Machines/ Ekspresy do kawy on-line. Niestety, nie ma testów. · http://www.cs.su.oz.au/~bob/coffee.html Ten ekspres do kawy robi tylko cappucino. Powinien byæ rozszerzony! · http://einstein.et.tudelft.nl/~janssen/ Gor±ca kawa z Holandii. · 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/ 77.. IInnnnee 77..11.. WWssttêêpp 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. 77..22.. AAuuttoorrssttwwoo ii nnaaddzzóórr 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. 77..33.. PPrraawwaa aauuttoorrsskkiiee Standardowe prawa autorskie wszystkiego od Linuxa... Przeczytaj wszystkie i wybierz najwa¿niejsze. Inaczej nie mo¿esz kopiowaæ tego dokumentu. 77..44.. DDooddaattkkoowwii aauuttoorrzzyy · Krzysztof Kolumb Jego prawdziwe imiê to Cristobal Colon. On jako pierwszy przywióz³ kawê z Ameryki, która zosta³a odkryta przez niego (dla Europejczyków) w roku 1492. · Kostas Lialiambis by³ pierwszym, który odwa¿y³ siê powiedzieæ, ¿e nie mo¿e zrobiæ kawy za pomoc± jego maszyny Linuxowej! · Panagiotis Vrionis i Yannakopoulos Haralambos podrzucili mi interesuj±ce i humorystyczne uwagi. 88.. OOdd tt³³uummaacczzaa Je¿eli znajdziesz jakie¶ b³êdy, daj mi znaæ. :-)