• Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal
Sign in to follow this  
Followers 0
  • entries
    10
  • comments
    2
  • views
    5,121

3.1 Генератор QR-кода

Sign in to follow this  
Followers 0
Админ

11,110 views

Обычно QR-коды представляют собой двухмерные штрихкоды, которые можно отсканировать любой камерой. Любой смартфон без труда справится с QR кодом.

1.png

Из этой книги мы узнаем, как использовать Python, чтобы превратить текст в QR-код и вывести его на OLED Expansion.

1.jpg

Получившийся в результате код можно отсканировать, чтобы прочитать закодированный текст. Если это закодированный URL, то большинство считывателей QR-кодов в смартфонах откроет этот URL в браузере. Очень удобно, если у вас сложный URL! 

Уровень навыков: начинающий

Необходимое время: 10 минут

Этот проект основан на коде, который полностью можно найти в хранилище Onion GitHub по этой ссылке

Что потребуется:

  • Onion Omega2 или Omega2+
  • Любая док-станция Onion, которая поддерживает расширения: Expansion Dock, Power Dock, Arduino Dock
  • Onion OLED Expansion

1. Подготовим все необходимое

Ваш Omega2 должен быть готов к работе. Выполните все действия из инструкции по подключению Omega2, чтобы подключиться к WiFi и обновить последнюю прошивку.  
Для этого проекта необходима работа с командной строкой (терминалом) Omega2.  Для того чтобы больше узнать о работе с командной строкой Omega2, прочитайте эту инструкцию

2. Установим необходимые пакеты

Нам потребуется поддержка для git, Python и модуля Onion OLED Expansion Python. Подключитесь к командной строке Omega и запустите следующую команду:

opkg update
opkg install python-light python-codecs pyOledExp git git-http ca-bundle

3. Скачиваем код 

Теперь нам нужно скачать код Python из GitHub, который и сделает всю основную работу.  Подключитесь к командной строке Omega и клонируйте проект из GitHub при помощи следующей команды: 

cd /root
git clone https://github.com/OnionIoT/oledQrCodeGenerator.git

4. Запускаем код

Наконец, мы сможем создать несколько QR-кодов! Перейдите в директорию хранилища:

cd oledQrCodeGenerator

И запустите программу. Аргументом к скрипту является текст, который будет закодирован по шаблону QR-кода:

root@Omega-18C2:~/oledQrCodeGenerator# python main.py 'Wow, my first QR Code'
> Encoding 21 characters
> Generated QR Code: 31x31 pixels
> Doubled QR Code size: 62x62
> Initializing display
> Setting display mode to inverted
> Writing buffer data to display

В результате, данные будут закодированы и отображены в виде QR-кода на OLED Expansion:

1.jpg

Подробнее о программе

Работа кода, которая остается за кадром:

  1. Кодирование введенного текста в матрицу, представляющую собой QR-код. Размер QR-кода зависит от количества введенного текста
  2. Конвертация матрицы QR-кода в данные, которые можно отобразить на OLED дисплее
  3. Отображение получившейся картинки на OLED дисплее
  • Инициализация дисплея
  • Инвертирование цветов отображения
  • Отображение сгенерированного файла изображения

Для более простого и быстрого сканирования была добавлена дополнительная опция: если QR-код маленький (меньше половины высоты OLED дисплея), то изображение будет увеличено в размере вдвое, чтобы каждый пиксель QR-кода высвечивался на OLED дисплее как четыре пикселя.

QR-код, сгенерированный по умолчанию будет кодом версии 3 с низким уровнем коррекции ошибок. Код будет иметь размер 31х31 пикселей. Если количество текста, который нужно закодировать не вписывается в код версии 3, то программа выберет следующую подходящую версию кода. Более подробно узнать о версиях QR-кодов можно на сайте Wikipedia.

5. Использование кода в качестве модуля Python

Код oledQrCodeGenerator можно также импортировать как модуль в ваши Python проекты!

Функция dispQrCode() выполнит все те же действия, что были описаны выше. Небольшой пример, демонстрирующий, как использовать этот модуль:

import sys
sys.path.append("/root")
import oledQrCodeGenerator

print 'Now using the oledQrCodeGenerator'
oledQrCodeGenerator.dispQrCode('Hello!')

print 'All done!'

Обратите внимание, что код выше предполагает, что код проекта может быть найден по следующему пути /root/oledQrCodeGenerator.  К sys.path, который Python использует для поиска модулей, которые нужно импортировать, добавляется /root. Если строки sys.path.append("/root") нет, то Python вернет ошибку ImportError: No module named oledQrCodeGenerator, так как он не сможет найти модуль там, где обычно осуществляет поиск.

Считывание QR кодов

Совершенно не интересно видеть QR-код и не иметь возможности его прочитать, правда?  Однако не стоит переживать, так как ваш смартфон прекрасно справиться с этой задачей и считает код с OLED:

  • На Android, можно воспользоваться приложениями QR Code Reader и QR Barcode Scanner
  • На iOS: QR Reader App

Если в форме QR-кода зашифрован большой текст, то телефон может сканировать чуть дольше. Лучше всего здесь действовать методом проб и ошибок: попробуйте подводить телефон к OLED дисплею на разных расстояниях и под разными углами.

 


Sign in to follow this  
Followers 0


1 Comment


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now