Універсальний електронний замок – іммобілайзер із ключами iButton. Схема та опис

До вашої уваги представлена ​​схема електронного замка із ключем таблеткою iButtonмоделі DS1990A (Touch Memory) Ключ є пристроєм, який має в своїй пам'яті унікальний серійний номер. Унікальність полягає в тому, що серійний номер складається з 48 біт і, як наслідок цього, кількість можливих варіантівскладає 281474976710656.

Опис електронного замку

Замок зібраний на мікроконтролері фірми Microchip PIC16F628A (627A, 648A). Після подачі живлення мікроконтролер посилає імпульс скидання тривалістю 500 мкс і через 70 мкс перевіряє відповідь від DS1990A. Якщо відповіді немає, мікроконтролер чекає ще приблизно 80 мс і знову передає імпульс скидання. За таким алгоритмом перевіряється підключення ключа до замка.

Якщо відповідь є, то DS1990A підключений до замку. Потім надсилається команда "читати ROM" (33h), після чого мікроконтролер переходить на прийом і записує в ОЗУ переданий таблеткою DS1990A номер, де порівнює його із записаним номером в EEPROM. Якщо він збігається з одним з них, то подається звуковий сигнал і встановлюється високий рівеньна виведенні RA1 протягом 1,5 секунди. Оптопара DA1 (АОТ122А) відкриє VT1 (КТ972, BD677, BD679, BD681), що управляє електромагнітним на 12 вольт.

Процес запису номера ключа в EEPROM: додати ключ до замка і після звукового сигналунатиснути кнопку SA1. Ця кнопка повинна бути розташована в прихованому, недоступному для сторонніх людеймісці.

Для очищення всіх номерів з EEPROM необхідно при вимкненому живленні натиснути кнопку SA1, подати живлення та утримувати кнопку протягом 5 секунд. Після очищення EEPROM замок подасть звуковий сигнал. Загальна кількістьсерійних номерів, які можна записати на згадку не більше 21.

Щоб мікроконтролер не постраждав від статичного розряду, у схемі застосовано стабілітрон VD1 (КС156А, 1N4733A, BZX55C5V1) на 5В. У цьому замку можна використовувати будь-який мікроконтролер PIC16F627A, PIC16F628A, PIC16F648A. Для мікроконтролера PIC12F629/PIC12F675 є своя прошивка. Запитати схему можна від .

При програмуванні слід виставити такі біти.

Пристрій зібрано на мікроконтролері ATtiny2313, до якого підключено зовнішню енергонезалежну пам'ять EEPROM - 24C16. Доступні вихідники, перевірено роботу "на залізі". Контролер доступу працює із ключами типу DS1990, підтримує до 500 шт. Програмування контролера доступу через майстер ключ або через джампери на платі.
Контролер доступу крім кнопки відкриття замка має кінцевик, який відстежує час не закритих дверей. Час спрацювання сигналу програмується перемичкою JP2 (від 10 с до 127 с).

Контролер на електронні ключі DS1990A.

Підтримує до 500 ключів. Пристрій виконаний на мікроконтролері AVR: ATtiny2313.

Принципова схемазчитувача ключів i-Button DS1990 (клацніть за схемою для збільшення):

Інструкція з програмування

Робочий режим – при подачі 12В на контролер світлодіод блимає 1Гц.
Режим програмування - світлодіод блимає 2 Гц.
При натисканні на кнопку "OPEN" серія коротких звукових сигналів під час відкриття замка.
Кінцевий датчик дверей (NC) стежить за несанкціонованим проходом без ключа.

Контролер подає звукові сигнали, якщо:
1 - Після відкриття дверей, двері залишилися відчиненими більше запрограмованого часу проходу.
2 - Відкриття дверей без запрограмованого ключа або кнопкою "OPEN", контролер починає видавати короткі подвійні звукові сигнали до моменту закриття дверей.

Увага! Запрограмувати час очікування зачинених дверей МОЖНА ТІЛЬКИ ПЕРЕМИЧКОЮ JP2.

Звукові сигнали

1 короткий сигнал – ключ записаний у пам'ять контролера.
2 короткий сигнал- ключ уже записаний у пам'яті контролера.
5 коротких сигналів - вихід з режиму програмування.
1 довгий сигнал – пам'ять ключів стерта з контролера.
короткі сигнали 20сек. - Пам'ять ключів заповнена.

Запис МАЙСТЕР Ключа та часу відкривання замку

1 - Вимкнути живлення контролера.
2 - Натиснути кнопку "OPEN"
3 - Утримуючи кнопку підключити живлення до контролера через 5 сек. контролер "ПИСКНЕТ",
світлодіод блиматиме з частотою 2 Гц.
4 – Відпустити кнопку.
5 - Піднесіть ключ до зчитувача, пролунає одиночний звуковий сигнал,
Майстер ключ ЗАПИСАН, при цьому запише час відкриття замку 1 сек.

6 - Утримуючи ключ на зчитувачі - вважаємо звукові сигнали,
кількість визначає необхідний час відривання замку, збільшення 1 сек. Але не більше 32 сек.
7 - Вимикаємо живлення контролера або витримуємо паузу 20 сек.

Стирання всієї пам'яті ключів.

1 – Робочий режим.
2 - Натискаємо кнопку "OPEN" і утримуючи підносимо до зчитувача МАЙСТЕР ключ і тримаємо, через 10 сек. пролунає тривалий звуковий сигнал - пам'ять ключів стерта.
3 - Відпускаємо кнопку забираємо ключ.

Додавання нових ключів

1 - Підносимо Майстер-ключ до зчитувача утримуємо 5 сек, пролунає 2 короткі звукові сигнали, світлодіод блиматиме з частотою 2 Гц.
2 - Піднявши по черзі до зчитувача додаткові ключі - пролунає короткий звуковий сигнал, - ключ ЗАПИСАН, якщо пролунає 2 короткі звукові сигнали - СПРАВКА ЗАПИСАТИ ДУБЛІКАТ КЛЮЧА.
3 - Записуємо необхідну кількість (до 500) ключів. Пауза між ключами, що записуються, не більше 20 сек.
4 - Відключаємо живлення контролера або витримуємо паузу 20 сек.

Програмування контролера доступу через ДЖАМПЕРИ JP1, JP2, JP3, JP4

JP1 - Час роботи РЕЛЕ, збільшення 1 сек.
JP2 - Час очікування закриття дверей, збільшення 1 сек.
JP3 - Додавання нових ключів (максимум - 500).
JP4 - Стирає всі ключі з пам'яті контролера.

Джампер виконують свою функцію при постійному замиканні на час використання.

Друкована плата:

Зовнішній вигляд зібраного пристрою:

«Час роботи РЕЛЕ»- JP1 на всьому протязі замикання джампера блимає червоний світлодіод із частотою 1 Гц. та звучить короткий звуковий сигнал біпера. З кожним звуковим та світловим сигналом (зелений світлодіод) до змінної "Час роботи РЕЛЕ" додається по 1 секунді. Усього може бути від 1 сек до 32. Відрахувавши потрібна кількістьсекунд зніміть перемичку.

«Час очікування зачинених дверей»
- JP2 протягом усього замикання джампера блимає червоний світлодіод із частотою 1 гц. та звучить короткий звуковий сигнал Біпера. З кожним звуковим і світловим зеленим сигналом змінна "Час очікування закритих дверей" додається по 1 секунді, всього може бути від 5 сек до 126. Відрахувавши потрібну кількість секунд, зніміть джампер.

«Додавання нових ключів»- JP3 протягом всього замикання джампера червоний світлодіод блимає з частотою 2 Гц. Підносячи ключ до зчитувача при вдалому зчитуванні пролунає короткий звуковий сигнал біпера і світлодіод блимає зеленим кольором- Ключ записаний. Якщо ключ уже записаний у пам'яті, то при спробі записати його знову лунає 2 короткі сигнали біпера. При спробі записати в пам'ять більше 500 ключів постійно блимає червоний світлодіод із частотою 2 Гц. та періодично звучить короткий звуковий сигнал біпера. Зніміть джампер.

«Стирання всіх ключів із пам'яті контролера»- JP4 через 3 с після замикання видається 5 коротких сигналу біпера, пауза, потім безперервно звучить біпер на час стирання (приблизно 10сек) - пам'ять ключів стерта. Заберіть джампер.

Замок має просту конструкціюта призначений в основному для індивідуального використання. Замок працює з будь-якими типами ключів iButton, тому можна застосовувати вже наявні ключі, призначені для інших цілей. Усього в пам'ять може бути записано до 9 ключів, хоча цю кількість можна легко збільшити. Для авторизації процесу програмування використовується майстер-ключ, код якого занесений до ПЗП і не може бути стертий або змінений звичайною процедурою програмування замка.

У останнім часомширокого поширення набули замки, ключем до яких є електронна таблетка iButton (або touch memory) фірми Dallas Semiconductor. Такі замки часто використовуються на дверях під'їздів, а також у багатьох закладах. Крім того, ключі iButton часто застосовуються для розрахунків на автозаправних станціях та інших місцях. Таким чином, у багатьох вже є ключі iButton від чогось. Тому при проектуванні саморобного замку раціонально використовувати в ньому ключі, що вже є у користувача. Саме так і зроблено у пропонованому замку: з ним можуть працювати будь-які типи ключів, тому що використовується тільки записаний у ПЗУ iButton серійний номер, який є в будь-якому типі. До того ж, команда читання цього номера та сама для всіх типів ключів (33H). Код сімейства, який відрізняється у різних типівможе бути будь-яким. Він сприймається як одна цифра серіального номера. Потрібно відзначити, що найдешевшим типом ключів є DS1990A.

Замок проектувався для індивідуального використання та має просту конструкцію. на вхідні дверізовні розташовується тільки панелька для 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. Код майстер-ключа занесений до ПЗУ мікроконтролера і не може бути змінений. Програмування нових ключів або стирання старих може бути здійснено лише за наявності майстер-ключа. Як і інші ключі, майстер-ключ може використовуватися для відкриття замка.

Для програмування нового ключа потрібно виконати такі дії:

  1. Натиснути кнопку програмування.
  2. На індикаторі з'явиться літера P, що означає вхід у режим програмування.
  3. Торкнутися майстер-ключом панельки.
  4. На індикаторі з'явиться цифра «1», яка позначає номер ключа, що програмується.
  5. Кнопкою вибрати потрібний номер.
  6. Торкніться будь-яким ключем панелі.
  7. Цифра на індикаторі почне блимати, що говорить про готовність до програмування.
  8. Торкніться панелі тим ключем, код якого потрібно занести на згадку.
  9. У разі успішного програмування, цифра на індикаторі перестане блимати і почне горіти постійно.
  10. Для виходу з режиму програмування потрібно почекати 5 секунд, після чого індикатор згасне.

Схематично процес програмування нового ключа показано на рис. 3.


Мал. 3. Програмування нового ключа

Якщо потрібно запрограмувати кілька ключів, можна відразу перейти від пункту 9 до пункту 5 і повторити пункти 5 – 9 необхідне число раз.

Якщо після виконання пункту 7 виявиться, що вибрано не той номер, то для виключення втрати коду ключа під цим номером можна натиснути кнопку або почекати 5 секунд. У першому випадку поточний номер збільшиться на одиницю, а вміст пам'яті залишиться без змін. У другому випадку станеться повний вихідз програмування без зміни кодів. Взагалі, вихід із програмування можна здійснити будь-якої миті, якщо зробити паузу більше 5 секунд.

Для стирання з пам'яті зайвого ключа послідовність дій залишається такою самою, як і при програмуванні, тільки всі дії виконуються майстер-ключом. Тобто. процес стирання фактично є записом коду майстер-ключа на номери, що не використовуються.
Схематично процес стирання зайвого ключа показано на рис. 4.


Мал. 4. Стирання зайвого ключа

У процесі програмування відчинити двері кнопкою можна, а ось відкриття за допомогою iButton заблоковане. Оскільки внутрішня та зовнішня панельки з'єднані паралельно, слід стежити, щоб під час програмування ніхто не торкався зовнішньої панельки жодними ключами.

Код майстер-ключ записується в ПЗУ програм мікроконтролера, починаючи з адреси 2FDH. Довжина коду складає 8 байт. Послідовність цифр має бути така сама, як і на корпусі touch-memory, читати потрібно зліва направо. Тобто. за адресою 2FDH заноситься значення контрольної суми, потім за адресами 2FEH – 303H шість байт серійного номера, починаючи зі старшого байта, та, нарешті, за адресою 304H – код сімейства. Наприклад, код може виглядати так: 67 00 00 02 D6 85 26 01.

Програма електронного замкумає головний цикл, блок-схема якого показано на рис. 5. В основному циклі проводиться опитування панельки, і якщо там виявляється ключ, зчитується його код. Потім цей код перевіряється, і якщо він збігається з кодом майстер-ключа або іншого ключа (ключа користувача), занесеного в пам'ять, замок відкривається. Також перевіряється стан кнопки відчинення дверей, і у разі виявлення натискання замок також відкривається.


Мал. 5. Блок-схема основного циклу програми

Для обробки подій, пов'язаних із програмуванням, є дві підпрограми: PROGT та PROGS, блок-схеми яких наведені на рис. 6. Перша викликається під час зчитування коду ключа як програмування, друга – при натисканні кнопки програмування (NUMBER). Процес програмування розбитий на 3 фази. При натисканні кнопки NUMBER здійснюється вхід програмування, тобто. перехід до фази 1. У цьому на індикатор виводиться буква «P». Коди ключів, що зчитуються після цього, перевіряються на збіг з кодом майстер-ключа, оскільки тільки він може дозволити продовжити програмування. Якщо такий збіг стався, здійснюється перехід до фази 2. На індикатор виводиться номер поточного ключа, який кнопка NUMBER може змінювати. Якщо знову буде зареєстровано торкання ключа, то відбудеться перехід до фази 3. Ще один торкання ключа призведе до запам'ятовування його коду та повернення до фази 2. Натисканням кнопки NUMBER також можна повернутися до фази 2, але без зміни вмісту пам'яті. Будь-яка дія в режимі програмування викликає перезавантаження таймера повернення, який має інтервал 5 секунд і перевіряється в основному циклі. Якщо буде виявлено обнулення цього таймера, відбувається вихід з режиму програмування.


Мал. 6. Блок-схеми підпрограм, що використовуються під час програмування коду ключа

Наведені на рис. 5 і 6 блок-схеми є спрощеними, проте загальну логіку побудови програми вони зрозуміти дозволяють.

Описаний замок, звичайно, не має широкого набору можливостей. Однак він дуже простий, що робить його доступним для повторення. Відкритий вихідний текст програми дозволяє самостійно вдосконалювати конструкцію або адаптувати її до конкретних вимог.

Завантажити файли:
lock.asm – вихідний текст програми замку.
lock.bin – відтрансльована програма.

Загальний опис

Ідея застосування ключів I-Buttonвиникала у мене зі збільшенням ваго-габаритних характеристик загальної зв'язки в кишені. Коли живеш у приватному будинку, хочеться, щоб усі замки відчинялися одним ключем. На жаль, таке поки що важко досяжно. Але починати з чогось треба.

Звичайно, я вирішив почати з мало відповідального об'єкта - задні двері входу у двір. Хоча використовується вона досить часто, але у разі будь-якої відмови завжди можна скористатися парадним входом.

При виборі замикаючої частини від утримуючого електромагніту я вирішив відмовитися через малу надійність на предмет відсутності живлення (обрив проводів), оскільки, на відміну від використання подібних пристроїву приміщеннях, кабель важко заховати (хіба що глибоко закопати). Вирішенням проблеми стала звичайна клямка від штатного квартирного замку з тією лише різницею, що привід в рух механізму, що відкриває, буде здійснюватися не від ручки або ключа, а від електромагніта, керованого розроблюваним пристроєм (я взяв від автомобільного замку). Таким чином, при зникненні живлення, наприклад, у разі обриву пристрій залишається знеструмленим, а замок закритим.

Основні характеристики замка на ключах I-Button:

  • автоматичне замикання дверей механічним способом(захлопування), що робить його незалежним від наявності електроживлення,
  • відмикання замка як зовні, так і зсередини за допомогою ключа Touch Memory(домофонна "таблетка"), для виключення відкриття замку після банального перелазу через паркан,
  • інформування про відчинених дверейза допомогою переривчастого звукового сигналу,
  • збереження в незалежній пам'яті до десяти ключів I-Button, з використанням майстер-ключа.

Схема пристрою

Мал. 1. Принципова схема

Основою пристрою є контролер PIC16F628A.

На мікросхемі КРЕН5А виконано стабілізатор напруги.

Дві контактні майданчики для зчитування коду ключа XS1 та XS2 підключені до різних висновків порту А (А2 та А3). Це необхідно для визначення, з якого боку прикладено ключ (оскільки запам'ятовування нових ключів можливе тільки з внутрішнього контактного майданчика). На стабілітронах, резисторах та діодах 1N4148 виконано захист входів.

Положення дверей визначається за двома герконами - 1 та 2. На схемі рис. 1 показано закритий стан. Магніт, встановлений у двері, знаходиться навпроти геркона 1. Геркони розташовуються таким чином, щоб при відкриванні дверей магніт проходив послідовно через позиції 1=>2=>3=>4, показані на рис. 2.

Геркон 2 використовується для "відпускання" клямки після відчинення дверей, а також для "втягування" клямки при зачиненні дверей.

Динамік D1 (я використав електромагнітний від китайської іграшки) включається через транзистор VT1.

Підсилювач соленоїда замку L1 виконаний на "дарлінгтон" TIP122. Для захисту від комутаційних кидків напруги використовується зворотно включений діод КД202.

На оптопарі PC817 виконано схему контролю цілісності ланцюга соленоїда. Працює вона в такий спосіб. За відсутності керуючого сигналу відкриття замку транзистор VT2 закритий. Струм тече через котушку L1 і світлодіод оптопари. На вході контролера B5 низький рівень, що контролюється програмою. При обриві ланцюга соленоїда транзистор оптопари закривається і на вході B5 з'являється високий рівень, який фіксується для передачі відповідного сигналу.

Слід зазначити, що при подачі команди на відкриття замку на вході B5 буде також високий рівень, однак, програмою він не фіксується, так як час перебування замку у відкритому стані істотно менше часу перебування в закритому.

Резистор Rк у ланцюзі оптрона підбирається, залежно від обраного соленоїда, щоб струм через світлодіод був 10-20 мА.

Монтажну платупристрої у форматі Sprint-Layout 5.0скачуємо.

Прошивка

Файли проекту у середовищі MPLab IDEможна завантажити.

Вихідний код із описом алгоритмівроботи наведено нижче.

Мікроконтролер PIC16F628A використовує зовнішній кварцовий резонатор 20 МГц. Сторожовий таймер увімкнено на максимальний розподільник.

Переривання за таймером 2 використовуються для включення пищалки.

Основний цикл програми побудований на таймері 1 та розташований у підпрограмі TIME_UP, яка виконується з періодом близько 0,1 сек.

Підпрограма TIME_UP, використовуючи вкладені процедури, виконує все необхідні діїописані нижче.

У підпрограмі INIT здійснюється почергове опитування зчитувачів (зовнішнє та внутрішнє, залежно від прапора IN_FLAG, 0). При встановленому прапорі відповіді ключа (ANSWER_FLAG,0) виконується процедура READ_CODE для читання коду ключа.

У процедурі READ_CODE по черзі зчитуються вісім байт даних з ключа (за допомогою підпрограм WR_BYTE і R_BYTE організовано обмін даними по шині 1-WIRE), після чого підпрограма CHECK_CRC здійснює підрахунок CRC (циклічно надлишковий код) перших семи прийнятих байт і порівнює CRC з восьмим прийнятим байтом.

При розбіжності CRC відбувається вихід із процедури READ_CODE, інакше лічені дані вважаються достовірними та обробляються далі.

При виконанні процедури CHECK_CODE перевіряється відповідність ліченого коду та збереженого в EEPROM.

Зберігання кодів ключів в EEPROM організовано в такий спосіб. Вісім байт першого ключа зберігаються за адресами з 00h до 07h починаючи з першого байта. За адресою 7Fh зберігається значення наступної адреси EEPROM, вільної запису наступного ключа (у разі - 08h). Ключ, код якого знаходиться на адресах з 00h по 07h, є майстер-ключом і використовується для активації режиму збереження коду наступних ключів. Запис коду наступного ключа (при активації режиму збереження) проводиться за адресами з 08h по 0Fh із занесенням 10h в комірку з адресою 7Fh. Таким чином, можливий запис до десяти ключів. Слід зазначити, що для активації режиму запису нового ключа потрібна майстер-ключ. Тому код майстер-ключа повинен бути занесений до осередків з 00h по 07h (із записом 08h в осередок з адресою 7Fh) на етапі прошивки контролера.

У процедурі CHECK_CODE відбувається послідовна перевірка відповідності ліченого коду та даних у EEPROM, починаючи з більшої адреси до нульової.

Після виходу з CHECK_CODE перевіряється стан прапора EQUAL_FLAG, 0. Якщо він встановлений (код збігся), то відбувається відкриття замка (процедура OPEN_LOCK), при цьому, якщо збігся код майстер-ключа, зчитаного з внутрішнього контактного майданчика, відбувається встановлення прапора MASTER_FL, 0. Прапор MASTER_FL, 0 використовується у підпрограмі LOCK_DRIVER, де після закінчення 5 сек у разі відчинених дверей відбувається активація режиму запису нового ключа (встановлюється прапор SAVE_FLAG, 0).

Якщо прапор EQUAL_FLAG, 0 після виходу з CHECK_CODE не встановлено (немає збігу кодів), перевіряється наявність включеного режиму запису нового ключа (прапор SAVE_FLAG, 0). При включеному режимі та за умови зчитування нового ключа із внутрішнього контактного майданчика викликається процедура SAVE_TO_EE, де відбувається запис коду нового ключа (якщо не перевищено ліміт – 10 ключів).

На цьому виконання підпрограми READ_CODE завершується та відбувається перехід у зовнішній цикл.

З вищесказаного випливає, що після застосування прошитого ключа (у тому числі й майстер-ключа) до будь-якого контактного майданчика замок відкривається. Процедура запису нового ключа має такий вигляд. Утримуючи двері від відкривання прикладаємо майстер-ключ до внутрішнього контактного майданчика, при цьому замок відкривається, йде переривчаста звукова сигналізація про відчинення дверей. При цьому, якщо утримувати двері в закритому станіна більше 5 секунд замок закривається, переривчаста звукова сигналізація змінюється на безперервну, інформуючи про те, що включений режим запису нового ключа. Після цього необхідно додати новий ключ до внутрішнього контактного майданчика, після чого відбудеться збереження коду і відкриття замка вже знову записаним ключем (безперервна пищалка змінюється на переривчасту).

Тепер пробіжимося за іншими процедурами, що виконуються в TIME_UP (з періодом 0,1 сек).

CHECK_N_CLR_SAVE перевіряє наявність увімкненого режиму запису нового ключа (прапор SAVE_FLAG, 0). При включеному режимі запису за допомогою лічильника SAVE_COUNT здійснює відлік часу (близько 5 сек) до вимкнення режиму за відсутності зчитування коду нового ключа (початкове значення заноситься до SAVE_COUNT одночасно з установкою прапора SAVE_FLAG, 0 у процедурі LOCK_DRIVER).

CHECK_HERCONS здійснює перевірку стану герконів контролю положення дверей з фіксацією відповідних режимів (прапори DOOR_OPEN, 0 та DOOR_H_OPEN, 0). Блок-схему алгоритму підпрограми наведено на рис. 3.

CHECK_LOCK_CONT перевіряє стан входу PORTB, 5 (контроль ланцюга соленоїда), коли замок не відкритий і при необхідності встановлює прапор помилки LOCK_ERR, 0.

Підпрограма CHECK_BUTTON обробки стану кнопки SB1 в даній версії прошивки не використовується (спочатку хотів організувати відкриття дверей зсередини, потім включення режиму запису нового ключа - в результаті всього відмовився, так як кнопку можна знайти, перестрибнувши через паркан).

У LOCK_DRIVER за допомогою лічильника LOCK_COUNT відраховується час відкритого стану замка у разі відчинення дверей. Через 5 секунд замок закривається, щоб уникнути перевантажень соленоїда і ланцюга управління. Крім того, тут проводиться установка прапора SAVE_FLAG, 0 після зчитування майстер-ключа.

У підпрограмі CHECK_TONE за допомогою лічильника TONE_COUNT здійснюється відлік часу в імпульсах та інтервалах пищалки з установкою прапора FLAG_TONE, 0 у момент імпульсу. Залежно від стану замку використовуються такі варіанти включення звукової сигналізації: імпульси та інтервали рівні - двері відчинені або замок відчинені; імпульс із довгим інтервалом - несправність ланцюга соленоїда; імпульс без інтервалу - увімкнено режим запису нового ключа.

В обробнику переривання таймером 2 перевіряється стан прапора FLAG_TONE, 0, і при його встановленні на виході PORTB, 4 генеруються імпульси з періодом 2 переповнення таймера.

Практика застосування замку, що розглядається, показала досить стабільну його роботу протягом усього календарного року. З виявлених недоліків істотним є неможливість відкриття дверей при відключенні електроенергії, що вирішується шляхом організації акумуляторного резерву.

Також під час експлуатації за температур нижче -20 градусів Цельсія спостерігалося замерзання герконів. На якість відчинення дверей, втім, це не вплинуло – просто зробив відключення пищалки після деякого проміжку часу. Поставив магніт потужніший: до - 40 градусів працює нормально.

Фото

Тут показано пристрій домашньої обстановці, як кажуть, на випробувальному стенді. (Прохання сильно не лаяти за безлад - обстановка творча.)

Доробка замку – приєднання тяги із пружиною.

Конструкція контактних майданчиків: корпус із сантехнічних латунних пробок (різьблення на 15 мм), центральний електрод ізольований гумовою вставкою.

Кріплення пристрою на місці. Замок вмонтований у шматок дошки.

Розташування герконів у торці дошки. (Магніт встановлений у двері – на фото не показано.)

Вид дверей з вулиці.

Встановлення закінчено.

Внутрішній контактний майданчик розміщений знизу, від захльостування дощу.