Как подключить Arduino Nano к термопринтеру через последовательное соединение
У меня есть обычная плата Arduino Nano со старым загрузчиком. У меня принтер и Arduino подключены вот так:
Это мой код:
#include "Adafruit_Thermal.h"
// Вот новый синтаксис при использовании SoftwareSerial (например, Arduino Uno) ----
// Если вместо этого используется аппаратный серийный номер, закомментируйте или удалите эти строки:
#include "SoftwareSerial.h"
#define TX_PIN 5 // Arduino передает ЖЕЛТЫЙ ПРОВОД с маркировкой RX на принтер
#define RX_PIN 6 // Arduino получает ЗЕЛЕНЫЙ ПРОВОД с маркировкой TX на принтер
SoftwareSerial mySerial(RX_PIN, TX_PIN); // Сначала объявить объект SoftwareSerial
Adafruit_Thermal printer(&mySerial); // Передаем адрес в конструктор принтера
// Затем см. функцию setup() относительно серийного номера & принтер начинает() вызовы.
// Вот синтаксис аппаратного серийного номера (например, Arduino Due) --------------
// Раскомментируйте следующую строку, если используется аппаратный последовательный порт:
//Adafruit_Thermal принтер(&Serial1); // Или Serial2, Serial3 и т.д.
// ------------------------------------------------ -----------------------
void setup() {
// Эта строка предназначена для совместимости с пакетом проекта Adafruit IotP,
// который использует контакт 7 как запасную точку заземления. Вам это нужно, только если
// подключен таким же образом (с 3-контактным разъемом на контакты 5/6/7):
// pinMode(ВСТРОЕННЫЙ, ВЫВОД); цифровая запись (7, НИЗКИЙ);
// ПРИМЕЧАНИЕ: НЕКОТОРЫМ ПРИНТЕРАМ ТРЕБУЕТСЯ 9600 БОД вместо 19200, см. тестовую страницу.
mySerial.begin(9600); // Инициализировать SoftwareSerial
//Serial1.begin(19200); // Используйте это вместо этого, если используете аппаратный последовательный порт
printer.begin(); // Инициализация принтера (одинаково, независимо от типа серийного номера)
// Следующие вызовы есть в setup(), но *не обязательно*. Используй их
// в любом месте! Они просто здесь, поэтому они запускаются один раз и не печатаются
// снова и снова (что произошло бы, если бы они были в цикле()).
// Некоторые функции передают строку при вызове, это нормально.
// Параметры шрифта
printer.setFont('B');
printer.println("FontB");
printer.println("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
printer.setFont('A');
printer.println("FontA (default)");
printer.println("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
printer.sleep(); // Сообщаем принтеру спать
delay(3000L); // Сон на 3 секунды
printer.wake(); // ДОЛЖЕН wake() перед повторной печатью, даже если сброс
printer.setDefault(); // Восстановить принтер по умолчанию
}
void loop() {
}
Когда я запускаю свой код или сбрасываю, никакие отпечатки не отправляются на печать.
Вот что я пробовал.
- Убедитесь, что питание включено на обоих устройствах.
- Попробуйте скорость 19200 бод.
- Поменяйте местами кабели Tx и Rx
- Пробовал D5 и D6 для Tx и Rx.
Буду очень признателен за любую помощь.
@Brandon Pillay, 👍-2
Обсуждение1 ответ
Лучший ответ:
Дополнительная информация о вашем принтере говорит мне о том, что у него есть интерфейсы Bluetooth и USB, но я не вижу никаких других последовательных портов для подключения.
Поэтому нет возможности подключить этот принтер к arduino nano с помощью каких-либо контактов цифрового порта.
Вы можете решить купить термопринтер, предлагаемый Adafruit, в нашем поиске термопринтера, в котором четко указано, что он имеет "последовательный интерфейс" или "Последовательный интерфейс RS232" - независимо от того, идет ли это с "TTL" или не как принтер Adafruit.
Принтер предназначен для подключения к хост-порту USB (ПК или RPi или около того) или через Bluetooth (к ПК или телефону Android).
Он может предлагать виртуальный последовательный интерфейс как через USB, так и через Bluetooth, но это предположение.
Возможно, ваш принтер можно взломать. Я думаю, что принтер Adafruit был модифицирован Adafruit. Возможно, они купили стоковый принтер и добавили разъем для TTL-интерфейса. Это также может быть возможно с вашим принтером, но это не входит в сферу вашего вопроса и является весьма спекулятивным.
Извините, это китайская машина, я не могу найти на нее описание. Это сделано Андоулом. На этом сайте больше всего информации, которую я видел: https://www.electromannsa.com/products/goojprt-58mm-wireless-bluetooth-thermal-receipt-printer, @Brandon Pillay
- avrdude ser_open() can't set com-state
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Какое максимальное энергопотребление Arduino Nano 3.0?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Питание светодиодной ленты - Сколько ампер?
- Arduino nano как клавиатура HID
- Как я могу запитать Arduino Nano от батареи LiPo, желательно 3,7 В
- В чем разница между библиотеками Software Serial? Какая из них совместима с Arduino Nano?
принтер не может обнаружить сигналы данных, потому что у него нет заземления ... соедините заземление вместе, @jsotola
Извините, я не показал это на своей схеме, но я соединил землю и 5vcc вместе с Arduino и термопринтером. Есть ли что-нибудь еще, что я могу попробовать?, @Brandon Pillay
Vcc не должен быть подключен ... принтер должен иметь собственный источник питания, @jsotola
Скажите, что это за принтер! Это не похоже на наличие последовательного интерфейса., @Tarabas