Подключение термопринтера (Thermal Printer) к Arduino Uno


Наверняка многие из вас расплачивались где-нибудь картой или снимали с нее деньги в банкомате и после этого получали чек об произведенной операции. В большинстве случаев этот чек печатается с помощью термопринтера (Thermal Printer - термографический принтер, термопечатающее устройство (с матрицей, имеющей нагревательные элементы), устройство термопечати) или чекового принтера.

Внешний вид подключения термопринтера к Arduino Uno

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

В этой статье мы рассмотрим подключение термопринтера к плате Arduino Uno. Для запуска процесса печати будет использоваться тактильный переключатель (tactile switch), а встроенный в плату Arduino Uno светодиод будет информировать о статусе печати – он будет гореть во время печати.

Общие принципы работы термопринтера

В этом проекте мы будем использовать термопринтер CSN A1 Thermal Printer от компании Cashino, который отличается невысокой стоимостью и его достаточно просто купить.

Внешний вид термопринтера CSN A1 Thermal Printer

Технические характеристики данного принтера приведены на следующем рисунке.

Технические характеристики термопринтера CSN A1 Thermal Printer

На обратной стороне принтера мы можем увидеть следующие соединения.

Назначение контактов термопринтера CSN A1

TTL connector содержит контакты Rx и Tx для последовательной связи с микроконтроллером. Мы будем использовать протокол RS232 для связи с принтером. Power connector используется для подачи питания на принтер, а кнопка служит для самодиагностики принтера. Если на принтер подано питание и мы нажмем эту кнопку принтер напечатает следующий лист самодиагностики:

Лист самодиагностики термопринтера CSN A1

Как можно видеть из этого листа принтер использует скорость 9600 бод/с для связи с микроконтроллером. Принтер может печатать символы ASCII. Взаимодействие с принтером достаточно простое – для этого необходимо использовать последовательный порт связи (UART) и с его помощью передавать на принтер строки или символы.

Принтер работает от напряжения 5-9V, мы будем использовать источник питания 9V 2A, от которого можно запитать и принтер, и плату Arduino Uno. Принтер требует ток более 1.5A для того чтобы нагреть свою головку до нужной температуры. Большой потребляемый ток во время печати является недостатком термопринтеров.

Необходимые компоненты

  1. Плата Arduino Uno с USB кабелем (купить на AliExpress).
  2. Макетная плата.
  3. Соединительные провода.
  4. Компьютер с установленной Arduino IDE.
  5. Резистор 10 кОм (купить на AliExpress).
  6. Тактильный переключатель (tactile switch).
  7. Термопринтер Thermal Printer CSN A1 с рулоном бумаги (купить на AliExpress).
  8. Источник питания 9V 2A.

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

Работа схемы

Схема подключения термопринтера к плате Arduino Uno представлена на следующем рисунке.

Схема подключения термопринтера к плате Arduino UnoКак видите, схема достаточно проста. Мы используем резистор 10 кОм чтобы обеспечить требуемое состояние по умолчанию (при не нажатой кнопке) на контакте D2. При нажатии кнопки (тактильного переключателя) на D2 подается напряжение высокого уровня (HIGH) – это условие для того чтобы принтер начал печатать. Источник питания 9V 2A используется для питания термопринтера и платы Arduino. Внимательно проверьте полярность источника питания перед подключением его к плате Arduino. Плата Arduino имеет штекер разъема питания с положительным контактом в центре.

После сборки схемы на макетной плате у вас должна получиться примерно следующая конструкция.

Внешний вид подключения термопринтера к Arduino Uno

На следующем рисунке показан пример работы нашей программы по управлению термопринтером.

Тестирование работы проекта

Объяснение программы для Arduino

Полный код программы и видео с демонстрацией работы проекта приведены в конце статьи, здесь же мы рассмотрим его основные фрагменты.

Сначала мы инициализируем контакт для подключения кнопки (Pin 2) и контакт, к которому подключен встроенный светодиод (Pin13).

Также объявим переменную, в которой будет храниться задержка для устранения дребезга контактов, и переменную, в которой будет храниться статус (состояние) кнопки (нажата или отжата).

В функции setup мы зададим режим работы на вывод данных для контакта, к которому подключен светодиод, и режим работы на ввод данных для контакта, к которому подключена кнопки. Также установим скорость последовательного порта UART 9600 бод/с.

В основном цикле loop мы сначала будем проверять нажата ли кнопка или нет, затем ждем некоторое время и снова проверяем нажата ли кнопка или нет. Если и после задержки кнопка все еще остается нажатой мы начинаем печать на термопринтере.

При начале печати мы зажигаем светодиод, а после завершения печати мы его выключаем.

Исходный код программы (скетча)

Видео, демонстрирующее работу схемы

Источник статьи

(Проголосуй первым!)
Загрузка...
1 591 просмотров

Комментарии

Подключение термопринтера (Thermal Printer) к Arduino Uno — 2 комментария

  1. я не программист, но мне кажется, что после задержки нужно еще раз опросить состояние входа, иначе в переменной будет храниться первоначальное (до задержки) значение, я про этот код:
    is_switch_press = digitalRead(SW); // чтение состояния нажатия кнопки

    if (is_switch_press == HIGH)
    {
    delay(debounce_delay); // задержка устранения дребезга контактов при нажатии кнопки
    is_switch_press = digitalRead(SW); // повторное чтение
    if(is_switch_press == HIGH)

    • Да, скорее всего вы правы и подобную строчку целесообразно добавить в код скетча

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

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