- Saved searches
- Use saved searches to filter your results more quickly
- GallusX/OrangePi-Py
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- Работа с gpio разъемами в Orange pi
- Saved searches
- Use saved searches to filter your results more quickly
- License
- eutim/OPI.GPIO
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
По всём вопросам — telegram: @Gallusis , канал — https://t.me/gallusbots
GallusX/OrangePi-Py
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Устанавливаем всё необходимое
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
sudo apt install i2c-tools
pip install pillow pip install smbus2
Через git с примерами и шрифтами
git clone https://github.com/GallusX/OrangePi-Py cd OrangePi-Py python3 setup.py install
Небольшая библиотека для обучения
И для простого программирования GPIO выходов на OrangePi на языке Python
И управления oled дисплеем ssd1306
После установки проверяем работоспособность
Должен выдать список пинов:
покажет все порты, назначения и состояния
Теперь проверяем i2c-tools
везде прочерки потому что к плате ничего не подключено (Может ещё появится UU и 30 или 20 это скорее всего будет означать что i2c не включился)
Подключаем ssd1306 к плате
СМОТРИМ РАСАПИНОВКИ ДИСПЛЕЯ И ORANGEPI ВСЁ ПОДКЛЮЧАЕМ ЧИСТО ПО РАСПИНОВКЕ
Всё зависит от модели orangepi и ssd1306 на всех моделях распиновки разные
gnd — на любой gnd orangepi
sda — sda на orangepi он там один
sck — sck на orangepi он там один
На некоторых моделях ssd1306 могут быть другие пины и их может быть больше
ЕСЛИ У ВАС ПОДКЛЮЧЕН ssd1306 И ПОСЛЕ КОМАНДЫ i2cdetect -y 0 ВСЁ РАВНО ВЕЗДЕ ПРОЧЕРКИ НУЖНО ВКЛЮЧИТЬ I2c В СИСТЕМЕ
Система Debian, Ubuntu, Armbian:
Нажимаем save и перезагружаем orangepi
После перезагрузки вводим i2cdetect -y 0 и получаем
3с это адресс нашего дисплея
Система Debian, Ubuntu, Armbian:
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 то пишите:
(У меня на orangepi3 lts только 1 spi который на распиновке обозначен как spi1 поэтому в bootenv я пишу spi_spidev1) Перезагружаем апельсинку командой
И если вы всё правильно сделали то он должен выдать spi порты( в моем случае это один)
И устанавливаем библиотеку spidev для python
Добавляем кнопку в систему:
Включаем подтягивающий резистор на 1:
Включаем подтягивающий резистор на 0:
Узнаем значение кнопки для обработчика кнопок:
чтобы менять размер текста на экране (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)
Работа с gpio разъемами в Orange pi
Когда Вы приобретаете одноплатный компьютер, то вероятнее всего Вы подразумеваете его использование только как какой-нибудь сервер. Но еще как контроллер управления чем либо, ведь на таких мини ПК есть gpio разъемы.
Работа с gpio у плат orange pi отличается от raspberry pi. Один и тот-же метод не сработает.
Для управления gpio разъемами в Orangepi служит wiringOP.
Он изначально не установлен на операционных системах под Orange pi. ЧТоб его установить, нужно выполнить следующее:
зайти в привилегированный режим:
apt-get update
apt-get install -y git
С клонировать репозиторий с wiringOP от разработчиков Orange pi из github.
git clone https://github.com/orangepi-xunlong/wiringOP.git
После этого у Вас появится папка wiringOP – в той директории где вы выполняли команду git.
Переходим в эту директорию:
cd wiringOP
Далее собираем программу wirinOP из скаченных исходников.
sudo ./build clean
sudo ./build
После этого можем ввести команду:
gpio readall
И у нас появится распиновка всех контактов:
Собственно по этим пинам можно понять какой пин какую функцию может выполнять. Так-же тут видно какие номера пинов по порядку, какие им присвоены имена как gpio. И какие у них пины согласно распиновки wpi – WiringOP – эта распиновка нужна если Вы будете программировать на питоне и использовать для нее библиотеку wiringop.
Так-же тут еще видно в каком режиме пины. В IN или OUT. Собственно IN это мод на прием, а OUT на отдачу.
Например давайте переведем пит 2 wPi в мод OUT и логический ноль. Для этого служит команда:
gpio mode 2 out
gpio write 2 0
Если хотим подать 1 на выход, то команда будет:
gpio write 2 0
Собственно тут уже можно таким образом управлять реле с логикой 3.3v. Подавая 1 на выход, реле будет включаться подключенное к этому пину.
Так-же есть команда для чтения логической 0 или 1 на входе. Эту нужно например для отслеживания состояния кнопки. Или например состояния датчика движения.
Команда будет такая для пина 2 в wPi:
gpio read 2
Теперь давайте рассмотрим использование wiringOP в Python
sudo apt-get update
Устанавливаем пакеты для скачивания репозитория и работы python
sudo apt-get -y install git swig python3-dev python3-setuptools
Стягиваем с репозитория wiringOP-Python и устанавливаем его:
git clone –recursive https://github.com/orangepi-xunlong/wiringOP-Python -b next
Переходим в скаченную папку:
cd wiringOP-Python
Далее компилируем и устанавливаем то что скачали:
python3 generate-bindings.py > bindings.i
sudo python3 setup.py install
Все, установка закончена. Для проверки, правильно ли мы установили wiringop-python, можно ввести команду:
python3 -c “import wiringpi; help(wiringpi)”
И если она выводит справочную информацию, значит все ОК.
Можем проверить работу с gpio. Например тот-же порт 2 в wPi переведем в режим OUPUT. В Python это нужно сделать так:
python3 -c “import wiringpi; \
from wiringpi import GPIO; wiringpi.wiringPiSetup() ; \
wiringpi.pinMode(2, GPIO.OUTPUT) ; “
Ну а например, чтоб на пин 2 подать логическую единицу, то используем команду:
python3 -c “import wiringpi; \
from wiringpi import GPIO; wiringpi.wiringPiSetup() ;\
wiringpi.digitalWrite(2, GPIO.HIGH)”
Так-же в этой папке есть папка examples и там есть несколько примеров для работы с gpio. Например Blink.
import wiringpi import time import sys from wiringpi import GPIO NUM = 17 #26pin #NUM = 18 #26pin #NUM = 20 #for Orange Pi Zero 2 #NUM = 19 #for Orange Pi 4 #NUM = 28 #40pin wiringpi.wiringPiSetup() for i in range(0, NUM): wiringpi.pinMode(i, GPIO.OUTPUT) ; while True: try: for i in range(0, NUM): wiringpi.digitalWrite(i, GPIO.HIGH) time.sleep(1) for i in range(0, NUM): wiringpi.digitalWrite(i, GPIO.LOW) time.sleep(1) except KeyboardInterrupt: print("\nexit") sys.exit(0)
Где NUM – это номер пина который будет в состоянии HIGH(логической 1) или LOW(логической 0).
На этом можно было бы закончить, но скажу еще пару слов.
Этой статьи бы небыло, так как я в python не силен, я использую для работы с gpio другие платы, такие как esp32 и arduino. Но по работе мне пришлось повозиться с orange pi платой и с ее gpio.
Мне надо было сделать так, чтоб при нажатии на кнопку, срабатывал скрипт .sh в линуксе.
Я взял за основу Blink и немного переделал. Вот что у меня получилось:
PYTHON ПРОГРАММА(СКРИПТ) ДЛЯ ЗАПУСКА SHELL СКРИПТА .sh ПРИ НАЖАТИИ НА КНОПКУ ПОДКЛЮЧЕННУЮ К GPIO ORANGE PI.
import wiringpi import time import os import sys from wiringpi import GPIO #NUM = 17 #26pin #NUM = 18 #26pin #NUM = 20 #for Orange Pi Zero 2 NUM = 10 #for Orange Pi 4 #NUM = 28 #40pin wiringpi.wiringPiSetup() wiringpi.pinMode(NUM, GPIO.INPUT) ; while True: try: if wiringpi.digitalRead(NUM): # wiringpi.digitalWrite(5, GPIO.LOW) os.system("/home/orangepi/scripts/get_dial.sh") time.sleep(0.5) else: # os.system("/home/orangepi/scripts/get_dial.sh") # wiringpi.digitalWrite(5, GPIO.LOW) time.sleep(0.5) except KeyboardInterrupt: print("\nexit") sys.exit(0)
Собственно при нажатии кнопки запускается скрипт /root/test.sh В котором может быть что угодно собственно. У меня там get Запрос.
Надеюсь это было Вам полезно. Спасибо за внимание.
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
A python GPIO library for Orange Pi Zero2, OrangePi Zero 2, Orange Pi3, and Orange Pi Lite2.
License
eutim/OPI.GPIO
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
A modified version of OrangePi.GPIO to bring suport for the Orange Pi Zero2, Orange Pi 3 and the Orange Pi Lite2
sudo apt-get update sudo apt-get install python-dev git git clone https://github.com/eutim/OPI.GPIO cd OPI.GPIO sudo python setup.py install
- GPIO.setboard(GPIO.H616) # Orange Pi Zero2 board
- GPIO.setboard(GPIO.PI3) # Orange Pi3 board
- GPIO.setboard(GPIO.LITE2) # Orange Pi Lite2 board
- Testing Inputs
- Testing Outputs
- Testing I2C
- Testing SPI
- Testing Interrupts
- Testing PWM
- Testing UART
- Testing TWI
- Testing ADC
- Fix BCM mode