Дело было вечером, когда на пороге офиса появилась настойчивая крупногабаритная женщина, предлагающая купить посуду известной марки. На следующий же день я получила от начальника (он же ) задание оградить его творческую натуру от нападок торговых представителей. Так появилась идея создания проекта под кодовым названием Hungry _ Wall . Конечно, сейчас существует множество служб, занимающихся контролем доступа в помещение. Но куда интереснее сделать электронный замок своими руками, особенно мне, начинающему программисту и электронщику.
Как говорится, главное правильно составить ТЗ, т.е.то, что мы хотим получить в результате.
Полдела сделано, осталось самое малое – реализовать задуманное аппаратно и программно. Для этого необходимо:
Разводка платы показана на схеме 1.
Внутренности платы показаны на рисунке 1.
Для решения поставленных задач все используемые устройства делятся на логические блоки,представленные на схеме 2.
Блок замка включает в себя непосредственно электрический замок, таймер TimeOpen , позволяющий задать максимальное время открытого состояния замка, магнитный датчик, индицирующий открытие и закрытие двери. Входом блока замка является команда открыть замок (Open), поступающая от блоков уключины и кнопки. Блок уключины состоит из считывающего устройства, базы данных, таймера TimeMaster , задающего максимальное время на поднесение нового ключа для записи в базу. Вход в блок осуществляется поднесением ключа или мастера. Блок кнопки состоит из кнопки, которая может принимать 2 состояния (нажата/не нажата).
Для считки бесконтактных карт применяется "Считыватель прокси (em-Marin) карт "CP-Z" фирмы IronLogic его особенность в том, что он эмулирует iButton (1-wire) если к нему поднести проксикарту.. это позволяет упростить программирование замка. однако следует учесть что в данной версии считывателя имеются свои подводные грабли .
Принцип работы предельно прост. При поднесении ключа происходит считывание его кода и сравнение с базой. Если ключ найден в базе замок получает команду Open . Здесь необходимо учитывать особенность замка: открытие надо производить щелчками (открыть-закрыть-открыть). Это обеспечивает защиту от заклинивания замка. При поднесении мастера логика программы меняется. Его наличие никак не влияет на “настроение” замка. Он рассматривается как некий турецкий султан, готовый зарегистрировать (записать в EEPROM) очередную жену (ключ). Т.е. при поднесении ключа (если он ранее не был записан) его код записывается в EEPROM . Тут необходимо учитывать, что память микрухи нерезиновая, и, например, для ATmega 8 она составляет 512 байт, что позволяет записать максимум 255 ключей (если для хранения 1 ключа использовать 2 байта, как в нашем случае). В качестве мастера записывается самый первый поднесенный ключ. Нажатие кнопки также посылает замку команду Open . Система индикации делает наш проект более красочным и информативным. Если горит красный диод – проход блокирован,если зеленый – можно идти! При поднесении мастера горят оба светодиода.
Важно заметить, что замок открывается при подаче на него логической единицы (т.е. напряжения), и находится в закрытом состоянии,если напряжение не подается. Это позволяет блокировать проход, если вы забыли оплатить коммунальные услуги, и вам отключили электричество.
Внешний вид всего устройства показан на рисунке 2. Все достаточно аккуратно и красиво.
Скачать исходники можно
В различной радиолюбительской литературе можно обнаружить множество вариантов электронных кодовых замков.
Особенностью данной схемы кодового замка на микроконтроллере является принципиально новый метод считывания нажатия клавиш, используя всего лишь один порт микроконтроллера PIC12F675. Эта особенность может быть реализована только с микроконтроллерами в составе которого имеется модуль аналого-цифрового преобразователя (АЦП), к примеру как наш микроконтроллер PIC12F675.
Данный микроконтроллер снабжен 10 битным АЦП с диапазоном преобразования от 0 до 1023. Суть метода в том, что клавиатура представляет из себя, по сути, делитель напряжения на резисторах R1-R12 и при нажатии определенной кнопки клавиатуры на вход 7 микроконтроллера поступает напряжение, величина которого характерна только для данной кнопки.
Для записи 4 цифр секретного кода сперва необходимо нажать кнопку “CODE” и удерживать ее до того момента когда загорится светодиод LED. Затем поочередно нужно набрать 4 цифры секретного кода. По завершению ввода, данный код будет записан в энергонезависимую память микроконтроллера.
Теперь если набрать данный код на клавиатуре произойдет включение реле на 5 секунд. При десятикратной неверно набранном секретном коде прозвучит сигнал тревоги.
Предлагаемый кодовый замок предназначен для установки на входной двери помещения, куда доступ имеет ограниченный круг людей. Его основной отличительной особенностью является возможность быстрой записи нового кода с помощью клавиатуры (в ранее опубликованных устройствах код, как правило, устанавливают перемычками, размещенными на плате). Этот код может состоять минимум из одной цифры, а максимум - из ста двадцати семи.
Схема кодового замка показана на рис. 1. Основным элементом устройства является микроконтроллер ATtiny2313 (DD1), у которого использованы встроенный RC-генератор и внутренние резисторы. Чтобы открыть замок, необходимо знать код. Для его ввода используется клавиатура, расположенная на внешней стороне двери и состоящая из кнопок SB1- SB 12. Кнопки SB 13 и SB 14 расположены на внутренней стороне двери, первая из них предназначена для ее открывания, а вторая - для закрывания. При использовании электромеханического привода замка двери кнопка SB 14 не нужна. Двухцветный светодиод HL1 индицирует состояние замка: если горит светодиод красного цвета свечения - дверь закрыта, зеленый - открыта. Резистор R3 служит для ограничения тока через светодиод.
Рисунок 1
Для управления исполнительным механизмом - соленоидом YA1 (или электромеханическим приводом) - используется мощный полевой переключательный транзистор VT1. Если код набран правильно, с линии PD2 (вывод 6) микроконтроллера DD1 на затвор полевого транзистора поступит открывающее напряжение, на соленоид YA1 - напряжение питания, и он откроет замок.
Питание устройства осуществляется от сетевого стабилизированного блока питания напряжением 12 В с выходным током, достаточным для срабатывания исполнительного механизма. Напряжение питания микроконтроллера стабилизировано интегральным стабилизатором DA1. Аккумуляторная батарея GB1 используется как резервный источник при отсутствии сетевого напряжения Диоды VD1, VD2 обеспечивают развязку блока питания и аккумуляторной батареи
Чтобы открыть замок, необходимо ввести цифры кода в заданной последовательности. Для индикации нажатия на кнопку (при закрытом замке) светодиод красного цвета свечения гаснет примерно на 0,3 с, при этом светодиод зеленого цвета свечения не горит, пос¬ле чего опять загорается красный светодиод. После ввода последней цифры открывается транзистор VT1 и загорается светодиод зеленого цвета свечения, индицируя, что замок открыт
Чтобы закрыть замок, необходимо нажать на кнопку SB4 "*" или кнопку SB 14 "Закрыть".
Для изменения кода при открытом замке нажимают на кнопку SB12 "#", вводят новый код (минимум одна цифра, максимум - сто двадцать семь), после чего опять нажимают на кнопку SB 12 "#". Если при вводе кода была допущена ошибка, нажимают на кнопку SB4 "*", вводят правильный код и только затем нажимают на кнопку SB12 "#". При записи нового кода индикация нажатия на кнопки осуществляется так. Светодиод зеленого цвета свечения гаснет на 0,5 с, при этом загорается светодиод красного цвета свечения, а затем снова постоянно светит светодиод зеленого цвета.
Рисунок 2
Коды программы, которые находятся в архиве , микроконтроллера для замка с соленоидом приведены в табл. 1 , для замка с электромеханическим приводом - в табл. 2 . Во время программирования в EEPROM микроконтроллера заносится начальный код, состоящий из цифр 1, 2, 3. Необходимо также записать файл данных - табл. 3 в EEPROM микроконтроллера. При программировании задают биты конфигурации в соответствии с рис. 2.
Отличие работы замка с электромеханическим приводом от замка с соленоидом заключается только во входе в режим записи нового кода и закрытия замка. Замок в этом случае закрывается автоматически через 3 с после открытия, этого времени должно хватить для того, чтобы открыть дверь. Сделано это для того, чтобы не перегревался электродвигатель электромеханического привода. Для записи нового кода при открытом замке необходимо сначала нажать на кнопку SB13 "Открыть" и удерживать ее.
class="eliadunit"> |
После того как замок закроется и загорится светодиод красного цвета свечения, надо дополнительно нажать на кнопку SB13 "Открыть" и удерживать ее еще примерно 15 с, затем нажать на кнопку SB 12 "#" и при загорании светодиода зеленого цвета свечения ввести новый код, после чего снова нажать на кнопку SB 12 "#" для его записи. Если при вводе была допущена ошибка, то нажимают на копку SB4 "*", вводят правильный код и только тогда нажимают на кнопку SB 12 "#". Будьте внимательны при вводе нового кода!
Фото готового устройства.
Данный проект будет отличным вариантом для повторения новичками, в нем используется ЖКИ дисплей 1602, клавиатура 4х4 из кнопок и конечно же сам контроллер. Кроме того, применены реле, кнопка и разъемы питания, PLS штырьки, пару транзисторов ну и по мелочи. Кстати, яркость дисплея в проекте будет регулироваться по методу ШИМ.
Это устройство может быть использовано для защиты практически любых объектов, пользователь должен ввести правильный пароль для получения доступа. Плата уже спроектирована удобным образом, и остается изготовить только красивый корпус для него. Пароль вводится с помощью встроенной в клавиатуру матрицы 4×4. Основной модуль ЖК-дисплея используется для отображения сообщений пользователю и текущей информации. Как только будет введен правильный пароль – сработает реле. Об этом так же будет свидетельствовать светодиод, установленный рядом с реле. Для отключения реле нужно нажать соответствующую кнопку на клавиатуре.
После ввода четырехзначного пароля необходимо нажать кнопку "ОК" (S8). В любое время вы можете нажать кнопку "Отмена" (S12), чтобы очистить код (например, при вводе любых неправильных цифр).
Код блокировки можно легко изменить, для этого нужно ввести специальный пароль “0000”, как только вы введете этот пароль, устройство переключится в режим смены пароля. Здесь нужно ввести старый пароль, чтобы получить разрешение, а затем ввести новый пароль, все очень просто.
Подсветка ЖК-дисплея выключается автоматически, после того как система находится в режиме ожидания нескольких секунд. Затемнение подсветки происходит очень плавно, так же как например в мобильных телефонах. Дисплей можно заменить на любой аналогичный, с похожим контроллером или даже другого разрешения, главное советую обратить внимание на распиновку выводов, в некоторых моделях распиновка дисплеев может отличаться. Программа для контроллера написана в среде С++, исходники, а так же прошивка для контроллера прилагаются. Микроконтроллер можно применить с любым индексом, буква L означает пониженное энергопотребление.
Список используемых радиодеталей:
01 330 Ом резистор (2 шт), R3, R5
02 4.7 кОм резистор R2, R4, R6
03 200 Ом резистор R1
04 0.1мкФ керамический конденсатор C1, C3, C4, C5
05 1N4007 Диод (2 шт), D1, D3
06 5мм светодиоды любого цвета D4
07 Микроконтроллер ATmega8L U1
08 Стабилизатор напряжения 7805 U2
09 Разъем питания CON1
10 PCB реле RL1
11 Выключатель Вкл / Выкл SW1
12 DC гнездо X1
13 16×2 LCD дисплей LCD1
14 10 кОм подстроечный резистор RV1
15 28 PIN кроватка для микроконтроллера IC
16 BC548 транзистор (2 шт.) Q1, Q2
17 Кнопки (16 штук)
Файл печатной платы для изготовления методом ЛУТ находится ниже в архиве, печатную плату можно заметно уменьшить, если применить кнопки поменьше, или если вынести клавиатуру на отдельную плату. Цифровые клавиши можно взять от старой клавиатуры компьютера или ноутбука.
Скачать файл печатной платы, исходник и прошивку
Оригинал статьи на английском языке (перевод: Адвансед для сайта cxem.net)
Устройство предназначено для защиты помещений, шкафов и сейфов от несанкционированного вскрытия. Все установки и код хранятся в энергонезависимой памяти микроконтроллера. Основой устройства служит микроконтроллер PIC16F628A (DD1 на схеме рис. 1). После подачи питания программа микроконтроллера настраивает его порты, а также отключает источник образцового напряжения, модуль ШИМ захвата сравнения, таймеры, компараторы и аппаратный USART - эти модули не нужны для работы замка. Затем начинается опрос клавиатуры.
Она состоит из двух частей. Первая - кнопки SB3-SB 14 - находится снаружи охраняемого объекта. Вторая - кнопки SB1, SB2 и выключатель SA1 - расположена внутри помещения. Кнопки SB3-SB 13 первой части клавиатуры объединены в матрицу. Кнопка SB 14 в матрицу не входит, она предназначена для перезапуска микроконтроллера в случае какого-либо сбоя в программе, а также в ряде других случаев, о которых будет рассказано ниже.
Кнопка SB1 "Открыть" установлена внутри помещения около двери. Нажатием на нее можно открывать дверь изнутри, не набирая кода. SB2 - кнопка перезапуска программы; кнопки SB2 и SB 14 включены параллельно. Кнопкам матрицы присвоены обозначения: SB3 - "1", SB4 - "4", SB5 - "7", SB6 - "Открыть", SB7 - "2", SB8 - "5", SB9 - "8", SB 10 - "0", SB11 - "3", SB 12 - "6", SB 13 - "9". Тумблером SA1 выбирают режим закрывания замка. Код вводят поочередным кратковременным нажатием на цифровые кнопки. В подтверждение нажатия прозвучит короткий тональный сигнал пьезоизлучателя НА1, управляемого транзистором VT2.
Перед тем как открыть дверь, вводят четырехзначный код с паузами между соседними нажатиями не более 3 с, а затем в течение 3 с надо кратковременно нажать на кнопку SB6. Через 2 с на выходе RA0 микроконтроллера DD1 установится высокий уровень, откроется транзистор VT1 и сработает электромагнит, который приведет в движение ригель замка, сжимая его пружину, и дверь откроется. Если пауза между соседними нажатиями превысит 3 с, то прозвучит сигнал с уменьшающейся частотой. Это означает, что программа начала выполняться заново и код надо вводить сначала. Диод VD1 предназначен для защиты транзистора VT1 от всплеска напряжения самоиндукции обмотки электромагнита Y1. Перед срабатыванием электромагнита прозвучит сигнал такой же частоты, как и при нажатии цифровых клавиш, но большей длительности, что сигнализирует об открывании двери.
Когда контакты выключателя SA1 разомкнуты, электромагнит закроет замок через определенное время (по умолчанию - 12 с). Это время устанавливают при программировании микроконтроллера. В программе, которую нужно будет загрузить в контроллер, в поле работы с EEPROM, в ячейку с адресом 0x06 (седьмая по счету) необходимо вставить число от 0x01 до OxFF, из расчета 1 единица = 2,5 с. Минимально возможная пауза равна 2,5 с, максимальная - 10 мин.
В случае, если контакты выключателя SA1 замкнуты, т. е. на входе RA4 микроконтроллера DD1 установлен низкий уровень, то закрывание замка происходит после нажатия на кнопку SB 14 либо на SB2. После того как закроется транзистор VT1, электромагнит обесточится и пружина замка вытолкнет ригель обратно - дверь снова окажется запертой.
Для открывания двери изнутри помещения нажимают на кнопку SB1 и удерживают ее до срабатывания электромагнита, о чем оповестит тональный сигнал длительностью 2 с. Открыть дверь изнутри можно в любой момент. Если открывания двери не произойдет, необходимо нажать на кнопку SB2 (перезапустить программу) и снова нажать на кнопку SB1.
Когда необходимо сменить код, сначала вводят старый точно так же, как и при операции открывания двери, но потом нажимают на кнопку SB6 не кратковременно, а удерживают ее до того момента, пока не прозвучат три тональных сигнала. Затем необходимо немедленно отпустить кнопку SB6, ввести новый четырехзначный код и сразу же в подтверждение введения еще раз нажать на кнопку SB6. Далее прозвучит сигнал с нарастающей частотой, который известит о том, что новый код принят. Он хранится в первых четырех ячейках энергонезависимой памяти микроконтроллера DD1.
Устройство снабжено системой блокировки. Каждый раз при введении неверного кода замок воспроизведет два сигнала частотой 1000 Гц и один частотой 500 Гц. Ошибочным контроллер считает нажатие на кнопку SB6 в то время, когда в рабочих регистрах находится неверный код, и введение пяти цифр кода. После трех ошибок подряд микроконтроллер DD1 установит на выходе RA2 высокий уровень. При этом откроется транзистор VT3, который включит тревожное устройство. Этим устройством может быть сирена или узел дозвона по телефону.
Одновременно включится светодиод HL1, установленный на панели клавиатуры, который покажет, что опрос клавиатуры (кроме тумблера SA1 и кнопок SB1, SB2, SB 14) отключен. Затем следует десятиминутная пауза, во время которой работает тревожное устройство и включен светодиод HL1. В течение этого времени открыть замок можно только изнутри. Если нажать на кнопки SB 14 и SB2 (кнопки перезапуска программы микроконтроллера), то десятиминутный отсчет начнется заново. После паузы контроллер предоставит только одну возможность ввести код, и если он будет неверным, десятиминутная пауза с включением тревожного устройства повторится снова. И так будет продолжаться до введения правильного кода. Каждый раз после верного введения кода счетчик ошибок обнуляется.
class="eliadunit"> |
Питает устройство источник постоянного тока напряжением 10... 15 В. При отключении электроэнергии в сети 220 В замок продолжает работать от аккумуляторной батареи. Схема простейшего варианта такого блока питания показана на рис. 2. Трансформатор Т1 понижает сетевое напряжение 220 В до 15...20 В. Максимальный ток вторичной обмотки трансформатора не должен быть менее 1,5 A DA1 - регулируемый стабилизатор напряжения. Изменяя сопротивление построечного резистора R2, устанавливают на выходе стабилизатора DA1 такое напряжение, при котором ток зарядки заряженной аккумуляторной батареи GB1 не превышает 100...200 мкА. При этом во время большого потребления тока, когда сработал электромагнит Y1, основную часть тока дает аккумуляторная батарея, что позволяет не перегружать стабилизатор DA1. Диод VD5 предназначен для защиты стабилизатора DA1 в случае отсутствия на его входе напряжения.
Аккумуляторная батарея должна обеспечивать ток 300...600 мА (емкость - 7 А-ч). Стабилизатор DA1 следует установить на теплоотвод площадью 30...40 см 2 . Клавиатуру можно изготовить из отдельных кнопок. Подойдут, к примеру, DIPTRONICS DTSMW-66N. Но можно применить и готовую клавиатуру от кнопочного телефонного аппарата или калькулятора. Как правило, можно легко подключить такую клавиатуру к устройству, собрав кнопки в подходящую матрицу. Также необходимо вынести на панель клавиатуры светодиод HL1.
Пьезоизлучатель подойдет любой из серии ЗП. Электромагнит Y1 применен от лентопротяжного механизма магнитофона, но подойдет любой другой, подходящий по габаритам и с максимальным током обмотки не более 1,3 А. Если ток, потребляемый электромагнитом, будет больше 1 А, то транзистор VT1 следует установить на теплоотвод площадью 30...40 см 2 .