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
i2cdetect -y 1
везде прочерки потому что к плате ничего не подключено (Может ещё появится UU и 30 или 20 это скорее всего будет означать что i2c не включился)
СМОТРИМ РАСАПИНОВКИ ДИСПЛЕЯ И ORANGEPI ВСЁ ПОДКЛЮЧАЕМ ЧИСТО ПО РАСПИНОВКЕ
Всё зависит от модели orangepi и ssd1306 на всех моделях распиновки разные
gnd - на любой gnd orangepi
vcc - на 3.3v orangepi
sda - sda на orangepi он там один
sck - sck на orangepi он там один
Это в моем случае
На некоторых моделях ssd1306 могут быть другие пины и их может быть больше
ЕСЛИ У ВАС ПОДКЛЮЧЕН ssd1306 И ПОСЛЕ КОМАНДЫ i2cdetect -y 0 ВСЁ РАВНО ВЕЗДЕ ПРОЧЕРКИ НУЖНО ВКЛЮЧИТЬ I2c В СИСТЕМЕ
Вводим:
sudo orangepi-config
Здесь добавляем строчку
overlays=i2c0 i2c1 i2c2
Нажимаем save и перезагружаем orangepi
После перезагрузки вводим i2cdetect -y 0 и получаем
3с это адресс нашего дисплея
Вводим:
sudo orangepi-config
Здесь добавляем строчки
spi_spidev1
param_spidev_spi_bus=0
param_spidev_spi_cs=0
param_spidev_max_freq=1000000
ВАЖНО! На некоторых платах Orangepi только 1 spi смотрите по распиновке(если у вас только 1 spi и вы напишите spi_spidev то ничего работать не будет!!!) Если на распиновке 2 spi то пишите:
spi_spidev
spi_spidev1
Если 1 то пишите:
spi_spidev1
(У меня на orangepi3 lts только 1 spi который на распиновке обозначен как spi1 поэтому в bootenv я пишу spi_spidev1) Перезагружаем апельсинку командой
reboot
После перезагрузки пишем:
ls -l /dev/*spi*
И если вы всё правильно сделали то он должен выдать spi порты( в моем случае это один)
И устанавливаем библиотеку 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)
В папке 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)
По всем вопросам:
Telegram: @Gallusis