Skip to content

GallusX/OrangePi-Py

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OrangePi-Py

Устанавливаем всё необходимое

WiringOP:

apt-get update
apt-get install -y git
apt-get install python3
apt-get install pip
apt-get install python3-dev
git clone https://github.com/orangepi-xunlong/wiringOP.git
cd wiringOP
./build clean
./build

i2c-tools:

sudo apt install i2c-tools

Библиотеки для Python:

pip install pillow
pip install smbus2

И OpiGallus:

Через pip:

pip install opigallus

Через git с примерами и шрифтами:

git clone https://github.com/GallusX/OrangePi-Py
cd OrangePi-Py
python3 setup.py install

Небольшая библиотека для обучения и простого программирования GPIO-выходов на OrangePi на языке Python, а также для управления OLED-дисплеем SSD1306.


После установки проверяем работоспособность

gpio readall

Команда выведет список пинов:

Снимок

Отобразятся все порты, их назначения и состояния.


Теперь проверяем i2c-tools. Вводим:

i2cdetect -y 0

image

i2cdetect -y 1

image

Если везде прочерки — значит, к плате ничего не подключено. Иногда появляется UU, 0x30 или 0x20 — это может означать, что I2C не включён.


Подключаем SSD1306 к плате

Смотрите распиновки дисплея и OrangePi. Всё подключаем строго по распиновке!

Распиновка может отличаться в зависимости от модели OrangePi и самого дисплея SSD1306.

  • GND — к любому GND на OrangePi
  • VCC — к 3.3V на OrangePi
  • SDA — к SDA (он один)
  • SCL — к SCL (он один)

Это в моём случае. На некоторых моделях SSD1306 могут быть дополнительные пины.


Включаем I2C

Если после подключения SSD1306 и команды i2cdetect -y 0 всё ещё везде прочерки — нужно включить I2C в системе.

Для систем Debian, Ubuntu, Armbian:

sudo orangepi-config

Выбираем:

  • System

image

  • Bootenv

image

Добавляем строку:

overlays=i2c0 i2c1 i2c2

image

Нажимаем Save и перезагружаем OrangePi:

reboot

После перезагрузки вводим:

i2cdetect -y 0

image

3C — это адрес нашего дисплея.


Включаем SPI

Для систем Debian, Ubuntu, Armbian:

sudo orangepi-config

Выбираем:

  • System
  • Bootenv

Добавляем строки:

spi_spidev1
param_spidev_spi_bus=0
param_spidev_spi_cs=0
param_spidev_max_freq=1000000

image

Важно! На некоторых платах OrangePi только один SPI. Смотрите по распиновке.
Если только один — пишите spi_spidev1.
Если два — пишите:

spi_spidev
spi_spidev1

image

Пример: на OrangePi 3 LTS доступен только spi1, поэтому пишем spi_spidev1.

Перезагружаем:

reboot

Проверяем:

ls -l /dev/*spi*

Если всё настроено правильно, появятся SPI-порты:

image

Устанавливаем библиотеку:

pip install spidev

Как пользоваться

gpio_out(НОМЕР_ПИНА)         # Устанавливаем пин как выход
gpio_up(НОМЕР_ПИНА)          # Подаём сигнал
gpio_down(НОМЕР_ПИНА)        # Убираем сигнал

gpio_rele(НОМЕР_ПИНА)        # Добавляем реле
gpio_rup(НОМЕР_ПИНА)         # Включаем реле
gpio_rdown(НОМЕР_ПИНА)       # Выключаем реле

gpio_button(НОМЕР_ПИНА)      # Подключаем кнопку
gpio_pull_up(НОМЕР_ПИНА)     # Подтягивающий резистор к +3.3В
gpio_pull_down(НОМЕР_ПИНА)   # Подтягивающий резистор к GND

butclick(НОМЕР_ПИНА)         # Получаем значение кнопки

Насчёт шрифтов

Чтобы менять размер текста на экране (ImageFont.truetype) — выберите и скачайте нужный шрифт, затем скопируйте его в:

/usr/share/fonts

Если папки нет — создайте её.
Один подходящий шрифт уже лежит в папке fonts в репозитории — просто перенесите его.


Пример использования SSD1306

from opigallus import *
from opigalluss.display import ssd1306
from opigalluss.draw import canvas
from PIL import ImageFont, ImageDraw

disp = ssd1306(port=0, address=0x3C, width=128, height=64)

with canvas(disp) as draw:
    font = ImageFont.load_default()
    font = ImageFont.truetype('/usr/share/fonts/Ваш_шрифт.ttf', size=18)
    draw.rectangle((0, 0, 128, 64), outline=0, fill=0)
    draw.text((0, 0), "Hello world!", font=font, fill=255)

Изображение на дисплее

from PIL import Image
image = Image.open('/путь/к/изображению.png').convert("RGBA")
draw.bitmap((0, 0), image, fill=255)

photo_2023-01-21_12-54-35


По всем вопросам:

Telegram: @galluis

About

По всём вопросам - telegram: @galluis , канал - https://t.me/gallusbots

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages