Все о Linux. LinuxRSP.Ru
Альт Линукс СПТ 6.0 Сертификат ФСТЭК

Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

В GIMP наконец-то появилась обработка с точностью 16 и 32 разряда на канал

В одном окне: GIMP 2.8

Релиз OpenBSD 5.1

HTML-редактор: BlueGriffon 1.5

Релиз Xfce 4.10

Команда Chromium представила кластер для автоматизации выявления уязвимостей

В Microsoft Office 15 будет обеспечена поддержка формата ODF 1.2

Анонсирован новый свободный анимационный фильм Tube

Обновление ядра: Linux 3.0.29, 3.2.16, 3.3.3

Представлен OpenSSH 6.0

Релиз графического редактора Pinta 1.2, претендующего на роль аналога Paint.NET

Вышел Firefox 12

Google прекращает поддержку Linux-версии приложения Picasa

Эмулятор приставок: Mednafen 0.9.21-wip

Линус Торвальдс получил премию Millennium Technology Prize 2012

Canonical не заинтересована в участии в разработке ядра Linux

Распределенные вычисления: BOINC 7.0

Google

 Новые статьи :

Передача снапшота ZFS по сети

Правила хорошего тона: SSH

Некоторые рассуждения о защите от ddos на примере защиты от SSL denial of service attack

Быстрый проброс портов на шлюзе во внутреннюю сеть или на другой хост. Быстро NAT'им порты. rinetd.

NAT'им отдельные порты или "а что делать, если мой веб-сервер внезапно переехал на другую машину". Проброс портов в локалке на шлюзе наружу.

Как справляться с запланированной недоступностью веб-сайта

Архитектура Google 2011

Мониторинг Nginx с помощью MRTG

Решение проблем при использовании "1c предприятие" 8.2 в Linux

25 правил .htaccess, которые должен знать каждый web-разработчик

Централизованное резервное копирование данных Windows и *nix серверов средствами Bacula

Краткое руководство по GNOME Shell в Ubuntu 11.10

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки

   Дистрибутивы и атрибутика



DeveloperWorks Россия





Rambler's Top100


 
 

Реализация 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

      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2012 LinuxRSP


Реклама:
запчасти для китайских авто запчасти для китайских авто ohl5 . Самокрутки. как сделать самокрутку, форум. Машинка для самокруток. . Выставки по медицинскому оборудованию в Москве. Магазины медицинского оборудования в Москве.