- Составные части:
- Описание схемы:
- Схема детонации кормления в Arduino:
- Рабочее объяснение:
- Объяснение программирования:
Безопасность является серьезной проблемой в нашей повседневной жизни, и цифровые замки стали важной частью этих систем безопасности. Есть много типов систем безопасности, чтобы обезопасить нас. Некоторыми примерами являются система безопасности на основе PIR, система безопасности на основе RFID, система цифрового замка, биоматричные системы, электронный кодовый замок. В этом посте давайте создадим дверной замок с обнаружением секретного стука, используя Arduino, который может определять образец ваших ударов в дверь и открывать замок только в том случае, если образец стука совпадает с правильным образцом. Для правильной работы демонстрации проверьте видео в конце.
Составные части:
- Ардуино Уно
- Нажать кнопку
- Зуммер
- Резистор 1M
- Мощность
- Соединительные провода
- Коробка
- Серводвигатель
Описание схемы:
Принципиальная схема этого детектора детонации очень проста и содержит Arduino для управления всем процессом проекта, кнопку, зуммер и сервомотор. Arduino контролирует все процессы, такие как получение пароля из зуммера или датчика, сравнение шаблонов, управление сервоприводом для открытия и закрытия ворот и сохранение шаблона в Arduino.
Кнопка напрямую подключена к контакту D7 Arduino относительно земли. И зуммер подключен к аналоговому выводу A0 Arduino относительно земли, а также с сопротивлением 1M между A0 и землей. Серводвигатель также соединен с ШИМ выводами D3 из Arduino.
Схема детонации кормления в Arduino:
В этой схеме мы использовали зуммер или датчик Peizo для определения входного сигнала детонации в системе. Здесь мы используем кнопку, позволяющую принимать входные данные от датчика, а также сохранять их в Arduino. Эта система разработана на основе идеи шаблона кода Морзе, но не совсем похожа на него.
Здесь мы использовали картонную коробку для демонстрации. Чтобы принять ввод, мы сбиваем доску после нажатия кнопки. Здесь мы остановились, имея в виду период времени, равный 500 мс. Это 500 мсек, потому что мы исправили это в коде, и шаблон ввода зависит от него. Этот период времени 500 мс определит, что вход был 1 или 0. Проверьте код ниже, чтобы понять это.
Когда мы стучим по нему, Arduino начинает отслеживать время от первого до второго стука и помещает это в массив. Здесь, в этой системе, мы получаем 6 ударов. Значит, мы получим 5 временных периодов.
Теперь по очереди проверяем период времени. Сначала мы проверяем период времени между первым и вторым детонациями, если разница во времени между ними меньше 500 мс, тогда она будет равна 0, а если больше 500 мс, она будет равна 1 и будет сохранена в переменной. Теперь, после этого, мы проверяем промежуток времени между вторым и третьим ударами и так далее.
Наконец, мы получим 5-значный вывод в формате 0 и 1 (двоичный).
Рабочее объяснение:
Работа с проектом Smart Lock на основе Knock проста. Сначала нужно сохранить выкройку в системе. Таким образом, мы должны нажать и удерживать кнопку, пока мы не постучим 6 раз. В этом проекте я использовал 6 ударов, но пользователь может изменить их по своему усмотрению. После шести ударов Arduino находит образец детонации и сохраняет его в EEPROM. Теперь, после сохранения шаблона ввода, нажмите и сразу отпустите кнопку для приема ввода от датчика в Arduino, чтобы открыть замок. Теперь надо 6 раз постучать. После этого Arduino декодирует его и сравнивает с сохраненным шаблоном. Если совпадение происходит, то Arduino открывает ворота, управляя серводвигателем.
Примечание: когда мы нажимаем или нажимаем и удерживаем кнопку, Arduino запускает 10-секундный таймер, чтобы принять все 6 ударов. Означает, что пользователю нужно постучать в течение этих 10 секунд. И пользователь может открыть последовательный монитор, чтобы просмотреть журнал.
Объяснение программирования:
В программу, прежде всего, мы включаем файл заголовка и определяем входной и выходной контакты, а также определяем макрос и объявленные переменные, как вы можете видеть в разделе Полный код в коде ниже.
После этого в функции настройки мы задаем направление определенному выводу и запускаем серводвигатель.
void setup () {pinMode (sw, INPUT_PULLUP); myServo.attach (сервопин); myServo.write (180); Serial.begin (9600); }
После этого мы берем ввод и сохраняем шаблон ввода или время стука в массиве.
void loop () {int я = 0; если (digitalRead (sw) == LOW) {Serial.println ("Старт"); задержка (1000); длинный стт = миллис (); в то время как (миллис () <(stt + patternInputTime)) {int temp = analogRead (A0); если (темп> чувствительность && flag == 0 && i <= patternLenth) {…………..
После этого декодируем входной паттерн
для (int i = 0; i
И затем сохраните, если кнопка все еще нажата
if (digitalRead (sw) == 0) {for (int i = 0; i
И если кнопка все еще не нажата, то Arduino сравнит входной декодированный шаблон с сохраненным.
else {if (knok == 1) {for (int i = 0; i
Если какой-либо пароль совпал, сервопривод открывает ворота, иначе ничего не происходит, но пользователь может увидеть результат на последовательном мониторе.
Serial.println (acceptFlag); if (acceptFlag> = patternLenth-1) {Serial.println ("Принято"); myServo.write (openGate); задержка (5000); myServo.write (closeGate); } else Serial.println ("Отклонено"); }
Вы можете проверить полный код ниже с помощью демонстрационного видео.