Незвичайний кодовий замок Arduino. Кодовий замок з Ардуїно Електронний замок на arduino nano

У цьому уроці ми навчимося робити просту систему, яка відпиратиме замок по електронному ключу (Мітці).

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

У цьому уроці нам знадобиться:

Для реалізації проекту нам необхідно встановити бібліотеки:

2) Тепер потрібно підключити Зуммер, який подаватиме сигнал, якщо ключ спрацював і замок відкривається, а другий сигнал, коли замок закривається.

Зумер підключаємо в наступній послідовності:

Arduino Зуммер
5V VCC
GND GND
pin 5 IO

3) У ролі механізму, що відмикає, буде використовуватися сервопривід. Сервопривід може бути обраний будь-який, залежно від необхідних розмірів і зусиль, який створює сервопривід. Сервопривод має 3 контакти:

Більш наочно Ви можете подивитися, як ми підключили всі модулі на малюнку нижче:

Тепер, якщо все підключено, можна переходити до програмування.

Скетч:

#include #include #include // бібліотека " RFID " . #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); unsigned long uidDec, uidDecTemp; // для зберігання номера мітки у десятковому форматі Servo servo; void setup() ( Serial.begin(9600); Serial.println("Waiting for card..."); SPI.begin(); // ініціалізація SPI / Init SPI bus. mfrc522.PCD_Init(); // ініціалізація MFRC522 / Init MFRC522 card. servo.attach(6); ) // Вибір мітки if (! mfrc522.PICC_ReadCardSerial()) ( return; ) uidDec = 0; // Видача серійного номера мітки.< mfrc522.uid.size; i++) { uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec * 256 + uidDecTemp; } Serial.println("Card UID: "); Serial.println(uidDec); // Выводим UID метки в консоль. if (uidDec == 3763966293) // Сравниваем Uid метки, если он равен заданому то серва открывает. { tone(5, 200, 500); // Делаем звуковой сигнал, Открытие servo.write(90); // Поворациваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворациваем ключ и т.д.) delay(3000); // пауза 3 сек и механизм запирается. tone(5, 500, 500); // Делаем звуковой сигнал, Закрытие } servo.write(0); // устанавливаем серву в закрытое сосотояние }

Розберемо скетч детальніше:

Для того, щоб дізнатися UID картки (Мітки), необхідно записати цей скетч в arduino, зібрати схему, викладену вище, і відкрити Консоль (Моніторинг послідовного порту). Коли ви піднесете мітку до RFID, у консолі виведеться номер

Отриманий UID необхідно ввести в наступний рядок:

If (uidDec == 3763966293) // Порівнюємо Uid мітки, якщо він дорівнює заданому то сервопривід відкриває засувку.

У кожній картці цей ідентифікатор унікальний і не повторюється. Таким чином, коли ви піднесете картку, ідентифікатор якої ви задали в програмі, система відкриє доступ за допомогою сервоприводу.

Відео:

Днями я переглядав фільм «Нова Людина-Павук» і в одній сцені Пітер Паркер дистанційно відчиняє та зачиняє двері зі свого ноутбука. Щойно я побачив це, то одразу ж зрозумів, що й мені потрібен такий електронний замок на вхідні двері.

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

Крок 1: Список матеріалів





Для складання електронного замку на Ардуїно вам знадобляться такі матеріали:

Електроніка:

  • 5В настінний адаптер

Компоненти:

  • 6 гвинтів для шпингалету
  • картон
  • дроти

Інструменти:

  • паяльник
  • клейовий пістолет
  • дриль
  • свердло
  • свердло для напрямного отвору
  • канцелярський ніж
  • комп'ютер із програмою Arduino IDE

Крок 2: Як діє замок

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

Важіль сервоприводу, з'єднаний зі шпингалетом, закриватиме його (на 0°) і відкриватиме (на 60°), за допомогою команд, що отримуються через модуль Bluetooth.

Крок 3: Схема монтажу проводів


Давайте спочатку підключимо сервопривід до плати Arduino (хочу помітити, що, хоча у мене використана плата Arduino Nano, у платі Uno розташування висновків таке саме).

  • коричневий дріт сервоприводу – заземлюючий, його підключаємо до землі на Arduino
  • червоний провід – плюс, його підключаємо до роз'єму 5В на Arduino
  • оранжевий провід - виведення витоку сервоприводу, його підключаємо до 9-го виводу на Arduino

Я раджу вам перевірити роботу сервоприводу, перш ніж продовжити збирання. Для цього в програмі Arduino IDE у прикладах вибираєте Sweep. Переконавшись у тому, що сервіс працює, можемо підключати Bluetooth-модуль. Потрібно з'єднати висновок rx модуля Bluetooth з tx виводом Arduino, і tx виведення модуля з rx виводом Arduino. Але поки що не робіть цього! Коли ці з'єднання будуть спаяні, ви вже не зможете завантажити жодні коди на Arduino, тому спочатку завантажте всі ваші коди і тільки після цього паяйте з'єднання.

Ось схема з'єднань модуля та мікроконтролера:

  • Rx модуля – Tx плати Arduino
  • Tx модуля – Rx плати
  • Vcc (позитивний висновок) модуля – 3,3V плати Arduino
  • Ground з'єднуємо з Ground (заземлення із заземленням)

Якщо пояснення здається вам незрозумілим, слідуйте представленій схемі з'єднань проводів.

Крок 4: Випробування

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

Крок 5: Корпус для електрокомпонентів



Я вирішив помістити в корпус лише контролер та модуль Bluetooth, а сервопривід залишити зовні. Для цього на шматку картону обводимо контур плати Arduino Nano і додаємо по 1 см простору по периметру та вирізаємо. Після цього вирізаємо ще п'ять сторін корпусу. У передній стінці необхідно прорізати отвір під шнур живлення контролера.

Розміри сторін корпусу:

  • Дно – 7,5х4 см
  • Кришка – 7,5х4 см
  • Ліва бічна стінка – 7,5х4 см
  • Права бічна стінка – 7,5х4 см
  • Передня стінка – 4х4 см (з прорізом під шнур живлення)
  • Задня стінка – 4х4 см

Крок 6: Додаток

Для керування контролером вам потрібен гаджет на Android або Windows із вбудованим Bluetooth-ом. У мене не було можливості перевірити роботу програми на яблучних пристроях, можливо, будуть потрібні якісь драйвера.

Упевнений, декому з вас є можливість перевірити це. Для Андроїда завантажте програму Bluetooth Terminal, для Windows завантажте TeraTerm. Потім потрібно підключити модуль до смартфону, ім'я має бути linvor, пароль – 0000 або 1234. Як тільки пару встановиться, відкрийте встановлений додаток, увійдіть в опції та виберіть «Встановити з'єднання (небезпечне)». Тепер ваш смартфон – монітор послідовного інтерфейсу Arduino, тобто ви можете обмінюватись даними з контролером.

Якщо ви введете 0, двері закриються, а на екрані смартфона буде повідомлення «Двері зачинені».
Якщо ви введете 1, то побачите, як двері відчиняються, а на екрані буде повідомлення «Двері відчинені».
На Windows процес той самий, за винятком того, що встановити потрібно програму TeraTerm.

Крок 7: Монтуємо шпингалет


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

Тепер потрібно просвердлити у двері напрямні отвори для гвинтів. Для цього додайте шпингалет до дверей і олівцем позначте на полотні дверей отвори під гвинти. Просвердліть у зазначених місцях отвори під гвинти глибиною приблизно 2,5 см. Прикладіть шпингалет і закріпіть гвинтами. Знову перевірте роботу сервоприводу.

Крок 8: Живлення


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

Крок 9: Код

#include Servo myservo; int pos = 0; int state; int flag=0; void setup() ( myservo.attach(9); Serial.begin(9600); myservo.write(60); delay(1000); ) void loop() ( if(Serial.available() > 0) ( state = Serial.read(); flag=0; ) // if the state is "0" the DC motor буде turn off if (state == "0") ( myservo.write(8); delay(1000); Serial. println("Door Locked"); ) else if (state == "1") ( myservo.write(55); delay(1000); Serial.println("Door UnLocked"); ) )

Крок 10: Закінчений замок на базі Arduino

Насолоджуйтесь своїм замком з дистанційним керуванням, і не забудьте "випадково" замкнути друзів у кімнаті.

Провідного каналу youtube AlexGyver просили зробити електронний замок своїми руками. Ласкаво просимо до циклу відео про електронні замки на arduino. В загальних рисахмайстер пояснить ідею.

Існує кілька варіантів створення системи електронного замку. Найчастіше використовуються для замикання дверей та ящиків, шаф. А також для створення схованок та потайних сейфів. Тому потрібно зробити макет, з яким зручно працювати і можна наочно та докладно показувати пристрій системи зсередини та зовні. Тому вирішив зробити раму із дверцятами. Для цього знадобиться квадратний брус 30 х 30. Фанера 10мм. Дверні петлі. Спочатку хотів зробити фанерну скриньку, але згадав, що у кімнаті все завалено запчастинами. Подібний ящик нікуди поставити. Тому буде зроблено макет. Якщо хтось хоче поставити собі електронний замок, то, дивлячись на макет, можна з легкістю все повторити.

Все, що потрібно для замку, знайдете у цьому китайському магазині.

Ціль – розробити максимально ефективні схемита прошивки для електронних замків. Ви зможете використовувати ці результати для встановлення цих систем на свої двері, ящики, шафи та схованки.


Дверцята готові. Тепер потрібно придумати, як відкривати та закривати електронним способом. Для цих цілей підходить потужна соленоїдна клямка з aliexpress (посилання на магазин вище). Якщо подати висновки напруги, вона відкриється. Опір котушки майже 12 ом, значить при напрузі 12 вольт котушка буде їсти близько 1 ампера. З таким завданням впорається і літієвий акумулятор і модуль, що підвищує. Налаштовуємо на відповідну напругу. Хоча можна і трохи більше. Клямка кріпиться на внутрішній сторонідверцята на відстані, щоб не чіпляли край і могли зачинятися. Клямки повинна бути частиною у відповідь у вигляді металевого короба. Використовувати її без цього незручно та неправильно. Прийде поставити сходинку, хоча б створювалася видимість нормальної роботи.

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

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

Друга частина

Цей проект є модульним, тобто. можна підключати/відключати різні елементи та отримати різну функціональність. На картинках вище показаний варіант з повною функціональністю, а саме:

  • Замикаючий механізм. Служить для ВІДКРИТТЯ та ЗАКРИТТЯ дверей. У цьому проекті розглянуто використання трьох різних механізмів:
    • Сервопривід. Бувають великі, маленькі. Дуже компактний, і разом з важким засувом - чудовий варіант
    • Електропривод замку дверей автомобіля. Велика і потужна штука, але жере просто шалені струми
    • Соленоїдна клямка. Хороший варіант, оскільки сама закривається

    У налаштуваннях прошивки можна вибрати будь-який із трьох типів (налаштування lock_type)

  • Кнопка всередині. Служить для ВІДКРИТТЯ та ЗАКРИТТЯ дверей зсередини. Може бути розміщена на ручці дверей (з боку долоні або з боку пальців), на самій двері, або на косяку
  • Кнопка зовні. Служить для ЗАКРИТТЯ дверей, а також для ПРОБУДЖЕННЯ з енергозбереження. Може бути розміщена на ручці дверей (з боку долоні або з боку пальців), на самій двері, або на косяку
  • Кінцевикна закриття дверей. Служить для автоматичного закриття замка під час закривання дверей. Їм може бути:
    • Тактова кнопка
    • Датчик холу + магніт на самій двері
    • Геркон + магніт на самій двері
  • Секретна кнопка скидання доступу. Служить для скидання пароля/введення нового пароля/запам'ятовування нового ключа/комбінації тощо. Може бути захована десь у корпусі
  • Світлодіоддля індикації. Світлодіод RGB, використовуються червоний та зелений кольори (при змішуванні дають жовтий):
    • Горить зелений – замок ВІДКРИТИЙ. Горить, щоб не забути закрити двері
    • Горить жовтий - система прокинулася і чекає на введення пароля
    • Блимає червоний - сів акумулятор

Будь-який із цих елементів можна виключити із системи:

  • Забираємо кінцевик. У прошивці в налаштуваннях теж його відключаємо (налаштування tail_button). Тепер, щоб закрити замок, потрібно натискати кнопку
  • Забираємо зовнішню кнопку. У прошивці в налаштуваннях теж її відключаємо (налаштування wake_button). Тепер систему не потрібно будити, вона прокидається сама (споживання енергії трохи більше). А також у нас тепер немає кнопки закрити на передній частині дверей і потрібен кінцевик. Або замок – клямка
  • Забираємо внутрішню кнопку. Цей варіант підходить для шаф і сейфів. У налаштуваннях нічого міняти не потрібно
  • Прибираємо світлодіод. У налаштуваннях нічого міняти не потрібно
  • Кнопку скидання доступу можна відпаяти після першого використання, або переписати код під себе.
  • Двері зачинені, натиснуто ЗОВНІ - прокинутися, чекати введення пароля/RFID мітку/електронний ключ/відбиток пальця
  • Двері зачинені, система прокинулася, чекає введення пароля. Час можна настроїти (налаштування sleep_time)
  • Двері зачинені, введений пароль/мітка/ключ і т.д. - відкрити
  • Двері зачинені, натиснуто ВСЕРЕДИНІ - відкрити
  • Двері відчинені, натиснуто ЗОВНІ - закрити
  • Двері відчинені, натиснуто ВСЕРЕДИНІ - закрити
  • Двері відчинені, натиснуті КІНЦЕВИК - закрити

У замку передбачено роботу від акумулятора в режимі зниженого енергозбереження (включити вимкнути: налаштування sleep_enable), а саме:

  • Прокидатися кожні кілька секунд, слідкувати за ПОДІЄЮ (опціональний варіант, якщо зовні немає кнопки. Увімкнути можна в налаштуванні wake_button)
  • Кожні кілька хвилин слідкувати за напругою акумулятора (вкл/викл налаштування battery_monitor)
  • Якщо акум розряджений (напруга встановлюється в налаштуванні bat_low):
    • відкрити двері (опціонально, можна налаштувати у прошивці open_bat_low)
    • заборонити подальше відкриття та закриття
    • при натисканні на кнопки блимати червоним світлодіодом
    • перестати слідкувати за ПОДІЄЮ (тобто введення пароля/мітка тощо)

Коли система не спить, натисніть кнопку зміни пароля (прихована кнопка). Потрапляємо в режим зміни пароля:
Вводимо пароль із цифр ( МАКСИМУМ 10 ЦИФР!)

  • При натисканні * пароль записується в пам'ять і система виходить із зміни пароля
  • При натисканні # скидається пароль (можна вводити заново)
  • Якщо нічого не натискати 10 секунд, автоматично вийдемо з режиму зміни пароля, пароль залишиться старий

Коли система не спить (прокинулися по кнопки або сон вимкнено), натиснути * для входу в режим введення пароля
Якщо система спить і періодично прокидається перевіряти ПОДІЯ, то натискаємо * і утримуємо, доки не загориться червоний світлодіод
Режим введення пароля:

  • Обробка пароля зроблена таким чином, що правильний пароль зараховується тільки при наборі правильної послідовності цифр, тобто якщо пароль 345, то можна вводити будь-які числа до тих пір, поки не з'явиться послідовність 345, тобто. 30984570345 відкриє замок, оскільки закінчується на 345.
  • Якщо пароль введено правильно, двері відчиняться
  • Якщо нічого не натискати, через 10 секунд система повернеться до звичайного (чергового) режиму
  • Якщо натиснути #, одразу вийдемо з режиму введення пароля
  • Якщо натиснути секретну кнопку зміни пароля в режимі введення пароля, теж з нього вийдемо