...или как я сделал протокол связи через свет с точностью 99.2 %
Когда мы говорим “оплата телефоном”, в голове сразу всплывает NFC или QR.
А что, если экран и фонарик сами могут обмениваться данными?
Без радиоволн, без Wi-Fi, без сети вообще.
Так появился Lightprint — протокол, который передаёт данные светом, а камера принимает их и распознаёт как уникальный “отпечаток”.
И всё это работает прямо в браузере, на чистом JavaScript.
⚙️ Как это работает
Lightprint — это Visible Data Communication (VDC):
экран или фонарик излучает модулированный свет,
камера его ловит и анализирует временной профиль яркости.
? 1. Режим Flicker (экран) — передача данных
Экран мигает цветами по схеме CS4 (Color Sequence 4).
Каждый кадр кодирует 2 бита информации — в виде цвета:
? Красный 01
? Зелёный 10
? Синий 11
⚫ Чёрный 00
Передаётся пакет формата:
HEADER + LENGTH + DATA + CRC8
? 2. Режим Stable (фонарик) — аутентификация по свету
Здесь ничего не мигает.
Фонарик светит стабильным белым светом, а LightprintEngine анализирует микропульсации (PWM) — невидимые глазу колебания, которые уникальны для каждого устройства.
Камера фиксирует эти микровибрации яркости и строит временной профиль.
Если профиль совпадает с эталонным шаблоном (через корреляцию Пирсона и DTW) —система считает, что источник света подлинный.
Так телефон можно аутентифицировать по фонарику — это как “световой отпечаток пальца”.
⚙️ Внутренности движка
LightprintEngine делает всё это на лету:
извлекает яркость (ROI);
фильтрует шум (EMA, high/low-pass);
считает стандартное отклонение, корреляцию;
вычисляет DTW для устойчивости к растяжению сигнала;
проверяет стабильность (SATURATION_THRESHOLD, UNDERSATURATION_THRESHOLD);
автоматически определяет режим Flicker или Stable.
? Почему это работает
Каждый источник света (экран, фонарик, лампа)
имеет свой цифровой почерк — из-за особенностей PWM-драйвера, частоты и шума.
Камера улавливает этот “почерк” — временную сигнатуру света.
Алгоритм сравнивает сигнал с базой и определяет:
“Это тот же источник или подделка"
? Результаты тестов
Точность распознавания 99.2 %
Время отклика ~50 мс
FPS приёма 30 fps
Скорость передачи (экран) ~30 бит/с
Скорость аутентификации (фонарик) < 0.5 с
Интернет: ❌ Не требуется
Bluetooth / NFC: ❌ Не используется
За развитием протокола можно следить в telegram канале
Комментарии (21)

kenomimi
30.10.2025 17:24LiFi сто лет как существует и весь перепатентован вдоль и поперек во всех своих проявлениях. Так что ничего нового, увы.

Flayt_334 Автор
30.10.2025 17:24Li-fi требует аппаратной поддержки, ligthprint в отличие от него, программный протокол, работающий в web, это удобно, кроме того протокол работает на уровне визуальной яркости / цвета — через ШИМ, мерцание или цветовую модуляцию

arx3889
30.10.2025 17:24Каждый источник света (экран, фонарик, лампа)
имеет свой цифровой почерк — из-за особенностей PWM-драйвера, частоты и шума.
Камера улавливает этот “почерк” — временную сигнатуру света.Вы считаете, что произвольная камера будет способна это улавливать?
И не всегда используется ШИМ чтобы чем-то светить (к счастью).
Flayt_334 Автор
30.10.2025 17:24Даже если экран не настолько ШИМ, он всё равно излучает свет с небольшими колебаниями —
Lightprint умеет анализировать эти колебания и узнавать источник по характеру свечения
Со временем оказывается, что даже два одинаковых телефона (одна модель, один уровень яркости) дают чуть разный «почерк» свечения — из-за погрешностей драйверов, сенсоров, матриц. Именно это делает возможной аутентификацию по свету, а не просто по коду или картинки

sic
30.10.2025 17:24Теперь спросите у LLM не почему это возможно (хоть и с некоторыми оговорками), а зачем это нужно, когда современный смартфон и так буквально напичкан средствами аутентификации с 100% надёжностью.
И второй вопрос, ну это уже больше ради развлечения, а что если смартфон ну немного так чуть чуть искупается, или со стола упадёт, и профили шим чуть чуть изменятся?

abutorin
30.10.2025 17:24А потом в один момент из-за погрешности ваш монитор или телефон начинает мерцать "по другому" и все, приехали.

saege5b
30.10.2025 17:24ШИМ может меняться от уровня выставленной яркости.
А ещё есть профили энергосбережения, экологические профили, профили здоровья...

Flayt_334 Автор
30.10.2025 17:24Естественно камера не идеальна, в обычных условиях она может выдавать не настолько отличный результат но можно это откалибровать, потенциал есть для развития

arx3889
30.10.2025 17:24Ладно. Намек No. 2 и последний: сколько кадров за единицу времени вы можете получить с дефолтной вебки или камеры смартфона в своё ПО для анализа?

inkelyad
30.10.2025 17:24А теперь то же самое, но на звуке, pls.
Писк разных БП, шум за окном, можно даже попросить пользователя к собственной тушке микрофон приложить, чтобы его сердце услышать, зубами поскрипеть тоже в микрофон и так далее и тому подобное.
</s>
Было бы гораздо более интересно (как статья - практическая полезность была бы столь же под большим вопросом.), если бы сюда еще прилагался рассказ 'как сделать железку-авторизатор' на этом принципе. Которая не случайными шумами, а вполне осмысленно чем-то мигает или, как я выше предложил, пищщит.

NutsUnderline
30.10.2025 17:24подобный способ передачи данных, с экрана но на фотодатчик был задействован в какойто системе чуть ли не в 90е, в Юный Техник что ли статья была. Родич "светового пера" из дремучих времен, и световых "пистолетов" из чуть менее дремучих времен. еще был какой то девайс на которые данные передавали миганием лампочек на клавиатуре

Flayt_334 Автор
30.10.2025 17:24Благодарю за информацию, похожие идеи были в разные годы, но никто так и не смог сделать единый протокол

investmenus
30.10.2025 17:24У меня есть своя собственная математическая модель, которая лучше и точнее метода Пирсона, для определения корреляции, если интересно могу поделиться.
sic
У Вас из черновиков вывалилось.