Разработка мобильного термопринтера на базе модуля ESP32: опыт студента

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

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

 

Ссылка на репозиторий GitHub.

Список необходимых компонентов:

-     2 аккумулятора 18650;

-     BMS контроллер;

-     OLED экран 128х64;

-     плата зарядки;

-     USB-TTL конвертер CH340;

-     зуммер;

-     конвертер уровней;

-     модуль термопринтера qr204;

-     энкодер;

-     понижающие dc-dc стабилизаторы напряжения;

-     кнопки и резисторы.

Сборка

Для начала я изготовил печатную плату.

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

Далее я припаял все элементы на свои места. Палата после пайки представлена на рисунке ниже.

Корпус я распечатал на 3D принтере, а модель спроектировал в программе Fusion 360. Fusion 360 – это облачная платформа САПР, которая является доступной, высокоэффективной альтернативой другим аналогичным программным продуктам. Он прост в использовании и обладает всеми функциями, которые содержат популярные пакеты САПР. Готовое устройство после сборки можно увидеть на рисунке ниже.

Программирование

Следующим шагом было написание программы. На этом этапе были некоторые трудности с передачей данных по Bluetooth и отправкой команд на модуль термопринтера.

Сначала необходимо разобраться с отправкой команд.

В интернет-ресурсах можно было найти список ESC/POS команд. Однако не все они работали, поэтому мне пришлось скачать программу Print_Assistant. Данная программа хорошо работала с моим модулем. Особенностью данной программы было то, что в специальном окне можно было видеть какие именно команды она отправляла на принтер в формате HEX. Таким образом я отправлял нужные мне команды через эту программу и переписывал HEX команду в свою программу.

После того, как переписал все нужные мне команды, я начал писать алгоритм для передачи данных по Bluetooth, и с этим тоже возникли сложности.

Дело в том, что при одной отправке можно было отправить лишь 250 символов, поэтому я сделал разбивку пакета данных. В мобильном приложении программа отправляла пакеты данных по 100 символов до тех пор, пока передача не завершится. Этот процесс занимает немного времени, но таким способом все данные передавались корректно и без потерь.

Как же программа понимает, что именно ему печатать? Здесь все довольно просто: первый пакет данных – это всегда команды. Этот пакет содержит в себе переменные, разделенные символом «@». Первый элемент обозначает, что именно печатать: текст, QR-код, штрих-код или чек. Остальные элементы обозначают настройки, которые необходимо установить перед печатью. После этого программа принимает оставшиеся пакеты данных, содержащие информацию, которую нужно распечатать. Вся программа представлена в репозитории GitHub. Также там можно скачать само приложение.

Приложение

Приложение я разработал в программе Kodular Creator. Это аналог популярной программы Mit App Inventor. Разница лишь в том, что Kodular Creator имеет хороший дизайн, благодаря чему можно создавать красивые приложения за короткое время.

Разберу интерфейс моего приложения. На рисунке ниже представлена первая вкладка.

В этой вкладке можно печатать любой текст, меняя его размер и форматирование.

Назначение кнопок:

«B» - полужирный шрифт;

«U» - подчеркивание

«Т» - ширина и высота символа;

«А» - инвертирование текста (черный текст на белом фоне или наоборот).

Третья кнопка сверху слева предназначена для установки выравнивания текста.

Левая кнопка на втором ряду – для очистки поля для ввода текста, а правая – для отправки на печать.

Во второй вкладке можно печатать штрих-коды и QR-коды. Она представлена на рисунке ниже.

С помощью ползунков можно регулировать размер печатаемого кода и уровень коррекции ошибок. В разделе печати штрих-кода можно выбрать тип кодировки. В поле «информация» нужно вводить кодируемую информацию. В поле «Текст» можно ввести дополнительную информацию, которую необходимо распечатать. В поле «Количество» нужно ввести число копий для печати. Кнопка «Сохранить» сохраняет установленные настройки для следующей печати. Кнопка «Печать» отправляет информацию на принтер для печати.

Следующая вкладка – печать чеков (на рисунке ниже).

В данной вкладке необходимо указать ФИО кассира и номер смены. После этого можно добавлять товары, указав наименование, НДС, стоимость и количество. Далее программа предложит выбрать способ оплаты, после чего можно распечатать чек.

В последней вкладке находится кнопка для подключения принтера и информация об организации, которая необходима для печати чеков.

Данную информацию необходимо заполнить заранее, прежде чем печатать чеки. Вся эта информация будет храниться в памяти принтера, ее также можно посмотреть в самом принтере в разделе «Информация об организации».


Статью подготовил И. Гараев, студент 4 курса специальности «Компьютерные системы и комплексы» ГАПОУ «МЦК-КТИТС».

Источник: https://habr.com/ru/companies/digital_tatarstan/articles/746232/


Интересные статьи

Интересные статьи

В нашем новости дайджеста анонсы с Google I/O 2022 и выселение Carthage из git, загадочный WorkManager и замена натива веб-приложением, регрессионное тестирование, вопросы с собеседования, миллиарды у...
Привет, Хаброжители! Современные программисты должны не только эффективно программировать, но и знать надлежащие инженерные практики, позволяющие сделать кодовую базу стабильной и качественной. В ...
Как и CSS Grid, Flex Box довольно сложен, потому что состоит из двух составляющих: контейнера и элементов внутри него.Когда я начал изучать Flex, я хотел увидеть все, на ...
Или можно? Конечно, миграция SAP-систем — это сложный и кропотливый процесс, для успеха которого важна слаженная работа всех участников. А если миграция проводится в сжатые сроки ...
Доброго времени прочтения, уважаемые читатели Хабра. Увы, мы все смертны, даже программисты. Когда ставят диагноз — не знаешь куда бежать. Попробую описать свой опыт… Мне поставили страшненьки...