Posted by lex232 on

Динамическая индикация в Arduino, на примере led-матрицы 8х8 + uln2803

Динамическая индикация в Arduino, на примере led-матрицы 8х8 + uln2803

Нашёл я недавно пример игральной кости, на матрице 8х8, но много чего там мне не понравилось. Захотелось поместить это в маленький корпус, но размер периферии arduino не позволяет это сделать. Поэтому делаем программу на arduino, а потом переходим на обычную плату с запаянным atmega328. Обычно используется индикатор 8х8 пикселей уже со сдвиговыми регистрами, мы будем использовать обычную матрицу, ибо потом этот сдвиговый регистр надо куда-то спрятать, мы будем ограничены в размерах, да и количество выводов atmega328 позволяет подключить всё напрямую. Посмотрим, что из себя представляет матрица

Posted by lex232 on

Датчики наклона KY-020 и SW-520D для Arduino

Датчики наклона KY-020 и SW-520D для Arduino

Иногда в проекте возникает необходимость отслеживать наклон, смещение, поворот или вибрацию. Методов сделать это — очень много, от сложных, используя акселерометр, до самых простых датчиков. Совсем недавно у меня появилась задача зафиксировать изменение положение объекта в пространстве, и для теста я заказал два простых датчика, о которых почему-то почти нет информации. Первым оказался датчик наклона KY-020 (имеет и другие разновидности в индексе)

Posted by lex232 on

Протокол iButton. Разбираемся с 1-wire в Arduino

Протокол iButton. Разбираемся с 1-wire в Arduino

Помимо управления кнопкой, и ввода данных с клавиатура, неплохо было бы добавить электронные идентификаторы, которые упрощают процедуру входа. Один из самых популярных методов — touch memory или iButton. Как уж только не называют его у нас — таблетка, магнитный ключ, брелок и т.д. Изначально, конечно планировался, как тип контактной памяти (внутри, по сути микросхема ПЗУ), но его можно эмулировать, и работать с бесконтактными картами, клавиатурами и т.д.

Posted by lex232 on

Контроль доступа. Часть 6. Подключаем зуммер

Контроль доступа. Часть 6. Подключаем зуммер

Будет достаточно проще пользоваться устройством, если мы реализуем звуковое сопровождение, подключим зуммер к нашей плате. У нас немного поменялось расположение элементов, поэтому обновим несколько директив #define, а конкретно зуммер подключим к ШИМ выходу arduino. (Полный код, как обычно будет в конце статьи)

Posted by lex232 on

Контроль доступа, часть 5. Алгоритм сброса и первого старта программы через джампер в Arduino.

Контроль доступа, часть 5. Алгоритм сброса и первого старта программы через джампер в Arduino.

В прошлый раз, мы сравнивали введённый пароль с паролем, который был записан во flash память контроллера. Но ведь известно, что эту область памяти нельзя изменить в процессе работы устройства, и для хранения таких данных нужно бы использовать EEPROM. Сегодня разберём, как можно делать аппаратный сброс, где и как хранить эти данные, как реализовать первичный запуск устройства, с заданием характеристик. Самое простое, что мы можем использовать для сброса — джампер.

Posted by lex232 on

Знакомимся с EEPROM AVR в Arduino IDE.

Знакомимся с EEPROM AVR в Arduino IDE.

Самое время вспомнить, что при перезагрузке arduino теряет сохранённые данные. Конечно, мы можем вписать пароль, который будет верифицирован, в тело программы, но если потом пользователь захочет поменяеть его? Для этого в arduino есть ячейки энергонезависимой памяти eeprom. Расшифровывается, как Electrically Erasable Programmable Read-Only Memory, т.е. дословно, энергонезависимая память. Отличается от ПЗУ, в которой хранится программа тем, что в исходном коде в процессе работы устройства изменения без программатора сделать нельзя, а в eeprom — можно. Значит мы можем менять пароль в процессе работы устройства, а также хранить данные карт памяти и другие параметры.

Posted by lex232 on

Контроль доступа. Часть 4 — алгоритм ввода чисел с клавиатуры.

Контроль доступа. Часть 4 — алгоритм ввода чисел с клавиатуры.

В прошлой статье мы научились работать с кнопкой и управлять замком и светодиодом. Чтобы не мешать этому коду, сканирование клавиатуры мы временно закомментировали. Сегодня мы немного доработаем код, чтобы всё это не конфликтовало друг с другом, а самое главное, реализуем программу считывания цифрового кода в 4 значную переменную. Если она совпадёт, с числом-кодом, что записан в постоянной памяти микроконтроллера, дверь также откроется.

Posted by lex232 on

Контроль доступа. Часть 3 — Управляем замком и читаем кнопку.

Контроль доступа. Часть 3 —  Управляем замком и читаем кнопку.

В предыдущей статье, мы рассмотрели, как уйти от простой команды delay();. Предлагаю убрать дребезг кнопки открытия двери нашим новым кодом, с использованием millis. Просто будем опрашивать кнопку раз в 70 мс, чаще смысла нет, потому что физически нажать кнопку на более короткое время, учитывая дребезг контактов практически невозможно. Но сначала зададим переменные, которые мы будем использовать для организации ожидания.

                        // Переменные времени
uint8_t  buttonTime;    // Переменная времени дребезга кнопки открытия
uint16_t openLockTime;  // Переменная времени задержки открытия времени замка
uint16_t openTime;      // Время открытия замка
Posted by lex232 on

Контроль доступа. Часть 2 — Работаем с задержками без delay() на arduino.

Контроль доступа. Часть 2 — Работаем с задержками без delay() на arduino.

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

Posted by lex232 on

Open-source система контроля доступа. Часть 1 — опрос матричной клавиатуры на arduino

Open-source система контроля доступа. Часть 1 — опрос матричной клавиатуры на arduino

Подумал, что интересно будет не только делать уроки, а сразу делать реальное изделие, которое можно применить в жизни. По основной работе я занимаюсь системами безопасности, и очень часто работаю с системами контроля доступа. Я работал с Болид, z5r, z5r web, и т.д. Какие-то системы невероятно сложные в установке и настройке (Болид привет), каким-то не хватает стабильности и функционала.

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