Кодовой замок на Ардуино — подключение


В этой статье я расскажу вам про кодовый электромеханический замок на базе микроконтроллера Ардуино, который я сделал в прошлом году. Я расскажу вам, как сделать кодовый замок своими руками. Так как в то время я не писал инструкций по сборке чего-либо, фото процесса у меня нет, только готового замка.

Блок: 1/10 | Кол-во символов: 312
Источник: https://masterclub.online/topic/15259-zamok-kodovyi-elektronnyi

Настройка датчика отпечатка пальца

Для работы с датчиком отпечатка пальцев, есть отличная библиотека для Arduino, которая значительно облегчает процесс настройки датчика. В этом проекте используется Arduino Uno. Для подключения к интернету используется плата Adafruit CC3000.

Начнем с подключения питания:

  • Подключите контакт 5V с платы Arduino к красной рельсе питания;
  • Контакт GND с Arduino подключается к синей рельсе на беспаечной монтажной плате.

Переходим к подключению датчика отпечатка пальца:

  • Сначала подключите питание. Для этого красный провод соединяется с рельсой +5 V, а черный — с рельсой GND;
  • Белый провод датчика подключается к контакту 4 на Arduino.
  • Зеленый провод идет к контакту 3 на микроконтроллере.

Теперь займемся модулем CC3000:

  • Контакт IRQ с платы CC3000 подключаем к пину 2 на Arduino.
  • VBAT — к контакту 5.
  • CS — к контакту 10.
  • После этого надо подключить SPI контакты к Arduino: MOSI, MISO и CLK — к контактам 11, 12 и 13 соответственно.

Ну и в конце надо обеспечить питание: Vin — к Arduino 5V (красная рельса на вашей монтажной плате), а GND к GND (синяя рельса на макетке).

Фотография полностью собранного проекта показана ниже:

Перед разработкой скетча, который будет подгружать данные на Adafruit IO, надо передать данные о вашем отпечатке пальца сенсору. Иначе в дальнейшем он вас не опознает;). Рекомендуем откалибровать датчик отпечатка пальца, используя Arduino отдельно. Если вы работаете с этим сенсором впервые, рекомендуем ознакомиться с процессом калибровки и детальной инструкцией по работе с датчиком отпечатка пальца .

Если вы еще не сделали этого, то заведите аккаунт на Adafruit IO .

После этого можем перейти к следующему этапу разработки «умного замка» на Arduino: а именно, разработка скетча, который будет передавать данные на Adafruit IO. Так как программа достаточно объемная, в статье мы выделим и рассмотрим только ее основные части, а после дадим ссылку на GitHub, где вы сможете скачать полный скетч.

Скетч начинается с подгрузки всех необходимых библиотек:

#include

#include

#include

#include «Adafruit_MQTT.h»

#include «Adafruit_MQTT_CC3000.h»

#include

#include >

После этого надо немного подкорректировать скетч, вставив параметры вашей WiFi сети, указав SSID и пароль (password):

#define WLAN_SECURITY WLAN_SEC_WPA2>

Кроме этого, необходимо ввести имя и AIO ключ (key) для входа в ваш аккаунт Adafruit IO:

#define AIO_SERVERPORT 1883

#define AIO_USERNAME «adafruit_io_имя»

#define AIO_KEY «adafruit_io_ключ»>

Следующие строки отвечают за взаимодействие и обработку данных с датчика отпечатка пальца. Если датчик был активирован (отпечаток совпал), будет «1»:

const char FINGERPRINT_FEED PROGMEM = AIO_USERNAME «/feeds/fingerprint»;

Adafruit_MQTT_Publish fingerprint = Adafruit_MQTT_Publish(&mqtt, FINGERPRINT_FEED);

Кроме того, надо создать экземпляр объекта SoftwareSerial для нашего сенсора:

SoftwareSerial mySerial(3, 4);

После этого мы можем создать объект для нашего сенсора:

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial);

Внутри скетча мы указываем какой fingerID должен активировать замок в дальнейшем. В данном примере используется 0, который соответствует ID первого отпечатка пальцев, который используется датчиком:

int fingerID = 0;

После этого инициализируем счетчик и задержку (delay) в нашем проекте. По сути мы хотим, чтобы замок автоматически срабатывал после открытия. В данном примере используется задержка в 10 секунд, но вы можете подстроить это значение под собственные потребности:

int activationCounter = 0;

int lastActivation = 0;

int activationTime = 10 * 1000;

В теле функции setup() мы инициализируем датчик отпечатка пальцев и обеспечиваем подключение чипа CC3000 к вашей WiFi сети.

В теле функции loop() подключаемся к Adafruit IO. За это отвечает следующая строка:

После подключения к платформе Adafruit IO, проверяем последний отпечаток пальца. Если он совпадает, а замок не активирован, мы отсылаем «1» для обработки в Adafruit IO:

if (fingerprintID == fingerID && lockState == false) {

Serial.println(F(«Access granted!»));

lockState = true;

Serial.println(F(«Failed»));

Serial.println(F(«OK!»));

lastActivation = millis();

Если же в пределах функции loop() замок активирован и мы достигли значения задержки, которое указывали выше, отсылаем «0»:

if ((activationCounter — lastActivation > activationTime) && lockState == true) {

lockState = false;

if (! fingerprint.publish(state)) {

Serial.println(F(«Failed»));

Serial.println(F(«OK!»));

Последнюю версию кода вы можете скачать на GitHub .

Пришло время тестировать наш проект! Не забудьте скачать и установить все необходимые библиотеки для Arduino !

Убедитесь, что вы внесли все необходимые изменения в скетч и загрузите его на ваш Arduino . После этого откройте окно серийного монитора.

Когда Arduino подключится к WiFi сети, сенсор отпечатка пальца начнет мигать красным цветом. Прислоните палец к датчику. В окне серийного монитора должен отобразится ID номер. Если он совпадет, появится сообщение, «OK!». Это значит, что данные были отправлены на сервера Adafruit IO.

Блок: 2/6 | Кол-во символов: 5083
Источник: https://lestorg32.ru/potolok-v-vannojj-komnate/podklyuchenie-elektronnoi-shchekoldy-k-arduino-kodovyi-zamok-iz-arduino/

Принципиальна схема замка


Как сделать кодовый замок

«Строчные» линии R1-R4 подключены к выводам Arduino с 6-го по 9-й. Колонные выводы C1-C4 подключены к выводам C1-C4. Третий вывод настроен как выход в цепь включена нагрузка, в нашем случае это светодиод D1, последовательно к которому подключено сопротивление номиналом в 330 Ом. Оно необходимо для ограничения тока через светодиод. В настоящем кодовом замке подключаться электромагнит управляющий положением защелки замка. Если светодиод горит то замок открыт,если выключен то замок закрыт.

Данная схема позволяет подсоединить к компьютеру и просматривать состояние кодового замка через мониторинг последовательного порта

среды разработки Arduino.

int p; //array for storing the password  int c; // array for storing the input code  int n;  int a=0;  int i=0;  int lock=3;  int r1=6;  int r2=7;  int r3=8;  int r4=9;  int c1=10;  int c2=11;  int c3=12;  int c4=13;  int colm1;  int colm2;  int colm3;  int colm4;  void setup()  {    pinMode(r1,OUTPUT);    pinMode(r2,OUTPUT);    pinMode(r3,OUTPUT);    pinMode(r4,OUTPUT);    pinMode(c1,INPUT);    pinMode(c2,INPUT);    pinMode(c3,INPUT);    pinMode(c4,INPUT);    pinMode(lock,OUTPUT);    Serial.begin(9600);   //sets the baud rate at 9600    digitalWrite(c1,HIGH);    digitalWrite(c2,HIGH);    digitalWrite(c3,HIGH);    digitalWrite(c4,HIGH);    digitalWrite(lock,LOW);    p=1;   //sets 1st digit of the password    p=2;  // sets 2nd digit of the password    p=3;  // sets 3rd digit of the password    p=4;  // sets 4th digit of the password    p=5;  // sets 5th digit of the password    p=6;  // sets 6th digit of the password  }  void loop()  {    digitalWrite(r1,LOW);    digitalWrite(r2,HIGH);    digitalWrite(r3,HIGH);    digitalWrite(r4,HIGH);    colm1=digitalRead(c1);    colm2=digitalRead(c2);    colm3=digitalRead(c3);    colm4=digitalRead(c4);    if(colm1==LOW)    { n=1;      a=1;      Serial.println("1");     delay(200);}    else    {     if(colm2==LOW)     { n=2;       a=1;       Serial.println("2");      delay(200);}     else     {     if(colm3==LOW)     {Serial.println("3");       n=3;       a=1;     delay(200);}     else     {     if(colm4==LOW)     {Serial.println("LOCKED");      digitalWrite(lock,LOW);  //locks      i=0;      delay(200);}     }}}    digitalWrite(r1,HIGH);    digitalWrite(r2,LOW);    digitalWrite(r3,HIGH);    digitalWrite(r4,HIGH);    colm1=digitalRead(c1);    colm2=digitalRead(c2);    colm3=digitalRead(c3);    colm4=digitalRead(c4);    if(colm1==LOW)    {Serial.println("4");     n=4;     a=1;    delay(200);}    else    {     if(colm2==LOW)     {Serial.println("5");      n=5;      a=1;    delay(200);}     else     {     if(colm3==LOW)     {Serial.println("6");        n=6;        a=1;      delay(200);}     else     {     if(colm4==LOW)     {      if(c==p&&c==p&&c==p&&c==p&&c==p&&c==p)      {digitalWrite(lock,HIGH);  //unlocks      Serial.println("UNLOCKED");      c=9;}       //corrupts the code in array c      else     {Serial.println("WRONG PASSWORD");}     delay(200);}     }}}      if(a==1) // test whether a digit key is pressed      {      c=n; // saves the current digit pressed to array c      i=i+1;      a=0;}     } 

Блок: 2/3 | Кол-во символов: 3205
Источник: https://radio-magic.ru/arduino-projects/107-kodovji-zamok

Шаг 2: Проверяем клавиатуру

На картинке изображена электронная схема подключения, но я бы советовал проверить клавиатуру просто мультиметром.

Блок: 3/10 | Кол-во символов: 143
Источник: https://masterclub.online/topic/15259-zamok-kodovyi-elektronnyi

Тестируем проект


Теперь приступаем к тестированию! Перейдите в меню пользователя вашего Adafruit IO, в меню Feeds. Проверьте, созданы или нет каналы для отпечатка пальцев и замка (на принт-скрине ниже это строки fingerprint и lock):


Если их нет, то придется создать вручную.

Теперь нам надо обеспечить обмен данными между каналами fingerprint и lock. Канал lock должен принимать значение «1», когда канал fingerprint принимает значение «1» и наоборот.

Для этого используем очень мощный инструмент Adafruit IO: триггеры. Триггеры — это по-сути условия, которые вы можете применять к настроенным каналам. То есть, их можно использовать для взаимосвязи двух каналов.

Создаем новый reactive trigger из раздела Triggers в Adafruit IO. Это обеспечит возможность обмениваться данными между каналами датчика отпечатка пальцев и замка:


Вот как это должно выглядеть, когда оба триггера настроены:

Все! Теперь мы действительно можем тестить наш проект! Прикладываем палец к сенсору и видим как Arduino начал подмигивать светодиодом, который соответствует передаче данных. После этого должен начать мигать светодиод на модуле ESP8266. Это значит, что он начал получать данные через MQTT. Светодиод на монтажной плате в этот момент должен тоже включиться.

После задержки, которую вы установили в скетче (по умолчанию это значение равно 10 секундам), светодиод выключится. Поздравляем! Вы можете управлять светодиодом с помощью отпечатка пальца, находясь в любой точке мира!

Блок: 4/6 | Кол-во символов: 1465
Источник: https://lestorg32.ru/potolok-v-vannojj-komnate/podklyuchenie-elektronnoi-shchekoldy-k-arduino-kodovyi-zamok-iz-arduino/

Настраиваем электронный замок

Мы добрались до последней части проекта: непосредственное подключение и управление электронным замком с помощью Arduino и датчика отпечатка пальца. Проект непростой, вы можете использовать все исходники в том виде, в котором они изложены выше, но вместо светодиода подключить реле.

Для непосредственного подключения замка вам понадобятся дополнительные компоненты: источник питания на 12 В, джек для подключения питания, транзистор (в данном примере используется IRLB8721PbF MOSFET, но можно использовать и другой, например, биполярный транзистор TIP102. Если вы используете биполярный транзистор, вам надо будет добавить резистор.

Ниже показана электрическая схема подключения всех компонентов к модулю ESP8266:


Обратите внимание, что если вы используете MOSFET транзистор, вам не понадобится резистор между пином 5 модуля ESP8266 и транзистором.

Полностью собранный проект показан на фото ниже:


Запитайте модуль ESP8266 с использованием FTDI модуля и подключите источник питания 12 В к джеку. Если вы использовали рекомендованные выше пины для подключения, в скетче ничего менять не придется.

Теперь можете прислонить палец к сенсору: замок должен сработать, отреагировав на ваш отпечаток пальца. На видео ниже показан проект автоматического «умного» замка в действии:

Блок: 5/6 | Кол-во символов: 1307
Источник: https://lestorg32.ru/potolok-v-vannojj-komnate/podklyuchenie-elektronnoi-shchekoldy-k-arduino-kodovyi-zamok-iz-arduino/

Шаг 4: Подключаем компоненты и помещаем в корпус


Подключите все компоненты, как показано на схеме и поместите их в корпус.

Пока что я не поместил начинку в корпус, но сделаю это в ближайшее время. Без корпуса все перепутается и ничего хорошего не выйдет.

Если вы хотите вывести клавиатуру, диоды и дисплей на столешницу или дверцу шкафа, вам останется только поместить контроллер и плату в коробку.

Файлы

Блок: 5/10 | Кол-во символов: 408
Источник: https://masterclub.online/topic/15259-zamok-kodovyi-elektronnyi

Дальнейшее развитие проекта «Умный замок»

В нашем проекте релизовано дистанционное управление дверным замком с помощью отпечатка пальца.

Можете смело экспериментировать, модифицировать скетч и обвязку. Например, можно заменить дверной электронный замок на реле для управления питанием вашего 3D принтера , манипулятора или квадрокоптера …

Можно развивать ваш «умный дом». Например, удаленно активировать систему полива на Arduino или включать свет в комнате… При этом не забывайте, что вы одновременно можете активировать практически неограниченное количество устройств, используя Adafruit IO.

Оставляйте Ваши , вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Ведущего канала youtube “AlexGyver” просили сделать электронный замок своими руками. Добро пожаловать на цикл видео про электронные замки на arduino. В общих чертах мастер объяснит идею.

Есть несколько вариантов создания системы электронного замка. Чаще всего используются для запирания дверей и ящиков, шкафов. А также для создания тайников и потайных сейфов. Поэтому нужно сделать макет, с которым удобно работать и можно наглядно и подробно показывать устройство системы изнутри и снаружи. Поэтому решил сделать раму с дверцей. Для этого понадобится квадратный брус 30 x 30. Фанера 10мм. Дверные петли. Изначально хотел сделать фанерный ящик, но вспомнил, что в комнате всё завалено запчастями. Подобный ящик некуда поставить. Поэтому будет сделан макет. Если кто-то хочет поставить себе электронный замок, то, глядя на макет можно с легкостью всё повторить.

Все, что нужно для замка, найдете в этом китайском магазине .

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

Дверца готова. Теперь нужно придумать, как открывать и закрывать электронным способом. Для этих целей подходит мощная соленоидная щеколда с aliexpress (ссылка на магазин выше). Если подать на выводы напряжения, она откроется. Сопротивление катушки почти 12 ом, значит при напряжении 12 вольт катушка будет кушать около 1 ампера. С такой задачей справится и литиевый аккумулятор и повышающий модуль. Настраиваем на соответствующее напряжения. Хотя можно и чуть больше. Щеколда крепится на внутренней стороне дверцы на расстоянии, чтобы не цепляла край и могла захлопываться. Щеколды должна быть ответной частью в виде металлического короба. Использовать ее без этого неудобно и неправильно. Придётся поставить ступеньку, хотя бы создавалась видимость нормальной работы.

В холостом режиме щеколда открывается нормально, то есть если на дверце есть ручка, подаем импульс, дверку за ручку открываем. Но если подпружинить, этот способ уже не подходит. Повышающий преобразователь не справляется с нагрузкой. Для открытия подпружиненный дверцы придется использовать большие аккумуляторов и более мощный преобразователь. Либо сетевой источник питания и забить на автономности системы. В китайских магазинах есть щеколды больших размеров. Они подойдут для ящиков. Питания можно подавать при помощи реле или мосфет транзистора, либо силового ключа на том же транзисторе. Более интересно и менее затратный вариант – сервопривод, соединенный с шатуном с любым запирающим элементом – шпингалет или более серьёзные задвижка. Он может понадобиться также кусочек стальной спицы, выполняющей роль шатуна. Такой системе не нужен большой ток. Но она занимает больше места и более хитрая логика управления.

Есть два типа сервоприводов. Маленькие слабенькие и большие мощные, которыми можно спокойно задвинуть в отверстия в серьёзные металлические штыри. Оба показанных вариантов работают как на дверцах, так и на выдвижных ящиках. С ящиком придется повозиться, проделывая отверстие в выдвижной стенке.

Вторая часть

Блок: 6/6 | Кол-во символов: 3822
Источник: https://lestorg32.ru/potolok-v-vannojj-komnate/podklyuchenie-elektronnoi-shchekoldy-k-arduino-kodovyi-zamok-iz-arduino/

Шаг 5: Устанавливаем на место


  1. Нарисуйте, как примерно вы представляете себе результат
  2. Выберите место на столешнице, где вы будете устанавливать прибор (я советую установить прибор в верхний ящик стола и вывести периферию на поверхность столешницы)
  3. Наметьте на столе линии, по которым будете вырезать
  4. В углах контура просверлите отверстия (края отверстий не должны выходить за пределы контура)
  5. Вставьте полотно электролобзика в одно из отверстий и выпиливайте отверстие по контуру, посверленные отверстия облегчат вам процесс выпиливания углов
  6. Выпилите из листа ДСП (не толще 2,5 мм) кусок такого же размера, как и отверстие в столешнице
  7. На этом куске наметьте отверстия под клавиатуру, диоды и дисплей
  8. Просверлите отверстие для лобзика и выпилите намеченные фигуры
  9. Припаяйте провода-перемычки к контактам дисплея, клавиатуры и диодов
  10. Вставьте дисплей, клавиатуру и диоды в соответствующие отверстия в ДСП
  11. Кусок ДСП поместите в отверстие в столешнице
  12. Закрепить кусок ДСП можно маленькими уголками или клеем, я рекомендую первый вариант

По желанию:

Если закрепили поверхность кодового замка была утоплена в столешницу, можно добавить сверху еще один кусок ДСП, закрывающий электрокомпоненты. Этот кусок должен быть чуть больше, чем вырез в столешнице, и с маленькой петлей.

Блок: 6/10 | Кол-во символов: 1275
Источник: https://masterclub.online/topic/15259-zamok-kodovyi-elektronnyi

Шаг 6: Устанавливаем запирающий механизм

Эта часть достаточно сложная, поэтому заранее извиняюсь, если что-то написал непонятно.

Найдите где-нибудь металлическую пластину и согните ее буквой П. «Ноги» буквы сделайте по 3 см, а перекладину — 2 см.

В одной из «ног» просверлите 2 отверстия.

В дверце ящика просверлите 2 отверстия на таком же расстоянии друг от друга, как и отверстия на металлической детали.

Просверлите 2 отверстия по середине дверцы (не так, как это сделал я), если, конечно, вы не используете два сервопривода (что гораздо лучше в том случае, если дверца большая).

Закрепите П-образный крепеж на дверце двумя заклепками.

При установке сервопривода ориентируйтесь на фото. Установите привод в 2 см (или в 1см, это зависит от того, какую перекладину вы сделали П-образному крепежу) от дверцы.

Я приклеил сервопривод на суперклей, но вам я советую так не делать.

Блок: 7/10 | Кол-во символов: 889
Источник: https://masterclub.online/topic/15259-zamok-kodovyi-elektronnyi

Шаг 7: Ставим выключатель на питание


Пару месяцев назад я поменял 12В адаптер от ноутбука на блок питания от старого компьютера.

Я соединил световой выключатель с проводом блока питания и с 12В выходом контроллера. Теперь я выключателем могу включать-выключать питание и кодовый замок. Блок питания подает ток на 2 диодных полосы, диоды замка и сам замок.

Провода блока питания, подключенные к выключателю – зеленый и черный. Если соединить эти два провода, а блок питания в это время будет включен в сеть, он заработает.

Блок: 8/10 | Кол-во символов: 526
Источник: https://masterclub.online/topic/15259-zamok-kodovyi-elektronnyi

Шаг 8: Заключение

Работа над замком доставила мне огромное удовольствие. Я впервые сам писал код для микроконтроллера, и для этого мне пришлось многому научиться.

Квадрат в столешнице нужно было вырезать аккуратнее.

Я хотел бы внести следующие изменения:

  • заменить Arduino Mega 2560 на Arduino Uno и подключить клавиатуру к аналоговому входу (используя пороговый сигнал)
  • поместить замок в корпус
  • напечатать на 3Д-принтере нормальную панель, которая бы закрыла неаккуратный вырез в столешнице. Я напечатаю панель, как только заработает нормально мой самодельный 3Д-принтер (пока что сопло постоянно забивается, а филамент скручивается)
  • заменить сервопривод на соленоид

Блок: 9/10 | Кол-во символов: 669
Источник: https://masterclub.online/topic/15259-zamok-kodovyi-elektronnyi

Кол-во блоков: 15 | Общее кол-во символов: 19723
Количество использованных доноров: 3
Информация по каждому донору:

  1. https://lestorg32.ru/potolok-v-vannojj-komnate/podklyuchenie-elektronnoi-shchekoldy-k-arduino-kodovyi-zamok-iz-arduino/: использовано 4 блоков из 6, кол-во символов 11677 (59%)
  2. https://radio-magic.ru/arduino-projects/107-kodovji-zamok: использовано 2 блоков из 3, кол-во символов 3824 (19%)
  3. https://masterclub.online/topic/15259-zamok-kodovyi-elektronnyi: использовано 7 блоков из 10, кол-во символов 4222 (21%)




Поделитесь в соц.сетях:

Оцените статью:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован.