Реализация Coffee-Howto-идеи на отечественной элементной базе, с конкретными
примерами программ, типа кофеварок, и интеграции с unix системой.
Кофе будем пить и державу подымем. Со столь оптимистичных слов я и начну свою
статью. Итак для начала лучше почитать Coffee-Howto для того, чтобы понять
нужно это вам или нет. Идея проста - компьютер должен в определенное время
включать и выключать электрический прибор. Причем, все это должно быть
_максимально_ безопасно для квартиры и людей в ней проживающих. В Coffe-Howto
предложено несколько вариантов принципиальной схемы нашего устройства и
несколько вариантов программ для управления им. Программы кстати описаны весьма
размыто, практически без полного, конкретного примера. Наше устройство будет
подключатся к параллельному порту и будет позволять нам управлять пока всего
одним устройством.
Реализовать это можно очень просто. Параллельный порт компьютера может на своих
выходах выставлять 5-вольтовые уровни напряжения, всего у него их 8
(максимальное кол-во возможно подключаемых нами устройств), этого напряжения
вполне достаточно, для того чтобы открыть транзистор, он же в свою очередь
запускает реле, срабатывающее от 9-12 вольт ( для этого нам потребуется крона
или адаптер ), реле же должно переключать напряжение в 220 вольт. Подробнее
схема изображена на рис.1. Для того чтобы не сжечь компьютер между 1-ым выходом
параллельного порта и базой транзистора (см. схему мы ставим диод D1). Диоды в
нашей схеме (D1,D2) могут быть практически любыми я брал КД-209.
Транзистор(VT1) я брал КТ-816. Резисторы R1,R2=4,7кОм. Реле (Relay) РЭН34
ХП4.500.000.1. Но не спешите сразу подключать к схеме кофеварку.
Это весьма мощный прибор. Ток при ее работе может достигать 5 ампер.
Розетка то конечно выдержит, а вот реле может и не накрыться
(как в моем случае, предел моей релюхи ~2ампера). Так что я сначала
,при помощи реле, включаю магнитный пускатель, а от него уже кофеварку. Однако
если у вас мощное реле или вам не нужно включать мощные приборы, то про
магнитный пускатель, или опто-тиристор можете спокойно забыть.
Схема подключения к раз~ему параллельного порта.
____________________________________________________________
/ \
\ 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-ый контакт подключаем на вход к диоду D1 (см.схему ), а землю (-12в) кидаем
на землю раз~ема от параллельного порта.
Теперь о программной реализации самый простой вариант, это написать программу
которая будет через in/out работать с портом. Но для запуска программа будет
требовать root permission. Что вообще-то правильно, ведь работа с внешними
устройствами не баловство, поэтому оставим все как есть. При желании можно
(при любом раскладе это более красивый способ, нежели предыдущий) написать
модуль для ядра, чем можно избежать перекомпиляции ядра и требований к root
permission.
----------- кусать здесь ----------
#include
#include
#include
#include
#include
#define BASE 0x378
int range;
main(int argc, char* argv[]) {
int ch;
range=8;
while ( (ch=getopt(argc,argv,"be")) != EOF)
switch(ch) {
case 'b': {
ioperm(BASE,range ,1);
outb(1,BASE);
}
break;
case 'e': {
ioperm(BASE,range ,1);
outb(0,BASE);
}
break;
default: {
printf("Parport switcher. Moscow 2000y.\n");
printf("Usage: parport OPTION\n");
printf("Option: -b turn on device\n");
printf(" -e turn off device\n");
}
break;
}
return(0);
}
--------------- Все ---------------
В принципе программе можно установить setuid и тогда запускать ее сможет любой
пользователь, но вряд ли это нужно для домашнего использования. Так как я
пользую sudo ( на крайний случай ), а в повседневные, рабочие будни предпочитаю
просыпаться от запаха сваренного кофе. Как вы уже догадались кофеварку
я включаю по crontab'у. Но сначала надо написать скриптик на шеле.
Вот мой скриптик:
coffee.sh
----------- кусать здесь ----------
#!/bin/sh
# Скрипт берет в качестве параметров кол-во чашек кофе, которое надо
# приготовить. Параметры для кофеварки Philips Comfort Plus.
ppswitch -b
case $1 in
2) sleep 4m 20s ;;
4) sleep 8m 20s ;;
esac
ppswitch -e
--------------- Все ---------------
А вот crontab(часть):
----------- кусать здесь ----------
30 04 * * * root /usr/local/bin/coffee.sh 4
--------------- Все ---------------
Также хочу добавить, что рабочую схему устройства я спаял за 20 минут,
программу написал за 10 минут ( она меня в кору кидала, пока я не вспомнил про
ioperm), так что в течении часа, с учетом поиска элементов, можно управится с
подключением кофеварки и настройки коммутации реле. И на следующий день с утра
можно уже удивлять свою жену или подругу запахом свежего кофе...
Тимофей Cлепцов dr_evil@elnet.msk.ru