Акции
Блог
О 3DiY
  • О компании
  • Реквизиты
  • Партнеры
  • Клиенты
  • Вакансии
Оплата
Доставка
Гос. закупки
Товары под заказ
ВК Видео
Отзывы
Услуги
  • 3D печать
    • 3D печать пластиком FDM/FFF
    • 3D печать фотополимером
Контакты
  • Как до нас добраться
    8 (800) 500-45-93
    8 (800) 500-45-93отдел продаж Россия
    8 (495) 565-35-93отдел продаж Москва
    E-mail
    info@3d-diy.ru — отдел продаж

    print@3d-diy.ru — 3D печать на заказ

    support@3d-diy.ru — тех. поддержка

    buh@3d-diy.ru — Бухгалтерия
    Адрес
    Москва, Павелецкая набережная, 2с1
    Как до нас добраться, см. тут
    Режим работы
    пн - пт 09:00—18:00
    3DIY
    Войти
    0Сравнение
    0Избранное
    0Корзина
    3D принтеры3D сканерыПластик для 3D принтераФотополимерыКомплектующие 3DКомплектующие ЧПУЗапчасти 3D принтеров по брендам3D печать на заказ
    3DIY
    Войти
    0Сравнение
    0Избранное
    0Корзина
    3DIY
    Телефоны
    8 (800) 500-45-93отдел продаж Россия
    8 (495) 565-35-93отдел продаж Москва
    E-mail
    info@3d-diy.ru — отдел продаж

    print@3d-diy.ru — 3D печать на заказ

    support@3d-diy.ru — тех. поддержка

    buh@3d-diy.ru — Бухгалтерия
    Адрес
    Москва, Павелецкая набережная, 2с1
    Как до нас добраться, см. тут
    Режим работы
    пн - пт 09:00—18:00
    0
    0
    0
    • Кабинет
    • 0Сравнение
    • 0Избранное
    • 0Корзина
    • Бренды
    • Акции
    • Услуги
      • Услуги
      • 3D печать
        • 3D печать
        • 3D печать пластиком FDM/FFF
        • 3D печать фотополимером
    • Компания
      • Компания
      • О компании
      • Реквизиты
      • Партнеры
      • Клиенты
      • Вакансии
    • Блог
    • Информация
      • Информация
      • Гарантия на товар
      • Возврат товара
      • Положение о персональных данных
      • Политика конфиденциальности
      • Согласие на получение рекламы
      • Пользовательское соглашение
      • Согласие на обработку персональных данных
      • Использование cookie-файлов
      • Договор-оферта
    • Контакты
      • Контакты
      • Как до нас добраться
    8 (800) 500-45-93отдел продаж Россия
    • Телефоны
    • 8 (800) 500-45-93 отдел продаж Россия
    • 8 (495) 565-35-93 отдел продаж Москва
    • info@3d-diy.ru — отдел продаж

      print@3d-diy.ru — 3D печать на заказ

      support@3d-diy.ru — тех. поддержка

      buh@3d-diy.ru — Бухгалтерия
    • Москва, Павелецкая набережная, 2с1
      Как до нас добраться, см. тут
    • пн - пт 09:00—18:00
    Главная
    Блог
    Модули
    Термопринтер Adafruit

    Термопринтер Adafruit

    Термопринтер Adafruit
    Модули 1 января 2024

    Содержание

    • Обзор
    • Технические характеристики модуля
    • Подключение
    • Пример использования
    • Часто задаваемые вопросы FAQ

    Обзор термопринтера Adafruit

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

    thermal-arduino-printer-01.jpg

    Рисунок. 1

    Работает принтер от постоянного напряжения 5 – 9 В. Подключается принтер по протоколу UART.

     

    thermal-arduino-printer-02.jpg

    Рисунок. 2

    Для проверки принтера необходимо нажать кнопку тестирования, расположенную на нижней стороне принтера, на печать будут выведены его характеристики:

    thermal-arduino-printer-03.jpg

    Рисунок. 3

    Расположенный на верхней панели светодиод зеленого цвета показывает состояние принтера:
    • не горит – выключен;
    • мигает – включен;
    • горит – спящий режим.
    Нажатие на кнопку прокрутки служит для прокрутки кассовой ленты на 10 мм.


    Технические характеристики

    • Напряжение питания: 5-9 В;
    • Потребляемый ток: до 1,5 А (в режиме печати), до 10 мА (в режиме ожидания);
    • Интерфейс: TTL UART;
    • Метод печати: прямая термическая печать;
    • Режимы печати: печать текста, штрих-кодов, растровые изображения
    • Тип бумаги: термальная;
    • Ширина бумаги: 57 мм;
    • Диаметр рулона: 36 мм;
    • Скорость печати: до 80 мм/с;
    • Ширина печати: 48 мм;
    • Размер пикселя: 1/8 мм;
    • Разрешение печати: 203DPI (8 точек на мм = 384 точек на линию);
    • Таблицы символов: ASCII, набор GB2312-80;
    • Набор GB2312-80 включает следующие таблицы: CP437, KATAKANA, CP850, CP860, CP863, CP865, WCP1251, CP866, MIK, CP755, IRAN, CP862, WCP1252, WCP1253, CP852, CP858, IRAN2, LATVIAN, CP864, ISO_8859_1, CP737, WCP1257, THAI, CP720, CP855, CP857, WCP1250, CP775, WCP1254, WCP1255, WCP1256, WCP1258, ISO_8859-..., ISO_8859-5, THAI2, CP856, CP874;
    • Форматы штрих-кодов: UPC_A, UPC_E, EAN13, EAN8, CODE39, CODE93, ITF, CODABAR и CODE128;
    • Рабочая температура: +5...+45 °С;
    • Температура хранения: -20...+60 °С;
    • Габариты:111x65x59 мм.
    Нужны ардуино модули?Купить arduino модули можно в нашем магазине 3DIY


    Подключение к Arduino

    Подключение к плате Arduino по протоколу UART. При этом со стороны Arduino можно использовать как аппаратный (контакты 0 и 1), так и программный UART с использованием библиотеки SoftwareSerial. Схема подключения показана на рис. 4.

    thermal-arduino-printer-04.jpg

    Рисунок. 4

    Для программирования удобно использовать библиотеку Adafruit_Thermal.
    Загрузим на плату Arduino скетч из листинга 1 для вывода всех символов кодировки CP866 (поддержка кириллицы).

    Листинг 1.

    // подключение библиотек #include "Adafruit_Thermal.h" #include "SoftwareSerial.h" // создание экземпляров объектов SoftwareSerial thPrSerial(5, 6); Adafruit_Thermal thPr(&thPrSerial); void setup() { // запуск Software порта thPrSerial.begin(19200); // Initialize SoftwareSerial thPr.begin(); // установка таблицы кодировки thPr.setCodePage(CODEPAGE_CP866); // распечатка таблицы thPr.println(F(" 01234567 89ABCDEF")); for(int i=0; i<16; i++) { thPr.print(F(" ")); thPr.print(i, HEX); thPr.print(F("- ")); for(int j=0; j<16; j++) { int c = (i << 4) | j; if(c < 32) c = ' '; thPr.write(c); if(j == 7) thPr.print(F(" ")); } thPr.println(); } // Restore printer to defaults printer.setDefault(); } void loop() { } 
    И результат работы скрипта на рис. 5.

    thermal-arduino-printer-05.jpg

    Рисунок. 5


    Пример использования

    Создадим проект использования термопринтера с платой Arduino – распечатка случайной цитаты по нажатии кнопки. Будем использовать следующие комплектующие:

    • Плата Arduino – 1;
    • Плата прототипирования – 1;
    • Термопринтер – 1;
    • Блок питания 5В 2А – 1;
    • Кнопка – 1;
    • Резистор 10 кОм – 1;
    • Провода.

    Схема соединений нашего проекта показана на рис. 6.

    thermal-arduino-printer-06.jpg

    Рисунок. 6

    Для перевода русского текста из кодировки UTF-8 (список цитат в Arduino IDE) в кодировку CP866 () служит функция RUS():

    char* RUS(char* str){                                                                                                                      
        uint8_t i=0, j=0;                                                                                                                     
        while(str[i]){                                                                                                                        
            if(uint8_t(str[i]) == 0xD0 && uint8_t(str[i+1]) >= 0x90 &&
               uint8_t(str[i+1]) <= 0xBF ) {
               str[j] = (uint8_t) str[i+1]-0x10; i++;
            }
            // Символы А-Я а-п
            else  if (uint8_t(str[i]) == 0xD1 && uint8_t(str[i+1]) >= 0x80 &&
                uint8_t(str[i+1]) <= 0x8F ){
                 str[j] = (uint8_t) str[i+1]+0x60; i++;
            }
            // Символы р-я     (
            else if (uint8_t(str[i]) == 0xD0 && uint8_t(str[i+1]) == 0x81) {                    
                str[j] = 0xF0;i++;}
           // Символ Ё
           else if (uint8_t(str[i]) == 0xD1 && uint8_t(str[i+1]) == 0x91) {
               str[j] = 0xF1;i++;}
           // Символ ё       
           else {                                                                                                  
               str[j] = (uint8_t) str[i];
           } 
           j++; i++;     
          // Остальные символы оставляем как есть
        }   while(j<i){str[j]=0; j++;}
        return str;                                                                                            
    }
    И скетч печати цитаты, выбранной рандомно, показан в листинге 2.

    Листинг 2.

    // подключение библиотек #include "Adafruit_Thermal.h" #include "SoftwareSerial.h" // создание экземпляров объектов SoftwareSerial thPrSerial(5, 6); Adafruit_Thermal thPr(&thPrSerial); // кнопка печати #define PIN_BUTTON_PRINT 9 // для кнопки int lastButtons1=0; int currentButtons1=0; boolean onPrint=false; // идет печать // количество цитат для вывода #define COUNT_QUOTES 17 // строки для вывода char* str0=" Дорогою свободной иди, \r\n куда влечет тебя свободный ум. \r\n - Александр Пушкин \r\n \r\n \r\n "; char* str1=" Буря, кажется, успокоилась; \r\n осмеливаюсь выглянуть \r\n из моего гнезда. \r\n - Александр Пушкин \r\n \r\n \r\n "; char* str2=" В вопросе счастья я атеист; \r\n я не верю в него. \r\n – Александр Пушкин \r\n \r\n \r\n "; char* str3=" Вдохновение - это умение \r\n приводить себя \r\n в рабочее состояние. \r\n - Александр Пушкин \r\n \r\n \r\n "; char* str4=" Глаголом жги сердца людей. \r\n - Александр Пушкин \r\n \r\n \r\n "; char* str5=" Глупость человека оказывается \r\n или из его действий, \r\n или из его слов. \r\n - Александр Пушкин \r\n \r\n \r\n "; char* str6=" Действие человека мгновенно \r\n и одно; \r\n действие книги множественно \r\n и повсеместно. \r\n - Александр Пушкин \r\n \r\n \r\n "; char* str7=" Истинное воображение требует \r\n гениального знания. \r\n - Александр Пушкин \r\n \r\n \r\n "; char* str8=" Каждый человек любит, \r\n ненавидит, печалится, \r\n радуется, - но каждый на свой лад. \r\n - Александр Пушкин \r\n \r\n \r\n "; char* str9=" Когда на что решусь, \r\n уж я не отступаю. \r\n - Александр Пушкин \r\n \r\n \r\n "; char* str10=" Много у меня начато, \r\n ничего не кончено. \r\n Сижу у моря, \r\n жду перемены погоды. \r\n - Александр Пушкин \r\n \r\n \r\n "; char* str11=" Мысли могут быть \r\n разнообразны до бесконечности. \r\n - Александр Пушкин \r\n \r\n \r\n "; char* str12=" На этом свете все \r\n зависит от случая. \r\n - Александр Пушкин \r\n \r\n \r\n "; char* str13=" Стихов, ради Бога стихов! \r\n Душа просит. \r\n - Александр Пушкин \r\n \r\n \r\n "; char* str14=" Точность - вежливость поваров. \r\n - Александр Пушкин \r\n \r\n \r\n "; char* str15=" Чтение - вот лучшее учение! \r\n - Александр Пушкин \r\n \r\n \r\n "; char* str16=" Я не стану больше торопиться; \r\n пусть все идет своим чередом. \r\n - Александр Пушкин \r\n \r\n \r\n "; char* str17=" Жизнь мимолетна. \r\n И все уплывает вместе с временем. \r\n - Александр Пушкин \r\n \r\n \r\n "; char* strerror1=" ОШИБКА ВЫВОДА ЦИТАТЫ. \r\n \r\n \r\n "; void setup() { Serial.begin(9600); thPrSerial.begin(19200); // Initialize SoftwareSerial thPr.begin(); // Init printer (same regardless of serial type) thPr.setDefault(); // Restore printer to defaults thPr.println(" \r\n "); thPr.sleep(); // Tell printer to sleep delay(3000); // Sleep for 3 seconds } void loop() { // проверка нажатия кнопки currentButtons1 = debounce(lastButtons1, PIN_BUTTON_PRINT); // если нажатие и не идет печать if (lastButtons1 == 0 && currentButtons1 == 1 && onPrint==false) { Serial.println("button click"); // изменить состояние реле onPrint=true; // выбор случайной цитаты int random_quote=millis()%COUNT_QUOTES; Serial.print("random_quote="); Serial.println(random_quote); thPr.wake(); // MUST wake() before printing again, even if reset // настройки по умолчанию thPr.setDefault(); thPr.println(" \r\n "); delay(100); // выбор кодовой страницы printer.setCodePage(CODEPAGE_CP866); // печать цитаты thPr.print(RUS(choice_quote(random_quote))); thPr.setDefault(); // thPr.sleep(); // Tell printer to sleep } lastButtons1 = currentButtons1; onPrint=false; } // проверка на дребезг int debounce(int last,int pin1) { int current = digitalRead(pin1); if (last != current) { delay(5); current = digitalRead(pin1); return current; } } // выбор цитаты char* choice_quote(int pos) { switch(pos) { case 0: return str0; break; case 1: return str1; break; case 2: return str2; break; case 3: return str3; break; case 4: return str4; break; case 5: return str5; break; case 6: return str6; break; case 7: return str7; break; case 8: return str8; break; case 9: return str9; break; case 10: return str10; break; case 11: return str11; break; case 12: return str12; break; case 13: return str13; break; case 14: return str14; break; case 15: return str15; break; case 16: return str16; break; case 17: return str17; break; default: return strerror1; break; } } 
    Загрузим скетч на плату Arduino и печатаем цитаты, нажатием на кнопку.

    thermal-arduino-printer-07.jpg

    Рисунок 7. Схема в сборе


    Часто задаваемые вопросы

    1. Не мигает зеленый светодиод при подключении принтера к блоку питания.
    Проверьте подключение принтера к блоку питания.

    2. Принтер не печатает.
    • Проверьте подключение принтера к блоку питания.
    • Проверьте правильность подключения принтера к контроллеру.
    • Проверьте мощность блока питания (должно быть не меньше 2А).

    Документы

    Listing_01
    618 байт
    Listing_02
    2,4 Кб
    Adafruit-Thermal-Printer-Library-master
    27,5 Кб

    Это интересно

    Драйвер шагового двигателя A4988
    Модули
    Драйвер шагового двигателя A4988
    1 января 2024
    RFID-модуль RC522
    Модули
    RFID-модуль RC522
    1 января 2024
    Реле электромеханическое 10А 5В
    Модули
    Реле электромеханическое 10А 5В
    1 января 2024
    Драйвер двигателя L9110S
    Модули
    Драйвер двигателя L9110S
    1 января 2024
    Nodemcu Lua Wi-Fi на Esp8266
    Модули
    Nodemcu Lua Wi-Fi на Esp8266
    1 января 2024
    Wi-Fi модуль ESP-01
    Модули
    Wi-Fi модуль ESP-01
    1 января 2024
    • Комментарии
    Загрузка комментариев...
    Назад к списку
    • Все публикации277
      • 3D принтеры59
      • 3D печать64
      • ЧПУ10
      • Датчики27
      • Модули38
      • 3D сканеры1
      • Arduino механика6
      • Arduino платы8
      • Дисплеи6
      • Кейсы1
      • Компоненты13
      • Мировые новости35
      • Проекты7
      • Сопутствующие2
    Связаться с нами
    8 (800) 500-45-93
    8 (800) 500-45-93отдел продаж Россия
    8 (495) 565-35-93отдел продаж Москва
    E-mail
    info@3d-diy.ru — отдел продаж

    print@3d-diy.ru — 3D печать на заказ

    support@3d-diy.ru — тех. поддержка

    buh@3d-diy.ru — Бухгалтерия
    Адрес
    Москва, Павелецкая набережная, 2с1
    Как до нас добраться, см. тут
    Режим работы
    пн - пт 09:00—18:00
    info@3d-diy.ru — отдел продаж

    print@3d-diy.ru — 3D печать на заказ

    support@3d-diy.ru — тех. поддержка

    buh@3d-diy.ru — Бухгалтерия
    Москва, Павелецкая набережная, 2с1
    Как до нас добраться, см. тут
    Магазин
    Бренды
    Акции
    Каталог
    Услуги
    Компания
    О компании
    Реквизиты
    Партнеры
    Клиенты
    Вакансии
    Информация
    Гарантия на товар
    Возврат товара
    Положение о персональных данных
    Политика конфиденциальности
    Согласие на получение рекламы
    Пользовательское соглашение
    Согласие на обработку персональных данных
    Использование cookie-файлов
    Договор-оферта
    Помощь
    Условия оплаты
    Условия доставки
    Товары под заказ
    Гос. закупки
    Как сделать заказ
    Вопрос-ответ
    2013 - 2026 © 3DiY (Тридиай) - интернет-магазин комплектующих для 3D принтеров, ЧПУ станков и робототехники
    Конфиденциальность
    Оферта
    ГлавнаяКаталог0Корзина0ИзбранныеКабинет0Сравнение
    d =
    Наш сайт использует куки. Продолжая им пользоваться, вы соглашаетесь на обработку персональных данных в соответствии с политикой конфиденциальности.
    Согласен