Python orange pi zero

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

image

image

везде прочерки потому что к плате ничего не подключено (Может ещё появится 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:

image

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

image

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

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

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

 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 то пишите:

image

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

image

И если вы всё правильно сделали то он должен выдать 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

Источник

Читайте также:  Java collection to treeset
Оцените статью