From 17916f931cebe293aa92e02eaf3006022694346b Mon Sep 17 00:00:00 2001 From: Oleg Kalachev Date: Thu, 18 Apr 2019 18:20:03 +0300 Subject: [PATCH] docs: add article on GPIO --- docs/ru/SUMMARY.md | 1 + docs/ru/gpio.md | 94 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 docs/ru/gpio.md diff --git a/docs/ru/SUMMARY.md b/docs/ru/SUMMARY.md index 7118cf7a..ea230263 100644 --- a/docs/ru/SUMMARY.md +++ b/docs/ru/SUMMARY.md @@ -47,6 +47,7 @@ * [Камера \(компьютерное зрение\)](camera.md) * [Светодиодная лента](leds.md) * [Визуализация с помощью rviz](rviz.md) + * [Работа с GPIO](gpio.md) * [Ультразвуковой дальномер](sonar.md) * [Лазерный дальномер](laser.md) * [Работа с SITL](sitl.md) diff --git a/docs/ru/gpio.md b/docs/ru/gpio.md new file mode 100644 index 00000000..4547a868 --- /dev/null +++ b/docs/ru/gpio.md @@ -0,0 +1,94 @@ +# Работа с GPIO + +GPIO (General-Purpose Input/Output) – это тип пинов на Raspberry Pi, напряжение на которых можно программно подавать и измерять. Также на этих пинах реализован аппаратный ШИМ (PWM). + +> **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 + +# устанавливаем режим 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) +```