Ввод пароля пользователя при входе в windows по RFID карте

Ввод пароля пользователя при входе в windows по RFID карте.
Блокировка - Разблокировка компьютера на Операционной системе Windows.
Доступ по карте.

Всем привет!
У кого стоит пароль для доступа к системе тот меня поймёт. Сколько раз в день приходится вводить этот ненавистный пароль. Но теперь это в прошлом. К нам на помощь пришла технология, и эта технология RFID. 
Теперь можно Блокировать и разблокировать компьютер всего лишь приложив карту к считывателю.
Это уже не первый проект про RFID кому интересно может посмотреть все примеры, а также теорию в этих видео, а мы продолжаем.

Давайте сначала посмотрим что и как, а потом я расскажу как это сделать. Это оказывается совсем не сложно.
Извиняюсь за качество съёмки, но по другому у меня не получилось.
Для того чтобы заблокировать компьютер достаточно просто поднести карту к считывателю и он сам заблокируется. Теперь не надо  нажимать волшебные три кнопки, CTRL+ALT+DEL. Надо просто поднести карту.
Разблокировать так же просто. Надо снова поднести карту и вы опять в системе. 

Теперь я расскажу как это сделать.
Для начала о грустном. Не каждая Ардуина может с этим справиться.
Нам понадобится Ардуина с чипом ATmega32U4.
К таким платам подходят 

  • Arduino Micro

  • Arduino Pro Micro

  • Arduino Leonardo

Сразу говорю, что Arduino Uno, Mega 2560, Pro Mini или Arduino Nano не подойдут. Оказалось. что подойдут, но об этом я узнал после того как уже снял это видео. 

В своём проекте я использовал Arduino Micro, поэтому и буду рассказывать про неё.
Вот схема подключения RFID к Ардуине. Она не сильно от обычных схем. Всё также надо подключить считыватель по SPI шине, просто здесь они расположены не в том месте как мы привыкли.
RFID питается от 3,3 вольт, поэтому мы сразу его подключим к выходу 3,3 вольта на Ардуино.
Куда подключать остальные контакты можно посмотреть на схеме.
 
Arduino Leonardo/Micro с чипом ATmega32U4 имеет встроенную USB - связь. Это позволяет им отображаться на подключенном компьютере в виде мыши или клавиатуры.

Теперь рассмотрим код скетча.
Для работы нам надо будет использовать библиотеку keyboard.h, чтобы arduino  смогла обрабатывать нажатия клавиш на подключенном компьютере. Значит установим её. Как обычно идём в менеджер плат  вводим нужную библиотеку. После того как система найдёт её, то устанавливаем. Так как у меня она уже установлено, то я этот момент пропущу.
Так как мы используем Ардуино Микро, то нам надо её выбрать. Идём в менеджер плат, ищем Ардуино Микро и выбираем её для работы.
Теперь надо выбрать на каком она COM порту. У меня она на COM порту 7, у вас будет на другом. Выбираем порт и прошиваем Ардуино.
После того как Ардуино прошьётся у вас появится новое устройство. Заходим в Параметры системы и видим, что в пункте мышь, клавиатура и перо появилось устройство Ардуино Микро со значком клавиатуры. Это значит, что она может работать как клавиатура. В следующих видео я покажу ещё несколько примеров как использовать Ардуино в качестве клавиатуры и как с её помощью автоматически вводить пароли в разные системы, например соцсети или для входа в другие системы.

Для работы нам нужно знать UID карты. Для этого заходим в примеры и открываем пример DUNPINFO. Загружаем его и прошиваем Ардуино. Подносим карту к считывателю и ждём когда скачаются все блоки карты. Можно конечно не ждать до конца, ведь номер карты считывается первым, но лучше проделать считывание полностью.
Если вы используете скетч из архива, то вам надо будет в примере изменить номера выходов Ардуино на 5 и 10.
Копируем номер карты и вставляем его в пример скетча и убираем все пробелы. 
Если у вас не установлен пароль для входа или вы хотите создать нового пользователя и разрешить ему доступ только по карте, тогда идём в Параметры системы.
Выбираем вкладку Учётные записи. Я не буду создавать другого пользователя, а присвою пароль администратору, то есть себе.
Выбираем параметры входа и нажимаем на пароль. Здесь надо заполнить все поля. Пароль я сделаю простой, 1 2 3 4 5 6 7.  После нажимаем готово и переходим обратно в скетч.
Теперь рассмотрим скетч. Он совсем простой.
Всё что вам надо изменить в скетче это пины, если вы установили свои и номер UID и Пароль для входа в WINDOWS. Для этого я создал строковые переменные вот в них и надо прописать значения.
При тестировании скетча я выяснил, что UID карты должен быть записан маленькими буквами, большими у меня не заработал.

Теперь объясню работу кода.
После того как вы подносите карту к считывателю считывается номер карты. Дальше есть два варианта.
Первый.
Если Windows находится в заблокированном состоянии, нажатия клавиш для ее блокировки не будут иметь никакого эффекта, и команда разблокирует заблокированный компьютер. Для этого в поле будет введён пароль из переменной и нажата кнопка Enter.
Если компьютер разблокирован, то с помощью этого кода он заблокируется.
Код разблокировки также поступает одновременно, но, поскольку между нажатиями клавиш блокировки и разблокировки есть лишь небольшая задержка, Windows переходит к выполнению команды блокировки и не будет считывать команду кода разблокировки, поступающую в это время.

Теперь небольшое уточнение.
Для правильной работы на экране недолжно уже быть выведена поле для заполнения пароля, так как это должна сделать программа. Если поле будет выведено, то код снова попытается его создать и будет ошибка ввода пароля.
У меня так было в первой версии кода, но теперь я вроде всё исправил.
Вот так выглядит не правильная работа.
Поле уже создано и пароль не принимается. Для устранения этого можно просто нажать ENTER, поле пропадёт и скетч продолжит правильную работу. При последних тестированиях у меня таких проблем больше не возникало.

Как я раньше уже говорил, можно собрать пример и на других платформах Ардуино, но узнал я об этом уже после того как сделал это видео, так что когда-нибудь я соберу и на Ардуино УНО. Правда у меня её нет в наличии, так что это будет не скоро, а вот ввод пароля в другие системы и работу с клавиатурой я сделаю обязательно и по возможности в ближайшее время, но это всё будет завесить от вашей активности. Я постоянно смотрю какие видео вы чаще всего смотрите и делаю новые исходя из вашего интереса. Так что всё в ваших руках.
Впереди ещё много интересного, так что заходите по чаще, так как на ютубе не всегда корректно работает оповещение о выходе новых видео и вы можете пропустить интересное именно вам видео. 
 

Примеры использования модуля RFID RC522
подключение RFID RC522 к Arduino Nano
RFID замок на Arduino
RFID запись
RFID модуль RC522 чтение запись
Копирование RFID карт
MultiReader RFID подключение двух RC522 к arduino. mfrc522
RFID считыватель подключение доступ MySQL
Подключение RFID к MySQL
rfid технология. Система контроля доступа
rfid система. LCD дисплей 1602. Русификация
Модуль rfid rc522 идентификация. Карта rfid пропуск
rfid идентификация. Учёт посещаемости Время прихода и ухода
Подключаем Модуль RFID RC522 к Arduino: Просто и доступно

 

Скетчи