COFFEE-HOWTO

Georgatos Photis

     [email protected]
   

Перевод: Михаил Корепанов, SWSoft Pte Ltd.

версия 0.5, 15 января 1998г.

Один из наиболее надоевших вопросов по программному обеспечению - это может ли та или другая программа приготовить кофе. Итак Linux МОЖЕТ делать кофе. И даже неплохой!


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

Основная проблема - как контролировать кофеварку при помощи компьютера так, чтобы это делала программа и управляющая схема в блоке питания кофеварки.


1. Mеню

1.1. Кофе по-французски

Популярный способ приготовления кофе среди программистов, потому как не требует пристального внимания к процессу приготовления, как и все коммерческое программное обеспечение. Его незабываемый аромат в первые часы наступившего дня вдохновил тысячи программистов на написание шедевров. Например, благодаря этому кофе, Windows был написан в 5:00 утра! В общем, результат гарантирован.


1.2. Нескафе

Нескафе - это довольно крепкий кофе, приготавливаемый путем добавления горячей воды в смесь кофе, воды и сахара. Обычно вы берете одну ложечку кофе и одну сахара, добавляете небольшое количество воды для размешивания. В это время у вас должна закипать вода. Как только вода достаточно нагрелась, вы все перемешиваете и добавляете молоко по вкусу. Хотя можете использовать для кипячения воды что-то более простое, чем кофеварка. Такую схему работы я видел много раз...


1.3. frappe

Популярная версия предыдущего кофе. В действительности, он не требует никакой кофеварки, а скорее холодильника для приготовления холодной воды и льда.


1.4. freddo

Это наиболее сложный, читайте кофе-faq (смотрите ссылки)


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

Общая схема выглядит следующим образом:

--------- 0-5V  --------- ~220V  ----------------
|  ПК   |===>===|Схема|========|Кофеварка|
---------       ---------        ----------------

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

Вы должны использовать реле, если у вас большая кофеварка (с мощностью 200W и более), иначе подойдет и симистор.

Все предложенные схемы были проверены, но ОТВЕТСТВЕННОСТЬ ЗА РЕЗУЛЬТАТ лежит на ваших плечах. Если у вас нет необходимого опыта в обращении с электроникой, вы НЕ должны пробовать это делать, иначе все может закончиться очень плохо...

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


2.1. Напряжение 0-5В, поступающее с компьютера

Простой способ получения напряжения 0-5В с параллельного порта компьютера:

      Вид сзади          -----    Вывод 10 - ACK
      Папа DB-25         |   |    Вывод  9 - D7
      Разъем             |   |                           Вывод 2 - D0
                         v   v                           v   Вывод 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     /
         \______________________________________________________/

Контакт 1 Это строб (инвертированный)

Контакт 2-9 Сигналы ШИНЫ ДАННЫХ - то, что было записано в параллельный порт командой OUTB.

Контакт 10 Сигнал подтверждение (ACK), вызывающий соответствующее прерывание процессора.

Контакт 18-25 Земля (GND).

Подробнее:

<=вход  DB25  Centronix Название         Reg
=>выход                 Сигнала          Bit     примечания
------  ----    ----    --------        ---     -----------------------------
=>       1       1      -Строб          C0-     Устанавливает низкий уровень при посылке на <0.5 нс
=>       2       2      Data 0          D0      Младший бит данных
=>       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      Старший бит данных
<=      10      10      -Ack            S6+     Импульс подтверждения ~ 5 нс
<=      11      11      +Busy           S7-     Занят
<=      12      12      +PaperEnd       S5+     Нет бумаги
<=      13      13      +SelectIn       S4+     Принтер выбран
=>      14      14      -AutoFd         C1-     Автоперевод строки
<=      15      32      -Error          S3+     Ошибка
=>      16      31      -Init           C2+     Инициализация (импульс < 50нс)
=>      17      36      -Select         C3-     Выбор принтера
==          18-25   19-30,  Ground




2.2. Управление при помощи реле

Простейшая схема, которую может собрать любой:


                                Vпит
                                 |
                                 +------+
                                 |    __|__
                               Реле    /^\  Диод 1N4002
                                      /---\
                                 |      |
                                 +------+
                                 |
                              | /
                    4.7K    Б |/  К
параллельный порт>-\/\/\/\/---|        NPN Транзистор: BC547A или 2N2222A
данные                        |\  Э
                              | V
                                |
параллельный порт >-------------+
земля                           |
                          Земля


Подсоединить Vпит к источнику питания с напряжением, при котором срабатывает реле (обычно 5 или 12В). Характеристики реле должны подходить к кофеварке.

Не рекомендуется устанавливать реле ПОСЛЕ транзистора на выход эмиттера, вместо выхода коллектора. Это плохо отразится, как на работе транзистора, так и на качестве кофе :-). Диод 1N4002 служит для защиты транзистора от напряжения реле, и, если вы его уберете, то, возможно, транзистор у вас станет темнее и будет пахнуть горелым ...


2.3. Управление при помощи симистора #1

Если вы хотите сделать простую схему, то можете использовать схему управления Motorola MOC301[012] с симистором SC141D. Преимущество этого метода в том, что не требуется дополнительного источника питания.

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


        270     1 +-------+ 6    180
  +5v -VAVAVA-----+       +----VAVAVA-----+-------------- фаза
                2 |  MOC  |               |
Вход TTL ---------+ 3012  +н.и.          VA  SC141D
                  |       | 4           / |
              н.и.+       +------------/  |
                  +-------+               +----\/\/\/---- ноль
                                              нагрузка

Если вы собираетесь работать с напряжением 220В, то предпочтительно использование MOC3021. Индуктивные нагрузки должны быть зашунтированы конденсатором, см Motorola Application Note AN-780. Кофеварки - это обычно неиндуктивные нагрузки (как двигатели), но кто знает что у вас...


2.4. Управление при помощи симистора #2

+5В
|    180                      180            2.2k
+---/\/\/\----+-----+   +----/\/\/-+--/\/\/\---+-------> 120V
              |    1|   |6         |           |         фаза
              |    +=====+         |           | MT1
              |    | MC  |         |          +-+
              |    | 3032|         |        G | | Симистор
              |    +=====+         |         /| |
              \    2|   |4         |        / +-+
       2N3904  |----+   |          |        |  | MT2
              /     |   +--------- | -------+  |
             V      \              |        |  |
             |      /              |        \  |
             |      \ 43    .01нф ---   10k /  |
             |      /       500V  ---       \  |
             |      |              |        /  |
             +------+              |        |  |             ноль
             |                     +--------+--+---o    o--> 120V
             /                                    нагрузка
    >-/\/\--|  2N3904
             \
              V
              |
             ---
            ///
вы должны заменить резисторы соответственно для 220V.

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

MC3032 - это оптрон развязки симистора. Резистор на 180 Ом устанавливает напряжение на управляющем эмиттере оптрона. Если необходим другой ток (например 15мA) - измените сопротивление этого резистора.

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


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

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

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

  • Получить разрешение на использование адресного пространства Ввода/Вывода, обратившись к ядру командой ioperm, например, ioperm (BASE, range, 1);

  • Выполнить команду out для установки напряжения 0-5В на параллельном порту: например 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

И через минуту вы будете наслаждаться чашкой кофе. Установите соответствующие права на файл /dev/coffee - хотите ли вы, чтобы кофе готовил только root или кто-нибудь другой.

Преимущества данного метода заключаются в том, что он поддерживает обратную связь с кофеваркой, при помощи сигнала ACK параллельного порта.

Пусть это будет вашим домашним заданием.


3.3. Соединение с Internet

Если вы написали программу на C (см. выше), вы можете написать простенький CGI-скрипт для включения и выключения кофеварки. Неплохо было бы написать несколько познавательных страничек, объясняющих, как делать кофе и положить их на сервер apache ...


4. Симптомы передозировки

  • Воодушевление

  • Повышенная нервозность

  • Бессонница

  • Тахикардия или кардиоаритмия

  • Желудочно-кишечные возмущения

  • Беспокойство


5. Пояснения

Здесь изложены несколько наших идей:

  • Все идеи, предложенные здесь, могут применяться к тостам, ростбифам, булочкам и т.д.

  • Создайте кластер, состоящий из 8 кофеварок. Это позволит вам иметь кофе даже тогда, когда у вас сломается одна из кофеварок. Ну и, разумеется, это будет хит сезона.

  • Если вы хотите еще больше автоматизировать процесс, вам понадобятся еще больше схем и датчиков, для контроля потока воды, температуры, количества кофе и т.д.

  • В будущем мы планируем внедрить поддержку SNMP.

  • Последовательное соединение с кофеваркой на 115КБит/сек.


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 Страничка Tomi Engdahl. Обязательна для посещения всем, кто любит электронику.

  • http://www.yahoo.com/Computers_and_Internet/Internet/ Entertainment/Interesting_Devices_Connected_to_the_Net/Coffee_Machines/ Кофеварки on-line. К сожалению не протестированы.

  • 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, может или не может Linux делать кофе. Заметка была размещена в журнале: http://www.linux.gr/magaz. на греческом языке.


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

Меня зовут Georgatos Photis, я все-еще-может-быть студент факультета Компьютерной Инженерии и Информатики в Университете города Патрас. Обычно я занимаюсь сопровождением греческой документации и страничек, но предложения по улучшению этого HOWTO тоже принимаются.


7.3. Copyrights

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. Otherwise, no, you can't copy it.


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

  • Христофор Колумб. Его настоящее имя Cristobal Colon. Это был первый человек, привезший кофе из Америки, открытой (для европейцев) в 1492.

  • Kostas Lialiambis - первый, кто осмелился признаться, что он не может приготовить кофе при помощи Linux!

  • Благодарю Panagiotis Vrionis, Yannakopoulos Haralambos, за интересные и веселые замечания.


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

Авторские права на русский перевод этого текста принадлежат © 2000 SWSoft Pte Ltd. Все права зарезервированы.

Этот документ является частью проекта Linux HOWTO.

Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но так или иначе автор текста и автор перевода желали бы знать о таких дистрибутивах.

Все переводы и производные работы, выполненные по документам Linux HOWTO должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO с которым можно связаться по адресу приведенному ниже.

Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: , или к координатору русского перевода Linux HOWTO компании SWSoft Pte Ltd. по адресу