Кодовий замок з Ардуїно. Електронний замок на Ардуїно Налаштовуємо електронний замок
Провідного каналу youtube AlexGyver просили зробити електронний замок своїми руками. Ласкаво просимо до циклу відео про електронні замки на arduino. У загальних рисахмайстер пояснить ідею.
Є кілька варіантів створення системи електронного замку. Найчастіше використовуються для замикання дверей та ящиків, шаф. А також для створення схованок і таємних сейфів. Тому потрібно зробити макет, з яким зручно працювати і можна наочно та детально показувати пристрій системи зсередини та зовні. Тому вирішив зробити раму із дверцятами. Для цього знадобиться квадратний брус 30 x 30. Фанера 10мм. Дверні петлі. Спочатку хотів зробити фанерна скринька, але згадав, що у кімнаті все завалено запчастинами. Подібний ящик нікуди поставити. Тому буде зроблено макет. Якщо хтось хоче поставити собі електронний замок, то, дивлячись на макет, можна з легкістю все повторити.
Все, що потрібно для замку, знайдете у цьому китайському магазині.
Ціль – розробити максимально ефективні схемита прошивки для електронних замків. Ви зможете використовувати ці результати для встановлення цих систем на свої двері, ящики, шафи та схованки.
Дверцята готові. Тепер потрібно придумати, як відкривати та закривати електронним способом. Для цих цілей підходить потужна соленоїдна клямка з aliexpress (посилання на магазин вище). Якщо подати висновки напруги, вона відкриється. Опір котушки майже 12 ом, значить при напрузі 12 вольт котушка буде їсти близько 1 ампера. З таким завданням впорається і літієвий акумуляторі підвищує модуль. Налаштовуємо на відповідну напругу. Хоча можна й трохи більше. Клямка кріпиться на внутрішній сторонідверцята на відстані, щоб не чіпляли край і могли зачинятися. Клямки повинна бути частиною у відповідь у вигляді металевого короба. Використовувати її без цього незручно та неправильно. Прийде поставити сходинку, хоча б створювалася видимість нормальної роботи.
У неодруженому режимі клямка відкривається нормально, тобто якщо на дверцятах є ручка, подаємо імпульс, дверцята за ручку відчиняємо. Але якщо пружити, цей спосіб вже не підходить. Перетворювач, що підвищує, не справляється з навантаженням. Для відкриття підпружинених дверцят доведеться використовувати великі акумулятори і потужніший перетворювач. Або мережеве джерело живлення і забити на автономності системи. У китайських магазинах є клямки великих розмірів. Вони підійдуть для ящиків. Живлення можна подавати за допомогою реле або мосфет транзистора, або силового ключа на тому ж транзисторі. Більш цікаво і менш витратний варіант - сервопривід, з'єднаний з шатуном з будь-яким замикаючим елементом - шпингалет або більш серйозні засувки. Він може знадобитися також шматочок сталевої спиці, яка виконує роль шатуна. Такій системі не потрібний великий струм. Але вона займає більше місця та хитріша логіка управління.
Є два типи сервоприводів. Маленькі слабенькі та великі потужні, якими можна спокійно засунути в отвори у серйозні металеві штирі. Обидва наведені варіанти працюють як на дверцятах, так і на висувних ящиках. З ящиком доведеться повозитись, проробляючи отвір у висувній стінці.
Друга частина
Сьогодні урок про те, як використовувати RFID-рідер з Arduino для створення простої системи блокування, простими словами- RFID-замок.
RFID (англ. Radio Frequency IDentification, радіочастотна ідентифікація) - спосіб автоматичної ідентифікації об'єктів, у якому за допомогою радіосигналів зчитуються або записуються дані, що зберігаються в так званих транспондерах, або RFID-мітках. Будь-яка RFID-система складається зі зчитувального пристрою (зчитувач, рідер або Інтеррогатор) і транспондера (він же RFID-мітка, іноді також застосовується термін RFID-тег).
В уроці використовуватиметься RFID-мітка з Arduino. Пристрій читає унікальний ідентифікатор (UID) кожного тегу RFID, який ми розміщуємо поруч із зчитувачем, і відображає його на OLED-дисплеї. Якщо тег UID дорівнює визначеному значенню, яке зберігається в пам'яті Arduino, тоді на дисплеї ми побачимо повідомлення «Unlocked» (англ., розблоковано). Якщо унікальний ідентифікатор не дорівнює визначеному значенню, повідомлення "Unlocked" не з'явиться - див. нижче.
Замок закритий
Замок відкритий
Деталі, необхідні для створення цього проекту:
- RFID-рідер RC522
- OLED-дисплей
- Макетна плата
- Провід
Додаткові деталі:
- Акумулятор (Powerbank)
Загальна вартість комплектуючих проекту становила приблизно 15 доларів.
Крок 2: RFID-зчитувач RC522
У кожній мітці RFID є невеликий чіп (на фото біла картка). Якщо направити ліхтарик на цю RFID-карту, можна побачити маленький чіп та котушку, яка оточує його. Цей чіп не має батареї для отримання потужності. Він отримує харчування від зчитувача бездротовим чином, використовуючи цю велику котушку. Можна прочитати RFID-карту, подібну до цієї, з відстані до 20 мм.
Той самий чіп існує і в тегах RFID-брелка.
Кожен RFID тег має унікальний номер, який ідентифікує його. Це UID, який відображається на OLED-дисплеї. Крім цього UID, кожен тег може зберігати дані. У цьому типі карток можна зберігати до 1 тисячі даних. Вражає, чи не так? Ця функція не буде використана сьогодні. Сьогодні все, що цікавить, - це ідентифікація конкретної картки її UID. Вартість RFID-зчитувача та цих двох карт RFID складає близько 4 доларів США.
Крок 3: OLED-дисплей
В уроці використовується OLED-монітор 0.96" 128x64 I2C.
Це дуже гарний дисплей для використання з Arduino. Це дисплей OLED, і це означає, що він має низьке енергоспоживання. Потужність цього дисплея становить близько 10-20 мА, і це залежить від кількості пікселів.
Дисплей має роздільну здатність 128 на 64 пікселі і має крихітний розмір. Існує два варіанти відображення. Один із них монохромний, а інший, як той, який використаний в уроці, може відображати два кольори: жовтий та синій. Верхня частинаекрана може бути лише жовтою, а нижня частина – синьою.
Цей OLED-дисплей дуже яскравий і має чудову і дуже приємну бібліотеку, яку розробила компанія Adafruit для цього дисплея. Крім цього, дисплей використовує інтерфейс I2C, тому з'єднання з Arduino неймовірно просте.
Вам потрібно лише підключити два дроти, за винятком Vcc та GND. Якщо ви новачок в Arduino і хочете використовувати недорогий і простий дисплей у вашому проекті, почніть з цього.
Крок 4: З'єднуємо всі деталі
Зв'язок із платою Arduino Uno дуже простий. Спочатку підключимо живлення як зчитувача, і дисплея.
Будьте обережні, зчитувач RFID повинен бути підключений до виходу 3,3 В від Arduino Unoабо він буде зіпсований.
Так як дисплей може працювати на 3,3 В, ми підключаємо VCC від обох модулів до позитивної шини макета. Потім ця шина підключається до виходу 3,3 від Arduino Uno. Після цього з'єднуємо обидві землі (GND) із шиною заземлення макета. Потім ми сполучаємо GND-шину макета з Arduino GND.
OLED-дисплей → Arduino
SCL → Аналоговий Pin 5
SDA → Аналоговий Pin 4
RFID-рідер → Arduino
RST → Цифровий Pin 9
IRQ → Не з'єднаний
MISO → Цифровий Pin 12
MOSI → Цифровий Pin 11
SCK → Цифровий Pin 13
SDA → Цифровий Pin 10
Модуль RFID зчитувача використовує інтерфейс SPI для зв'язку з Arduino. Тому ми маємо намір використовувати апаратні штирі SPI від Arduino UNO.
Висновок RST надходить на цифровий контакт 9. Контакт IRQ залишається нескладним. Контакт MISO підключається до цифрового виходу 12. Штир MOSI йде цифровий контакт 11. Контакт SCK переходить на цифровий контакт 13, і, нарешті, висновок SDA йде цифровий висновок 10. Ось і все.
Зчитувач RFID підключено. Тепер нам потрібно підключити OLED-дисплей Arduino, використовуючи інтерфейс I2C. Таким чином, висновок SCL на дисплеї переходить до аналогового виводу Pin 5 і SDA на дисплеї до аналогового Pin 4. Якщо тепер ми увімкнемо проект і розмістимо RFID-карту поряд з рідером, ми побачимо, що проект працює нормально.
Крок 5: Код проекту
Щоб код проекту було скомпілювано, нам потрібно включити деякі бібліотеки. Насамперед нам потрібна бібліотека MFRC522 Rfid.
Щоб встановити її, перейдіть до Sketch -> Include Libraries -> Manage libraries(Управління бібліотеками). Знайдіть і встановіть MFRC522.
Нам також потрібна бібліотека Adafruit SSD1306 та бібліотека Adafruit GFX для відображення.
Встановіть обидві бібліотеки. Бібліотека Adafruit SSD1306 потребує невеликої модифікації. Перейдіть до папки Arduino -> Libraries, відкрийте папку Adafruit SSD1306 та відредагуйте бібліотеку Adafruit_SSD1306.h. Закоментуйте рядок 70 та розкоментуйте рядок 69, т.к. дисплей має роздільну здатність 128x64.
Спочатку ми оголошуємо значення мітки RFID, яку має розпізнати Arduino. Це масив цілих чисел:
Int code = (69,141,8,136); // UID
Потім ми ініціалізуємо зчитувач RFID та дисплей:
Rfid.PCD_Init(); display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
Після цього функції циклу ми перевіряємо тег на зчитувачі кожні 100 мс.
Якщо на зчитувачі є тег, ми читаємо його UID та друкуємо його на дисплеї. Потім ми порівнюємо UID тега, який ми щойно прочитали, зі значенням, яке зберігається в кодовій змінній. Якщо значення однакові, ми виводимо повідомлення UNLOCK, інакше ми не відображатимемо це повідомлення.
If(match) ( Serial.println("\nI know this card!"); printUnlockMessage(); )else ( Serial.println("\nUnknown Card"); )
Звичайно, ви можете змінити цей код, щоб зберегти більше 1 значення UID, щоб проект розпізнав більше RFID-міток. Це просто приклад.
Код проекту:
#include Як видно з уроку – за невеликі гроші можна додати RFID-рідер у ваші проекти. Можна легко створити систему безпеки за допомогою цього рідера або створити більш цікаві проекти, наприклад, щоб дані з диска USB зчитувалися тільки після розблокування.
Цей проект є модульним, тобто. можна підключати/відключати різні елементи та отримати різну функціональність. На картинках вище показаний варіант з повною функціональністю, а саме: У налаштуваннях прошивки можна вибрати будь-який із трьох типів (налаштування lock_type) Будь-який з цих елементів можна виключити із системи: У замку передбачено роботу від акумулятора в режимі зниженого енергозбереження (включити вимкнути: налаштування sleep_enable), а саме: Коли система не спить, натисніть кнопку зміни пароля (прихована кнопка). Потрапляємо в режим зміни пароля: Коли система не спить (прокинулися по кнопки або сон вимкнено), натиснути * для входу в режим введення пароля У цій статті я розповім, як зробити кодовий замок із ардуїно. Для цього нам знадобляться червоний та зелений світлодіоди, зумер, ардуїно нано, LCD дисплей з I2C конвертором, сервопривід та матрична клавіатура 4x4. При включенні дисплей писатиме "Enter code.", увімкнеться червоний світлодіод, а зелений згасне, сервопривід встановиться на 0 °. При введенні цифр на дисплеї загоряться *. Якщо код введено неправильно, дисплей напише "Enter cod.". Якщо код правильний, пролунає звуковий сигнал, сервопривід повернеться на 180°, дисплей напише "Open." увімкнеться зелений світлодіод, а червоний відключиться. Після 3 секунд сервопривід повернеться в початкове положення, увімкнеться червоний світлодіод, а зелений згасне, дисплей напише "Close.", потім дисплей напише "Enter code". Тепер про схему. Спочатку з'єднуємо ардуїно проводами із макетною платою (контакти харчування). Потім підключаємо до контактів D9 – D2 матричну клавіатуру. Потім сервопривід. Його підключаємо до контакту 10. Червоний світлодіод до контакту 11. Зелений – до контакту 12. Зуммер – до контакту 13. Тепер завантажуємо скетч. #include Ось і все. Насолоджуйтесь кодовим замком! Arduino Nano 3.0 220 Ом АЛ102Г АЛ307Г Порившись на китайських барахолках і ebay, я нічого дешевого і більш-менш серйозного не знайшов і вирішив зробити його своїми руками. Обмовлюся відразу, що платформа Arduino була обрана за свою простоту, оскільки досвіду спілкування з мікроконтролерами не було взагалі. Разом:$33,5 і 350руб. Не так вже й мало, скажете ви, і будете, безперечно, мають рацію, але ж за задоволення треба платити! А зібрати щось своїми руками завжди приємно. До того ж конструкцію можна здешевити, якщо використовувати голий МК без Arduino. Відео процесу роботи пристрою: Крок 6: Підсумковий результат
Вводимо пароль із цифр ( МАКСИМУМ 10 ЦИФР!)
Якщо система спить і періодично прокидається перевіряти ПОДІЯ, то натискаємо * і утримуємо, доки не загориться червоний світлодіод
Режим введення пароля:Список радіоелементів
Так сталося, що вирішили ми на роботі встановити кодовий замок на свої двері, тому, як постійно вбігаємо - вибігаємо з кабінету, двері в який повинні бути зачинені постійно без мешканців. Ключі часто виявляються забутими всередині. Втім, вирішили, що кодовий замок це чудовий вихід. Позначення
Тип
Номінал
Кількість
Примітка Магазин Мій блокнот
Е1
Плата Arduino 1
5В
До блокноту
Е8, Е9
Резистор 2
SMD
До блокноту
Е6
Світлодіод 1
Червоний
До блокноту
Е7
Світлодіод 1
Зелений
До блокноту
Е3
LCD-дисплей Інтерфейс I2C 1
Зелене підсвічування
До блокноту
Е5
Сервопривід SG90 1
180 градусів
До блокноту
Е2
Зумер 5В 1
Bu
До блокноту
Е4
Клавіатура 4Х4 1
Матрична
До блокноту
Ні
BreadBoard 640 пікселів 1
Без паяння Ідея
На двері із зовнішнього боку дверей повинна розташовуватись клавіатура, на якій вводиться пароль, з внутрішньої сторони закріплена решта конструкції. Для контролю повного закриття дверей використовується геркон. Виходячи з кабінету людина натискає на клавіатурі «*» і не чекаючи, поки двері зачиняться доводчиком іде у своїх справах, коли двері будуть повністю зачинені, геркон замкнеться і замок буде закритий. Відчиняються двері за допомогою введення 4х значного пароля та натисканням на «#». Комплектуючі
Arduino UNO = $18
Arduino protoshield + breadboard = $6
L293D = $1
Пучок дротів 30шт для бредборда = $4
2 розетки RJ45 = $4
2 вилки RJ45 = $0.5
актуатор центрального замку = 250 руб.
Геркон = безкоштовно відірвано від старого вікна.
Шпінгалет металевий гігантських розмірів = безкоштовно
Корпус від старого хаба D-LINK із півтораміліметрового заліза = безкоштовно
Блок живлення від того ж хаба D-LINK на 12 та 5в = теж безкоштовно
Купа гвинтів та гайок для кріплення всього цього добра до корпусу = 100руб.
Пульт управління від сигналізації = безкоштовно. Підготовка до збирання
Хочеться кілька слів сказати про покупку ключового елемента конструкції актуатора. У місцевому авто-магазині мені запропонували актуатори двох видів: «з двома проводами та з п'ятьма». За словами продавщиці, вони були абсолютно однаковими і різниця в кількості проводів не означала абсолютно нічого. Однак, як виявилось пізніше, це не так! Я вибрав девайс із двома проводами, він харчувався від 12в. У конструкції з п'ятьма проводами встановлені кінцеві вимикачі, що дозволяє контролювати рух важеля. Зрозумів, що купив не той я, тільки коли розібрав його і міняти його було пізно. Хід важеля виявився занадто коротким, щоб нормально засунути клямку, тому необхідно було трохи його доопрацювати, а саме видалити дві гумові шайби, що вкорочують хід важеля актуатора. Для цього корпус довелося розпиляти вздовж звичайної ножівки, тому що друга шайба знаходилася всередині. Синя ізолятора нам, як завжди, допомогла нам у подальшому при складанні його назад.
Для керування мотором актуатора був використаний драйвер моторів L293D, який витримує пікове навантаження до 1200 мА, у нас при зупинці двигуна актуатора пікова навантаження зростала лише до 600 мА.
З пульта управління від охоронної сигналізації було виведено контакти з клавіатури, динаміка та двох світлодіодів. Пульт і основний пристрій передбачалося з'єднати за допомогою кручений пари і RJ45 роз'ємів Програмування.
Так як досвіду програмування Arduino у мене не було досі. Я скористався чужими напрацюваннями та статтями із сайту arduino.cc. Кому цікаво, може подивитися цей потворний код :) Фото та відео
Ардуїно та актуатор
Блок живлення
Клавіатурка
Шпінгалет (з'єднаний з актуатором металевою спицею і на яку надіта термоусадка для краси)