- Лоботрясы

Поиск
Перейти к контенту

Главное меню:

Статьи по AVR

Читать в Яндекс.Подписках



    Домашняя сигнализация на AVR
Просмотров: 2754
     Вначале небольшая предыстория. Long, long time ago, один из моих хороших друзей попросил меня сделать небольшую систему сигнализации для своей квартиры. Так как мой товарисч был связан с правоохранительными структурами, то он обещал принести (стырить с какого-то важного объекта) ударопрочную (противовандальную, слюносоплестойкую и спичковыносливую) клавиатуру 3×4, и какой-то корабельный ревун в качестве исполнительного устройства. Поставленные условия были проще не придумаешь: у товарища за первой входной дверью (у него их две) располагалась бы матричная 12-кнопочная клавиатура со светодиодами индикации. А где-то рядом в коридоре должен был располагаться ревун, как главный психотропный аргумент против нежданных гостей (но как по мне, лучше клавиатуру спрятать в укромном тихом месте, вдали от любопытных глаз, хотя представляю свою реакцию после пятничной пивной посиделки с друзьями, если я про неё забуду…). После обсуждения рабочих деталей и получения предоплаты в виде двух бутылочек пенного, процесс пошёл…Я создал программу, испытал её в Proteus, похвастался ею и… На этом всё и закончилось – друг решил сделать генеральный ремонт, полностью разгромив свою квартиру, после чего началась белая полоса в его жизни. Уволившись с одного места работы и получив под зад на другой, мой товарищ решил быть ближе к природе и поменять окрас своей повседневной одежды на зелёный цвет, где и до сих пор скачет по полям по очень важным указаниям очень важных Offizieren. Естественно, мыши и тараканы очень по нему скучают и передают привет, а о возрождении проекта и воссоздании его в железе речи уже не идёт.
     Но тем не менее, покопавшись в своём программном хламе, я неожиданно решил возродить проект. Нет, делать его в железе я пока не собираюсь, но вот использовать наработки для дальнейшего интеллектуального и технического развития вполне можно. Причём, вынашивая идею создания полноценной системы умного дома, данный модуль (естественно с тотальной конверсией и разными модификациями) вполне подойдёт для создания главного пункта управления. Поэтому, исправив мелкие ошибки и доработав код, решил его выдать на-гора! К тому же варка в собственном соку ни к чему хорошему не приводят, а конструктивные пинки и прочая критика помогает смотреть на проблему гораздо ширше (неправильно), т.е. ширее (вот это правильно)!
     Проект, представленный для скачивания в Proteus, полностью рабочий, хотя я в нём убрал резисторы R8-R11, т.к. для моего дряхлого компьютера дополнительные элементы при симуляции вызывают заторможенность (такие вот мы нежные!). На практике вместо резисторов можно обойтись простыми диодами, это защита микросхемы от одновременного нажатия 2-х клавиш. Хотя, в принципе, я скоро опишу свой вариант библиотеки для работы с матричной клавиатурой, а там уже всё рассмотрю более подробно.
     В качестве главного контролирующего элемента выступает геркон (на схеме он обозначен SW1), который устанавливается над входной дверью, а магнитик, необходимый для замыкания контактов геркона при их сближении, крепится к самой двери рядом с ним.
 
     Как работает устройство сигнализации. Если защитный код не введен, т.е. режим охраны отключен, при замкнутом положении геркона SW1 (т.е. при закрытой двери) будет гореть жёлтый светодиод VD2, а при разомкнутых контактах геркона (дверь открыта) будет гореть зелёный светодиод VD3. Естественно, кодовую комбинацию нужно вводить при закрытых дверях! После ввода секретной комбинации, загорается красный светодиод VD1. При вводе каждого разряда защитного кода, который является четырёхзначным, загорается соответствующий разряду светодиод VD4-VD7. Если при наборе вы совершили ошибку, можно произвести сброс, нажав '#'. Для ввода секретного кода активации нужно нажать '*'. Если теперь какой-нибудь маргинальный элемент захочет разжиться пивом из вашего холодильника, то при открытии двери, по истечении 4-х секунд, он будет приятно удивлён! Настроить паузу на включение сигнала можно через макрос, в котором время задаётся в миллисекундах (максимум – 65536).
     #define TIMEOUT     4000 //У Вас есть 4 секунды, чтобы отключить сигнализацию
 
     На всякий пожарный предусмотрена резервная (или секретная) кнопка, установленная где-то в труднодоступном месте, при нажатии на которую режим защиты отключается.
     Защитный код, который предполагается вводить, можно установить в исходнике. У меня в качестве примера:
     protect_key[]={'1','2','3','4'} //Защитный код
     Потом, когда-нибудь, установлю режим ввода через клавиатуру, а может и дисплей прикручу (ах, мечты-мечты!).
     Микроконтроллер DD1 (ATmega8) работает от внутреннего RC-генератора на 4 МГц. Конфигурацию фьюзов не привожу, т.к. для симуляции в Proteus это не важно, а если собираетесь воплощать сиё детище воспалённой мысли инженера в железе, то вышесказанной информации, я думаю, для программирования вам достаточно. А если нет – пишите (бумага всё стерпит).
     Схема:
     Вместо диода VD8 предполагалось использование ревуна, под действием которого у нежеланных гостей происходило бы расслабление мышц сфинктера (musculus sphincter ani externus) и опорожнение мочевого пузыря, а у соседей появлялось непреодолимое желание падать на пол, закрывая голову руками (и подушкой).
     Питаться всё это чудо может от автономного аккумулятора, подзаряжаемого от сети 220В.
     При доработке данного кода (и при вашем желании, в первую очередь) можно получить простую схему кодового замка, изменив, естественно, исполнительное устройство. Так что, дерзайте!


Опубликовано 31.10.2014
© Igoryosha, 2014
 
 
Назад к содержимому | Назад к главному меню