COFFEE-HOWTO

Georgatos Photis, <gef@ceid.upatras.gr>

v0.5, 15 January 1998



  --------------------------------------------------

  Translated by Ilgiz Kalmetev (2:5011/36.6@fidonet)

  --------------------------------------------------



Самые надоедливые замечания по программному обеспечению, которые мне приходилось

когда-либо слышать, это о погоде или что что-то может делать кофе. Так вот, 

Linux ДЕЛАЕТ кофе. И оно вполне приятно на вкус!



В течение длительного времени, человечество задавалось вопросом, как 

мог бы компьютер делать кофе ... Людям нужен кофе, чтобы быть активными и 

достойно держаться перед компьютером в течение длительного времени. Каждый 

знает, что писать программы лучше ночью ...



Основная проблема - как управлять кофеваркой с помощью компьютера, так, чтобы 

она управлялась программно. Это вообще означает, что переключатель "ВКЛ.-ВЫКЛ." 

выполняется в виде схемы, которая управляет питающим напряжением кофеварки.





1. Меню



1.1.  French



Популярный кофе среди программистов, потому что он не нуждается в попечении, как 

и все коммерческое программное обеспечение. Захватывающий вкус вдохновил тысячи 

программистов на написание невероятного программного обеспечения, написанное в 

самые первые наши дни. Windows, например, написан в 5:00 часа утра, благодаря 

именно этому кофе! Результат гарантируется.



1.2.  Nescaffe



Nescaffe - довольно сильный кофе, приготовляемый смешиванием в кипятке кофе, 

сахара и немного воды. Вы обычно берете 1 ложку кофе и 1 ложку сахара с 

небольшим количеством воды и смешиваете это. Тем временем ваш кипяток должен 

быть готов. Как только вода достаточно нагреется, вы смешиваете все вместе и по 

вкусу добавляете молоко.



Хотя вы можете использовать что-нибудь попроще, чем кофеварку, чтобы вскипятить 

воду, я наблюдал этот процесс много раз ...





1.3.  frappe



Популярная разновидность вышеупомянутого кофе. Фактически, кофеварки не 

требуется, достаточно холодильника, чтобы получить холодную воду и кубы ICE.





1.4.  freddo



Это - трудно, читайте coffee-faq (см. ссылки)





1.5.  cappuccino (добавить)





1.6.  (добавить) espresso





2. Электронная схема



Общая диаграмма примерно такая:



--------- 0-5V  --------- ~220V  ---------------

|  PC   |===>===| Цепь  |========|  Кофеварка  | 

---------       ---------        ---------------



Концепция такая - мы подаем управляющее напряжение с компьютера, который 

управляет электрически изолированной схемой с помощью реле или Triac.



Вы должны выбрать схему с реле, если у вас большая кофеварка (более 200W или 

около того), иначе вы можете использовать схему с triac.



Все представленные схемы проверены по крайней мере один раз, но ответственность 

за последствия - ПОЛНОСТЬЮ ВАША. Если вы не знакомы с электроникой, вы не должны 

пробовать сделать эти схемы, иначе вы можете заработать неприятности...



Вы должны быть очень осторожны при экспериментировании с 220V, и в выборе 

соответствующего плавкого предохранителя.





2.1. Подача напряжения 0-5V из компьютера



Вот простой пример, как получить напряжение 0-5V из параллельного порта 

компьютера.



Разъем DB-25         -----    Pin 10 - ACK

(мама) вид           |   |    Pin  9 - D7 

сзади                |   |                           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     /

   \______________________________________________________/





Штырек 1 - Строб (инверсная логика)



Штырьки 2-9 - сигналы ШИНЫ ДАННЫХ, именно то, что записывается в защелки 

параллельного порта командой OUTB.



Штырек 10 - сигнал подтверждения (ACK), управляемый вами, чтобы вы могли подать 

сигнал прерывания на центральный процессор.



Штырьки 18-25 закорочены на землю (GND).



Подробно:



 <= вход  DB25    Cent    Название        Рег

 => выход вывод   pin     сигнала         Бит   Примечание

------  ----    ----    --------          ---     -----------------------------

  =>       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. Управление с помощью реле



Самая простая схема, которую кто-то может построить:





                                    Vcc

                                     |

                                     +------+

                                     |    __|__

                                 Сердечник /^\  Диод 1N4002

                                    Реле  /---\

                                     |      |

                                     +------+

                                     |

                                  | /

                        4.7K    Б |/  К

штырек параллельного >-\/\/\/\/---|        Транзистор n-p-n: BC547A или 2N2222A

порта (данные)                    |\  Э

                                  | V

                                    |

штырек параллельного >--------------+

порта (земля)                       |

                                 Земля





Vcc - напряжение, которое нужно реле по спецификации (обычно 5 или 12V). 

Очевидно, спецификации реле должны быть приемлемы для вашей кофеварки.



Barmen, обычно, имеют тенденцию, помещать реле ПОСЛЕ транзистора, на эммитер (Э) 

вместо коллектора (К). Это - плохо, потому что транзистор ужасно смещен, и это 

может привести к плохому кофе: -). Диод 1N4002 полезен для защиты транзистора от 

токов реле. Если вы не будете его использовать, транзистор потемнеет и начнет 

вонять...





2.3. Управление с TRIAC ©1



Если вы хотите реализовать простую схему, то вы можете использовать драйвер 

triac фирмы Motorola MOC301 [012], вместе с универсальным TRIAC типа SC141D. 

Этот метод имеет то преимущество, что вы не нуждаетесь в дополнительном питании.



Схема для неиндуктивных нагрузок:





               270     1 +-------+ 6    180

         +5v -VAVAVA-----+       +----VAVAVA-----+-------------- Горячая линия

                       2 |  MOC  |               |

       TTL-вход ---------+ 3012  +nc            VA  SC141D

                         |       | 4           / |

                       nc+       +------------/  |

                         +-------+               +----\/\/\/---- Нейтральная линия

                                                     Нагрузка



Если вы собираетесь работать с 220V, то выбирайте 3021. Индуктивные нагрузки 

должны использоваться совместно с блокировочными конденсаторами, см. примечание 

приложения фирмы Motorola AN-780. Кофеварки - это главным образом резистивная 

нагрузка, а не индуктивная (как у двигателя), но кто знает, что там у вас ...







2.4. Управление с TRIAC ©2





       +5VDC

       |    180                      180            2.2k

       +---/\/\/\----+-----+   +----/\/\/-+--/\/\/\---+-------> 120V

                     |    1|   |6         |           |         Горячая

                     |    +=====+         |           | MT1

                     |    | MC  | TRIAC   |          +-+

                     |    | 3032| Драйвер |        G | | TRIAC

                     |    +=====+         |         /| |

                     \    2|   |4         |        / +-+

              2N3904  |----+   |          |        |  | MT2

                     /     |   +--------- | -------+  |

                    V      \              |        |  |

                    |      /              |        \  |

                    |      \ 43    .01u  ---   10k /  |

                    |      /       500V  ---       \  |

                    |      |              |        /  |

                    +------+              |        |  |            Нейтраль

                    |                     +--------+--+---o    o--> 120V

                    /                                    нагрузка

        >-/\/\--|  2N3904

                    \

                     V

                     |

                    ---

                   ///

       Для 220В вы должны соответственно изменить резисторы.





Описание Схемы:



MC3032 - оптопарный TRIAC драйвер. 180-омный резистор устанавливает ток для  

эммитера светодиода в оптопаре. Измените значение этого резистора в случае 

необходимости, чтобы получить приемлемый ток (например, 15 mA).



Обратите внимание, что вы не можете проверить эту схему без нагрузки. TRIAC не 

будет включаться, если он не подключен к AC источнику напряжения, так что вы не 

сможете проверить его на простое переключение без применения AC и нагрузки. 

Обратите внимание на значение 500V на конденсаторе .01 .





3. Программное обеспечение



3.1. Программное обеспечение



Вы должны будете создать выполнимую программу, которая работает примерно так:



≈ Получает разрешение использовать адресное пространство ввода-вывода, вызывая 

ядро, командой ioperm: например ioperm (BASE, range ,1);



≈ Выводит наружу требуемую команду, устанавливая напряжение 0-5V на параллельном 

порту, например, outb (1, BASE);



≈ Ждет в течение достаточного времени, чтобы кофе приготовился. Было бы хорошо, 

в это время контролировать командную строку.



≈ Затем она выключит кофеварку: outb (0, BASE);



≈ Перед окончанием должна отдать обратно параллельный порт командой ioperm 

(BASE, range, 0);



Изменяет BASE = 0x3bc для /dev/lp0, 0x378 для /dev/lp1 и 0x278 для /dev/lp2, 

range=8.



Был бы хорошо, если вы установили эту программу setuid, чтобы каждый мог попить 

кофе!





3.2. Драйвер устройства



Прочитайте kernel hacker's guide, напишите драйвер устройства (я думаю, 

он мог бы быть даже в пространстве пользователя). Пожалуйста, скомпилируйте его 

как модуль, чтобы мы не нуждались в компиляции ядра при каждой модификации. 

Затем напишите:



echo cappuccino >/dev/coffee



И вы получите горячую чашку кофе в течение 1 минуты. Не забудьте дать правильные 

права доступа на /dev/coffee, в зависимости от того, хотите ли вы, чтобы только 

root делал кофе или нет.



Преимущество этого метода в том, что он поддерживает обратную связь от 

кофеварки, используя сигнал ACK параллельного порта, чтобы интеллектуальные 

кофеварки могли бы вырабатывать прерывание.



Это будет вашей домашней работой.





3.3. Соединение с Интернетом



Если вы сделали C программу (см. выше), то для включения/выключения кофеварки вы 

должны написать простой сценарий CGI.



Вы должны написать какую-нибудь симпатичную веб-страницу, объясняя, как делать 

кофе, и поместить ее на веб-сервер apache ...





4. Признаки передозировки



≈ волнение



≈ нервозность



≈ бессоница



≈ tachycardia или сердечная аритмия



≈ нарушение пищеварения



≈ неугомонность





5. Расширения



Вот наши идеи:



≈ Все аппаратное и программное обеспечение, описанное здесь, может быть 

расширено так, чтобы оно поддерживало toast, beaf, applepies и т.д.



≈ Кластер из 8 кофеварок. Это позволит вам иметь кофе даже, когда одна из них 

отрубается. И конечно - повышенная производительность.



≈ Параллельная векторная кофеварка будет в следующем выпуске.



≈ Если вам нужна максимальная автоматизация, то вам будет нужно усложнить схему, 

чтобы вы могли управлять потоком воды, температурой, количеством кофе и т.д.



≈ В ближайшем будущем мы реализуем возможности SNMP.



≈ Последовательная машина кофе на 115Kbps.





6. Ссылки



≈  http://daisy.uwaterloo.ca/~alopez-o/caffaq.html  Это Internet Coffee-FAQ



≈  http://lonestar.texas.net/~andrew/f_pc_.htm Полно схем в ASCII. Некоторые из 

них - для параллельного порта.



≈ http://shell.rmi.net/~hisys/parport.html Все, что вас интересует о 

параллельном порте, но о чем вы не посмели спросить.



≈  http://sunsite.unc.edu/LDP/HOWTO/mini/IO-Port-Programming Программирования 

портов ввода-вывода под популярную операционную систему Linux.



≈  http://www.redhat.com:8080/HyperNews/get/khg.html Как написать ваш 

собственный драйвер устройства. Приходите и делайте!



≈  http://www.hut.fi/Misc/Electronics/circuits/parallel_output.html 

Страницу Томи Енгдахла *должен увидеть* каждый, кто любит электронику.



≈  http://www.yahoo.com/Computers_and_Internet/Internet/ 

Entertainment/Interesting_Devices_Connected_to_the_Net/Coffee_Machines/ 

Кофеварки в он-лайне. К несчастью, тестов нет.



≈ http://www.cs.su.oz.au/~bob/coffee.html Эта кофеварка предлагает только 

cappuccino. А надо бы и другие кофе тоже!



≈  http://einstein.et.tudelft.nl/~janssen/ Горячий кофе из Нидерландов.



≈  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.1. Предисловие



Этот документ был первоначально написан на эллинском (греческом) языке, из-за 

возникших маленьких дебатов в списке почтовой расслки linux-greek-users на тему, 

может ли linux делать кофе или нет. Это было статьей в нашем красивом 

интерактивном журнале Linux, называемом "magaz": http://www.linux.gr/magaz.



Помните, что magaz греческий.





7.2. Авторство и сопровождение



Мое имя - Georgatos Photis, still-yet-foralongmaybe студент на кафедре 

Вычислительной техники и Информатики в университете Patras. Обычно, я занят 

греческой документацией и сопровождением веб-страниц, но я могу принимать 

участие в этом HOWTO, пока это вас не начнет беспокоить.





7.3. Авторские права



The casual copyright with everything you get with linux...  To find it, you'll 

have to read all of them and count the most common.



Иначе, нет, вы не сможете копировать этот документ.





7.4. Благодарности



≈ Christofer Colombus. Его реальное имя - Cristobal Colon. Он был 1-ый, кто 

принес кофе из Америки, который был впервые обнаружен (для европейцев) им в 

1492.



≈ Kostas Lialiambis - тот, кто посмел сказать, что его Linux не может делать 

кофе!



≈ Panagiotis Vrionis, Yannakopoulos Haralambos за предоставление мне интересной 

информации и юмористические примечания.

