Оглавление:

Электронный кошелек: 3 шага
Электронный кошелек: 3 шага

Видео: Электронный кошелек: 3 шага

Видео: Электронный кошелек: 3 шага
Видео: Как создать Web3 Кошелек на ByBit! Пошаговая инструкция по настройке Веб3 кошелька на Байбит 2024, Июнь
Anonim
Электронный кошелек
Электронный кошелек

ПРИМЕЧАНИЕ. Теперь у меня есть Instructables, которые предлагают код Arduino для RC522 и PN532.

В моем предыдущем посте я подробно описал основы взаимодействия с RFID-модулями MFRC522 и PN532 для чтения / записи данных из тегов Mifare Classic 1k. В этом посте я сделаю еще один шаг и покажу, как использовать эти модули для создания электронного кошелька из тегов. Как и в предыдущем посте, это представлено как базовая реализация, но она должна обеспечить основу для множества приложений, требующих функций увеличения / уменьшения или подсчета.

Шаг 1. Целостность данных

Для электронного кошелька всегда есть опасения, что кто-то может добавить кредиты, не платя за них. Также существует опасение, что кредиты на теге могут быть непреднамеренно повреждены во время записи данных. Доступ к данным требует использования ключа тега, поэтому необходимо изменить ключ по умолчанию при первой инициализации тега. В Интернете есть статьи, в которых рассказывается о том, как взломать тег, даже если вы не знаете ключ, но техника нетривиальна. Я бы не рекомендовал использовать эти теги для вашего банковского счета, но их достаточно для множества менее рискованных приложений.

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

Шаг 2: Оборудование

Аппаратное обеспечение
Аппаратное обеспечение

Аппаратные соединения показаны на схеме выше. Это та же установка, что и в предыдущем посте, с добавлением двух переключателей и подтягивающего резистора. Один переключатель не требует подтягивающего резистора, потому что он находится на входе PIC, который имеет встроенную слабую подтягивающую способность. На практике оба переключателя будут скрыты, потому что они используются для добавления кредитов и для инициализации тега. Переключатель инициализации является необязательным (для ручного обнуления кредита), потому что программное обеспечение может обнаруживать и инициализировать новый тег самостоятельно. Вместо переключателей можно использовать перемычки.

Шаг 3: Программное обеспечение

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

Аутентификация тегов требует использования «ключа A» для целевого сектора данных. Ключом по умолчанию для тегов Mifare Classic 1k является «FF FF FF FF FF FF», но его следует изменить для вашего приложения. Программное обеспечение определяет как ключ по умолчанию, так и новый ключ («My_Key»). Просто вставьте любые значения в «My_Key». Программное обеспечение всегда пытается сначала аутентифицировать тег, используя «My_Key». Если это не удается, вызывается процедура инициализации тега, и для аутентификации используется ключ по умолчанию. Процедура инициализации изменяет ключ на «My_Key» и устанавливает кредиты на ноль. Если у вас есть тег с ключом, отличным от стандартного, и вы не знаете, что это такое, тег не может быть аутентифицирован. Если это произойдет, вы можете проверить другие секторы данных, используя ключ по умолчанию, чтобы узнать, доступен ли он. Блок трейлера, блок данных и резервный блок определены в начале списка программного обеспечения, поэтому вы можете легко их изменить.

Формат данных, хранящихся в теге для этого приложения, использует только положительные числа (дефекты не допускаются), а значения хранятся в виде четырех байтов упакованного BCD (двоично-десятичного кодирования). Это позволяет использовать кредитный диапазон от 0 до 99, 999, 999 (две цифры на байт). Значение кредита и его дополнение до единицы используют только 8 из 16 байтов в одном блоке данных, а остальные заполняются нулями. В том же блоке данных есть место для резервной копии, но я решил, что будет безопаснее поместить резервную копию в отдельный блок данных. Резервный блок находится в том же секторе, что и блок данных, поэтому отдельная аутентификация не требуется. Для большей безопасности вы можете рассмотреть возможность размещения резервной копии в другом секторе данных, но тогда для доступа к этим данным потребуется отдельный шаг аутентификации.

Когда считывание кредитов выполнено, также считывается дополненное значение, а затем эти два значения сравниваются друг с другом. В случае несоответствия считывается и сравнивается резервный набор значений / дополнений. Если они совпадают, предполагается, что резервная копия верна и используется для восстановления поврежденных данных. Если резервные копии не совпадают, тег считается недействительным и предпринимается попытка повторно инициализировать его.

Значения приращения и декремента определены в начале списка и должны быть в упакованном двоично-десятичном формате. Подпрограммы, которые эффективно увеличивают и уменьшают число, делают это для 32-битного числа. Математика очень проста, но требует использования подпрограмм для корректировки результатов для переносов внутри каждого упакованного байта BCD и от одного байта к следующему. Это достигается за счет использования макросов DAA (добавление десятичной корректировки) и DAS (вычитание десятичной корректировки). Эти макросы гарантируют, что каждая 4-битная цифра BCD всегда находится в диапазоне 0-9.

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

Это все для этого поста. Ознакомьтесь с моими другими проектами в области электроники на сайте: www.boomerrules.wordpress.com

Рекомендуемые: