Чип TigerTag (формат RFID/NFC)
Физический уровень
Заголовок раздела «Физический уровень»| Свойство | Значение |
|---|---|
| Семейство чипов | NTAG213 / 215 / 216 (NFC Forum Type 2) |
| Рекомендуемый форм-фактор | круглая наклейка 25 мм (другие формы тоже работают) |
| Нагрузка | 144-байтная нагрузка NDEF — рассчитана на небольшой NTAG213; более крупные чипы оставляют неиспользуемое место |
| Официальные фирменные чипы | Выпускаются как NTAG215 — дополнительная память максимально продлевает повторное использование в конце срока службы (стандартные объекты NDEF), чтобы чип никогда не становился электронными отходами |
| Аутентификация | Нет — читается открыто |
| Защита от записи | Нет — чипы поставляются разблокированными; пользователь может их переписать, в том числе полностью перейти на другой протокол |
| Зарезервированная область | 64 байта в конце нагрузки — страницы 0x18–0x27, остаётся 80 байт данных. На стандартном TigerTag они свободны для дополнительных функций сообщества; на TigerTag+ в них хранится подпись происхождения: 32 байта R и 32 байта S (побайтовая структура: TigerTag-RFID-Guide) |
| Чипов на катушку | Два, на противоположных сторонах |
| Читается | Любым смартфоном с NFC, USB-считывателями класса ACR122U, TigerPOD |
Это намеренная противоположность меткам производителей (Mifare Classic с производными ключами, секторы AES, подписи RSA — см. совместимость): чип TigerTag ничего не скрывает.
Представьте чип как долговременное холодное хранилище идентичности катушки: данные живут на самом чипе, офлайн, годами — ни сервер, ни аккаунт, ничто не нужно для поддержания их жизни. Онлайн-слой (справочная база данных, облачная синхронизация) только добавляет свежесть сверху.
Почему на каждой катушке ДВА чипа
Заголовок раздела «Почему на каждой катушке ДВА чипа»
Два чипа на противоположных сторонах катушки — это выглядит избыточно, но на деле это самая умная деталь формата:
- Принтеры делят считыватели. У машины обычно один RFID-считыватель на два слота катушек, установленный между ними — или сбоку от принтера, где он читает левую или правую грань в зависимости от того, в каком слоте ваша катушка. В Bambu Lab AMS 2 считывателя на 4 слота; в Snapmaker катушка стоит по ту или иную сторону принтера. Когда чип есть с каждой стороны, в каком бы слоте ни была катушка, один чип всегда обращён к считывателю — и вам никогда не нужно загружать катушку определённой стороной.
- Не нужно искать чип при ручном сканировании. На TigerPOD или с телефоном вам не нужно выяснять, какая грань несёт чип: как бы вы ни взяли катушку, один из них уже с нужной стороны для того, что вы делаете.
- Сканирование на месте. Катушку, установленную на AMS Lite, сбоку Elegoo Centauri Carbon или в FlashForge, можно отсканировать, не вынимая.
- Свобода интегратора. Производитель сушилки для филамента просто ставит считыватель там, где удобно — слева или справа для сушилки на одну катушку, между двумя катушками для двойной — и это всегда работает.
- Резервирование. Если один чип перестаёт отвечать, второй по-прежнему идентифицирует катушку, так что ничего не теряется, пока вы его заменяете (см. ниже).
- Двойной урожай. В конце жизни каждый килограмм напечатанного филамента оставляет вам два пригодных для повторного использования чипа NTAG для самоделок (ноль электронных отходов).
Несколько деталей реализации:
- Два чипа полностью независимы — у каждого свой UID; общей антенны нет. Они записываются вместе как пара (Twin Tag) и остаются идентичными всю жизнь катушки, вплоть до остатка в граммах — и всегда считаются одной катушкой.
- На заводских катушках чипы закреплены на носителе: полоске, два конца которой загибаются на картонную втулку (по чипу на конец) и держатся на промышленном скотче 3M (468MP / 200MP) — оператор отклеивает и наклеивает, больше на линии ничего не меняется. Конструкция носителя публична и может быть напечатана дома, а та же форма продаётся отдельно для рефилов, так что чип путешествует вместе с филаментом, а не с катушкой.
Носитель без чипов: две независимые антенны хорошо видны — по одной на каждом загнутом конце, у каждой свой UID.
Как связаны два чипа
Заголовок раздела «Как связаны два чипа»Ничто центральное не фиксирует пару. Она выводится из того, что несут два чипа, а поле, делающее это намеренным, а не случайным, — метка времени.
4 байта на странице 0x0C (смещение +32) выполняют двойную функцию: секунды
с 2000-01-01 GMT и Twin Tag ID. Два чипа, записанные в одном
сеансе, получают абсолютно одинаковое значение — эта общая секунда и есть ключ пары.
Разрешение — одна секунда, поэтому одной метки времени недостаточно: две катушки, размеченные в ту же секунду, тоже несли бы её. Пару подтверждает то, что описательная идентичность тоже совпадает — два чипа описывают одну катушку, поэтому каждое поле, описывающее эту катушку, должно быть одинаковым на обоих:
| Поле | Страница | Смещение |
|---|---|---|
| Twin Tag ID / метка времени | 0x0C |
+32 |
| ID Brand | 0x07 |
+14 |
| ID Material | 0x06 |
+8 |
| ID Aspect 1 · ID Aspect 2 | 0x06 |
+10 · +11 |
| Color 1 · Color 2 · Color 3 | 0x08 · 0x0D · 0x0E |
+16 · +36 · +40 |
| ID Product | 0x05 |
+4 |
Что именно различает, зависит от варианта:
- На TigerTag+
ID Product— настоящий идентификатор каталога. Той же метки времени и того же идентификатора продукта достаточно, чтобы назвать это парой с почти полной уверенностью. - На стандартном TigerTag
ID Product— константа0xFFFFFFFFна каждом существующем чипе, поэтому она вообще ничего не различает. Эту работу вместо неё делают бренд, материал, три цвета и оба аспекта — вместе с меткой времени.
Два следствия, которые стоит сформулировать прямо:
- Запись чипов за два отдельных прохода не создаёт пару. Они получают две разные метки времени, так что ничто их не связывает, и экосистема считает две катушки. Поэтому мобильное приложение записывает оба чипа в одном сеансе Dual NFC и поэтому в TigerPOD два считывателя, обращённых друг к другу.
- Подпись — единственное, что законно отличается. На TigerTag+
подписывается
SHA-256(uid ‖ id_tigertag ‖ id_product), а у каждого чипа свой UID — поэтому два чипа пары несут две разные подписи по построению. Одинаковые подписи означали бы копию, а не близнеца.
Смещения выше приведены из канонического TigerTag-RFID-Guide (§2.9), который остаётся спецификацией.
Носитель рефила на практике
Заголовок раздела «Носитель рефила на практике»Две детали, которые удивляют людей:
- Приклеивать его необязательно. Скотч 3M нужен, чтобы удерживать носитель, пока вы обращаетесь с рефилом и храните его. Когда рефил установлен на мастер-катушку, носитель зажат между мастер-катушкой и картонной втулкой и не может сдвинуться — клею делать больше нечего.
- Его можно извлечь и использовать снова. Когда рефил закончился, достаньте носитель с двумя чипами, сотрите их из Tiger NFC Connect или Tiger Studio и используйте снова — на другой катушке или для любого другого проекта NDEF. Филамент, проданный с TigerTag Refill, оставляет вам носитель, а не отходы (вторая жизнь).
Где его взять: см. покупка чипов.
Если чип вышел из строя или потерял данные
Заголовок раздела «Если чип вышел из строя или потерял данные»Уцелевший чип продолжает идентифицировать катушку. Что делать дальше, зависит от того, что случилось:
| Что случилось | Что делать | Подпись |
|---|---|---|
| Чип не работает или потерян | Найдите филамент в каталоге — в Tiger NFC Connect или Tiger Studio — и запишите его на два чипа за один сеанс: Dual NFC на телефоне или TigerPOD. Возьмите два новых чипа или сотрите уцелевший и используйте его как один из двух | теряется: чипы по-прежнему несут продукт из каталога, поэтому это TigerTag+ и они работают так же, но уже не TigerTag+ Certified |
| Чипы ещё отвечают, но их данные стёрты или повреждены | Восстановить TigerTag+ в панели инструментов катушки в Tiger Studio, с чипами на TigerPOD: каждый чип перезаписывается из своей резервной копии | сохраняется: чипы возвращаются в точности такими, какими вышли с завода |
| Чипа под рукой нет | Напечатать этикетку из катушки в Tiger Studio: QR-код, который открывает катушку | — |
Новый чип не может просто присоединиться к уцелевшему: пара создаётся в момент записи, поэтому два чипа всегда записываются вместе (когда два чипа читаются как две катушки).
На новых чипах подпись теряется, потому что она подписывает собственный UID каждого чипа и не может перейти на другой. Для Восстановить TigerTag+ нужна резервная копия: Tiger Studio сохраняет её при первом чтении TigerTag+.
Закодирован на заводе или чистый в вашей руке
Заголовок раздела «Закодирован на заводе или чистый в вашей руке»Один и тот же чип попадает к вам двумя путями, и разница важнее всего остального на этой странице:
| Откуда берётся | Что на нём | |
|---|---|---|
| Предварительно закодирован | встроен на производственной линии в филамент бренда-партнёра | полная идентичность катушки, готова к чтению |
| Чистый | куплен отдельно — фирменный TigerTag или любой чип NTAG откуда угодно | пока ничего; вы записываете его один раз, примерно за минуту |
Чипы, продаваемые отдельно, поставляются чистыми, с логотипом или без. Это не ограничение: незаписанный чип делает возможной вторую жизнь, и поэтому протокол никогда не зависит от покупки чего-либо.
Нагрузка
Заголовок раздела «Нагрузка»144-байтная нагрузка кодирует универсальную идентичность катушки — бренд, материал, аспект/цвет, тип, диаметр, параметры печати — в виде идентификаторов, разрешаемых по общей справочной базе данных.
Полезная нагрузка занимает страницы с 0x04 по 0x27, по 4 байта каждая;
все многобайтовые значения записаны в big-endian:
| Страницы | Байты | Содержимое |
|---|---|---|
0x04 |
4 | ID TigerTag, тип чипа: TigerTag, TigerTag+ или TigerTag Init |
0x05 |
4 | ID Product: продукт из каталога на TigerTag+, 0xFFFFFFFF на TigerTag |
0x06–0x07 |
8 | материал, два аспекта, тип, диаметр и бренд — в виде ID справочной базы |
0x08 |
4 | цвет 1, с альфа-каналом |
0x09 |
4 | количество при производстве и его единица |
0x0A–0x0B |
8 | диапазоны температуры сопла и стола, температура и время сушки |
0x0C |
4 | метка времени, которая также служит Twin Tag ID |
0x0D–0x0E |
8 | цвета 2 и 3, индекс и число тегов, один зарезервированный байт |
0x0F |
4 | TD для HueForge, два зарезервированных байта |
0x10–0x16 |
28 | произвольное сообщение, UTF-8 |
0x17 |
4 | остаток, обновляемый Tiger Scale, один зарезервированный байт |
0x18–0x27 |
64 | подпись (R и S) на TigerTag+ Certified; иначе свободны |
Это карта, а не спецификация. Нормативной является таблица полей в TigerTag-RFID-Guide: в ней указано точное смещение каждого поля и ссылки на все таблицы ID. Парсер следует этой таблице.
Чтобы увидеть эту карту заполненной, playground собирает чип из продукта каталога или из выбранных вами полей либо декодирует hex считанного чипа и показывает каждое поле с его байтами. Всё работает в браузере.
Чтение и запись
Заголовок раздела «Чтение и запись»| Инструмент | Чтение | Запись |
|---|---|---|
| Tiger NFC Connect (мобильный NFC) | коснитесь чипа — катушка откроется на телефоне | нажмите Make и коснитесь снова для записи; Dual NFC записывает два чипа катушки за один сеанс |
| Tiger Studio + ACR122U/TigerPOD | автоматически открывает катушку при сканировании | управляемая запись с проверкой UID |
SDK для JS (tigertag в npm) |
декодирует 144-байтную нагрузку | кодирует новую нагрузку |
| SDK для Python | декодирует нагрузку; tigertag[verify] также проверяет подпись |
кодирует новую нагрузку |
Два приложения общаются со считывателем; SDK — нет. SDK декодирует и кодирует нагрузку — оборудование NFC вы приносите своё.
Версионирование
Заголовок раздела «Версионирование»Нагрузка несёт версию формата (справочная таблица id_version), чтобы считыватели
могли оставаться совместимыми со старыми чипами.
См. также: TigerTag, SDK, Совместимость