Аннотация |
Один из наиболее надоевших вопросов по программному обеспечению - это может ли та или другая программа приготовить кофе. Итак Linux МОЖЕТ делать кофе. И даже неплохой! |
Долгое время человечество размышляло, как заставить компьютер делать кофе... люди нуждаются в кофе для того, чтобы проснуться и бодрствовать перед компьютером долгое время. Любой знает, что написание программ лучше идет ночью...
Основная проблема - как контролировать кофеварку при помощи компьютера так, чтобы это делала программа и управляющая схема в блоке питания кофеварки.
Популярный способ приготовления кофе среди программистов, потому как не требует пристального внимания к процессу приготовления, как и все коммерческое программное обеспечение. Его незабываемый аромат в первые часы наступившего дня вдохновил тысячи программистов на написание шедевров. Например, благодаря этому кофе, Windows был написан в 5:00 утра! В общем, результат гарантирован.
Нескафе - это довольно крепкий кофе, приготавливаемый путем добавления горячей воды в смесь кофе, воды и сахара. Обычно вы берете одну ложечку кофе и одну сахара, добавляете небольшое количество воды для размешивания. В это время у вас должна закипать вода. Как только вода достаточно нагрелась, вы все перемешиваете и добавляете молоко по вкусу. Хотя можете использовать для кипячения воды что-то более простое, чем кофеварка. Такую схему работы я видел много раз...
Популярная версия предыдущего кофе. В действительности, он не требует никакой кофеварки, а скорее холодильника для приготовления холодной воды и льда.
Общая схема выглядит следующим образом:
--------- 0-5V --------- ~220V ---------------- | ПК |===>===|Схема|========|Кофеварка| --------- --------- ---------------- |
Идея состоит в том, что мы берем управляющее напряжение и подаем его на схему с реле или симистором, электрически связанную с компьютером.
Вы должны использовать реле, если у вас большая кофеварка (с мощностью 200W и более), иначе подойдет и симистор.
Все предложенные схемы были проверены, но ОТВЕТСТВЕННОСТЬ ЗА РЕЗУЛЬТАТ лежит на ваших плечах. Если у вас нет необходимого опыта в обращении с электроникой, вы НЕ должны пробовать это делать, иначе все может закончиться очень плохо...
Вы должны быть очень внимательны при работе с напряжением 220В, и не перепутать фазу с нулем.
Простой способ получения напряжения 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 |
Простейшая схема, которую может собрать любой:
Vпит | +------+ | __|__ Реле /^\ Диод 1N4002 /---\ | | +------+ | | / 4.7K Б |/ К параллельный порт>-\/\/\/\/---| NPN Транзистор: BC547A или 2N2222A данные |\ Э | V | параллельный порт >-------------+ земля | Земля |
Не рекомендуется устанавливать реле ПОСЛЕ транзистора на выход эмиттера, вместо выхода коллектора. Это плохо отразится, как на работе транзистора, так и на качестве кофе :-). Диод 1N4002 служит для защиты транзистора от напряжения реле, и, если вы его уберете, то, возможно, транзистор у вас станет темнее и будет пахнуть горелым ...
Если вы хотите сделать простую схему, то можете использовать схему управления 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. Кофеварки - это обычно неиндуктивные нагрузки (как двигатели), но кто знает что у вас...
+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) - измените сопротивление этого резистора.
Предупреждаю, что вам не следует пробовать эту схему без нагрузки. Симистор не включается, если его не подключить к источнику переменного тока.
Вы должны написать программу, которая выполняла бы следующие функции:
Получить разрешение на использование адресного пространства Ввода/Вывода, обратившись к ядру командой ioperm, например, ioperm (BASE, range, 1);
Выполнить команду out для установки напряжения 0-5В на параллельном порту: например outb (1, BASE);
Подождать, пока приготовится кофе. Было бы неплохо, если бы это время вводилось в командной строке.
Выключить кофеварку: outb (0, BASE);
По окончании работы на параллельный порт должна быть подана команда: ioperm (BASE, range, 0);
Было бы здорово, если эта программа имела setuid, чтобы кофе могли пить все!
Просто прочтите kernel hacker's guide, напишите драйвер устройства (я думаю, это можно сделать и не в ядре). Откомпилируйте его как модуль, чтобы не нужно было пересобирать все ядро, при обновлении драйвера. Затем напишите:
echo cappuccino >/dev/coffee
И через минуту вы будете наслаждаться чашкой кофе. Установите соответствующие права на файл /dev/coffee - хотите ли вы, чтобы кофе готовил только root или кто-нибудь другой.
Преимущества данного метода заключаются в том, что он поддерживает обратную связь с кофеваркой, при помощи сигнала ACK параллельного порта.
Пусть это будет вашим домашним заданием.
Если вы написали программу на C (см. выше), вы можете написать простенький CGI-скрипт для включения и выключения кофеварки. Неплохо было бы написать несколько познавательных страничек, объясняющих, как делать кофе и положить их на сервер apache ...
Воодушевление
Повышенная нервозность
Бессонница
Тахикардия или кардиоаритмия
Желудочно-кишечные возмущения
Беспокойство
Здесь изложены несколько наших идей:
Все идеи, предложенные здесь, могут применяться к тостам, ростбифам, булочкам и т.д.
Создайте кластер, состоящий из 8 кофеварок. Это позволит вам иметь кофе даже тогда, когда у вас сломается одна из кофеварок. Ну и, разумеется, это будет хит сезона.
Если вы хотите еще больше автоматизировать процесс, вам понадобятся еще больше схем и датчиков, для контроля потока воды, температуры, количества кофе и т.д.
В будущем мы планируем внедрить поддержку SNMP.
Последовательное соединение с кофеваркой на 115КБит/сек.
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/
Этот документ изначально был написан на греческом и исходил из споров греческих пользователей Linux, может или не может Linux делать кофе. Заметка была размещена в журнале: http://www.linux.gr/magaz. на греческом языке.
Меня зовут Georgatos Photis, я все-еще-может-быть студент факультета Компьютерной Инженерии и Информатики в Университете города Патрас. Обычно я занимаюсь сопровождением греческой документации и страничек, но предложения по улучшению этого HOWTO тоже принимаются.
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.
Христофор Колумб. Его настоящее имя Cristobal Colon. Это был первый человек, привезший кофе из Америки, открытой (для европейцев) в 1492.
Kostas Lialiambis - первый, кто осмелился признаться, что он не может приготовить кофе при помощи Linux!
Благодарю Panagiotis Vrionis, Yannakopoulos Haralambos, за интересные и веселые замечания.
Авторские права на русский перевод этого текста принадлежат ╘ 2000 ASPLinux Все права зарезервированы.
Этот документ является частью проекта Linux HOWTO.
Авторские права на документы Linux HOWTO принадлежат их авторам, если явно не указано иное. Документы Linux HOWTO, а также их переводы, могут быть воспроизведены и распространены полностью или частично на любом носителе физическом или электронном, при условии сохранения этой заметки об авторских правах на всех копиях. Коммерческое распространение разрешается и поощряется; но так или иначе автор текста и автор перевода желали бы знать о таких дистрибутивах.
Все переводы и производные работы, выполненные по документам Linux HOWTO должны сопровождаться этой заметкой об авторских правах. Это делается в целях предотвращения случаев наложения дополнительных ограничений на распространение документов HOWTO. Исключения могут составить случаи получения специального разрешения у координатора Linux HOWTO с которым можно связаться по адресу приведенному ниже.
Мы бы хотели распространить эту информацию по всем возможным каналам. Но при этом сохранить авторские права и быть уведомленными о всех планах распространения HOWTO. Если у вас возникли вопросы, пожалуйста, обратитесь к координатору проекта Linux HOWTO по электронной почте: <linux-howto@metalab.unc.edu>, или к координатору русского перевода Linux HOWTO компании ASPLinux по адресу <linux-howto@asplinux.ru>