Как подключить 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.

Буду очень признателен за любую помощь.

, 👍-2

Обсуждение

принтер не может обнаружить сигналы данных, потому что у него нет заземления ... соедините заземление вместе, @jsotola

Извините, я не показал это на своей схеме, но я соединил землю и 5vcc вместе с Arduino и термопринтером. Есть ли что-нибудь еще, что я могу попробовать?, @Brandon Pillay

Vcc не должен быть подключен ... принтер должен иметь собственный источник питания, @jsotola

Скажите, что это за принтер! Это не похоже на наличие последовательного интерфейса., @Tarabas


1 ответ


Лучший ответ:

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