• Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal

22 проекта на Omega2

  • записей
    10
  • комментария
    2
  • просмотров
    3 125

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

Админ

10 761 просмотр

Обычно 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 дисплею на разных расстояниях и под разными углами.

 




1 комментарий


Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!


Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.


Войти сейчас