mirror of
https://github.com/CopterExpress/clover.git
synced 2026-05-27 05:29:32 +00:00
97 lines
3.7 KiB
Markdown
97 lines
3.7 KiB
Markdown
# Работа с GPIO
|
||
|
||
GPIO (General-Purpose Input/Output) – это тип пинов на Raspberry Pi, напряжение на которых можно программно подавать и измерять. Также на некоторых пинах реализован аппаратный <abbr title="Широтно-импульсная модуляция">ШИМ</abbr> (<abbr title="Pulse-width modulation">PWM</abbr>).
|
||
|
||
> **Info** Используйте [распиновку](https://pinout.xyz), чтобы понять, какие из пинов на Raspberry Pi поддерживают GPIO и ШИМ.
|
||
|
||
Для работы с GPIO на [образе для RPi](microsd_images.md) предустановлена библиотека [`pigpio`](http://abyz.me.uk/rpi/pigpio/). Чтобы взаимодействовать с этой библиотекой, запустите соответствующий демон:
|
||
|
||
```bash
|
||
sudo systemctl start pigpiod.service
|
||
```
|
||
|
||
Для включение автозапуска демона `pigpiod` используйте команду:
|
||
|
||
```bash
|
||
sudo systemctl enable pigpiod.service
|
||
```
|
||
|
||
Пример работы с библиотекой:
|
||
|
||
```python
|
||
import time
|
||
import pigpio
|
||
|
||
# инициализируем подключение к pigpiod
|
||
pi = pigpio.pi()
|
||
|
||
# устанавливаем режим 11 пина на вывод
|
||
pi.set_mode(11, pigpio.OUTPUT)
|
||
|
||
# включаем сигнал на 11 пине
|
||
pi.write(11, 1)
|
||
|
||
time.sleep(2)
|
||
|
||
# отключаем сигнал на 11 пине
|
||
pi.write(11, 0)
|
||
|
||
# ...
|
||
|
||
# устанавливаем режим 12 пина на ввод
|
||
pi.set_mode(12, pigpio.INPUT)
|
||
|
||
# считываем состояние 12 пина
|
||
level = pi.read(12)
|
||
```
|
||
|
||
Для определения номера пина используйте [распиновку Raspberry Pi](https://pinout.xyz).
|
||
|
||
## Подключение сервоприводов
|
||
|
||
Большинство сервоприводов управляются с помощью ШИМ-сигнала, причем крайним положениям привода соответствуют сигналы шириной приблизительно 1000 и 2000 мкс. Значения для конкретного сервопривода могут быть определены экспериментально.
|
||
|
||
Подключите сигнальный провод сервопривода к одному из GPIO-пинов Raspberry. Для управления сервоприводом, подключенного к 13 пину, используйте такой код:
|
||
|
||
```python
|
||
import time
|
||
import pigpio
|
||
|
||
pi = pigpio.pi()
|
||
|
||
# устанавливаем режим 13 пина на вывод
|
||
pi.set_mode(13, pigpio.OUTPUT)
|
||
|
||
# устанавливаем на 13 пине ШИМ сигнал в 1000 мкс
|
||
pi.set_servo_pulsewidth(13, 1000)
|
||
|
||
time.sleep(2)
|
||
|
||
# устанавливаем на 13 пине ШИМ сигнал в 2000 мкс
|
||
pi.set_servo_pulsewidth(13, 2000)
|
||
```
|
||
|
||
## Подключение электромагнита
|
||
|
||

|
||
|
||
Для подключения электромагнита используйте полевой транзистор (MOSFET). Подключите транзистор к одному из GPIO-пинов Raspberry Pi. Для управления магнитом, подключенным к 15 пину, используйте такой код:
|
||
|
||
```python
|
||
import time
|
||
import pigpio
|
||
|
||
pi = pigpio.pi()
|
||
|
||
# устанавливаем режим 15 пина на вывод
|
||
pi.set_mode(15, pigpio.OUTPUT)
|
||
|
||
# включаем электромагнит
|
||
pi.write(15, 1)
|
||
|
||
time.sleep(2)
|
||
|
||
# отключаем электромагнит
|
||
pi.write(15, 0)
|
||
```
|