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-toos:

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 и 30 или 20 это скорее всего будет означать что i2c не включился)

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

СМОТРИМ РАСАПИНОВКИ ДИСПЛЕЯ И ORANGEPI ВСЁ ПОДКЛЮЧАЕМ ЧИСТО ПО РАСПИНОВКЕ

Всё зависит от модели orangepi и ssd1306 на всех моделях распиновки разные

gnd - на любой gnd orangepi

vcc - на 3.3v orangepi

sda - sda на orangepi он там один

sck - sck на orangepi он там один

Это в моем случае

На некоторых моделях ssd1306 могут быть другие пины и их может быть больше

ВКЛЮЧАЕМ I2C

ЕСЛИ У ВАС ПОДКЛЮЧЕН ssd1306 И ПОСЛЕ КОМАНДЫ i2cdetect -y 0 ВСЁ РАВНО ВЕЗДЕ ПРОЧЕРКИ НУЖНО ВКЛЮЧИТЬ I2c В СИСТЕМЕ

Система Debian, Ubuntu, Armbian:

Вводим:

sudo orangepi-config

Выбираем System image

Выбираем Bootenv image

Здесь добавляем строчку

 overlays=i2c0 i2c1 i2c2

image

Нажимаем save и перезагружаем orangepi

После перезагрузки вводим i2cdetect -y 0 и получаем image

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

ВКЛЮЧАЕМ SPI

Система Debian, Ubuntu, Armbian:

Вводим:

sudo orangepi-config

Выбираем System image

Выбираем Bootenv image

Здесь добавляем строчки

 spi_spidev1
 param_spidev_spi_bus=0
 param_spidev_spi_cs=0
 param_spidev_max_freq=1000000

image

ВАЖНО! На некоторых платах Orangepi только 1 spi смотрите по распиновке(если у вас только 1 spi и вы напишите spi_spidev то ничего работать не будет!!!) Если на распиновке 2 spi то пишите:

 spi_spidev
 spi_spidev1 

Если 1 то пишите:

 spi_spidev1

image (У меня на orangepi3 lts только 1 spi который на распиновке обозначен как spi1 поэтому в bootenv я пишу spi_spidev1) Перезагружаем апельсинку командой

 reboot

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

 ls -l /dev/*spi*

И если вы всё правильно сделали то он должен выдать spi порты( в моем случае это один) image

И устанавливаем библиотеку spidev для python

 pip install spidev

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

Выбираем пин для вывода:

gpio_out(НОМЕР ПИНА) 

Подаем сигнал на пин:

gpio_up(НОМЕР ПИНА)

Отключаем сигнал на пин:

gpio_down(НОМЕР ПИНА)

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

gpio_rele(НОМЕР ПИНА)

Включаем реле:

gpio_rup(НОМЕР ПИНА)

Отключаем реле:

gpio_rdown(НОМЕР ПИНА)

Добавляем кнопку в систему:

 gpio_button(НОМЕР ПИНА)

Включаем подтягивающий резистор на 1:

 gpio_pull_up(НОМЕР ПИНА)

Включаем подтягивающий резистор на 0:

 gpio_pull_down(НОМЕР ПИНА)

Узнаем значение кнопки для обработчика кнопок:

 butclick(НОМЕР ПИНА)

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

чтобы менять размер текста на экране (ImageFont.truetype) нужно выбрать и скачать нужный вам шрифт и закинуть в папку /usr/share/fonts если такой папки нет создаем её (Один хорошо подходящий шрифт оставил в папке fonts в репозитории просто перенесите его в /usr/share/fonts)

ПРИМЕР ИСПОЛЬЗОВАНИЯ ssd1306

В папке examples есть примеры по работе с 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: #дальше уже работаем с pillow 
    font = ImageFont.load_default()#загружаем дефолтные настройки шрифта
    font = ImageFont.truetype('/НАЗВАНИЕ ШРИФТА', size=18)#Шрифт вы предвадительно скачиваетеи скидываете в системную папку со всеми шрифтами 
    draw.rectangle((0, 0, 128, 64), outline=0, fill=0)#Очищаем поверхность дисплея
    draw.text((0, 0), "Hello world!", font=font, fill=255)#Выводим текст

Изображение выводится так:

    image =Image.open('/Путь к картинке').convert("RGBA")
    draw.bitmap((0, 0), image, fill=255)

photo_2023-01-21_12-54-35

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

Telegram: @Gallusis

Releases

No releases published

Packages

No packages published

Languages