Необычный кодовый замок на Arduino

Кодовый замок на Arduino

Необычный кодовый замок на Arduino

Кодовый замок на Arduino можно приспособить для различных целей. Это могут быть двери, шкатулки, сейфы или запуск какого-либо действия, например, запуск ракеты).

Техническое задание

Разработать кодовый замок на Arduino, который управляет электромагнитным реле. При правильном вводе 5-значного кода,  срабатывает реле и загорается зеленый светодиод. Через 5 секунд реле приходит в изначальное состояние и зеленый светодиод гаснет. Если код введен неверно, то загорается красный светодиод в течение 5 секунд. Код можно вводить бесконечное количество раз.

Разработка

Давайте для начала смоделируем схему в Proteus

На схеме мы видим матрицу из кнопок, два светодиода и вместо катушки реле для удобства взят спикер, который при эмуляции начинает трещать. При правильном наборе кода загорается светодиод L_1 и трещит спикер LS1 в течение 5 секунд.

Код программы:

#include #define LED1 10 // красный светодиод #define LED2 11 // зеленый светодиод #define RELAY 12 // реле на замок #define NUM_KEYS 5 // количество знаков в коде char key; char myarraw[NUM_KEYS] = { '1', '2', '3', '4', '5'}; // массив с верным кодом char button_pressed[NUM_KEYS]; //массив для хранения нажатых кнопок int k=0; // счетчик нажатий int s=0; // счетчик совпадений нажатых кнопок с верными const byte ROWS = 4; // количество строк в матрице клавиатуры const byte COLS = 4; // количество столбцов char keys[ROWS][COLS] = { // таблица соответствия кнопок символам {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'}}; byte rowPins[ROWS] = {5, 4, 3, 2}; // пины подключенных строк byte colPins[COLS] = {9, 8, 7, 6}; // пины подключенных столбцов Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); // создаем объект клавиатуры для работы с ней void setup() { pinMode(LED1, OUTPUT); // красный светодиод pinMode(LED2, OUTPUT); // зеленый светодиод pinMode(RELAY, OUTPUT); // реле управления замком digitalWrite(RELAY, HIGH); // вход реле инверсный, поэтому его сразу включаем (?!) } void loop () { key = keypad.getKey(); // спрашиваем у клавиатуры, есть нажатая кнопка? if ( key != NO_KEY ) // если она все-таки есть { button_pressed [k] = key; //сохраняем эту кнопочку в массиве k = k + 1; // запоминаем сколько уже кнопок нажали if(k == NUM_KEYS) // если нажали нужное количество кнопок {for ( uint8_t i = 0; i < NUM_KEYS; i++) // пройдемся по всему массиву { if (button_pressed[i] == myarraw[i]) // и проверим нажатые кнопки с верным кодом {s = s + 1; // плюсуем счетчик совпадений } } if(s == NUM_KEYS) //если у нас все кнопки совпали с кодом, то включаем реле { digitalWrite (RELAY, LOW); // включили реле digitalWrite (LED2, HIGH); // зажгли зеленый светик (пользователь ввел верный код) delay (5000); // ждем 5 секунд пока горит светик зеленый и включено реле digitalWrite (RELAY, HIGH); // гасим реле digitalWrite (LED2, LOW); // гасим светик k=0; //сбрасываем счетчик нажатий нашей переменной s=0; // сбрасываем счетчик совпадений нашей переменной } else { // если не все кнопки совпали с верным кодом digitalWrite (LED1, HIGH); // включаем красный светик (пользователь ввел неверный код) delay (5000); // ждем 5 секунд digitalWrite (LED1, LOW); // гасим красн светик k=0; // обнуляем счетчики, чтобы начать все заново s=0; // } } } }

#define LED1 10 // красный светодиод#define LED2 11 // зеленый светодиод#define RELAY 12 // реле на замок#define NUM_KEYS 5 // количество знаков в кодеchar myarraw[NUM_KEYS] = { '1', '2', '3', '4', '5'}; // массив с верным кодомchar button_pressed[NUM_KEYS]; //массив для хранения нажатых кнопокint k=0; // счетчик нажатийint s=0; // счетчик совпадений нажатых кнопок с вернымиconst byte ROWS = 4; // количество строк в матрице клавиатурыconst byte COLS = 4; // количество столбцовchar keys[ROWS][COLS] = { // таблица соответствия кнопок символамbyte rowPins[ROWS] = {5, 4, 3, 2}; // пины подключенных строкbyte colPins[COLS] = {9, 8, 7, 6}; // пины подключенных столбцовKeypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); // создаем объект клавиатуры для работы с нейpinMode(LED1, OUTPUT); // красный светодиодpinMode(LED2, OUTPUT); // зеленый светодиодpinMode(RELAY, OUTPUT); // реле управления замкомdigitalWrite(RELAY, HIGH); // вход реле инверсный, поэтому его сразу включаем (?!){ key = keypad.getKey(); // спрашиваем у клавиатуры, есть нажатая кнопка?if ( key != NO_KEY ) // если она все-таки естьbutton_pressed [k] = key; //сохраняем эту кнопочку в массивеk = k + 1; // запоминаем сколько уже кнопок нажалиif(k == NUM_KEYS) // если нажали нужное количество кнопок{for ( uint8_t i = 0; i

Источник: https://www.RusElectronic.com/kodovyj-zamok-na-arduino/

Кодовой замок на ардуино: подключение – Отделка

Необычный кодовый замок на Arduino

22.11.2018

» Полезные советы » Хитрости электрика » Кодовой замок на Ардуино: подключение

Многие люди всерьез задумываются о том, чтобы установить у себя на двери кодовый замок, который можно открывать без ключа.

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

В этой статье мы расскажем вам про кодовой замок на Ардуино и поговорим о том, как его подключить.

Кодовой замок на Ардуино: принцип работы

На самом деле принцип его работы предельно простой, с внешний стороны двери находится клавиатура, с помощью которой вводится пароль. На внешней стороне двери находится остальная конструкция замка. Если нужно выйти из комнаты, тогда нужно нажать «+», для входа вводим пароль. Дверь закрывается с помощь геркона, который и обеспечивает надежность закрытия.

Что нужно для сборки

Собрать такой замок довольно проблематично, ведь нужно найти все комплектующие, которые далеко не всегда продаются в обычных магазинах. Итак, для стандартной сборки нам понадобиться:

  1. Пучок провод для бреборда, 30 штук будет более чем достаточно.
  2. Далее нужно купить две вилки и розетки RJ45.
  3. L293D.
  4. Актуатор центрального замка. Можно использовать с ВАЗа – это оптимально по цене и функциональности.
  5. Геркон – его можно взять со старого окна, здесь сложностей нет.
  6. Нам еще понадобиться блок питания от хаба D-LINK на 12 Вольт.
  7. Пульт управления от охранной сигнализации, его можно найти в любом магазине с электроникой.
  8. Arduino protoshield + breadboard.
  9. Arduino UNO.
  10. Также не обойтись без шпингалета. Он должен иметь внушительный размер, чтобы не сделать ошибку во время его выбора смотрите фото дальше.

Как правило, чтобы приобрести все эти детали, придется выложить 40-50 долларов. Вроде сумма небольшая, но решать вам, напрягаться с этим или установить уже рабочую модель. Чтобы установить и соединить между собой, придется потратить несколько часов при условии, если вы все будете делать правильно.

Программирование кодового замка

Мы рекомендуем использовать код с официального сайта разработчиков, выглядит он следующим образом:

Процесс сборки: фото и видео

Изначально покажем вам несколько фото о том, как его собирать и устанавливать.

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

Подключаем блок питания.

Шпингалет, который и будет закрывать всю нашу конструкцию.

Как подключить кодовый замок Arduino: видео

Также читайте: как спрятать провода от компьютера.

Источник:

Урок 10. Контроль доступа. RFID-rc522 + Servo + Arduino

В данном уроке мы научимся делать простую систему, которая будет отпирать замок по электронному ключу (Метке).

В дальнейшем Вы можете доработать и расширить функционал. Например, добавить функцию “добавление новых ключей и удаления их из памяти”. В базовом случае рассмотрим простой пример, когда уникальный идентификатор ключа предварительно задается в коде программы.

В этом уроке нам понадобится:

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

  • RFID Library for MFRC522.

Сборка:

1) RFID-модуль RC522 подключается к arduino проводами Папа-Мама в следующей последовательности:

Более подробно о подключении Rfid модуля.

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

Зуммер подключаем в следующей последовательности:

ArduinoЗуммер
5VVCC
GNDGND
pin 5IO

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

ArduinoСервопривод
5V *Красный (Центральный)
GNDЧерный или Коричневый (Левый)
pin 6Белый или Оранжевый (Правый)

*Сервопривод рекомендуется питать от внешнего источника питания, если запитать сервопривод от ардуины, то могут возникнуть помехи и перебои в работе arduino. Организовать это можно с помощью источника питания 9V и комбинированного стабилизатора 5V ,3.3V.

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

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

Скетч:

#include#include#include // библиотека “RFID”.#define SS_PIN 10#define RST_PIN 9MFRC522 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); servo.

write(0); // устанавливаем серву в закрытое сосотояние}

void loop() { // Поиск новой метки if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Выбор метки if ( ! mfrc522.PICC_ReadCardSerial()) { return; } uidDec = 0; // Выдача серийного номера метки. for (byte i = 0; i < 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, в консоли выведется номер

https://www.youtube.com/watch?v=B0Xr_iLC8iQ

Полученный UID необходимо ввести в следующую строчку:

if (uidDec == 3763966293) // Сравниваем Uid метки, если он равен заданному то сервопривод открывает задвижку.

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

:

Источник:

Делаем RFID-замок с использованием Arduino

Сегодня урок о том как использовать RFID-ридер с Arduino для создания простой системы блокировки, простыми словами – RFID-замок.

RFID (англ.

Radio Frequency IDentification, радиочастотная идентификация) — способ автоматической идентификации объектов, в котором посредством радиосигналов считываются или записываются данные, хранящиеся в так называемых транспондерах, или RFID-метках. Любая RFID-система состоит из считывающего устройства (считыватель, ридер или интеррогатор) и транспондера (он же RFID-метка, иногда также применяется термин RFID-тег).

В уроке будет использоваться RFID-метка с Arduino. Устройство читает уникальный идентификатор (UID) каждого тега RFID, который мы размещается рядом со  считывателем, и отображает его на OLED-дисплее.

Если UID тега равен предопределенному значению, которое хранится в памяти Arduino, тогда на дисплее мы увидим сообщение «Unlocked» (англ., разблокировано).

Если уникальный идентификатор не равен предопределенному значению, сообщение “Unlocked” не появится – см. фото ниже.

Замок закрыт

Замок открыт

Шаг 1: Детали, комплектующие

Детали, необходимые для создания этого проекта:

  • Arduino Uno
  • RFID-ридер RC522
  • OLED-дисплей
  • Макетная плата
  • Провода

Дополнительные детали:

Общая стоимость комплектующих проекта составила примерно 15 долларов.

Шаг 2: RFID-считыватель RC522

В каждой метке RFID есть небольшой чип (на фото белая карточка). Если направить фонарик на эту RFID-карту, можно увидеть маленький чип и катушку, которая его окружает. У этого чипа нет батареи для получения мощности. Он получает питание от считывателя беспроводным образом используя эту большую катушку. Можно прочитать RFID-карту, подобную этой, с расстояния до 20 мм.

Тот же чип существует и в тегах RFID-брелка.

Каждый тег RFID имеет уникальный номер, который идентифицирует его. Это UID, который показывается на OLED-дисплее. За исключением этого UID, каждый тег может хранить данные. В этом типе карт можно хранить до 1 тысячи данных.

Впечатляет, не так ли? Эта функция не будет использована сегодня. Сегодня все, что интересует, – это идентификация конкретной карты по ее UID. Стоимость RFID-считывателя и этих двух карт RFID составляет около 4 долларов США.

Шаг 3: OLED-дисплей

В уроке используется OLED-монитор 0.96' 128×64 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

VCC → 3.3V

GND → GND

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. Вот и все.

Источник: https://ko-2.ru/drugoe/kodovoj-zamok-na-arduino-podklyuchenie.html

Сейф с кодовым замком на Arduino

Необычный кодовый замок на Arduino

После очередного конфликта между детьми (младшее поколение безнадёжно испортило домашнюю работу старшего) я принял решение изготовить детский, но полнофункциональный сейф, для надёжного хранения домашних работ

Источник: https://diy-vitebsk.ru/2018/01/04/sejf-s-kodovym-zamkom-na-arduino/

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

Необычный кодовый замок на Arduino

» Полезные советы » Хитрости электрика » Кодовой замок на Ардуино: подключение

Многие люди всерьез задумываются о том, чтобы установить у себя на двери кодовый замок, который можно открывать без ключа.

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

В этой статье мы расскажем вам про кодовой замок на Ардуино и поговорим о том, как его подключить.

Поделиться:
Нет комментариев

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

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.