====== Сканер штрих и 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 на сканер штрих-кодов}}