Ребятушки всем Привет. Эта статья о китайском термопринтере, плохой службе поддержки, граблях с Arduino и Raspberry Pi 3 и конечно кривых руках. «Ибо мануалов мы не читаем» © — Кто-то из великих.

Пролог

Термопринтер – это небольшое настольное устройство, главной особенностью которого является печать символов или изображений на термобумаге. Способ печати заключается в использовании специальной накалённой головки, которая буквально выжигает текст на бумаге. Температура головки доходит до 200 градусов Цельсия. В местах воздействия бумага темнеет и получается необходимый текст. Сфера применения этого устройства довольно велика – это изготовление этикеток, различных билетов и непосредственно создание штрих-кодов.

Обычный обыватель, сталкивается с термопринтерами на каждом шагу. Кассовые аппараты, банкоматы, инфокиоски. Это список можно продолжать бесконечно.

Те кто хоть немного увлекается электроникой и знаком с Arduino и Raspberry Pi, волей не волей сталкивались с проектами связанными  с термопринтерами. Наверное самым известным источником таких проектов выступают два ресурса Adafruit и Hackster.io Они даже выпускаю термопринтеры под своим брендом. И понятное дело за бренд берут нехилую накрутку.

Поиск аналогов привел меня на Aliexpress в магазин GOOJPRT Xiamen JP Printer Store. Собственно там я нашел точь в точь такой же принтер как и у Adafruit. Единственным отличием был тип штекера подключения. Выбрал термопринтер черного цвета с интерфейсом TTL. Я списался с продавцом, уточнил все интересующие нюансы. Продавец уверил, что именно Adafruit закупает у них термопринтеры для своих проектов. Единственным отличием, являлся штекер питания и подключения.

Первое включение

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

Тестовая страница распечатана, скорость подключения Baudrate 19200 (кстати по дефолту из коробки она составляет 9600) Все теперь можно начинать взаимодействие с термопринтером.

Для начала подключимся к термопринтеру через USB-TTL адаптер. Кстати подойдет любой. Можно на FT232, CH340 или на худой конец CP2102.

С помощью этой утилиты мы можем поменять скорость подключения, кодовую таблицу (чтобы принтер печатал на русском в нативном режиме), максимальную длину страницы, длину прокрутки и еще много чего.

Скину вам по секрету утилиту для настройки термопринтера. ThermalPrinterTools

Arduino. Первые грабли.

Схема подключения очень простая. RX TX GND и конечно питание +5V. Подключаем библиотеку от Adafruit Thermal Printer  И выводим первое тестовое сообщение. Конечно же это будет Hello World.

С Arduino особых проблем не было. Хотя на фото видно, что первая буква печатается некорректно. И еще один момент. При печати семпла от Adafruit. Не все строки печатались корректно. Большой шрифт рвало или вообще не печатало. Оговорюсь сразу. Питание термопринтера я подавал от Arduino, а Arduino в свою очередь питалось от компьютера. И это самая большая ошибка, которая преследовала меня на протяжении всего проекта.

Расписывать как использовать термопринтер совместно с Arduino, не вижу смысла ибо мануалов на эту тему предостаточно. Еще одной особенностью Arduino, является малый объем памяти и не возможность оперативно выводить динамически меняющуюся информацию. Да и сама Arduino без подключения к сети не так интересна.

Raspberry Pi 3 и целый ворох граблей.

Схема подключения ничем не отличается от Arduino. RX TX GND и конечно питание +5V. Отличие Raspberry PI от Arduino это способ вывода.

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

Какой из способов использовать, зависит от поставленных целей и задач.

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

  • Термопринтер никак не хотел печатать, ни в первом, ни во втором режиме. Как оказалось решение лежит на поверхности. Товарищи из Raspberry совместили UART порт и Bluetooth в одном чипе. И отдали приоритет последнему. Соответственно все мои попытки вывести текст в порт ничем не заканчивались. Решение было найдено, но пожалуй эта тема для отдельного поста.
  • Теперь текст печатался, а изображения выводились. Но не с первого раза и не все целиком. Помните я говорил о питании. Так вот. Термопринтеру необходимо питание +5V 2A минимум. Это точно. Меньше приводит к багам и ошибкам в выводе информации.
  • Еще одна проблема при работе с термопринтера и Raspberry Pi 3, это разные уровни UART. В термопринтере уровень TTL равен 5V, а в  Raspberry Pi 3v. Отсюда и ошибки в выводе длинных сообщений и изображений.

Что в итоге сделал я. Устранил все баги. И по глупости подключил термопринтер к блоку питания 5v, но не проверил выдаваемое напряжение. В итоге принтер перестал реагировать на команды. Прокрутка бумаги не работает, тестовая страница не печатается. Проверил напряжение питания, оно было 12v. Обратился в службу поддержки производителя термопринтера. Меня там «кормили завтраками», просили прислать видео, описать проблему. В итоге просто перестали отвечать на сообщения. После того как я начал гуглить по данной проблеме, понял что, все термопринтеры схожи по конструкции, немного отличаются печатные платы. Печатающие термоголовки 100% у всех одинаковые. Вообщем внимательно осмотрев плату, понял что питание на мотор прокрутки бумаги идет в обход цепей стабилизации напряжения, соответственно он и сгорел. Управляющая плата исправна. Считывает и записывает информацию при помощи ThermalPrinterTools

Итоги

Внимательно читаем мануал. Делаем все по инструкции. Тщательно все перепроверяем. И все будет работать. Добавлю. Я не сдаюсь. Товарищи из поднебесной конкурирующей фирмы по производству термопринтеров уже вышли на меня и предложили семпловый принтер за бесплатно для тестов. Так что тема про термопринтеры остается открытой.

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

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.