Замок проектувався для індивідуального використання і має гранично просту конструкцію. На вхідних дверях зовні розташований тільки панелька для iButton і світлодіод відкривання дверей. Відкривання дверей зсередини здійснюється за допомогою кнопки. В якості виконавчого механізму використовується стандартна засувка з електромагнітом, який розрахований на напругу 12В. Коди ключів зберігаються в незалежній пам'яті і можуть стиратися і додаватися користувачем. Для захисту від несанкціонованого перепрограмування замку використовується майстер-ключ. Всього в пам'ять можна записати 9 ключів. Це кількість продиктовано можливостями 1-розрядної індикатора номера програмованого ключа. Якщо задіяти ще й букви, можна збільшити сумарну кількість ключів до 15. Це робиться шляхом заміни значення константи MAXK в програмі. Таким же способом можна і зменшити максимальну кількість ключів.
Мал. 1. Принципова схема замку
Принципова схема замку показана на малюнку 1. Основою конструкції є мікроконтролер U1 типу AT89C2051 фірми Atmel. До порту P1 підключений 7-сегментний індикатор, який використовується при програмуванні ключів. Для цих же цілей призначена і кнопка SB1, підключена до порту P3.7. Зберігання серійних номерів ключів здійснюється в мікросхемі EEPROM U3 типу 24C02, підключеної до портів P3.4 (SDA) і P3.5 (SCL). Зовнішня панелька для iButton підключається до порту P3.3 через роз'єм XP2 і елементи захисту VD4, R3, VD5 і VD6. Підтягаючий резистор R4 вибраний згідно специфікації однопроводной шини. Паралельно зовнішньої панелі підключена ще і внутрішня панелька XS1, яка використовується для програмування ключів. Кнопка відкривання дверей підключена до порту P3.2 через роз'єм XP1 і такі ж елементи захисту, як і для iButton. Виконавчим пристроєм замку є електромагніт, підключений через термінал XT1. Електомагнітом управляє ключ VT3, в якості якого використовується потужний МОП-транзистор типу IRF540. Діод VD7 захищає від викидів самоіндукції. Ключем VT3 управляє транзистор VT2, який інвертує сигнал, що надходить з порту P3.0 і забезпечує керуючі рівні 0 / 12В на затворі VT3. Інверсія потрібна для того, щоб виконавчий пристрій не спрацьовує під час скидання мікроконтролера, коли на порту присутній рівень логічної одиниці. 12-вольт керуючі рівні дозволили застосувати звичайний МОП-транзистор замість більш дефіцитного низькопорогових (logick level). Для індикації відкриття замку використовується світлодіод, який управляється тим же портом, що і електромагніт, але через транзисторний ключ VT1. Світлодіод підключається через той же роз'єм, що і iButton. Оскільки дайте йому працювати цілодобово без обслуговування, для підвищення надійності встановлений супервізор U2 типу ADM1232. Він має вбудований сторожовий таймер і монітор харчування. На порту P3.1 мікроконтролер формує періодичні імпульси для скидання сторожового таймера.
Пристрій працює від вбудованого блоку живлення, що містить трансформатор T1, випрямляючий міст VD9-VD12 та інтегральний стабілізатор U4. В якості резервного джерела живлення використовується батарея BT1-BT10 з 10-ти NiMH-акумуляторів типорозміру AA ємністю 800мА / Ч. При харчуванні пристрою від мережі батарея акумуляторів заряджається через резистор R10 струмом приблизно 20мА, що становить 0.025C. Режим зарядки малим струмом називають крапельним (trickle charge). У такому режимі аккумулятри можуть знаходиться як завгодно довго, контроль кінця процесу зарядки не потрібно. Коли акумулятори виявляються повністю зарядженими, забирається ними від джерела живлення енергія перетворюється в тепло. Але оскільки струм зарядки дуже маленький, що виділяється тепло розсіюється в навколишній простір без скільки-небудь помітного збільшення температури акумуляторів.
Конструктивно пристрій виконано в корпусі розміром 150х100х60мм. Більшість елементів, включаючи трансформатор харчування, змонтовано на друкованій платі. Акумулятори розміщуються в стандартних пластмасових власниках, які закріплені всередині корпусу поруч з платою. В принципі, можна використовувати і інші типи акумуляторів, наприклад 12-вольтів кислотну необслуговується батарею, що застосовується в охоронних системах. Для підключення виконавчого пристрою на платі є термінали типу TB-2, всі інші зовнішні ланцюга підключаються через малогабаритні роз'єми з кроком контактів 2.54мм. Роз'єми розташовані на друкованій платі і зовні корпусу недоступні. Провід виходять з корпусу через гумові ущільнювачі. Оскільки індикатор HG1, кнопка SB1 і панелька для iButton XS1 використовуються тільки під час програмування, вони розміщені на платі всередині пристрою. Це спрощує конструкцію корпусу і робить його більш захищеним від зовнішніх впливів. На бічній панелі корпусу розміщений тільки світлодіод індикації включення VD13. Схема зовнішніх з'єднань показана на рис. 2.
Мал. 2. Схема зовнішніх з'єднань
При відкритті дверей на електромагніт подається імпульс тривалістю 3 секунди. Логіка роботи пристрою така, що якщо кнопку відкривання дверей утримувати, то весь цей час електромагніт буде під напругою і, відповідно, двері буде відкритою.
Замок може мати максимум 9 ключів, плюс один майстер-ключ. Коди ключів заносяться в незалежну пам'ять під номерами від 1 до 9. Код майстер-ключа занесений в ПЗУ мікроконтролера і не може бути змінений. Пограммірованіе нових ключів або стирання старих може бути зроблено тільки за наявності майстер-ключа. Як і інші ключі, майстер-ключ може використовуватися для відкривання замка.
Для програмування нового ключа потрібно виконати наступні дії:
Схематично процес програмування нового ключа показаний на рис. 3.
Мал. 3. Програмування нового ключа
Якщо потрібно запрограмувати кілька ключів, то можна відразу перейти від пункту 9 до пункту 5 і повторити пункти 5 - 9 необхідне число раз.
Якщо після виконання пункту 7 виявиться, що обраний не той номер, то для виключення втрати коду ключа під цим номером можна натиснути кнопку або просто почекати 5 секунд. У першому випадку поточний номер збільшиться на одиницю, а вміст пам'яті залишиться без змін. У другому випадку відбудеться повний вихід з режиму програмування без зміни кодів. Взагалі, вихід з програмування можна здійснити в будь-який момент, якщо зробити паузу більше 5 секунд.
Для стирання з пам'яті зайвого ключа послідовність дій залишається такою ж, як і при програмуванні, тільки всі дії проводяться майстер-ключем. Тобто процес стирання фактично є записом коду майстер-ключа на невикористовувані номера.
Схематично процес стирання зайвого ключа показаний на рис. 4.
Мал. 4. Видалення зайвого ключа
У процесі програмування відкрити двері кнопкою можна, а ось відкривання за допомогою iButton заблоковано. Оскільки внутрішня і зовнішня панельки з'єднані паралельно, потрібно стежити, щоб під час програмування ніхто не торкався зовнішньої панельки ніякими ключами.
Програма електронного замка має головний цикл, блок-схема якого показана на рис. 5. В основному циклі проводиться опитування панельки, і якщо там виявляється ключ, то зчитується його код. Потім цей код перевіряється, і якщо він збігається з кодом майстер-ключа або будь-якого іншого ключа (ключа користувача), занесеного в пам'ять, замок відкривається. Також перевіряється стан кнопки відкривання дверей, і в разі виявлення натискання замок теж відкривається.
Мал. 5. Блок-схема основного циклу програми
Мал. 6. Блок-схеми підпрограм, які використовуються при програмуванні коду ключа
Наведені на рис. 5 і 6 блок-схеми є сильно спрощеними, проте загальну логіку побудови програми вони зрозуміти дозволяють.
Описаний замок, звичайно, не володіє широким набором можливостей. Однак він дуже простий, що робить його доступним для повторення. Відкритий вихідний текст програми дозволяє самостійно виробляти удосконалення конструкції або адаптацію її до конкретних вимог.
- lock.asm - вихідний текст програми замку.
- lock.bin - оттранслировать програма. завантажити