Рубрики
Схемы на Arduino

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

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

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

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

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

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

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

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

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

Как можно видеть из этого листа принтер использует скорость 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.

Работа схемы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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