У меня иногда возникает необходимость подключать экран/клавиатуру к простым девайсам (роутер/одноплатник/сервер на тв приставке) для ввода простых команд/вывода какой-нибудь мелочи. HDMI монитор так себе вариант из-за габаритов/цены, или невозможен из-за отсутствия видеовыхода.
Поэтому для ввода+вывода обходился методом "arduino + экран c кнопками", и этого хватает, когда информации немного. Работает так: arduino общается с девайсом по USB (UART), получает текст и позицию для отрисовки/отправляет нажатые клавиши (такой способ описан в статье про wifi радио на Asus WL500W). По бюджету получалось ~200-250р за arduino и ~150-350р за экран с кнопками.
Для варианта только ввод обходился методом "USB цифровая мини-клавиатура + triggerhappy для отслеживания клавиш" (такой способ описан в статье про wifi радио в туалете). Бонусом также можно давать обратную связь через numlock.
Для варианта только вывод обычно использовал usb динамик (что неудобно).
Предлагаю в этой статье восполнить пробел в последнем пункте, и добавить кринжа во второй😄.

Устройства вывода

Недавно я гуляя на авито, я нашел кассовые экраны.

На фото видим экраны АТОЛ моделей PD2300, PD2600, и PD2800. Они одинаковы, разве что разница в интерфейсе подключения + небольшая разница в диагонали:
-PD2300 - COM и внешний БП (есть модель PD2300U с USB);
-PD2600 - COM или USB + внешний БП;
-PD2800 - USB + питание от USB.
Экраны имеют 2 строки по 20 символов и монохромный вакуумно-люминесцентный дисплей (но пластик перед ним дает какой-либо цвет). Управляются по UART. Документация в сети есть, успешный опыт в статьях других фриков тоже, а значит надо брать.
Купил PD2800 - понравилось отсутствие БП + USB интерфейс (ненужен переходник с COM), так что говорить буду про него, но инфа ниже актуальна для всех PD2x00. Купил за 600р, и не думаю что есть смысл брать дороже. По ценам видел рандом - выставляют и за 100р, и за 3000р.
Осмотрим прибывший девайс.

Внешка
Штырьки настройки
Зад
Маркировки

Ножку можно снять. Но самое интересное - группа переключателей, которая задает скорость uart и режим работы дисплея. Между 9600 и 19200 разницы по скорости вывода не заметил, так что не буду менять. А вот режим нужен Epson (уже стоит) - он один из самых навороченных, да и самый популярный стандарт.
Теперь про аппаратные возможности экрана
-11 кодировок (включая русскую);
-возможность задания позиции вывода текста (курсор скрыт);
-возможность задания режима прокрутки большого текста (перерисовывать имеющийся текст/прокрутка в пределах строки/прокрутка в пределах всего экрана);
-очистка экрана;
-для точки и запятой возможность не использовать отдельное знакоместо;
-4 режима яркости;
-мигающий текст (с настраиваемой частотой);
-аппаратные часы.

При включении дисплея отобразится версия прошивки, режим работы, и экран станет пустым. Потребление от USB с пустым и с полностью заполненным экраном одинаково, и составляет 0.65 А при 5 В, что многовато (но терпимо).
Дисплей в ОС виден как serial, и для PD2800 имена будут вида /dev/ttyACMx. Для других моделей могут быть и вида /dev/ttyUSBx. Текст дисплей ждет в CP866, но не кириллицу схавает и без конверта в CP866. Сделаем ручной тест:

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

Получилась довольно занимательная штука. Добавлю еще пару примеров:

1
2
3
4

По итогу: своих денег стоит, и как "простой экран для роутера за 5 минут" - более чем.

Устройства ввода

Теперь переходим ко второй части статьи.
В очередной раз гуляя на авито я увидел ручной сканер - VMC BurstScanX Vb.

Я бы прошел мимо, так как запуск скриптов сканированием штрихкодов (с упаковки чипсов) довольно скучно. Но этот сканер за свой прайс помимо 1d штрихкодов умеет и 2d штрихкоды, а также проверять подлинность купюр + делать OCR паспортов/финансовых документов/рандомных строк текста. За 500 рублей однозначно стоит поиграться 😄.
Осмотрим девайс:

Внешний вид
Верхняя кнопка
Марнировка
Матрица

Видим курок для сканирования, программируемую кнопку сверху (по умолчанию включает режим детекта купюр), и 3 метровый кабель с USB (+DC 5.5х2.5 разъем питания, если используется для проверки купюр без компа).
Подключается сканер по USB, информацию может отдавать по UART (что правильно), или по HID как клавиатура (что костыль, но спасает если нужен ввод в тупую программу/при работе с Android девайсами). Идем на страничку модели, и качаем мануалы с утилитами (вот еще мое зеркало на всякий случай).
Моя модель без bluetooth, но не очень то и хотелось.

Также в мануале видим список возможностей:
-1d+2d: UPC/EAN, Interleaved 2 of 5, Codabar, Code 39, Code 93, Code 128, GS1 DataBar, Pharmacode, PDF417, Aztec Code, Data Matrix, QR Code;
-купюры: выявление фальшивок через ИК диапазон, определения образца года выпуска, OCR для чтения серийного номера;
-OCR чтение данных с: дорожных документов ICAO, паспорта гражданина РФ (чтение машиночитаемой записи, чтение страницы с фотографией, чтение серии и номера отдельно), реквизитов финансовых документов (после слов БИК, ИНН, и пр.), алкогольных акцизных марок, артикульных номеров IKEA (нафиг тут это нужно), ограниченной пробелами строки;
-режимы работы: USB HID (эмуляция клавиатуры), USB CDC (виртуальный COM-порт), USB POS HID (эмуляция клавиатуры, пакетная передача данных);
-режим детекции: по курку, по движению, по команде, постоянная детекция;
-прочее: возможность отключения сканирования с монитора (работает кривовато), возможность игнорирования кодов по краям, разрешение до 5 mil, антибликовая подсветка, запись фото или видео с ИК камер (два CMOS-сенсора по 1 мегапикселю - 1280х800 точек).

По ссылкам выше вендор не забыл похвастаться российским происхождением сканера, но забыл сделать утилиты под что-либо кроме винды (несмотря на обещание софта под линукс в комментах ютуба 6 лет назад). Это плохая новость. Но хорошая новость в том, что при работе эти утилиты не потребуются: мелкий скрипт + чтение с UART все решит. Тем не менее, после покупки все-таки придется загрузить винду на виртуалке для обновления прошивки сканера - в ней поправили баги и добавили OCR. Также для удобства в винде можно произвести первую настройку.

Но необязательно настраивать сканер из винды - вендор дает PDFку с кодами настройки, и сканируя эти коды можно настроить сканер хоть с помощью распечатанной стопки бумаг. Зайдя в настройки я включил распознавание всех типов кодов, купюр, и OCR. Не делайте так (ибо будет тупить), но для теста сойдет. Также выставил скорость serial в 115200, чтоб быстрее прилетали большие коды.
Также глянем целесообразность остальных утилит: программа регистратор банкнот, утилита запись фото/видео, утилита с тестовыми кодами, утилита чтения ОМС полюсов.

ПО "Регистратор банкнот"
Надыбал наличку в кошельке
Съемка с матрицы камеры
Генератор штрихкодов

Целесообразности мало, ибо:
-купюры - подлинность сканер проверяет автономно, и в случае успешной проверки: мигает зеленым, пищит, кидает в serial порт номинал с серийным номером типа 500RUB_2010_F_S,9927159; кстати сканить банктоны можно хоть от блока питания или повербанка (если не нужно логировать время/номинал/серийный номер купюр);
-запись фото и видео - я без понятия кому может потребоваться записывать сканером черно-белое фото/видео на 1 МП ИК камеру, на мониторе выглядит ужасно и много мыла;
-тестовые коды - вендор и так дает pdfку с тестовыми кодами, их хватит для проверки.

А теперь время тестов.
В системе в режиме UART сканер виден как устройство вида /dev/ttyACMx. При сканировании чего-либо сканер отдает по uart: префикс, содержимое отсканированного, и постфикс. Префикс/постфикс обычно обозначают тип кода, но никто не мешает их поменять или отключить в настройках (что я и сделал). Тестируем:
1d и 2d коды: мелкие сканирует отлично, большие тоже; очень мелкие и очень большие сканирует так себе или не сканирует (это нормально, для них мануал требует HD версию сканера, гляньте pdfку с тестовыми кодами если интересны ограничения);
купюры: на момент теста налички было мало, ибо не пользуюсь (видите её на фото выше), и из этой кучи сканер распознал только 500 рублей, так как 5 и 10 рублей в базу вносить не было смысла, а новую сотню внести забыли; зато с остальными купюрами все ок (включая 200 и 2000), и распознает довольно быстро (распознавание только по лицевой стороне купюры, так как только там ИК элементы);
OCR паспорт: машиночитаемую надпись распознал нормально, отдельно серию и номер тоже, а вот первую страницу целиком нормально распознавать отказался;
OCR финансовые документы: хорошо распознает цифры после финансовых слов типа БИК, ИНН, и прочее; разве что изредка рубит конец строки.

По итогу:
Для применения по назначению виндовых утилит не требуется, достаточно пары самописных программок на питоне, и будет вам и "регистратор банкнот с логами", "сканер товаров", и что угодно еще хоть под linux, хоть под bolgenos.
Ну а для наших целей - штука сомнительной полезности, но интересная: можно вводить пароль от luks или root с помощью определенной 100 рублевой купюры, можно запускать секретный скрипт по удалению файлов через сканирование честного знака с колы из шкафа/с акцизы от чекушки из холодильника, а можно завести блокнотик с qr кодами на все случаи жизни типа "страница 1 - qr код для ребута, страница 2 - qr код для рестарта nginx, ...".
Да, клава практичнее, но если вы фриковатый шизойд и параноик, то для антуража (и для капельки секурности) около девайса у вас будет лежать сканер, а не мини-клава😄.
Ну и конечно же ссылка на мой мини-скрипт, который позволит заносить/удалять отсканированное в файл, задавать комманды на отсканированное, и висеть демоном для запуска команд при сканировании (cкрипт слушает сканер по UART, но вам никто не мешает перевести сканер в HID и вместо моего/своего скрипта юзать triggerhappу).
Вот видосик с демо скрипта:

Правда снят на ПК, но никто не мешает запускать такое и на headless. Тут я:
-сканю код с книги который уже забит в базу (и его команда - вывод текста на кассовый экран);
-добавляю в базу купюру 500р + вешаю на нее открытие сайта;
-сканю купюру чтобы открылся сайт.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

CAPTCHA ImageChange Image