====== Сканер штрих и QR-кодов: подключение и режимы работы ====== Используйте [[amp>product/barcode-scanner?utm_source=man&utm_campaign=barcode-scanner&utm_medium=wiki|сканер баркодов]] для считывания штрихкодов и QR-кодов. Автоматизируйте складской учёт или притворитесь кассиром супермаркета, чтобы пропикать все товары! {{ :products:barcode-scanner:barcode-scanner.7.jpg?nolink |}} ===== Режим виртуальной USB-клавиатуры ===== Сканер штрихкодов работает напрямую с компьютером без всяких приложений: он притворяется типовой USB-клавиатурой и выдаёт считанные данные в виде строки текста. Именно такой режим работы задан по умолчанию. ===== Режим работы через COM-порт ===== Barcode сканер общается с управляющей платой по протоколу [[видеоуроки:6-serial-и-processing|UART]]. В зависимости от управляющей платформы выберите вариант подключения. ==== HardwareSerial ==== На управляющей плате [[amp>product/iskra-js?utm_source=man&utm_campaign=barcode-scanner&utm_medium=wiki |Iskra JS]] и Arduino платах с микроконтроллером ''ATmega32U4 / ATSAMD21G18'', интерфейс UART выведен на контактные пины, а данные по USB переедаются через виртуальный COM-порт. Это даёт возможность одновременно подключить Barcode-модуль к аппаратному UART и выполнять отладку по USB. Список поддерживаемых плат: * [[amp>product/iskra-js?utm_source=man&utm_campaign=barcode-scanner&utm_medium=wiki | Iskra JS]] * [[amp>product/iskra-neo?utm_source=man&utm_campaign=barcode-scanner&utm_medium=wiki | Iskra Neo]] * [[amp>product/arduino-leonardo?utm_source=man&utm_campaign=barcode-scanner&utm_medium=wiki | Arduino Leonardo]] === Схема подключения === При подключении к платам формата Arduino R3 удобно использовать [[amp>/product/arduino-troyka-shield?utm_source=man&utm_campaign=barcode-scanner&utm_medium=wiki|Troyka Shield]]. {{ :products:barcode-scanner:barcode-scanner-arduino-hardwareserial.png?nolink |}} === Исходный код === В качестве примера все сканированные штрихкоды выведем в консоль. // serial-порт к которому подключён Barcode-модуль #define BARCODE_SERIAL Serial1 void setup() { // открываем последовательный порт для мониторинга действий в программе // и передаём скорость 9600 бод Serial.begin(9600); // ждём, пока не откроется монитор последовательного порта // для того, чтобы отследить все события в программе while (!Serial) { } Serial.println("Serial init OK"); // открываем Serial-соединение с Barcode-модулем на скорости 9600 бод BARCODE_SERIAL.begin(9600); // печатаем строку Serial.println("Barcode init is OK"); // печатаем строку Serial.print("Init is OK on speed 9600"); } void loop() { // если приходят данные из Barcode-модуля - отправим их в порт компьютера if (BARCODE_SERIAL.available()) { Serial.write(BARCODE_SERIAL.read()); } // если приходят данные из компьютера - отправим их в Barcode-модуль if (Serial.available()) { BARCODE_SERIAL.write(Serial.read()); } } ==== SoftwareSerial ==== На управляющих платформах Arduino с микроконтроллером ''ATmega328 / ATmega2560'', интерфейс UART выведен на контактные пины платы и он же используется для отладки по USB. Это означает невозможность использовать одновременно прошивку/отладку по USB и общение с Barcode-модулем. Решение проблемы — программный UART. Подключите пины ''TX'' и ''RX'' Barcode модуля к другим контактам управляющей платы и используйте библиотеку [[https://www.arduino.cc/en/Reference/SoftwareSerial|SoftwareSerial]]. === Схема подключения === Для примера подключим управляющие пины сканера ''TX'' и ''RX'' — на ''10'' и ''11'' контакты управляющей платы. При подключении удобно использовать [[amp>/product/arduino-troyka-shield?utm_source=man&utm_campaign=barcode-scanner&utm_medium=wiki|Troyka Shield]]. {{ :products:barcode-scanner:barcode-scanner-arduino-softserial.png?nolink |}} === Исходный код === В качестве примера все сканированные штрихкоды выведем в консоль. // библиотека для работы программного Serial #include // создаём объект для работы с программным Serial // и назначаем ему пины RX и TX SoftwareSerial mySerial(10, 11); // serial-порт к которому подключён Barcode-модуль #define BARCODE_SERIAL mySerial void setup() { // открываем последовательный порт для мониторинга действий в программе // и передаём скорость 9600 бод Serial.begin(9600); // ждём, пока не откроется монитор последовательного порта // для того, чтобы отследить все события в программе while (!Serial) { } Serial.print("Serial init OK"); // открываем Serial-соединение с Barcode-модулем на скорости 9600 бод BARCODE_SERIAL.begin(9600); // печатаем строку Serial.println("Barcode init is OK"); // печатаем строку Serial.print("GPS init is OK on speed 9600"); } void loop() { // если приходят данные из Barcode-модуля - отправим их в порт компьютера if (BARCODE_SERIAL.available()) { Serial.write(BARCODE_SERIAL.read()); } // если приходят данные из компьютера - отправим их в Barcode-модуль if (Serial.available()) { BARCODE_SERIAL.write(Serial.read()); } } ==== HardwareSerial Mega==== На платформах форм-фактора [[amp>product/arduino-mega-2560?utm_source=man&utm_campaign=barcode-scanner&utm_medium=wiki | Arduino Mega 2560]] интерфейс UART выведен на контактные пины платы и он же используется для отладки по USB. Это означает невозможность использовать одновременно прошивку/отладку по USB и общение с Barcode-модулем. Но на платах такого форм-фактора есть ещё дополнительно три аппаратных UART: * ''Serial1:'' пины 19(RX1) и 18(TX1); * ''Serial2:'' пины 17(RX2) и 16(TX2); * ''Serial3:'' пины 15(RX3) и 14(TX3). Список поддерживаемых плат: * [[amp>product/arduino-mega-2560?utm_source=man&utm_campaign=barcode-scanner&utm_medium=wiki | Arduino Mega 2560]] * [[amp>product/iskra-mega?utm_source=man&utm_campaign=barcode-scanner&utm_medium=wiki | Iskra Mega]] * [[amp>product/arduino-adk?utm_source=man&utm_campaign=barcode-scanner&utm_medium=wiki | Arduino ADK]] * [[amp>product/arduino-due?utm_source=man&utm_campaign=barcode-scanner&utm_medium=wiki | Arduino Due]] === Схема подключения === Для примера подключим управляющие пины сканера ''TX'' и ''RX'' к аппаратному интерфейсу UART ''Serial2'' — на ''17'' и ''16'' контакты управляющей платы. При подключении удобно использовать [[amp>/product/arduino-troyka-mega-tail-shield?utm_source=man&utm_campaign=barcode-scanner&utm_medium=wiki|Troyka Mega Tail Shield]]. {{ :products:barcode-scanner:barcode-scanner-arduino-hardwareserial-mega.png?nolink |}} === Исходный код === В качестве примера все сканированные штрихкоды выведем в консоль. // serial-порт к которому подключён Barcode-модуль #define BARCODE_SERIAL Serial2 void setup() { // открываем последовательный порт для мониторинга действий в программе // и передаём скорость 9600 бод Serial.begin(9600); // ждём, пока не откроется монитор последовательного порта // для того, чтобы отследить все события в программе while (!Serial) { } Serial.println("Serial init OK"); // открываем Serial-соединение с Barcode-модулем на скорости 9600 бод BARCODE_SERIAL.begin(9600); // печатаем строку Serial.println("Barcode init is OK"); // печатаем строку Serial.print("GPS init is OK on speed 9600"); } void loop() { // если приходят данные из Barcode-модуля - отправим их в порт компьютера if (BARCODE_SERIAL.available()) { Serial.write(BARCODE_SERIAL.read()); } // если приходят данные из компьютера - отправим их в Barcode-модуль if (Serial.available()) { BARCODE_SERIAL.write(Serial.read()); } } ===== Габаритный чертёж ===== {{ :products:barcode-scanner:barcode-scanner-mechanical-drawings.png?nolink |}} ===== Характеристики ===== * Интерфейсы: UART, USB * Форматы штрихкодов 1D: Codabar, Code 11, Code 39, Code 93, UPC/EAN, Code 128, GS1-128, GS1 DataBar * Форматы штрихкодов 2D: QR Code, Data Matrix, PDF417 * Подсветка: белый светодиод * Световой маркер: красный светодиод * Углы сканирования кода: поворот 360°, наклон ±60° * Угол обзора: 28° (горизонтальный), 21,5° (вертикальный) * Напряжение питания: 5 В * Напряжение логических уровней: 3,3 В * Ток потребления: 135 мА (сканирование), 58 мА (покой), 2 мА (режим сна) * Габариты: 53,3×21,4×16,5 мм ===== Ресурсы ===== * [[amp>product/barcode-scanner?utm_source=man&utm_campaign=barcode-scanner&utm_medium=wiki|Barcode Scanner]] в магазине. * [[https://github.com/amperka/hardware-drawings/blob/master/barcode-scanner.svg|Векторное изображение сканера]] * {{ :products:barcode-scanner:barcode-scanner-user-manual.pdf |User Manual на сканер штрих-кодов}}