Сканер штрих коду

Мене завжди цікавило, як сканери розпізнають штрих-код - адже він довгий, і просто фото-приймачем не обійтися, доведеться використовувати або камеру з оптикою, і складний софт для розпізнавання, або проводити тонкої щілиною з підсвічуванням по штрих-коду, причому доведеться городити і синхронізацію, як в ручних сканерах (коліщатко або дуже рівномірно вести).
Як виявилося, проблема не вартий і виїденого яйця - треба рухатися не сканер, і не штрих-код. Треба рухати підсвічування!

Намагаємося отримати фотографію променя:

Сфокусований промінь лазерного діода, відбиваючись від дзеркала (смислового навантаження воно не несе, просто конструктивно зручніше розташувати лазер поруч з іншими елементами конструкції. Можливо, в інших моделях по іншому) потрапляє на отклоняющую систему, що складається їх електромагніту, і рухомого дзеркало, з маленьким постійним магнітом. При харчуванні електромагніту прямокутними імпульсами (ну, по суті, можна живити хоч синусоїдою) змінюється і полярність магнітного поля, синхронно з ним рухається і рухливе дзеркало. Відповідно, змінюється кут відображення, промінь рухається туди-сюди.
Сенс ви зрозуміли? Складно, але тим не менш, неймовірно просто. Промінь лазера, який рухає мікроконтролер, проходить по черзі світлі і темні ділянки штрих-коду. Відома швидкість променя, відомий час початку руху. А простий фотоприймач (з червоним фільтром), опитується тим же контролером на предмет яскравості плями. У той момент, коли промінь проходить світла ділянка, яскравість максимальна - весь світ відбивається в фотоприймач. Коли ж світло потрапляє на темну ділянку (смужку) штрих-коду, яскравість мінімальна, велика частина випромінювання поглинається чорною фарбою.

Тепер контролер знає довжину світлих і темних ділянок. Після нормалізації (в цьому йому допомагає знання про швидкість променя, і контрольні ділянки на початку, середині і наприкінці штрих-коду), він за алгоритмом (він трохи різний для різних типів кодів) вирахують буквено-цифрову рядок, відповідну зображенні, і передає її на комп'ютер, не забувши моргнути лампочкою і пискнути буззером.

Ага, попався. Третього променя не видно, тому що з точки зору фотоапарата, та й очі, це не промінь, а сектор кола, відповідно, яскравість набагато знижена.

Зеленим пунктиром позначені можливі положення дзеркала, синіми стрілками - коливання дзеркала і променя на виході, червоною лінією і пунктиром - шлях проходження променя.
Плата, ще плата:


У полусборе виглядає так:

Як роз'єму використовується 10P10C:

Модель і зовнішній вигляд:


Підключається він за стандартним разьему PS / 2, емулює клавіатуру, після штрих-коду видає ентер. Це дозволяє записувати коди хоч в блокнот.

ну, як стало зрозуміло - можна обійтися і фотоприймачем, зчитуючи яскравість променя в певні проміжки часу. принцип розпізнавання - це вже математика, а мені була цікава сама ідея.
розбирав я настільний. те ж саме, тільки лазерів більше, призма крутиться, на кожну смугу - свій датчик. ну і складна система синхронізації всього цього добра
В тому то і справа що не зрозуміло. Ви лише виклали суть позиціонування лазера. Про «можна обійтися і фотоприймачем, зчитуючи яскравість» слова не було. А з фрази «треба рухатися не сканер, і не штрих-код. Треба рухати підсвічування! »Зовсім не робиться висновок що« можна обійтися і фотоприймачем, зчитуючи яскравість ».
Я лише викладаю свою критику. Знаючі люди проковтнуть цю статтю додумався відсутню самі, або проковтнуть не помітивши.
Початківцям або не знати цю тему буде складно зрозуміти.
так краще? дійсно, щось я про принцип і не написав. посипаю голову попелом.
Як роз'єму вирішили не морочитися, і використовували RG45 там 10 контактів.
Підключається він за стандартним разьему PS / 2
а так само по RS232 і USB (HID або RS232 емуляція)
після штрих-коду видає ентер а може і до. і не тільки Ентер. Що жати на початку (до 3-х символів для Voyager, що у вас) і в кінці налаштовують за допомогою настроювальних шк
там 10 контактів. поправив.
а так само по RS232 і USB (HID або RS232 емуляція) так usb там немає взагалі?
а може і до. і не тільки Ентер. Що жати на початку (до 3-х символів для Voyager, що у вас) і в кінці налаштовують за допомогою настроювальних шк о. спасибі, цікаво.
USB як інтерфейс там є. Просто такий сканер в системі розпізнається або як клавіатурний (частіше), або як USB-> RS232
А ще цікавіше варіант коли сканер розпізнається як HID, але по спец комбінації на початку посилки драйвер розпізнає це як посилку зі сканера і емулює RS232.
ну в цьому конкретному ж ні? на платі не знайшов нічого схожого.
EasyEDA: безкоштовний Хмарний CAD
