КОРЗИНА
магазина
8 (499) 500-14-56 | ПН. - ПТ. 12:00-18:00
ЛЕСНОРЯДСКИЙ ПЕРЕУЛОК, 18С2, БЦ "ДМ-ПРЕСС"

Raspberry для мейкеров #3. Азы: Сервопривод.

Описание:

В этом уроке мы напишем скрипт Python для Raspberry Pi, который будет управлять сервоприводом, подключёнными к Trema+Expander Hat. Сервопривод — механизм с мотором, который можно повернуть на нужный угол. Мы будем использовать сервопривод с пределами угла поворота от 0 до 180 градусов и будем поворачивать его в зависимости от общей загрузки центрального процессора (ЦП) Raspberry. 0 градусов будет соответствовать 0% загрузки, а 180 градусов 100% загрузки. Для красоты можно нарисовать шкалу для сервопривода и прикрепить на качалку сервопривода стрелку.

Нам понадобится:

  • Raspberry Pi
  • Trema+Expander Hat
  • Сервопривод
  • SD карта не менее 8 ГБ
  • Периферия (Клавиатура, мышь, дисплей)
  • Блок питания 6...12 В., 3 А.

Подключение:

Если Ваша Raspberry не настроена, Вы можете воспользоваться этой инструкцией.

Для удобства подключения мы воспользуемся Trema+Expander Hat.

Установим Trema+Expander Hat на Raspberry Pi (в данном случае это Raspberry Pi 3 model B, но процедура для других Raspberry схожая):

Теперь можно нарисовать или распечатать на принтере шкалу для сервопривода и вставить сервопривод в неё:

Далее подключим сервопривод к выводу номер 0 колодки EXT на Trema+Expander Hat и внешнее питание (от 6 до 12 вольт постоянного тока не менее 3 ампер), т.к. сервопривод может потреблят много энергии и это может привести к перезагрузке Raspberry, если питание поступает на серво через USB:

Thonny Python IDE

Для написания скриптов мы будем использовать всё тот же Thonny Python IDE. Если Вы не знаете что это и как его запустить — обратитесь к уроку №1.

Для работы с расширителем выводов установим библиотеку pyiArduinoI2Cexpander. Как устанавливать библиотеки мы описали в статье "Установка и использование модулей (библиотек) Python". Все действия необходимо выполнить так же, заменив pyiArduinoI2Crelay на pyiArduinoI2Cexpander.

Скрипт:

Вводим следующий код в окно редактора:

# Подключаем библиотеку для работы с системой и процессами
import psutil

# Подключаем библиотеку для работы с расширителем
# выводов Trema+Expander Hat
from pyiArduinoI2Cexpander import *

# Создаём переменную для вычисления загрузки ЦП
cpu = 0
# Создаём объект расширителя выводов
exp = pyiArduinoI2Cexpander()

# Входим в бесконечный цикл
while True:

    # Опрашиваем загрузку процессора 20 раз с интервалом в
    # одну десятую доли секунды и вычисляем среднее
    # арифметическое с приведением результата от 0 до 180 градусов
    for d in range(20):
        cpu +=psutil.cpu_percent(.1)
        degree = int(cpu / 20 * 1.8)

    # Устанавливаем сервопривод в полученный ранее угол
    exp.servoWrite(0, degree)

    # Обнуляем переменную загрузки ЦП
    cpu = 0

Нажимаем кнопку «Run»: сохраняем скрипт:

После сохранения программа начнёт выполняться. Сервопривод начнёт реагировать на изменения нагрузки на ЦП. Теперь попробуем открыть браузер (если он ещё не открыт) и посмотрим что произойдёт со стрелкой.

Ссылки:




Обсуждение

Гарантии и возврат Используя сайт Вы соглашаетесь с условями