В этой статье мы узнаем, как сделать свой собственный считыватель штрих-кодов и QR-кодов с помощью платы Arduino и встроенного модуля сканера QR/штрих-кодов. Самодельный сканер QR и штрих-кодов может сканировать штрих-код или QR-код и отображать считанную информацию на OLED-дисплее.
QR-коды часто используются для отслеживания информации о продуктах в цепочке поставок, часто используются в маркетинговых и рекламных кампаниях. В последнее время они играют ключевую роль в отслеживании воздействия коронавируса и замедлении распространения вируса. Аналогичным образом штрихкоды применяются к продуктам как средство быстрой идентификации. Они используются в розничных магазинах как часть процесса покупки, на складах для отслеживания запасов и в счетах-фактурах для помощи в бухгалтерском учете.
Для создания считывателя штрих-кодов и QR-кодов на основе платы Arduino мы будем использовать Maikrt Embedded QR Code Scanning Module. Модуль поддерживает как USB, так и последовательную связь UART. Это небольшой считыватель 1D/2D кодов, который может быть встроен в любое устройство для сканирования кода с целью идентификации других элементов. Он использует интеллектуальный алгоритм распознавания изображений для идентификации данных штрих-кода и QR-кода.
В этом уроке мы узнаем, что такое QR и штрихкод и как работает эта технология. Кроме того, мы подробно рассмотрим модуль сканирования встроенного QR-кода Maikrt. И, наконец, мы свяжем сканер штрихкода и QR-кода с платой Arduino и отобразим считанные данные на OLED-дисплее.
Необходимые компоненты
- Плата Arduino Nano (купить на AliExpress).
- Встроенный модуль сканирования QR-кода Maikrt или аналогичный (купить на AliExpress).
- Модуль OLED дисплея SSD1306 128×64 с интерфейсом I2C (купить на AliExpress).
- Макетная плата.
- Соединительные провода.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Что такое штрих-код и как он работает?
Штрихкод представляет собой строку цифр и напечатанным рисунком из черных и белых полос. Штрихкоды разработаны для быстрого считывания компьютерами путем сканирования красного светодиода или лазерного луча по ним.
Каждая цифра в штрих-коде представлена семью вертикальными блоками одинакового размера. Они окрашены в черный или белый цвет, чтобы представлять десятичные числа от 0 до 9. Каждое число в конечном итоге состоит из четырех толстых или тонких черных и белых полос, и его рисунок разработан таким образом, что даже если вы перевернете его вверх ногами, его нельзя будет спутать ни с каким другим числом.
Как работает сканер штрих-кода?
Сканер штрихкодов сканирует и преобразует в цифровую форму напечатанные штрихкоды. Затем он декодирует данные и отправляет их на компьютер. Он состоит из линзы, источника света и светового датчика, который может преобразовывать оптические импульсы в электрические сигналы. Сканер штрихкодов содержит декодер, который анализирует данные изображения, предоставленные датчиком, и отправляет их на выходной порт. После сканирования изображения он подключается к главному компьютеру для передачи полученной информации.
Декодер распознает символы штрих-кода, переводит содержимое штрихов и пробелов и передает данные на компьютер в формате, который мы можем прочитать.
Что такое QR-код и как он работает?
QR-код — это сканируемый штрихкод, закодированный данными. Закодированный означает преобразованный в определенную форму. В случае QR-кодов цифровые и буквенно-цифровые символы, байты и кандзи преобразуются в уникальное двумерное расположение квадратов. Когда оптический сканер проходит над этими квадратами, он преобразует их расположение обратно в исходную форму этих данных.
Наиболее важными частями QR-кода являются модуль данных, маркер положения (Position marker) и тихая зона (Quiet zone).
Модуль данных — это стандартная единица QR-кода. Обычно это черный квадрат на белом фоне. На каждом QR-коде есть три маркера положения. Состоящие из внутреннего и внешнего глаза, они позволяют сканерам и камерам быстро и точно определять местоположение модулей данных и направление сканирования. Тихая зона — это пустая область со всех сторон матрицы модуля данных, которая содержит все модули данных и маркеры положения. Она позволяет сканерам и считывателям оптически определять, где начинается и заканчивается QR-код.
Как работает сканер QR-кода?
Узоры в QR-кодах представляют собой двоичные коды, которые можно интерпретировать для получения данных кода.
QR-ридер может идентифицировать стандартный QR-код на основе трех больших квадратов снаружи QR-кода. Как только он идентифицирует эти три фигуры, он знает, что все, что содержится внутри квадрата, является QR-кодом.
Затем QR-ридер анализирует QR-код, разбивая его на сетку. Он смотрит на отдельные квадраты сетки и присваивает каждому из них значение в зависимости от того, черный он или белый. Затем он группирует квадраты сетки для создания более крупных узоров.
Встроенный модуль сканирования штрих- и QR-кодов Maikrt
Модуль сканирования штрих- и QR кодов Maikrt — это небольшой считыватель 1D/2D кодов. Он может быть встроен в любое устройство для сканирования кода с целью идентификации других предметов. Он использует интеллектуальный алгоритм распознавания изображений для считывания данных QR или штрих-кода. Он может легко считывать штрих-коды 1D, 2D на этикетках, бумаге и дисплеях мобильных телефонов или компьютеров. Модуль обладает лучшей чувствительностью и высокой точностью.
Модуль имеет интерфейсы USB и TTL для прямого взаимодействия с компьютером или микроконтроллером. Он оснащен 9-контактной терминальной линией и USB-кабелем, что удобно для преобразования между последовательным портом UART TTL и интерфейсом USB.
Используя интерфейс USB, модуль сканирует код напрямую и автоматически отправляет результат на ваш хост-компьютер. После получения данных хост-компьютер может перейти к следующему шагу. Скорость передачи данных этого модуля по умолчанию установлена на 9600 бод.
Модуль имеет 9-контактную 4-проводную терминальную линию для взаимодействия с микроконтроллером. Красный провод - это вывод VCC (+5 В), черный - это GND. Зеленый и белый провода - это выводы Tx и Rx.
Ниже приведен код настройки для преобразования между интерфейсами TTL и USB. Вы можете отсканировать QR-код соответствующего интерфейса в соответствии с вашими потребностями.
Технические параметры модуля
1. Напряжение: 5 В.
2. Мощность: <0,9 Вт.
3. Интерфейс связи: UART TTL\UART RS232\USB.
4. Скорость передачи данных: 9600 бод.
5. Режим сканирования: всенаправленный режим автоматического сканирования.
6. Метод настройки параметров: настройка параметров с помощью QR-кода или настройка команды хоста.
7. Рабочие советы: можно подключить зуммер, светодиодный индикатор.
8. Угол сканирования: ±60°, ±40°, ±360° (влево-вправо, вперед-назад, вращение).
9. Расстояние сканирования: от 5 до 10 см.
10. Рабочая температура: от -25°C до 55°C.
Взаимодействие сканера штрих-кода/QR-кода с Arduino
Теперь давайте соединим модуль сканера штрих-кода/QR-кода с платой Arduino. Поскольку модулю требуется всего 4 соединения, его сопряжение с Arduino довольно простое. Схема подключения выглядит следующим образом.
Подключите красный провод (VCC) и черный провод (GND) модуля сканера штрих- и QRкода к контактам Arduino 5V и GND соответственно. Аналогично подключите зеленый провод (Tx) и белый провод (Rx) к контактам D3 и D4 Arduino.
Исходный код программы
Код Arduino для данного проекта достаточно прост. Мы будем использовать библиотеку Software Serial для считывания полученных данных. Вы можете скопировать код и загрузить его на плату Arduino.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <SoftwareSerial.h> SoftwareSerial mySerial(3, 4); // RX, TX void setup() { Serial.begin(9600); mySerial.begin(9600); // set the data rate for the SoftwareSerial port } void loop() { if (mySerial.available()) // Check if there is Incoming Data in the Serial Buffer. { while (mySerial.available()) // Keep reading Byte by Byte from the Buffer till the Buffer is empty { char input = mySerial.read(); // Read 1 Byte of data and store it in a character variable Serial.print(input); // Print the Byte delay(5); // A small delay } Serial.println(); } } |
После загрузки кода вы можете поднести любой QR-код или штрих-код к модулю. Модуль идентифицирует и подготовит данные и отобразит считанные данные на Serial Monitor (монитор последовательной связи).
Портативный сканер штрих-кодов/QR-кодов на Arduino и OLED-дисплее
Тестирование модуля сканирования штрих-кода/QR-кода выполняется с использованием приведенного выше кода. Теперь вы можете интегрировать 0,96″ I2C OLED-дисплей с модулем сканера QR-кода и Arduino. Это может быть сделано как портативное устройство.
Полная принципиальная схема вместе с соединениями OLED-дисплея очень проста.
OLED-дисплей — это модуль I2C. Поэтому у него есть 4 провода: VCC, GND, SCL и SDA. Подключите контакты VCC и GND к контактам Arduino 5V и GND. Аналогично подключите контакты SCL и SDA к контактам Arduino A5 и A4 соответственно.
Исходный код программы
Ниже приведена программа для портативного сканера штрих-кодов/QR-кодов на основе платы Arduino. Код требует две библиотеки для OLED-дисплея, т.е. Adafruit GFX Library и SSD1306 OLED Library. Сначала загрузите эти библиотеки по ссылкам Github и добавьте их в папку Arduino Library.
Теперь вы можете скопировать код и загрузить его на плату Arduino.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
#include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <SoftwareSerial.h> SoftwareSerial mySerial(3, 4); // RX, TX #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); void setup() { Serial.begin(9600); mySerial.begin(9600); // set the data rate for the SoftwareSerial port display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //initialize with the I2C addr 0x3C (128x64) display.clearDisplay(); } void loop() { if (mySerial.available()) // Check if there is Incoming Data in the Serial Buffer. { display.setCursor(0, 0); //oled display while (mySerial.available()) // Keep reading Byte by Byte from the Buffer till the Buffer is empty { char input = mySerial.read(); // Read 1 Byte of data and store it in a character variable Serial.print(input); // Print the Byte display.setTextSize(2); display.setTextColor(WHITE); display.print(input); display.display(); delay(5); } Serial.println(); display.clearDisplay(); } } |
После загрузки кода устройство будет готово к тестированию. Вы можете начать сканировать QR-коды или штрих-коды.
Вы можете поднести любой штрих-код к модулю сканера, и он отсканирует его и отобразит на OLED-дисплее.
Не только штрих-код, он также может сканировать QR-код.
После сканирования QR-кода на OLED-дисплее отобразятся правильные данные.