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

Библиотека

Библиотека сайта

  1. Здравствуйте.

    Это урок по созданию файла подкачки (Swap-файл).

    Помог мне с решением основной проблемы мой коллега администратор.

     

    Ссылки на первоисточник:

    Extending the Omega’s Available Memory

    https://docs.onion.io/omega2-docs/extending-omega-memory.html

     

    Железо использовал следующее: Omega 2+, Arduino Dock R2, microSD карта 32 GB SanDisc (вроде 4-го класса).

     

    Примечание:

    Если вы расширяли память Omega 2(+) при помощи USB флэшки, то вам в командах и тексте ниже необходимо заменить все SD-P1 на USB-A1 и все mmcblk0p1 на sda1

     

    Итак, после расширения памяти Оmega 2 с помощью MicroSD флешки и настройки автоматического монтирования этой флешки после перезапуска (по статье на этом форме) необходимо создать swap-файл и настроить его автоматическую активацию при загрузке Операционной Системы. Для этого нам сначала нужно определиться с размером swap-файла. Я сделал его размером 1024 Мегабайта. Знаю много, но у меня флешка на 32 GB поэтому я решил, что не повредит :) Вы же можете сделать как в оригинальной статье размером 256 MB.

    Теперь нам нужно установить пакеты swap-utils и block-mount, для этого вводим команды:

    opkg update
    opkg install swap-utils block-mount

    После этого создаем сам swap-файл.

    ВНИМАНИЕ!!! После ввода описанной ниже команды НИ В КОЕМ СЛУЧАЕ не выключайте вашу Omega 2(+) и не трогайте ее до самого окончания выполнения команды!!!

    Если вы хотите сделать файл подкачки размером 1024 MB то в консоль введите следующую команду:

    dd if=/dev/zero of=/tmp/mounts/SD-P1/swap.page bs=1M count=1024
      
    Если же вы хотите сделать файл подкачки 256 MB, то в консоль введите следующую команду:
    dd if=/dev/zero of=/tmp/mounts/SD-P1/swap.page bs=1M count=256

     

    Теперь, когда Swap-файл был создан, нам нужно сказать Linux, чтобы он установил этот файл, как область подкачки, для этого вводим в консоль следующую команду:

    mkswap /tmp/mounts/SD-P1/swap.page
    
     

    Далее нам необходимо настроить автоматическую активацию файла свопинга (swap-файла) при загрузке Операционной Системы (ОС). Для этого открываем Editor (редактор) Omega 2 (+), находим папку etc, заходим в нее и находим в ней файл rc.local. Открываем файл rc.local и после строк: 

    # Put your custom commands here that should be executed once
    # the system init finished. By default this file does nothing.

    (Если у вас нет этих строк, не страшно, главное перед строкой exit 0)

    но перед строкой:

    exit 0

     

    Вносим следующие строки:

    ### activate the swap file on an external USB drive
    
    sleep 20 
    
    SWAP_FILE="/tmp/mounts/SD-P1/swap.page"
    
    if [ -e "$SWAP_FILE" ]; then
            /usr/sbin/swapon $SWAP_FILE
    fi

    И сохраняем файл.

     

    Примечание: Лично в моем случае, хватает паузы и на 10 секунд (строка sleep 20), но на всякий случай я поставил паузу в 20 секунд. Пауза обязательна, поскольку выяснилось, что без паузы команда на активацию swap-файла проходит быстрее чем Операционная Система успевает монтировать саму флешку (возможно потому, что моя флешка 4-го класса, т.е. медленная).

    Теперь необходимо перезагрузить нашу Omega 2(+) для того, чтобы проверить активируется ли swap-файл при загрузке Операционной Системы, для этого вводим в консоль следующую команду:

    reboot

     

    Какое-то время светодиод на самой Omegа 2(+) будет гореть, потом начнет мигать и после того, как он перестанет мигать и заного начнет гореть, нужно ввести команду:

    free

      

    После вы получите ответ, что-то вроде этого:

    root@Omega-CC39:~# free
                 total       used       free     shared    buffers     cached
    Mem:        125748      32760      92988         88       5416      10468
    -/+ buffers/cache:      16876     108872
    Swap:      1048572          0    1048572

     

    И если в строке Swap: у вас не три ноля а, что-то вроде этого:

    Swap:      1048572          0    1048572

    То вы все сделали правильно и файл подкачки (swap-файл) у вас активируется при загрузке.

  2. Админ
    Последняя запись

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