Все о Linux. LinuxRSP.Ru


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


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

25 лет исполнилось ядру Linux

Релиз KDevelop 5.0

Oracle открывает код JDK9 для ARM

Выпущен Timewarrior 1.0.0

Релиз Android 7.0

Percona Memory Engine для MongoDB на базе WiredTiger

PowerShell открыт и доступен для Linux

Форк TrueCrypt: VeraCrypt 1.18

Релиз Snapcraft 2.14

Релиз Go 1.7

Стабильный выпуск рабочего стола Lumina

Вышла первая версия аналога OpenCV - DCV 0.1

Выпуск минималистичной программы для мониторинга jsonmon 3

В MIT разработали новый язык программирования

Первый релиз Qt5Gtk2

Godot 2.1 - новая версия открытого игрового движка

Свободная цифровая станция звукозаписи: Ardour 5.0

Обновление SkypeWeb Plugin for Pidgin

Вышла версия 3.0 Android File Transfer для Linux (и для OS X)

Программный аналог MIDI-контроллера для создания музыки: Launchpadd v1.3

Mozilla спонсирует поддержку Python 3.5 в PyPy

Ef 0.08 - программа для моделирования динамики заряженных частиц

Обновление текстового редактора TEA до версии 42.0.0

Релиз OpenOrienteering Mapper 0.6.4

Вышли Guix и GuixSD 0.11

Релиз Opera 39

Выпуск LibreOffice 5.2

В OpenSSH обнаружены и устранены некоторые уязвимости

Эмулятор FCEUX 2.2.3

Компания Билайн переходит на российскую СУБД с открытым исходным кодом Tarantool

Google

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

Утилиты для восстановления потерянных данных в Linux

Лучшие файловые менеджеры для Android

20 лучших бесплатных книг о Linux

Как сгенерировать открытый/закрытый SSH-ключ в Linux

Grive - клиент Google Drive для Linux с открытым исходным кодом

Протокол IPv6: варианты подключения

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Обзор веб-панелей управления хостингом

Приёмы работы с Vim

Nginx как Reverse Proxy для сайта, использующего SSL

Разработка модулей ядра Linux

Мониторинг нагрузки http-сервера Apache 2

Перевод комментариев к файлу конфигурации Squid

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

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







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-2017 LinuxRSP