Эмуляция Em Marine через NFC

Обновлено: 02.06.2023

Алгоритм удержания курса судна с нелинейной обратной связью, основанный на модели MMG, управляемой биполярной сигмоидной функцией для швартовки

Рекомендовать документы

Алгоритм удержания курса судна с нелинейной обратной связью на основе модели MMG, управляемой биполярной сигмовидной функцией для швартовки Цян Чжан a,b, Сянь-ку Чжан a,*, Навигационный колледж Нам-кюнь Им ца, Даляньский морской университет, Далянь, Ляонин , Китайский навигационный колледж, Шаньдунский университет Цзяотун, Вэйхай, Шаньдун, Китай c Отделение навигационных наук, Национальный морской университет Мокпхо, Мокпхо, Южная Кореяb

Получено 4 сентября 2016 г.; пересмотрено 14 ноября 2016 г.; принято 11 января 2017 г. Доступно онлайн ▪ ▪ ▪

<р>1. Введение Хорошо известно, что динамическое движение корабля становится сильно нелинейным из-за его низкой скорости, большого угла дрейфа и возмущений окружающей среды при швартовке. Кроме того, обычные торговые суда приводятся в действие неголономными связями второго порядка, поскольку суда обычно не оборудованы поперечными главными тягами (Wichlund et al., 1995). Следовательно, удержание курса трудно реализовать, когда гребной винт останавливается или реверсирует, чтобы регулировать скорость для швартовки. Большинство исследований управления курсоуправлением корабля основано на упрощенной динамической модели с постоянной скоростью * Автор, ответственный за переписку. Адреса электронной почты: [email protected] (К. Чжан), [email protected] edu.cn (X.-k. Zhang), [email protected] (N.-k. Im). Экспертная оценка под ответственностью Общества морских архитекторов Кореи.

(Zwierzewicz, 2015; Trybus et al., 2015). На самом деле управление курсом обычно совмещают с управлением скоростью рулем направления и винтом. Однако упрощенная динамическая модель не отражает фактического состояния гребного винта, а также не полностью удовлетворяет требованиям причаливания. Модель MMG может удовлетворить этим требованиям лучше, чем упрощенная динамическая модель. Точность управления по курсу основана на модели MMG. Цзя и Ян (1999) рекомендовали использовать модель Киджимы, когда угол наклона меньше 20°, модель Йошимуры можно использовать, когда угол наклона больше 30°, а метод интерполяции, который находится где-то посередине между приведенными выше модели могут использоваться для коррекции низкой скорости, когда угол наклона составляет от 20 до 30°. Исследовательский комитет по «стандартизации математической модели для прогнозирования маневрирования судов» провел много исследований (Yasukawa and Yoshimura, 2015). Однако характеристики реверсирования гребного винта обычно упрощаются или не учитываются применительно к конструкции контроллера (Lee et al., 2009;

В. Чжан и др. / Международный журнал военно-морской архитектуры и океанографии xx (2017) 1e12

Тран и Им, 2012 г.; Им и др., 2013; Ахмед и Хасэгава, 2013 г.; Park and Nakwan, 2014), следовательно, этот регулятор ограничен на практике и в вероятности его применения. В настоящее время эффективная и безопасная навигация является горячей темой в области управления судами (Zhang, 2012). Проблемы с управлением высокой выходной энергией и сложностью компенсации ее нелинейной функции были в основном решены за счет комбинации нелинейной обратной связи и алгоритма обратного шага (Zhang et al., 2015a). Отмечается, что нелинейное управление с обратной связью само по себе не может существенно изменить выходную характеристику управления, но оно может обеспечить эквивалентное или лучшее управление с меньшими затратами энергии. Тип нелинейной функции обратной связи был доказан теорией дескриптивной функции, а также указывает на то, что удовлетворительный эффект энергосбережения при применении управления курсоудержанием корабля теоретически обусловлен синусоидальной функцией (Zhang and Zhang, 2016a). Кроме того, нелинейная технология декорирования основана на биполярной сигмовидной функции, основанной на модели корабля Nomoto, которая использовалась для достижения того же эффекта энергосбережения (Zhang et al., 2016b). Ссылаясь на исследования последних лет (Jia and Yang, 1999; Kijima and Nakiri, 2002; Yashimura et al., 2009; Jorgen, 2014), в этой статье сначала обсуждается практическая модель корабля MMG, применимая к правшам. одновинтовой корабль с поперечными силами винта и коррекцией малых скоростей алгоритмом интерполяции кубическим сплайном. Во-вторых, предлагается новый алгоритм нелинейной обратной связи на основе ПИД-регулятора, управляемый биполярной сигмовидной функцией. Параметры ПИД-регулятора напрямую определяются алгоритмом формирования усиления с обратной связью, в то время как теория формирования усиления с обратной связью использовалась для анализа эффектов. Наконец, взяв судно сжиженного нефтяного газа в качестве примера для моделирования поворота, движения зигзагом, аварии кормой и удержания курса, результаты показывают, что модель MMG удовлетворяет практике навигации, а предлагаемый алгоритм имеет преимущества надежности, энергосбережения и безопасности при стоянке. практика.

Рис. 1. Фиксированная система координат корабля на земле и фиксированная система координат тела.

H, P, R и W — голый корпус, гребной винт, руль направления и ветер соответственно. 2.1. Расчет гидродинамической силы на голом корпусе. (2): 8 0, n > 0) и Ⅱ (второе)

В. Чжан и др. / Международный журнал военно-морской архитектуры и океанографии xx (2017) 1e12

квадрант (u > 0, n > > > если n 0 > > 6 > > > 0, если n 0 > 6 > > > NP ¼ : P bi J i если n > k ¼ A Jj T ij > > DP > i=0 j=0 > > > > DP 0:18 DP 0:09 DP > > > > > > : þð0:5 qÞð0:8 qÞk 1:1; P ; JT 0: 18 ДП

где Aij — постоянный коэффициент; P — шаг винта.

2.5. Модель возмущения ветра

<р>2.4. Поправка на низкую скорость для расчета гидродинамической силы корпуса

Возмущение ветра оказывает большее влияние на безопасность причаливания судна. Капитан судна обычно должен адекватно учитывать возмущение ветра при разработке плана швартовки. Модель возмущения ветра показана как уравнение. (9).

Когда угол дрейфа корабля больше 30 , модель корабля Йошимуры можно использовать в качестве уравнения. (7):

8 > XH = XH ðr = 0Þ + Xvr vr + Xrr r 2 > > > > > > ZL=2 > > 1 > > v + Cry xr v + Cry xr dxÞ > > > > > ZL=2 > > 1 > > NH ¼ NH ðr = 0Þ þ Nrjujr rLdCd ðv þ Crn xrÞjv þ Crn xrjxdx > > > 2 :

В. Чжан и др. / Международный журнал военно-морской архитектуры и океанографии xx (2017) 1e12

8 0, об/мин = 0, об/мин 0) В этом моделировании начальные скорости составляют 8 узлов, 5 узлов и 3 узла, когда об/мин равно 38. Рис. 10 демонстрирует моделирование

В. Чжан и др. / Международный журнал военно-морской архитектуры и океанографии xx (2017) 1e12

Рис. 9. Конфигурация стандартной системы PID и NFC.

Рис. 10. Сравнение выдерживания курса при разной начальной скорости при об/мин = 38.

Результаты алгоритмов PID и NFC. Как показано на рис. 10(а), ПИД и НПЧ получают практически одинаковые управляющие эффекты при времени регулирования 280 с без перерегулирования. На рис. 10(в) время ослабления руля направления от 35 составляет 70 с, 102 с, 113 с для PID и 70 с, 98 с, 126 с для NFC при начальной скорости 8 узлов, 5 узлов и 3 кн соответственно. Следовательно, NFC имеет более быстрый отклик, чем PID. Совершенно очевидно, что угол руля NFC меньше, чем у PID, а это означает, что антипомеховая способность и надежность NFC выше, чем у PID, в то же время NFC обладает энергосберегающим эффектом и снижает рабочую нагрузку на рулевой механизм для обеспечения безопасности. причал. Кроме того, при стабильном курсе средний угол поворота руля составляет 0,8 из-за среднего возмущения ветра.

Рис. 10(b) видно, что скорость значительно уменьшается во время фазы поворота. PID и NFC почти одинаково влияют на снижение скорости, даже если NFC мало снижает скорость из-за малых углов руля и приводит к меньшему сопротивлению корабля, чем PID. 4.2.2. Управление удержанием курса с остановкой винта (об/мин = 0) На рис. 11 показаны результаты моделирования алгоритма ПИД и NFC при остановке винта (об/мин = 0). Как показано на рис. 11(а), результаты ПИД-регулирования и регулирования NFC почти одинаковы в отношении времени регулирования 460 с без перерегулирования. На рис. 11(в) время ослабления руля направления от 35 до 95 с, 162 с

В. Чжан и др. / Международный журнал военно-морской архитектуры и океанографии xx (2017) 1e12

Рис. 11. Сравнение выдерживания курса при разной начальной скорости при об/мин = 0.

и 262 с для PID и 94 с, 159 с и 257 с для NFC при начальной скорости 8 узлов, 5 узлов и 3 узла соответственно. Поэтому NFC имеет более быстрый отклик, чем PID. Также очевидно, что угол руля у NFC меньше, чем у PID, а это означает, что способность NFC противостоять помехам и надежность выше, чем у PID. Кроме того, при стабильном курсе средний угол поворота руля составляет 1,2 из-за среднего возмущения ветра. На рис. 11(b) также показано, что PID и NFC почти одинаково влияют на снижение скорости, даже если NFC снижает скорость меньше из-за малых углов поворота руля. 4.2.3. Удержание курса при вращении винта назад (об/мин 0 об/мин = 0 об/мин

Что это? Odiin — это набор инструментов для эмуляции тегов NFC! Он разработан как простой и простой в использовании инструмент для эмуляции меток NFC-A различных типов. На текущей стадии прототипа он частично…

Что это?

Odiin — это набор инструментов для эмуляции тегов NFC! Он разработан как простой и простой в использовании инструмент для эмуляции меток NFC-A различных типов. На этом текущем этапе прототипа он имеет частичные реализации для нескольких типов тегов NFC Type 2, включая поддержку тегов серии NTAG21X, элементарную поддержку MIFARE Classic и MIFARE Ultralight C. Расширение поддержки функций и типов тегов должно стать вопросом прошивки в будущем. !

Зачем вы это сделали?

Odiin начинался как учебный проект, когда я изучил платформу nRF52840 и потратил время на изучение NFC в целом.Я быстро понял, что мне нравится читать произвольные данные, и хотел создать устройство, которое могло бы это делать с шикарным дисплеем.

Кроме того, он превратился в инструмент, когда мы с женой поняли, что можем использовать его для эмуляции наших Amiibos, поэтому нам не приходилось доставать их из мусорного ведра каждый раз, когда мы хотели использовать их для наших игр.< /p>

Что делает его особенным?

Это единственное устройство, которое работает именно так. Существует множество высококачественных инструментов NFC, таких как замечательный (и гораздо более дорогой) Proxmark3, а также множество решений «сделай сам», разработанных для использования Arduinos и тому подобными. То, что я создаю, похоже, занимает золотую середину между ними с точки зрения функций и цены, и в то же время достаточно удобно для использования любым, кто хочет протестировать NFC, поэкспериментировать или научиться!

Что он делает?

Он эмулирует метки NFC! Если вы хотите увидеть его в действии, посмотрите видео внизу этой страницы или на YouTube!

Вот усеченная матрица некоторых реализованных и запланированных функций:

< td align="left">Эмуляция тега NFC Forum Type 2
Функция Статус
Частично (чтение)
Эмуляция NTAG215 Частично (чтение)
Эмуляция NTAG213 Частично (чтение)
Эмуляция NTAG216 Частично (чтение)
Классическая эмуляция MIFARE ❌ (Запланировано)
Эмуляция MIFARE Ultralight C ❌ (Запланировано)< /td>
Загрузчик UF2
Эмуляция запоминающего устройства USB
Загрузка файла тегов Частично*
Формат полезной нагрузки NDEF ❌ (Запланировано)

Конечно, в планы входит обработка операций записи и сохранение, но до сих пор наиболее полезным было чтение. Вы можете проверить GitHub, если этот список функций устарел!

Как мне его использовать?

Вам просто нужно подключить Odiin к компьютеру с помощью USB-кабеля, и через некоторое время вы увидите всплывающее окно с новым диском. Этот диск выставляет SD-карту, вставленную в Odiin. Вы можете перетаскивать файлы прямо на него оттуда. Вы, конечно, можете поместить файлы на SD-карту и с помощью обычного устройства для чтения SD-карт!

Затем отключите Odiin от компьютера, выберите и загрузите один из ваших файлов, и все! Светодиод становится синим, чтобы вы знали, что метка NFC активна! Коснитесь нижней части Odiin на своем считывателе (будь то телефон, PN532 и т. д.), и Odiin выдаст данные!

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

Что еще мне нужно знать?

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

Взлом

Если вы мечтаете о чем-то большем, чем инструмент NFC, и хотите, чтобы Odiin делал больше для вас, у этого щенка есть много скрытого под капотом, с которым вы можете многое сделать:

  • На основе SoC nRF52840, что означает не только NFCT, но и Bluetooth, BLE/mesh/thread/zigbee и «собственную» беспроводную связь Nordic на частоте 2,4 ГГц. Это чип на базе ARM Cortex-M4F с 1 МБ флэш-памяти, 256 КБ ОЗУ и модулем с плавающей запятой одинарной точности!
  • Встроенная флэш-память QSPI 8 МБ
  • ЖК-дисплей SPI 320 x 240, управляемый ILI9341
  • A (в настоящее время не используется в прошивке) ATWINC1500 для Wi-Fi (802.11 b/g/n)
  • Прекрасный RGB-светодиод WS2812B, а также еще один дискретный RGB-светодиод (он просто спрятан под корпусом!)
  • 5-позиционный навигационный переключатель, а также две дополнительные кнопки. Также внутри скрыты еще 2 кнопки, одна из которых является кнопкой сброса.
  • Подключение устройств USB C (2.0)
  • Зарядка аккумулятора LiPo

В этом устройстве есть много чего полезного, что можно добавить к этому устройству!

Почему так дорого? Я мог бы построить его сам дешевле!

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

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

С чем это связано?

Вы получаете следующее:

  • Одиин — очевидно!
  • Кабель USB C – USB A — для подключения к компьютеру и зарядки.
  • Перезаряжаемый литий-полимерный аккумулятор емкостью 500 мАч
  • Карта Micro SD и адаптер для карты SD — размеры и варианты зависят от того, что у меня есть на складе, но объем памяти должен составлять не менее 4 ГБ
  • Дополнительно (на фото): напечатанный на 3D-принтере корпус и навигационная накладка — в настоящее время я печатаю их на Formlabs Form 2 с помощью смолы Tough 1500.
  • Моя огромная благодарность — это обязательно, без вас мой проект был бы невозможен!


Когда он подошел к линии, чтобы пробежать 40 ярдов на Скаутском объединении НФЛ 2022 года, линейный защитник из Джорджии Трэвон Уокер не знал, что собирается войти в историю.

Пару недель назад его лучший результат на тренировках был 4,63, сказал он PFF. Юноша ростом 6 футов 5 дюймов и весом 272 фунта пронесся мимо финишной черты на 4,51 секунды позже, показав лучшее время с 1999 года для игрока весом не менее 270 фунтов.

"Я определенно попал в те области, которые хотел затронуть, в основном сосредоточившись на своих 40", – недавно сказал Уокер PFF. «Я поставил перед собой цель: некоторое время назад я сказал отцу, что хочу набрать 4,5 и знаю, что могу набрать 4,5. Пошел туда и сделал это».

Нажмите здесь, чтобы увидеть больше инструментов PFF:

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

Остальные результаты тестирования Уокера всегда были впечатляющими. Его вертикальный прыжок на 35,5 дюйма, прыжок в длину на 123 дюйма, упражнение с тремя конусами на 6,89 и короткий волан на 4,32 были в 85-м процентиле или выше для линейных защитников. Добавьте к этому тот факт, что его рост, вес и длина руки 35,5 дюймов также были почти лучшими в своем классе, и Уокер проверил каждую ячейку с точки зрения измеримых величин.

Трэвон Уокер | Скаутский комбинат НФЛ 2021
Объединить тест Результат Процентиль
Высота 6-5 78-й
Вес 272 65-е место
Длина руки 35,5″ 95-е место
Рывок на 40 ярдов 4.51 98-й
Верт 35,5″ 78-й
Широкий 123″ 88
3 конуса 6.89 94-е
Короткий шаттл 4.32 85-й

Команды НФЛ уже знали, что они получают от Уокера в спортивном плане, хотя, возможно, и не до такой степени. Они действительно были там, чтобы узнать, кто он был внутри шлема.

"В основном речь шла об игре в футбол, – – сказал Уокер. – «Я играю с 7 лет, так что просто говорю о том, что футбол дается легко, и это то, что я люблю делать… в этой форме, просто чтобы увидеть, действительно ли я знаю, о чем говорю, или я просто играю».


Настраиваемый симулятор драфта PFF дает вам возможность стать генеральным менеджером любой команды на драфте НФЛ 2022 года. Попробуйте сегодня — это бесплатно!

Уокер влюбился в футбол в городе Томастон, штат Джорджия, с населением чуть менее 10 000 человек. Он происходил из семьи, в которой большое внимание уделялось дисциплине и обязательности. Его отец, бывший морской пехотинец и офицер полиции, рано научил сына ценности хорошей трудовой этики и тому, что она может сделать не только для вас, но и для окружающих.

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

Уокер в душе самопровозглашенный деревенский парень. Он говорит, что никогда не может оставаться дома слишком долго — ему приходится рыбачить на улице или кататься на квадроциклах, хотя он признает, что в настоящее время у него не так много времени для этого. Когда его спросили, в какой стране он живет, его улыбка стала шире: «Я и раньше мутил, могу сказать».


11 сентября 2021 г.; Афины, Джорджия, США; Линейный защитник Джорджии Бульдогов Трэвон Уокер (44) в бою против UAB Blazers на стадионе Сэнфорд. Фото: Дейл Занин, USA TODAY Sports

Хотя Уокер родился в маленьком городке, его будущее очень велико. Благодаря школьному футболу он поднялся до 5-звездочного статуса в качестве новобранца, заработав место на Всеамериканской игре 2019 года. Со временем он стал одним из основных игроков в защите исторического национального чемпионата Грузии.



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

У меня уже есть статья (ru) о подробном функционале прибора EM Marine. Статья содержит точное объяснение того, как намотать антенну и как создать RFID-эмулятор из трех частей. Однако, хотя само устройство простое, его конструкция достаточно сложна. Помимо того факта, что не так уж много людей имеют осциллограф, который необходим для определения правильного резонанса, вам также понадобится программатор для прошивки ATtiny85.

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

Оборудование

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


Здесь у нас есть колебательный контур, который мы будем укорачивать в определенный момент, чтобы изменить ток считывателя так, чтобы он принял передаваемые данные.

Самое сложное здесь — колебательный контур, настроенный на частоту 125 кГц. Вы можете приобрести очень дешевый считыватель RFID-меток для Arduino под названием RDM6300. Несмотря на невысокую цену, этот ридер оснащен антенной, а его резонансный конденсатор уже впаян на плату. Итак, ридер нужен только из-за двух его компонентов: катушки и резонансного конденсатора.



Считыватель RDM6300 и его резонансный конденсатор

Я купил это устройство по очень низкой цене, которая никак не соотносится с объемом работы, необходимой для настройки антенны. Самая сложная операция — выпаивание конденсатора и его повторная пайка на печатной плате. Хотя я считаю, что с этой задачей справится даже юноша.

Теперь мы можем собрать все это на печатной плате. Вы можете задаться вопросом, почему я соединяю два резистора параллельно. Причина в том, что у меня не было под рукой семплов размером 10kOm, и я решил использовать вместо них 20kOm.



Собранный эмулятор

Давайте посмотрим поближе. Я намеренно использовал для конденсатора отдельную маленькую плату, где он был припаян прямо на штырьки, вставленные в макетную плату.


Изначально я хотел проверить работоспособность эмулятора с помощью другого RDM6300 (я купил два таких). И я даже сначала так делал, но потом решил, что отлаживать одну Arduino с помощью другой как-то неправильно и купил готовый ридер.



Стандартный ридер

Программирование таймера

Вот несколько нюансов, которые необходимы для понимания того, что я делаю.

Напоминаем, что EM4102 использует манчестерскую схему кодирования, и при модуляции протокола EM4102 бит может передаваться со скоростью 64/32/16 циклов несущей (125 кГц).


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

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


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


Великолепно, просто и лаконично!

Преобразование данных для передачи

Здесь нам также нужно обновить способ хранения данных на карте. Давайте посмотрим на реальный пример.

Предположим, у нас есть карта, но нет считывателя. На карте напечатан номер: 010,48351.



Настоящая карта с номером 010, 48351

Как мы можем преобразовать этот номер в идентификатор, хранящийся на карте? Это просто. Напомним формулу, предполагающую перевод двух частей числа по отдельности:


В результате мы получаем наш серийный номер как 0xABCDF. Давайте проверим это, отсканировав карту ридером. Получаем десятичное число:


Затем мы преобразуем его в шестнадцатеричную строку, и вот снова это число: 0xABCDF .

Кажется довольно просто, но впереди сложная часть. Напомню формат, в котором данные хранятся на карте.


  1. Во-первых, в заголовке девять единиц.
  2. Младшая часть идентификатора клиента
  3. Бит четности в конце.
  4. Вторая часть идентификатора клиента.
  5. Бит четности.
  6. Младший полубайт нулевого байта серийного номера.
  7. Бит четности.
  8. Старший полубайт нулевого байта серийного номера.
  9. Остальные данные передаются таким же образом через полубайты с битом четности в конце.
  10. Самая сложная часть. Биты четности вычисляются для всех 10 полубайтов.
  11. Наконец, все это безобразие заканчивается стоповым битом, который всегда равен 0 .

Что такое бит четности? Бит четности используется для проверки ошибок во время передачи. Чтобы узнать его значение, мы вычисляем количество единиц в передаваемых данных. если четное, то бит равен 0, а если нет, то бит равен 1. XOR — это самый простой способ вычислить его.

Я долго думал, как элегантно преобразовать серийный номер в передаваемые данные, чтобы это также занимало меньше памяти MCU. Наконец, я набросал небольшую программу, которая делает именно это. Программу можно найти под спойлером ниже.

Больше всего нас интересуют биты четности. Для удобства я сделал вывод на экран таким же, как в таблице. Вот результат.


card_id — серийный номер карты (о котором говорилось выше).

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

После проверки всех расчетов и их визуального сопоставления я проверил полученные данные в программе Arduino (последняя строка с картинки должна быть вставлена ​​в код). Все работало просто отлично. Благодаря нарисованной программе теперь я могу легко преобразовать любой серийный номер в передаваемые данные. Раньше битовые вычисления производились отдельными программами на моем ПК и такой громоздкий процесс мне не нравился. При этом функция перевода серийного номера в передаваемый формат выглядит следующим образом:


Всё! Время для тестирования реального сценария. Исходный код проекта можно найти здесь.

Тестовый запуск

Лучше один раз увидеть, чем тысячу раз прочитать об этом, как говорят. Также решил записать демонстрацию работающего эмулятора. У меня была идея протестировать его на реальном оборудовании, и я попытался проникнуть в офис нашей компании с помощью Arduino, но из-за проклятых ограничений, связанных с пандемией, туда никого не пускают. Поэтому мне пришлось провести полноценный тест. на моем лабораторном столе.

Заключение

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

Читайте также: