Оказывается, что термопринтеры бывают разные, точнее — могут иметь разные модификации.
Например, вот у этого термопринтера
https://zhevak.wordpress.com/2013/12/18/термопринтер-cashinotech-csn-a2-t/
— интерфейс последовательный с уровнями сигналов +3.3В.
А вот термопринтер, который я сегодня забрал на почте, имеет интерфейс RS232. Этот принтер я заказывал тут:
http://www.aliexpress.com/snapshot/308597192.html
И хотя в его описании сказано «RS232 TTL», но вскрытие показало, что рядом с разъемом находится микросхема SIPEX SP3232EEN, которая и обеспечивает стандартные уровни напряжений для RS232.
Вообще впечатление от принтера у меня сложилось неоднозначное. И я сейчас поделюсь своими соображениями.
1. Срок поставки. Я заказал пару принтеров 18 Декабря 2013 года, а получил их только сегодня — 17 Апреля 2014 года. Что интересно, на посылке наклеен стикер с почтовой круглой печатью, где среди китайских иероглифов хорошо видна дата 2013.12.27. И более на упаковке никаких отметок нет. Единственный намек на то, что пакет преодолел очень длинный путь — это стикер с надписью «ROTTERDAM, Netherlands».
2. Приятная цена принтера. Я покупал принтеры по $25, сейчас они стали чуть дороже — $27. Но это все равно в два раза дешевле, чем принтер, который я приобрел полгода назад через ebay.
3. В каждый принтер вложен кусочек чековой ленты, где напечатаны параметры принтера и его серийный номер. Забавно, но серийные номера пришедших принтеров совпадают. Возможно их изготовляют нелегально, говоря по-русски — это пиратские копии.
4. Корпуса принтеров сделаны из белой пластмассы. На фотках они смотрятся чудненько. Собственно, мне это понравилось, поэтому я заказал именно белые.
Но у корпусов белого цвета оказалась пара недостатков. На белом корпусе очень отчетливо видны темные не совсем ровные щели прилегания крышки для рулона бумаги. Это выглядит как-то не очень красиво. И я так подозреваю, что и пачкаться белый корпус будет весьма быстро и намного заметнее.
5. Из положительных моментов могу отметить, что у корпуса отсутствует технологическая дыра, которая у его темного брата стыдливо прикрыта куском матовой толстой пленки. У этого (белого) весь корпус цельный, без дыры.
Но вот, с низу плату с микроконтроллером у белого братца прикрывает не металлическая пластина, а какой-то кусочек несерьезно-тонкого пластика, я бы сказал — кусочек пленочки. Как бы — «не внушает!»
(Чтобы сфотать эту белую пленочку нормально пришлось положить ее на синюю тетрадь.)
6. У «белого» принтера вместо двух разъемов — для питания и для интерфейса, присутствует только один. Документации на плату нет, но это не проблема.
Я открыл крышки у белого и черного принтеров что бы сравнить их платы.
Печатные платы оказались абсолютно одинаковые! Разница только в припаянных на них элементах. Что называется — «найди семь отличий» (фотки кликабельны!):
На плате принтера с интерфейсом RS232 присутствует микросхема SP3232, а на плате принтера с интерфейсом UART вместо микросхемы впаяны резисторы-перемычки и отсутствуют конденсаторы, которые нужны для конвертеров напряжения этой микросхемы.
Иначе говоря, ничто не мешает превратить эти принтеры c интерфейсом RS232, в принтеры с интерфейсом UART. Наверно я так и сделаю.
Я отвинтил плату.
С обратной стороны платы названия контактов оказались подписаны:
И хотя в комплекте с принтерами шли кабели к разъему, я решил-таки убрать этот разъем:
Перед фотосессией флюс не смывал, поэтому получилось не совсем презентабельно. Но с другой стороны — жизнь-то она такая и есть — брутальная.
Продавец Andrew Wu прислал могучее письмо — аж на 11 мегабайт с документацией на английском и китайском языках. В письме были также фотки принтера, часть из них я уже разместил в этой статье.
Документацию на английском поместил сюда:
http://webfile.ru/file/a2a919bef327c68f7ee45b0d3538f8be
Доку на китайском я решил не выкладывать в общий доступ. Не вижу в этом смысла.
И наконец, я воспользовался прогой, которую мне прислала Shirly Wu, и изменил им установки. Я установил принтерам скорость 115200 и кодовую таблицу CP1251. Для реконфигурирования принтеров я подключился к питанию копмпа +5В и к разъему последовательного порта RS232 (COM-port). Всё прошло очень легко и гладко и без каких-либо намеков на проблемы.
И напоследок скажу еще пару слов как оживить принтер под Линуксом. Я это сделал с помощью программы на Python. Вот она:
#!/usr/bin/env python #coding:utf-8 import serial sp = serial.Serial("/dev/ttyS0", 115200, timeout = 1) sp.write("Привет мир!\n") sp.close()
Нужно сохранить этот текст в файле (например, hello.py).
Вот тут следует сделать небольшое но очень нужное замечание.
Дело в том, что принтер понимает кириллицу только кодовых таблиц CP1251 (Windows), CP866 (DOS) и еще доисторическую КОИ-8, которая господствовала на компах до эпохи IBM PC. Но принтер напрочь отказывается работать с кодировкой utf-8, которая используется в Линуксе.
Но не стоит впадать в панику и проклинать Линукс. Линукс всеядный. Он жрет даже то, от чего лицо Шиндовс становится синим и она умирает.
Я дольше объясняю простые истины. Короче, при сохранении текста этой питоновской программы вам просто нужно указать в какой кодировке сохранить файл:
Не смотря на то, что кодировка файла Виндовая, Линукс тем не менее будет работать с этим файлом как с родным. Если вы не специально не обратите свое внимание на кодировку файла, то вы это обстоятельство никак не обнаружите.
После сохранения файла нужно с помощью команды:
$ chmod +x hello.py
сделать этот файл исполняемым, те есть превратить его в программу. При этом файл все равно останется текстовым и его можно будет продолжать редактировать и время от времени запускать на исполнение.
Первая строка говорит оболочке (bash), как правильно запустить эту программу (этот файл). Конкретно — сначала запустить команду env, которая найдет в системе Python и «скормит» ему этот файл.
То есть, для запуска программы вам достаточно набрать ее имя в командной строке:
$ ./hello.py
Для тех, кто в Линуксе недавно, это может показаться несколько запутанным — дескать, зачем так сложно? На самом деле это не сложно. Если вас это морально напрягает, вы это же самое можете сделать руками:
$ python hello.py
Следующая строка позволит Python-у правильно работать с кириллицей.
Далее, для работы с последовательным портом нам необходим модуль serial, который мы импортируем следующей строкой в программе.
Строка
sp = serial.Serial("/dev/ttyS0", 115200, timeout = 1)
Создаст объект последовательного порта /dev/ttyS0 и назначит ему (объекту) имя sp. Порт будет открыт на скорости 115200 Бод, с таймаутом 1 секунда.
Теперь можно в порт писать всё, что русской душе захочется. По правилу программистского этикета после окончания работы с ресурсами нужно за собой убрать — закрыть открытые порты и вернуть захваченную память.
Вот, пожалуй это всё, что нужно для старта. Желаю вам приятного и полезного времяпрепровождения!
Я заказывал такой же и там же, после прочтения вашего поста. Мой пришел уже довольно давно. Мой с интерфейсом rs232. Подключал его к винде как Generic text only printer. Схема подключения есть, могу скинуть. Там в разъеме есть проводок 2 CTS, как его можно использовать программно ?
1. VH, the power supply for the board
2. CTS, Paper detector(Default) or CTR flow control(GS a command set)
3. TXD, the transmit pin for UART
4. RXD, the receive pin for UART
5. GND
// Для торговли я бы не советовал его использовать, по своему опыту могу предсказать, девки-продавщицы его мигом угрохают.
1. Спасибо за информацию по разъему.
У меня немного другая цоколевка. Я вытащил из принтера плату. Оказалось, что разъем подписан на обратной стороне платы:
1. VH
2. DTR
3. TX
4. RX
5. G
2. Вообще сигнал CTS нужно использовать как сигнал для притормаживания компа при отправке данных в принтер. То есть он предназначен для сообщения компу состояния принтера, что он (принтер) не может принимать данные. Если комп проигнорирует это сигнал, то принтер просто эти данные откинет.
Однако остается вопрос — а ПО принтера использует этот сигнал или он только физически присутствует на плате принтера? Это нужно проверить. Наверно я это тоже сделаю. Интересно же! Да и определенная польза тоже есть.
3. Я не занимаюсь торговлей. У меня нсколько другая специфика.
Добрый день.
Есть у меня CSN-A2-T. Купил на у дилеров adafruit и их же библиотеки использую. Но дорого и нет теперь в наличии. Хочу попробовать http://www.aliexpress.com/item/embedded-mini-printer-serial-ttl-rs232-vxd/1414587041.html — как у Вас, но с TTL. Александр Антонович, Вы, наверное, единственный русский владеющий обоими образцами. Как думаете, заведется на старых библиотеках? У Вас на одном ПО оба работают? Хочется некой унификации.
И если не затруднит, сбросьте на —-@a———a.es программку от Shirly Wu.
Заранее благодарен.
>> Как думаете, заведется на старых библиотеках?
Извините, не понял про какие библиотеки идет речь.
>> У Вас на одном ПО оба работают?
Я и тут не совсем понял Вас. Если Вы имеете в виду ПО, которое зашито в микроконтроллере принтера, то я не могу ответить на Ваш вопрос. Я не знаю что конкретно делает программа Ширли Ву — зливает ли она только конфигурационные данные в принтер (ну, может быть еще таблицы растеризации символов) или она целиком перепрошивает всё ПО принтера (за исключением загрузчика). Единственное что я могу Вам сказать — так это только то, что программой Ширли Ву я программировал оба типа принтеров. Оба принтера программируются нормально.
Разница между двумя типами принтеров состоит только в уровне и полярности сигналов, которыми они связываются с внешним миром.
TTL-версия принтера использует сигналы микроконтроллеров непосредственно. То есть уровень логического нуля равен 0 Вольт. Уровень логической единицы равен +3.3 В.
Версия RS232 принтера использует уровни сигналов стандарта RS232 (извините за тавтологию!). Здесь уровень логического нуля — это напряжение от плюс 3 до плюс 15 Вольт. Уровень логической единицы — напряжение от минус 3 до минус 15 Вольт.
Микросхема, отсутствующая на плате принтера версии TTL, как раз занимается тупым преобразованием уровней сигналов. Таким образом, для подключения к компу нужно использовать версию принтера с интерфейсом RS232. Если требуется подключить принтер непосредственно к самодельному устройству на базе микроконтроллера, то лучше использовать TTL-версию принтера. Но если по каким-то причинам под рукой оказалась не та версия принтера, то переделать ее в нужную, я думаю, не должно составлять большого труда для человека, знающего электронику и умеющего паять.
Программу для конфигурации принтера выслал Вам на почту. Здесь Ваш адрес изменю, дабы не навлекать на Вас спамеров.
UPDATE 19.02.2015-11:52
Опаньки!
————————————————-
К сожалению, Ваше письмо не может быть доставлено одному или нескольким получателям:
—-@a———a.es
SMTP error from remote mail server after end of data:
host ASPMX.L.google.com [74.125.205.27]: 552-5.7.0 This message was blocked because its content presents a potential
552-5.7.0 security issue. Please visit
552-5.7.0 http://support.google.com/mail/bin/answer.py?answer=6590 to review our
552 5.7.0 message content and attachment content guidelines. vk9si4617702lbb.58 — gsmtp
Рекомендуем Вам проверить корректность указания адресов получателей.
————————————————-
Похоже ругань идет на зипованный архив с программой. Сейчас я еще раз попробую отправить письмо, только вложу файл не .zip файл, а переименую его в .jpeg. Может проглотит 😦
Спасибо большое. И еще одно за то, что изменили e-mail, а то я уже хотел Вас просить. Я почему-то решил что он сам так отобразится 🙂
Когда я говорил о библиотеке, я имел ввиду Python библиотеку https://github.com/adafruit/Python-Thermal-Printer
Что касается TTL и RS232, то я понимаю разницу. Тем более, я хочу заказать принтер без RS232 сразу с TTL – у них есть такая опция. Беспокойство вызвает именно ПО зашитое в принтер. Элементная же база идентична, как я понимаю. Вопрос насколько они различаются на уровне работы с Python.
Думаю, надо заказать а там разберусь 🙂
Я не знаком с библиотекой Adafruit. Название это я вроде бы уже где-то видел, но где, вспомнить не могу. А искать не охота.
Элементная база принтеров идентична, за исключением установки компонент, отвечающих за тип интерфейса. Печатная плата (рисунок, дорожки) — одна и та же.
Вы можете заказать принтер с интерфейсом RS232, а потом феном «сдуть» микросхему. А когда понадобится, заново запаять её.
Схема принтер очень стандартна. Никаких изысков в схемотехнике нет.
Пришел такой, тестовую страницу не печатает, печатает половину первой строки, после этого пустота.
Сменил кодировку на 1251, после этого на тестовой странице печатает «cp1251» с новой строки бесконечно и все.
Драйвера под виндоус установил, не печатает ничего, кодировки, блокноты, то застревает печатать, то печатает пустое, все бестолку.
Микроконтроллер приедет не скоро, хочется печатать средствами пк, не подскажите как?
Да ж не знаю что и сказать!
Может блок питания слабоват? У Вас есть чем померить напряжение питания во время печати? Конечно, лучше бы посмотреть осциллографом.
Попробуйте параллельно питанию воткнуть электролитический конденсатор на 1000-5000 мкФ.
Да, спасибо, проблема была именно в этом.
Мне пришел, так сказать, третий вариант этого принтера с установленным белым разъемом, но без платы SP3232 )
Фото здесь: https://www.dropbox.com/s/py9yihj9r77usj4/Screenshot_2015-05-09-14-12-13.png?dl=0
Подключается странно.
1. От белого разъема кабелем из комплекта подключил через переходник USB-UART к ПК. Шьется, но питание для печати слабовато (так и должно быть)
2. В свободные от белого разъема отверстия слева впаял два провода и подключил к ним внешнее питание. Стал печатать тестовую страницу. Подключаю к ПК: для переходника USB-UART оставляю только rxt и txd, подключаю внешнее питание. Не шьется! Переходник мигает диодами для rxt и txd, но программа смены кодировки выскакивает с ошибкой.
3. Ладно, на переходник прокинул оставшиеся VH и Ground из белого разъема (таким образом по моей логике принтер получает питание и от usb разъема и от внешнего источника). Работает. Шьется, печатает.
Еще пробовал внешнее питание подводить в VH и G в белом разъеме, а на UART переходник кидать только rxt и txd, но так тоже не работает.
Таким образом, рабочая схема получается только тогда, когда из белого разъема все подключено к переходнику UART на пк (включая питание, не только txd, rxd) и плюс к этому используется внешнее питание. Так и должно быть?
Мне сложно прокомментировать, что там у Вас не так. Я с трудом представляю, что Вы делаете. Поэтому, я буду предполагать, что Вы не электронщик. Но если это не так, прошу на меня не обижаться. Я искренне хочу помочь Вам.
Итак. При подключении цепей RxD и TxD нужно подключить еще и общий провод. Вы это сделали?
Следующий момент — провод RxD от конвертера USB-UART нужно подключить на точку TxD у принтера. И наоборот — TxD на RxD. У Вас так же?
Обратите внимание, что и напряжение питания, и уровни сигналов у принтера и у конвертера должны быть одинаковыми. Нежелательно подключать 5-вольтовый переходник к 3.3-вольтовому принтеру. Возможно даже будет работать, но лучше не рисковать. Я не знаю микроконтроллер LPC, который применяется в принтере. Выводы у него могут быть толерантны к 5-вольтовым сигналам, а могут и нет. С кого спрос, если Ваш конвертер окажется 5-вольтовым?
Контакты G (GND) на разъемах питания и сигнальном — соединены вместе. Контакты VH также соединены вместе. Поэтому можно их использовать хоть на том, хоть на другом разъеме.
Из меня плохой шаман. Я не умею ставить точные диагнозы дистанционно. Извините, если что не так.
Т.е. что меня удивляет, что на схемах, которые я находил rxt и txd кидались на ардуино, а питание VH G прокидывалось либо на внешнее питание, либо на VH G ардуино. С пк так не получилось, пришлось подключать все одновременно.
Питание VH должно быть 9-12В и обеспечивать хорошие токи. Сейчас на вскидку не скажу сколько, но 1-2 ампера наверняка нужно обеспечить. Иначе светодиоды в печатной головке не создадут мощного излучения и не разогреют бумагу.
Если Вы попытались запитать принтер вообще от USB, который выдает всего 5 В, и ток не более 0.1 мА (0.5 мА — по запросу), то, естественно, этот вариант не пройдет.
Здравствуйте!
А у Вас еще сохранилась программа от Shirly для смены скорости передачи этого принтера?
День добрый!
Да. Программа всё ещё существует.
Надежды мало, но всё же попрошу и в меня кинуть сию чудную программу. d——-t@me.com
на дворе хоть и не канун Нового года, но поработать Дедом Морозом можно. Держите!