Порывшись на китайских барахолках и ebay я ничего дешевого и более-менее серьезного не нашел и решил сделать его своими руками. Оговорюсь сразу, что платформа Arduino была выбрана за свою простоту, так-как опыта общения с микроконтроллерами не было вообще.
Итого: $33,5 и 350руб.
Не так уж и мало, скажете вы, и будете, определенно правы, но ведь за удовольствие надо платить! А собрать, что-то своими руками всегда приятно. К тому-же конструкцию можно сильно удешевить, если использовать голый МК без Arduino.
Блок питания
Клавиатурка
Шпингалет (соединен с актуатором металлической спицей и на которую надета термоусадка для красоты)
Видео процесса работы устройства:
Порывшись на китайских барахолках и ebay я ничего дешевого и более-менее серьезного не нашел и решил сделать его своими руками. Оговорюсь сразу, что платформа Arduino была выбрана за свою простоту, так-как опыта общения с микроконтроллерами не было вообще.
Итого: $33,5 и 350руб.
Не так уж и мало, скажете вы, и будете, определенно правы, но ведь за удовольствие надо платить! А собрать, что-то своими руками всегда приятно. К тому-же конструкцию можно сильно удешевить, если использовать голый МК без Arduino.
Блок питания
Клавиатурка
Шпингалет (соединен с актуатором металлической спицей и на которую надета термоусадка для красоты)
Видео процесса работы устройства:
Ведущего канала youtube “AlexGyver” просили сделать электронный замок своими руками. Добро пожаловать на цикл видео про электронные замки на arduino. В общих чертах мастер объяснит идею.
Есть несколько вариантов создания системы электронного замка. Чаще всего используются для запирания дверей и ящиков, шкафов. А также для создания тайников и потайных сейфов. Поэтому нужно сделать макет, с которым удобно работать и можно наглядно и подробно показывать устройство системы изнутри и снаружи. Поэтому решил сделать раму с дверцей. Для этого понадобится квадратный брус 30 x 30. Фанера 10мм. Дверные петли. Изначально хотел сделать фанерный ящик, но вспомнил, что в комнате всё завалено запчастями. Подобный ящик некуда поставить. Поэтому будет сделан макет. Если кто-то хочет поставить себе электронный замок, то, глядя на макет можно с легкостью всё повторить.
Все, что нужно для замка, найдете в этом китайском магазине .
Цель – разработать максимально эффективные схемы и прошивки для электронных замков. Вы сможете использовать эти результаты для установки этих систем на свои двери, ящики, шкафы и тайники.
Дверца готова. Теперь нужно придумать, как открывать и закрывать электронным способом. Для этих целей подходит мощная соленоидная щеколда с aliexpress (ссылка на магазин выше). Если подать на выводы напряжения, она откроется. Сопротивление катушки почти 12 ом, значит при напряжении 12 вольт катушка будет кушать около 1 ампера. С такой задачей справится и литиевый аккумулятор и повышающий модуль. Настраиваем на соответствующее напряжения. Хотя можно и чуть больше. Щеколда крепится на внутренней стороне дверцы на расстоянии, чтобы не цепляла край и могла захлопываться. Щеколды должна быть ответной частью в виде металлического короба. Использовать ее без этого неудобно и неправильно. Придётся поставить ступеньку, хотя бы создавалась видимость нормальной работы.
В холостом режиме щеколда открывается нормально, то есть если на дверце есть ручка, подаем импульс, дверку за ручку открываем. Но если подпружинить, этот способ уже не подходит. Повышающий преобразователь не справляется с нагрузкой. Для открытия подпружиненный дверцы придется использовать большие аккумуляторов и более мощный преобразователь. Либо сетевой источник питания и забить на автономности системы. В китайских магазинах есть щеколды больших размеров. Они подойдут для ящиков. Питания можно подавать при помощи реле или мосфет транзистора, либо силового ключа на том же транзисторе. Более интересно и менее затратный вариант – сервопривод, соединенный с шатуном с любым запирающим элементом – шпингалет или более серьёзные задвижка. Он может понадобиться также кусочек стальной спицы, выполняющей роль шатуна. Такой системе не нужен большой ток. Но она занимает больше места и более хитрая логика управления.
Есть два типа сервоприводов. Маленькие слабенькие и большие мощные, которыми можно спокойно задвинуть в отверстия в серьёзные металлические штыри. Оба показанных вариантов работают как на дверцах, так и на выдвижных ящиках. С ящиком придется повозиться, проделывая отверстие в выдвижной стенке.
Вторая часть
Arduino является лучшей системой для копирования какого-либо оборудования. Большинство идей не смогли бы воплотиться без нее. Давно существует такая мысль: создать специальный кодовый замок на ардуино. Для его открытия необходимо зажатие определенной клавиши. При этом замок не должен открываться, даже если знать нужную кнопку. Чтобы его отрыть необходимо выдержать определенные интервалы, используя мышечную память. Такое преступник не сможет совершить. Но это все лишь теория.
Чтобы его собрать нужно воспользоваться специальным прибором прямоугольных импульсов, а также несколько счетчиков и ворох. Но готовое устройство имело бы большие габаритные размеры и его неудобно было бы использовать. Как правило, такие мысли не дают покоя. Первым этапом при воплощении мечты стало создание программы под Arduino. Именно она будет служить в качестве кодового замка. Для того чтобы открыть его понадобится нажать не одну клавишу, а несколько, причем делать это одновременно. Готовая схема выглядит таким образом:
Качество картинки не лучшее, но подключение выполняется к земле, D3, D5, D7, D9 и D11.
Код представлен ниже:
Const int ina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int i = 1000; byte a = 0; byte b = 0; byte c = 0; byte d = 0; unsigned long time = 0; //не забывайте всё, что принимает значение millis() unsigned long temp = 0; //хранить в unsigned long byte keya = { 0, 0, 0, 0, 0, 0, 0, 0}; //коды собственно byte keyb = { 1, 1, 1, 1, 0, 1, 0, 0}; byte keyc = { 1, 0, 1, 0, 1, 1, 1, 0}; byte k = 0; void setup() { pinMode(ina, INPUT_PULLUP); //3 входа, подключаемые к кнопкам pinMode(inb, INPUT_PULLUP); pinMode(inc, INPUT_PULLUP); pinMode(ledPin, OUTPUT); //встроенный светодиод на 13-ом пине pinMode(7, OUTPUT); pinMode(11, OUTPUT); digitalWrite(7, LOW); //заменяют землю digitalWrite(11, LOW); time = millis(); //нужно для отсчёта времени } void blinktwice() { //двойное мигание светодиодом digitalWrite(ledPin, HIGH); delay(100); digitalWrite(ledPin, LOW); delay(100); digitalWrite(ledPin, HIGH); delay(100); digitalWrite(ledPin, LOW); delay(200); } void loop() { if(k==0) { blinktwice(); //приглашение ввести код } if (k == 8) { digitalWrite(ledPin, HIGH); delay(3000); k = 0; } a = digitalRead(ina); //считываются уровни сигналов с кнопок - нажата/не нажата b = digitalRead(inb); c = digitalRead(inc); delay(100); //следующий if - защита против ложных срабатываний, можно не использовать if((digitalRead(ina) == a)&&(digitalRead(inb) ==b)&&(digitalRead(inc)==c)) { if (a == keya[k]) { if (b == keyb[k]) { if (c == keyc[k]) { k++; } } } } if (k==1) { if (d ==0) { time = millis (); d++; } } temp = millis(); temp = temp - time; if (temp > 10000) { k= 0; d=0; time = millis (); } }
Чтобы не возникало лишних вопросов по коду, следует разъяснить некоторые моменты. Функция setup используется для назначения портов. Следующая функция – Input_Pullup, которая необходима для увеличения напряжения пина на 5 В. Это осуществляется с помощью резистора. Благодаря этому не будут возникать различные короткие замыкания. Для большего удобства рекомендуется применять функцию blinktwice. Вообще при создании различных программ нужно пробовать другие функции.
После назначения функций происходит считывание сигнала с портов. Если кнопка нажата, то это будет обозначаться цифрой 1, а если нет – 2. Далее, происходит анализ всех значений. Например, появилась такая комбинация, как 0,1,1. Это означает, что первая клавиша нажата, а остальные две нет. Если все значения выполняются верно, то условие 8 тоже верно. Об этом свидетельствует загоревшийся светодиод на передней панели. Далее необходимо вписать определенный код, который будет служить для открывания двери.
Последние элементы кода служат для сбрасывания значений счетчика. Такая функция выполняется, если после последнего нажатия клавиши прошло более 10 секунд. Без этого кода можно было перебрать все возможные варианты, хоть их достаточно много. После создания данного устройства необходимо его протестировать. Еще
В данном уроке мы научимся делать простую систему, которая будет отпирать замок по электронному ключу (Метке).
В дальнейшем Вы можете доработать и расширить функционал. Например, добавить функцию "добавление новых ключей и удаления их из памяти". В базовом случае рассмотрим простой пример, когда уникальный идентификатор ключа предварительно задается в коде программы.
В этом уроке нам понадобится:
Для реализации проекта нам необходимо установить библиотеки:
2) Теперь нужно подключить Зуммер, который будет подавать сигнал, если ключ сработал и замок открывается, а второй сигнал, когда замок закрывается.
Зуммер подключаем в следующей последовательности:
Arduino | Зуммер |
---|---|
5V | VCC |
GND | GND |
pin 5 | IO |
3) В роли отпирающего механизма будет использоваться сервопривод. Сервопривод может быть выбран любой, в зависимости от требуемых вам размеров и усилий, который создает сервопривод. У сервопривода имеется 3 контакта:
Более наглядно Вы можете посмотреть, как мы подключили все модули на картинке ниже:
Теперь, если все подключено, то можно переходить к программированию.
Скетч:
#include
Разберем скетч более детально:
Для того, что бы узнать UID карточки(Метки), необходимо записать данный скетч в arduino, собрать схему, изложенную выше, и открыть Консоль (Мониторинг последовательного порта). Когда вы поднесете метку к RFID, в консоли выведется номер
Полученный UID необходимо ввести в следующую строчку:
If (uidDec == 3763966293) // Сравниваем Uid метки, если он равен заданному то сервопривод открывает задвижку.
У каждой карточки данный идентификатор уникальный и не повторяется. Таком образом, когда вы поднесете карточку, идентификатор которой вы задали в программе, система откроет доступ с помощью сервопривода.
Видео: