🛒
0 товаров
0 руб.

Интернет-магазин «Неглупый Дом»


🔐 Проект: кодовый замок на клавиатуре 4×4 и реле

Схема кодового замка на клавиатуре 4×4, реле и зуммере

Клавиатура 4×4 принимает цифровой код, при совпадении с эталонным Arduino на пару секунд открывает реле замка, при ошибке — коротко пищит зуммером.

Как это работает

Мембранная клавиатура 4×4 устроена как матрица: 16 кнопок собраны на пересечении 4 строк и 4 столбцов, поэтому наружу выведено всего 8 проводов вместо 16. Библиотека Keypad поочерёдно подаёт сигнал на каждую строку и проверяет, на каком столбце он "появился" — так определяется, какая именно кнопка была нажата, без необходимости в отдельном пине на каждую кнопку.

Логика замка простая: Arduino накапливает нажатые цифры в строку `input`, пока не нажата `#` (подтверждение) — тогда строка сравнивается с эталонным кодом. При совпадении реле на несколько секунд встаёт в положение "открыто" (в реальном замке к этим контактам подключается электромеханическая защёлка или соленоид), при несовпадении — короткий сигнал зуммером об ошибке.

Пошаговая сборка

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

  1. Подключите клавиатуру 4×4: 4 строки → D6, D7, D8, D9, 4 столбца → D2, D3, D4, D5 (порядок пинов в шлейфе может отличаться, ориентируйтесь на маркировку).
  2. Подключите модуль реле: сигнал → D10, VCC → 5V, GND → GND.
  3. Подключите активный зуммер: сигнал → D11, GND → GND.
  4. Контакты реле (COM/NO) подключаются к реальному замку/соленоиду от отдельного источника питания — Arduino ими не управляет напрямую.
  5. Перед установкой в реальную дверь обязательно смените код в переменной `correctCode` на свой.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить.

#include <Keypad.h>   // библиотека для опроса матричной клавиатуры

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] = {9, 8, 7, 6};  // пины строк клавиатуры
byte colPins[COLS] = {5, 4, 3, 2};  // пины столбцов клавиатуры
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

const String correctCode = "1234";  // эталонный код — обязательно смените перед использованием!
String input = "";                  // сюда накапливаются нажатые цифры
const int relayPin = 10;
const int buzzerPin = 11;

void setup() {
  pinMode(relayPin, OUTPUT);
  pinMode(buzzerPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  char key = keypad.getKey();       // опрашиваем клавиатуру на нажатие
  if (key) {
    Serial.println(key);            // дублируем нажатую клавишу в монитор порта

    if (key == '#') {               // подтверждение ввода кода
      if (input == correctCode) {
        Serial.println("Код верный, открываю");
        digitalWrite(relayPin, HIGH);
        delay(2000);                 // держим замок открытым 2 секунды
        digitalWrite(relayPin, LOW);
      } else {
        Serial.println("Неверный код");
        digitalWrite(buzzerPin, HIGH);
        delay(500);
        digitalWrite(buzzerPin, LOW);
      }
      input = "";                   // сбрасываем ввод после проверки
    } else if (key == '*') {        // сброс введённых цифр вручную
      input = "";
    } else {
      input += key;                 // добавляем нажатую цифру к вводу
    }
  }
}

Библиотека Keypad (автор Mark Stanley/Alexander Brevig) ставится через Менеджер библиотек Arduino IDE. Клавиша `#` подтверждает ввод, `*` сбрасывает набранный код.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← ☀️ УФ-метр на GUVA-S12SD с выводом на LCD1602💳 считыватель RFID-карт для двери на RC522 →

🎁 Купить весь комплект со скидкой 10%

Все 3 товара сразу в корзину: 237 ₽ 213 ₽ (экономия 24 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина


Поиск



Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA