Подключение принтера к ардуино по RS 232 через преобразователь TTL-RS232
- Войдите на сайт для отправки комментариев
Приветствую!
Имеется необходимость печатать с ардуино на чековый принтер через RS 232.
Имеется:
- ардуино UNO;
- чековый принтер SAM4S Ellix 50 db;
- преобразователь TTL-RS232.
Подключала по аналогии со статьей, ( https://daverobertson63.wordpress.com/2013/06/02/serial-port-mini-rs232-... )
То есть,
От DB9 к преобразователю Tx-Rx, Rx-Tx, от ардуины к преобразователю Tx-Rx, Rx-Tx.
Да, кстати к переходнику TTL-RS232 припояла DB9 male, к компу подключаю через комовский переходник мама-мама. Надеюсь, понятно.
Естесственно, напечатать не удалось.
Попробовала проверить по отдельности. Подключила ардуино к компу по USB, залила скетч простенький с выводом на печать, замкнула вывода Tx,Rx со стороны ардуины. Открыла терминал (у меня Termite), проверить эхо. В общем, на стандартной скорости 9600 при вооде любого текста с моей стороны отправляет мусор.
Перебираю скорость, дохожу до 4800. Вуаля, эхом отправляет то же самое.
Это немного порадовало. Далее подключаю ком порт к компу через этот преобразователь, от ардуины ток питание идет, usb к компу не подрубаю. На плате залит скетч печати на принтер, хочу проверить, пока хотя бы без принтера.
void setup() { // put your setup code here, to run once: Serial.begin(9600); } void loop() { Serial.write(0x1B); Serial.print('@'); //ESC POS initialize followed after command Serial.print("Hola Epson"); //Print "Hola Epson" to buffer Serial.write(0xA); //Print and Line Feed from Buffe // put your main code here, to run repeatedly: delay(1000); }
да, скорость тут соответсвенно стоит 9600 и в терминале только при этой скорости и выводиться текст "Hola Epson".
Как я поняла, на скорости 4800 адекватно работает, когда замыкаешь tx,rx. У принтера минимальная выставляемая скорость 9600.
Либо принтеру питания не хватает от ком порта.
В общем запуталась, как дальше быть? Может что не так делаю.
Либо принтеру питания не хватает от ком порта.
У принтера отдельное питание от своего БП. Или вы его не подключаете?
Бубубу... :) Я что-то тоже не очень понял всю суть манипуляций. Комп зачем? Чтобы посмотреть вместо принтера что вылетает в порт? И что Вы смотрели на замкнутых тх-rx? Чем? паралельно этому замыканию комп с терминалом висел? Ничего замыкаить не надо было. Если комп при разомкнутых rx-tx дурины ничего вообще не видит, значит надо роверить правильность подключения. тх дуни на rx компа через преобразователь. Честно говоря как на нём самом я точно не знаю, не пользовался. Думаю, подскажут кто знает. Для начала можно было бы не замыкать на дуне пины, а поменять их местами.
Скорость при замыкании никак не влияет, т.к. оба направоения на одном устройстве и на одинаковой скорости работают - это лишь для проверки оконечных каскадов используют - пишем и читаем сами себе, сравниваем что отправили и что пришло.
В промышленных принтерах скорость по умолчанию 19200. Но, кроме скорости есть ещё сигналы управления потоком аппаратные или программные. Возможно, принтер на другой скорости данные ждёт и выбрасывает их по контролю чётности.
Либо принтеру питания не хватает от ком порта.
У принтера отдельное питание от своего БП. Или вы его не подключаете?
БП подключаю.
Бубубу... :) Я что-то тоже не очень понял всю суть манипуляций. Комп зачем? Чтобы посмотреть вместо принтера что вылетает в порт? И что Вы смотрели на замкнутых тх-rx? Чем? паралельно этому замыканию комп с терминалом висел? Ничего замыкаить не надо было. Если комп при разомкнутых rx-tx дурины ничего вообще не видит, значит надо роверить правильность подключения. тх дуни на rx компа через преобразователь. Честно говоря как на нём самом я точно не знаю, не пользовался. Думаю, подскажут кто знает. Для начала можно было бы не замыкать на дуне пины, а поменять их местами.
Скорость при замыкании никак не влияет, т.к. оба направоения на одном устройстве и на одинаковой скорости работают - это лишь для проверки оконечных каскадов используют - пишем и читаем сами себе, сравниваем что отправили и что пришло.
В промышленных принтерах скорость по умолчанию 19200. Но, кроме скорости есть ещё сигналы управления потоком аппаратные или программные. Возможно, принтер на другой скорости данные ждёт и выбрасывает их по контролю чётности.
Сейчас скорость на принтере стоит 115200, могу поменять на 9600.
Rx ардуины идет на Tx ком порта, Tx ардуины на Rx ком порта. Сейчас проделала следующее: через usb на ардуино залила скетч
Подключила все по схеме, от ардуино через преобразователь к компу по ком порту. В serial monitorе вижу раз в сек строку "Hello from arduino", все нормально.
Далее,
Залила вот это так же через usb:
Здесь, по идее, в Serial monitorе должно выдавать, то, что печатаю. Выдает мусор. Смена скорости ничего не дает. В чем может быть дело?
А если так
И еще, принтер кроме TX,RX, может требовать и остальные сигналы порта (DTR,RTS...), так что их тоже возможно придется эмулировать.
Скорость на ардуино задается в строке
Serial
.begin(9600);
9600 - и есть ваша скорость, синхронизируйте с принтером.
для начала надо понимать как именно ОДИН UART контроллер может работать на 2 дома....
попробуй сделать так
1. питание переходника заведи на рабочий пин ардуино
2. после старта выключи сериал выжди паузу 1 сек, и подай напряжение на пин питания модуля
3. выжди еще секунду и только потом стартуй сериал
И еще, принтер кроме TX,RX, может требовать и остальные сигналы порта (DTR,RTS...), так что их тоже возможно придется эмулировать.
Вполне возможно.
Обычно решается двумя перемычками:
1. RTS - CTC ( 7-8 )
2. DTR - DSR ( 4-6 )
А если так
Если так, то вот что получается: если вводить по одному смиволу, то выводит нормально. Если вводить несколько символов подряд, то непонятно что выводит.
Бубубу... :) Я что-то тоже не очень понял всю суть манипуляций. Комп зачем? Чтобы посмотреть вместо принтера что вылетает в порт? И что Вы смотрели на замкнутых тх-rx? Чем? паралельно этому замыканию комп с терминалом висел? Ничего замыкаить не надо было. Если комп при разомкнутых rx-tx дурины ничего вообще не видит, значит надо роверить правильность подключения. тх дуни на rx компа через преобразователь. Честно говоря как на нём самом я точно не знаю, не пользовался. Думаю, подскажут кто знает. Для начала можно было бы не замыкать на дуне пины, а поменять их местами.
Скорость при замыкании никак не влияет, т.к. оба направоения на одном устройстве и на одинаковой скорости работают - это лишь для проверки оконечных каскадов используют - пишем и читаем сами себе, сравниваем что отправили и что пришло.
В промышленных принтерах скорость по умолчанию 19200. Но, кроме скорости есть ещё сигналы управления потоком аппаратные или программные. Возможно, принтер на другой скорости данные ждёт и выбрасывает их по контролю чётности.
Возможно, порт ловит помехи, возможно и вполне вероятно преобразователь фиговый.
Сейчас скорость на принтере стоит 115200, могу поменять на 9600.
Rx ардуины идет на Tx ком порта, Tx ардуины на Rx ком порта. Сейчас проделала следующее: через usb на ардуино залила скетч
Подключила все по схеме, от ардуино через преобразователь к компу по ком порту. В serial monitorе вижу раз в сек строку "Hello from arduino", все нормально.
Далее,
Залила вот это так же через usb:
Здесь, по идее, в Serial monitorе должно выдавать, то, что печатаю. Выдает мусор. Смена скорости ничего не дает. В чем может быть дело?
Не соответствуют настройки портов дуни и компа. Вы же понимаете : ком-порт асинхронный - он свистит в линию что ему дали и ничего не контролирует. Кроме скорости, есть бит контроля чётности, длинна 8 или 9 бит, старотовый и стоповые биты.
Настройки вроде соответсвуют. На компе:
Настройки вроде соответсвуют. На компе:
Не замыкая tx-rx, добейтесь получения компом эха. Если не получится, скорее всего модуль некузявый. Или подключен вверх ногами со стороны дуни - при замыкании ведь прилетает от принт строчка, когд модулю со стороны дуни на оба кантакта одинаково летит.