sonyps4.ru

Raspberry pi 2 схема электрическая. Питание Raspberry Pi с использованием Arduino

С точки зрения внешних интерфейсов Raspberry Pi, как и другие небольшие одноплатные компьютеры, не сильно отличается от обычного настольного ПК. На плате RPi предусмотрены USB порты для подключения клавиатуры и мыши, порт HDMI для подключения дисплея. Однако, благодаря тому, что RPi значительно компактнее и дешевле, чем ПК, становится возможным использовать их в различных системах и приложениях, где ПК или ноутбуки неуместны.

Нередко возникает желание подключить к ПК какие-либо нестандартные «вещи». Возможно, например, что вам захочется использовать компьютер для измерения уровня яркости и автоматического управления освещением, или для подачи звукового сигнала при обнаружении нарушителя.

В более широком плане, речь идет о желании использовать компьютер для управления электронными схемами (выходы) и для получения информации от схем или устройств (входы).

Именно здесь проявляется очевидное преимущество RPi и других SBC, обусловленное ключевым различием между одноплатными компьютерами и ПК: одноплатные компьютеры имеют порты ввода/вывода общего назначения, - то, чего нет у больших ПК (Рисунок 1).

Через эти выводы (штыревые разъемы) RPi может взаимодействовать с электронным миром, состоящим (помимо прочего) из датчиков, индикаторов и исполнительных механизмов.

В статье мы рассмотрим примеры схем, которые можно использовать «как есть» (или изменить и расширить), вместе с примерами кода на нескольких языках программирования.

Разъем расширения Raspberry Pi

На Рисунке 2 показано расположение и назначение выводов разъема расширения Raspberry Pi. Первые выводы подобных разъемов на печатных платах, как правило, могут быть идентифицированы по квадратной контактной площадке на нижнем слое платы. На 40-контактный разъем расширения RPi выведены цифровые входы и выходы, совместимые с логическими уровнями 3.3 В.

Совместимость с логическими уровнями 3.3 В означает, что RPi будет интерпретировать входной уровень близкий к 0 В как логический «0», а уровень выше 2 В как логическую «1». Подача на вход напряжения выше 3.3 может вывести RPi из строя. Соответственно, когда GPIO порт сконфигурирован как выход, RPi будет устанавливать на нем напряжение близкое к 0, либо к 3.3 В.

В статье мы будем говорить о выводах, отмеченных на Рисунке 2 розовым, белым, красным и оранжевым цветом. Остальные порты используются последовательными интерфейсами передачи данных.

Цифровые выходы RPi

Первые шаги: управление светодиодом

Простейший пример использования выходов - управление светодиодом или лампочкой, или каким-нибудь приводом или мотором. Для преобразования выходного сигнала RPi во что-то, что будет управлять нужным устройством, обычно требуется электронная схема. Все, что необходимо для небольшого светодиода - последовательный токоограничительный резистор, защищающий светодиод и выход RPi. Сопротивление резистора выбирается из диапазона 100 Ом … 1 кОм, в зависимости от используемого светодиода и необходимой яркости при установке на выходе логической «1».

Подключение светодиода к контактам разъема GPIO с помощью беспаечной макетной платы показано на Рисунке 3, а сама схема - на Рисунке 4. Соединение GND (0 В) было взято с вывода 6 разъема GPIO, для управления светодиодом используется порт GPIO22 (вывод 15). Можно использовать любой порт GPIO, отмеченный розовым цветом на Рисунке 2.

После того, как выполнены и проверены все соединения, можно приступать к написанию кода или сценария управления светодиодом. Выбор языка зависит от вас. Один из примеров на популярном языке Python содержится в (Листинге 1).

Листинг 1. Пример программы на Python для простого мигания светодиодом.


import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(22, GPIO.OUT)
GPIO.output(22, True)
time.sleep(3)
GPIO.cleanup()

Сохраните код в файл с именем led-test.py , а затем запустите его, выполнив команду:

sudo python led-test.py

Другая программа (Листинг 2) демонстрирует пример управления светодиодом. Светодиод мигает 10 раз. (Примечание: в Python, в отличие от других языков программирования, важно использование отступов в коде).

Листинг 2. Исходный код программы на Python (светодиод мигает 10 раз).

# Светодиод подключен к GPIO22 (контакт 15)
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
for x in range(0,10):
GPIO.setup(22, GPIO.OUT)
GPIO.output(22, True)
time.sleep(0.05)
GPIO.output(22, False)
time.sleep(0.45)

GPIO.cleanup()

Другой способ управления портами GPIO основан на использовании Shell-скрипта (сценария оболочки). Этот метод кажется немного более сложным (если вы не любите писать скрипты), но он хорош просто для расширения кругозора, поскольку многие языки программирования часто позволяют запускать командные скрипты, и в случае необходимости это может быть одним из быстрых способов управления портами GPIO из других языков. Кроме того, описанный в Листинге 3 способ является стандартным для различных платформ, поэтому ваш код может быть перенесен на другие платы.

Листинг 3. Командный скрипт (Shell-скрипт) для управления светодиодом, подключенным к GPIO22 Raspberry Pi.

#!/bin/sh
GPIO_PATH=/sys/class/gpio
LED_PIN=22 #GPIO 22 is pin 15
echo "$LED_PIN" > $GPIO_PATH/export
echo "out" > $GPIO_PATH/gpio$LED_PIN/direction
echo "1" > $GPIO_PATH/gpio$LED_PIN/value
sleep 1
echo "$LED_PIN" > $GPIO_PATH/unexport

Первая строка скрипта выглядит как комментарий, но она указывает оболочке Linux, что делать со скриптом при выполнении, поэтому изменять ее нельзя. Остальные строки скрипта используются для контроля соответствующего GPIO порта, конфигурирования его как выхода, установки на нем высокого уровня и выполнения задержки на 1 с. В конце порт освобождается, чтобы дать возможность использовать его в других программах.

Другим распространенным языком программирования, с которым вы можете встретиться, является Си, или его старший брат Си++. Примеры исходного кода на Си или Си++ будут приведены далее, когда мы приступим к работе с цифровыми входами.

Генератор тональных сигналов

Более интересным примером может служить использование нескольких портов GPIO для управления тональным генератором. У RPi есть разъем для подключения наушников, но часто для оповещения о событиях (например, для будильника) достаточно простого сигнала или серии сигналов разной тональности.

Принципиальная схема простого генератора звуковых сигналов, выполненного на микросхеме интегрального таймера ICM7555, изображена на Рисунке 5. Вид конструкции, собранной на макетной плате, показан на Рисунке 6. Меняя номиналы резистора и конденсатора, можно создавать разные тональные сигналы и звуки.

Управление генератором осуществляется посредством двух портов GPIO RPi. Один выход (GPIO22) используется для включения или выключения звука, а второй (GPIO27) - для переключения между двумя альтернативными частотами сигнала. При желании можно выбрать другие тона, изменив номиналы компонентов C1, R1 и R2.

Исходный код программы на языке Python, генерирующей несколько звуковых эффектов, приведен в Листинге 4. Сохраните код в файле с именем tone-test.py и затем запустите на выполнение командой

sudo python tone-test.py.

Листинг 4. Программа управления генератором звуковых сигналов.

import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(22, GPIO.OUT) # Вкл/Выкл генератора
GPIO.setup(27, GPIO.OUT) # Изменение тональности

GPIO.output(22, True)
for x in range(0,5):
GPIO.output(27, True)
time.sleep(0.1)
GPIO.output(27, False)
time.sleep(0.2)
GPIO.output(22, False)
time.sleep(0.5)

For x in range(0,5):
GPIO.output(22, True)
time.sleep(0.1)
GPIO.output(22, False)
time.sleep(0.2)
GPIO.output(27, True)
time.sleep(0.2)

For x in range(0,5):
GPIO.output(22, True)
time.sleep(0.05)
GPIO.output(22, False)
time.sleep(0.05)

For x in range(0,10):
GPIO.output(22, True)
time.sleep(0.1)
GPIO.output(22, False)
time.sleep(0.1)
time.sleep(1)

GPIO.cleanup()

Обратите внимание, что схема питается напряжением 3.3 В (вывод 1 разъема GPIO). Используйте этот источник только в том случае, если уверены, что ваша схема не потребляет значительный ток. Шину питания 3.3 В можно нагружать током до 50 мА. При необходимости можно воспользоваться отдельным регулятором напряжения 5 В - 3.3. В и подключить его к источнику питания 5 В, доступному на выводе 2 разъема GPIO.

Рассмотренные выше схемы питаются низким напряжением и потребляют небольшой ток, но иногда необходимо управлять достаточно мощными внешними устройствами. Несколько типовых способов решения подобных задач описаны ниже.

Подключение к 5-вольтовым логическим устройствам

Использование RPi для управления 5-вольтовыми устройствами не потребует каких-либо дополнительных схем. Логические входы устройства с напряжением питания 5 В будут нормально функционировать с выходными сигналами 3.3 В портов RPi.

Маломощные светодиоды

Для маломощных синих и белых светодиодов может потребоваться напряжение выше 3.3 В. Проще всего управлять единичным светодиодом с помощью транзисторного ключа, коммутирующего ток шины 5 В (Рисунок 7). Сопротивление резистора R1 рассчитывается исходя из технических характеристик конкретного светодиода, транзистор - любой n-p-n типа.

Мощные устройства

Самым простым и распространенным способом управления мощными устройствами, питающимися от источника переменного или постоянного тока (но не от сети), является использование реле с транзисторным ключом (Рисунок 8). Подойдут практически любые n-p-n транзисторы, в частности, популярные BC547B, 2N3904 и BC549. При этом, если внешнее устройство может работать от 5 В, подать питание на реле можно с вывода 2 разъема GPIO. Но и в этом случае не следует забывать о токе потребления. В противном случае реле может быть подключено к внешнему источнику питания с соблюдением мер предосторожности, исключающих попадание внешнего напряжения на RPi.

Устройства c питанием от электросети

Обращение с любыми схемами или устройствами, непосредственно управляющими приборами, подключенными к сети переменного тока, требует особой осторожности. Большинство из них просто не отвечает стандартам безопасности, несмотря на то, что некоторые изготовители утверждают обратное. Достаточно безопасный подход заключается в том, чтобы найти готовое решение дистанционного управления авторитетного производителя, предлагаемое авторитетным поставщиком, в котором для управления устройствами, питающимися от сети, используются инфракрасные или беспроводные технологии. Например, компания Energenie предлагает сетевые розетки с управлением по радиоканалу в комплекте с небольшим модулем радиопередатчика (Рисунок 9), подключаемым непосредственно в разъем GPIO платы RPi, а также примеры программ на Python.

Группа реле, светодиодов или иных устройств

Для управления несколькими светодиодами, реле или другими устройствами, которые питаются от 12 В и потребляют менее 200 мА, можно использовать древнюю (выпускаемую более 25 лет) микросхему ULN2803. Микросхема представляет собой набор из восьми ключей на основе транзистора Дарлингтона. Один из вариантов подключения микросхемы ULN2803 к RPi показан на Рисунке 10.

Маломощные двигатели постоянного тока

Оптимальным решением для управления электродвигателями постоянного тока с помощью RPi является применение специализированных драйверов или плат расширения, к некоторым из которых можно подключать шаговые двигатели или несколько бесщеточных двигателей.

Многие наверняка знают, что подать питание на Arduino от Raspberry Pi не трудно, для этого просто нужен USB шнур. Обратная задача выглядит сложнее, так как у большинства контроллеров Arduino нет USB выхода (Due - исключение). Тем не менее, это возможно сделать с помощью пинов GPIO, и я хочу рассказать о конкретном примере для Arduino Nano V3.0 и Raspberry Pi B rev.2. Помимо самой подачи питания, также расскажу как можно контроллировать это питание используя кнопку и MOSFET транзистор.

Теоретическая возможность
Большинство Arduino-совместимых контроллеров изпользуют 5V пины. Исключение составляет разве что Arduino Due и 3.3V выход из Arduino, но сейчас не об этом. Также известно, что один из способов подать питание на Raspberry Pi - это использование 5V и GND пинов на 26-ти контактном разъеме P1:

Казалось бы, что решение очевидно - надо подсоединить Raspberry Pi к любому из пинов Arduino, и все заработает. Моя попытка сделать это привела к тому, что Raspberry Pi засветил светодиодом PWR, но светодиод ACT так и не зажегся. Причина - очень маленькая сила тока от пинов Arduino (порядка 40-50 мА). Но у Arduino есть отдельный пин 5V, который (согласно ссылке) может выдавать около 400-500 мА. Теперь необходимо проверить, хватит ли такого тока для питания Raspberry.

Для нормального питания Raspberry Pi с двумя подключенными USB устройствами необходимо порядка 700 мА. Каждое USB устройство может потреблять до 140 мА (). Малина может потреблять еще больше тока, если она разогнана (моя - нет). Таким образом, если использовать неразогнанную RPi без USB устройств, то силы тока от Arduino 5V пина должно вполне хватить.

Для того чтобы контроллировать подачу питания, необходимо еще несколько ингредиентов: кнопка питания и что-то, способное управлять большими токами. Я для этих целей использовал MOSFET транзистор. Перейдем непосредственно к использованным частям.

Необходимое аппаратное и программное обеспечение
Я использовал следующие «железные» части:
  • Raspberry Pi B rev. 2;
  • Arduino Nano V3.0;
  • кнопка для контроля питания (я использовал кнопку с фиксацией и сигнальным проводом);
  • MOSFET транзистор (у меня оказался IRF530N);
  • Breadboard и несколько проводов.
Для прошивки Arduino понадобится IDE, я использовал версию 1.5.8 BETA, но стабильная 1.0.6 тоже подойдет. Также понадобится моя маленькая библиотека для PowerButton (ссылка в конце статьи в разделе про утилиты).
Схемы
Схема подключения выглядит так:

Принципиальная схема так:

Пояснения к схемам:

  1. D2 подсоединен к пину SIG у кнопки.
  2. D4 подсоединен к пину VCC у кнопки.
  3. D5 подсоединен к затвору MOSFET.

Cоединение c D2 пином не случайно: библиотека для кнопки использует прерывания, а у Arduino Nano только пины D2/D3 предназначены для этих целей (проверить какие пины на вашей Arduino поддерживают прерывания можно ).

Исходный код программы для Arduino
#include

#define POWER_PIN_SIG 2
#define POWER_PIN_VCC 4
#define POWER_FET_GATE 5
#define POWER_PIN_INT 0

PowerButtonSwitch pbs;

void onPowerOn() {
Serial.println ("Power On" ) ;
digitalWrite(POWER_FET_GATE, 1 ) ; // Открываем затвор (gate)
}

void onPowerOff() {
Serial.println ("Power Off" ) ;
// Закрываем затвор (gate)
}

void setup() {
Serial.begin (9600 ) ;

// Вывод сигнала от Arduino к затвору MOSFET (gate)
pinMode(POWER_FET_GATE, OUTPUT) ;
digitalWrite(POWER_FET_GATE, 0 ) ;

// Начальная настройка кнопки питания
pbs.setupPowerButton (POWER_PIN_SIG, POWER_PIN_VCC, POWER_PIN_INT) ;

// Считываем текущее значение
// Если есть сигнал от кнопки,
// включаем Raspberry Pi
int st = pbs.getSwitchStatus () ;
if (st == POWER_ON) {
onPowerOn() ;
}

// Добавляем обработчики событий
pbs.onPowerOn (onPowerOn) ;
pbs.onPowerOff (onPowerOff) ;
}

void loop() {
// Пустой цикл
delay(1000 ) ;
Serial.println ("No actions" ) ;
}

Большинство действий на себя берет библиотека, так что код очень прост.

Тестирование решения
Короткое видео с тестированием:

Как видно, визуально все работает. Но все-таки надо проверить напряжение между пинами TP1/TP2 (методика ). У меня получилось значение ~4.6V, рекомендуемое значение больше 4.75V.
Заключение
Несмотря на то, что все работает, все-таки есть подозрение что при подключении периферии тока от 5V пина Arduino будет недостаточно. MOSFET и кнопка работают отлично в паре, такая связка может пригодится для дальнейших проектов.

Утилиты и библиотеки, использованные для написания:

  • Fritzing : использовалась для рисования схем, доступна .
  • собственно библиотека для PowerButton : можно взять с GitHub .

Так как это мой первый пост, отзывы и комментарии будут очень полезны.

Raspberry Pi – это инновационный продукт от английских разработчиков. Их главной целью было популяризировать компьютерное образование среди широких слоев населения, сделать программирование более обширной и доступной дисциплиной и побудить больше людей создавать что-то новое при помощи новых технологий.

Название продукта Raspberry Pi означает «малиновый пирог» , компания-производитель таким образом сделала акцент на том, что этот компьютер предназначен в первую очередь для детей.

Что представляет собой это изобретение, и каково применение Raspberry Pi в современном мире, об этом мы и расскажем ниже.

Особенности компьютера Raspberry Pi

Устройство Raspberry Pi представляет собой маленький компьютер в виде одной платы без корпуса. Разработчики призывают так детей и взрослых обращать внимание не только на пользование компьютерами, но и на его изучение изнутри, а также предлагают задействовать фантазию и сделать другим что-то свое на базе этого компьютера.

Как полагают разработчики, устройство Raspberry Pi должно выполнять такие образовательные цели:

  • заинтересовывать школьников развивать навыки программирования;
  • способствовать в начинаниях молодых программистов;
  • помогать опытным компьютерщикам открывать новые горизонты, и делать новые достижения в области программирования.

В родной стране устройства Raspberry Pi – Великобритании, его полный комплект можно приобрести всего за 75 фунтов. Сам комплект при этом состоит из таких составляющих:

  • самого мини-компьютера Raspberry Pi модели В;
  • микро- CD (8 гигабайт);
  • клавиатуры;
  • оптической мыши;
  • микро-адаптера CD Card ;
  • источника питания;
  • кабелей HDMI и микро USB .

Первая партия Raspberry Pi производилась в Поднебесной, но с конца 2012 года производство целиком перенесено в Великобританию, на завод в Пенкойде (Уэльс). В среднем, завод производит порядка 40 тысяч мини-компьютеров Raspberry Pi в неделю.

Технические характеристики Raspberry Pi

Итак, какие же технические характеристики этого уникального компьютера без корпуса, давайте выясним:

Применение компьютера Raspberry Pi для дома

Наиболее применяемая модель мини-компьютера Raspberry Pi – это модель В на 215 Мб оперативной памяти с поддержкой Ethernet . Также есть еще одна модификация прибора, в которой компоненты размещены более компактно, также она имеет четыре порта USB , количество портов ввода и вывода GPIO в ней существенно больше, кроме того, отсутствует композитный видеовыход.

Сферы применения компьютера Raspberry Pi достаточно широки. Несмотря на то что этот прибор не слишком мощный, но при этом это вполне полноценный компьютер. Если вам нужна машина для решения простейших задач, которые не требуют применения мощных ресурсов в плане вычисления, то вы смело можете подключать к устройству Raspberry Pi стандартные элементы машины:

  • монитор;
  • мышь;
  • клавиатуру;
  • подключение любого дистрибутива ОС Linux .

В домашних условиях устройство Raspberry Pi вы можете использовать в таких целях:

  • создание домашнего медиа-сервера;
  • как сервер хранения данных;
  • в качестве «мозгового центра» для автоматизированных станков или роботов;
  • как сервер домашней автоматизации (или системы «умный дом»).

Как мы видим, сферы применения Raspberry Pi для частных нужд могут быть разные. В основном – это узкопрофильные задачи, связанные с работой программистов или других разработчиков. А если говорить о широком применении, то стоит ознакомиться с особенностями применения Raspberry Pi для систем домашней автоматизации или так называемого умного дома . Давайте рассмотрим практическую сторону этого вопроса.

Любая система домашней автоматизации или же так называемый умный дом является достаточно сложной и многоструктурной. Помимо того, что она призвана выполнять те или иные сценарии, которые задаются ей пользователем, она имеет свойство принимать свои собственные решения в определенной нештатной ситуации. Смело можно сказать, что такая система имеет задатки искусственного интеллекта .

Многие сегодня применяют понятие «умный дом» ко всему, например:

  • сигнализации GSM ;
  • датчику протекания воды;
  • световому управлению датчикам движения и т.д.

Все эти явления могут входить в структуру домашней автоматизации, но являться ею по отдельности они не могут.

Система домашней автоматизации («умный дом») включает в себя такие компоненты:

  • центральный сервер;
  • он связан посредством интерфейса RS485 с контроллерами, которые стоят в каждой комнате и помещении дома;
  • к контроллерам подключены те или иные управленческие устройства для защиты, контроля и регулирования работы системы.

Такая сетевая архитектура данной системы хороша тем, что у владельца дома нет необходимости протягивать от каждого устройства к серверу неудобные провода, а нужно просто соединить контролеры, к которым они подключаются посредством одного кабеля UTP. Одна пара его проводов применяется для интерфейса RS485, а другие питают датчики и контроллеры. Стоит отметить, что структура работы предусмотрена таким образом, что если выйдет из строя один из контроллеров или несколько, или даже будет нарушена работа центрального сервера, на работу системы в целом это влиять не будет.

А мини-компьютер Raspberry Pi в данной системе и является центральным сервером . На него нужно установить Веб-сервер, с помощью которого любой пользователь посредством своего мобильного устройства (смартфона, планшета или ноутбука) сможет посредством обычного браузера иметь данные обо всех процессах, которые происходят в доме и управлять этими процессами. Доступ к серверу пользователь имеет посредством логина и пароля через домашнюю локальную сеть или через глобальную сеть, если входить в нее через Wi - Fi -устройство.

К последовательному порту устройства UART посредством согласовывающего прибора через интерфейс RS485 подключают контроллера, которые оснащены разным набором выводов или вводов. Также к этому же интерфейсу можно подключать GPS -модель и с его помощью иметь доступ в систему посредством мобильной или стационарной телефонной связи, если пользователь находится в зоне, где нет доступа в Интернет. Доступ разрешается также через пароль, как и в предыдущем случае. Еще одно устройство в сети – это радиомодуль , с помощью которого можно привязать к общей системе все радиодатчики и пульты дистанционного управления.

Итак, существующая на сегодняшний день версия системы домашней автоматизации на базе компьютера Raspberry Pi состоит из центрального сервера и контроллеров с интерфейсом RS485, которые нужны для связи с сервером. Их описание выглядит так:

А сейчас давайте узнаем, каким образом устройство Raspberry Pi было применено изобретателями для создания инновационных изделий . Рассмотрим некоторые из них.

Конструктор Kano

Конструктор Kano для детей – это не просто обычный конструктор, это модульный компьютер, собрать такую головоломку сможет даже ребенок. Набор конструктора включает в себя следующее:

Таким образом, даже ребенок может сам собрать компьютер, который затем подключается к монитору или телевизору посредством HDMI -порта .

Такой конструктор изначально был создан для детей, но стал популярным и среди взрослых. Средства на разработку и реализацию этого проекта были собраны посредством платформы для сбора средств на творческие изобретения. Благодаря собранному компьютеру можно выполнять такие действия:

  • записывать музыку;
  • смотреть видео в формате HD ;
  • писать программы;
  • создавать свои игры.

Летающее устройство SkyJack

Другие изобретатели на базе компьютера Raspberry Pi создали аппарат-беспилотник SkyJack, который управляется посредством Wi - Fi соединения. Такой аппарат способен брать вертолетную высоту, отслеживать пути военных вертолетов и управлять ими, также с его помощью можно перехватывать радиосигналы и создавать помехи. Однако, несмотря на такие возможности, аппарат разрешен для массового пользования из-за своего небольшого радиуса действия.

Poppy: робот-инопланетянин

Робот Poppy был создан посредством трехмерной печати французской компанией INRIA Flowers . Робот управляется посредством мини-компьютера Raspberry Pi. Конструкция робота повторяет биологическое строение человека, он имеет суставы, позвоночник и сухожилия, его походка похожа на человеческую, он ходит, переступая с пятки на нос и равномерно руководить центом своей тяжести.

Что такое No More Woof?

No More Woof – это прибор, который пока находится на стадии разработки, и создается на базе Raspberry Pi. С его помощью хозяин будет понимать, что хочет его пес. Так, прибор будет прикрепляться к голове животного и работать по принципу электроэнцефалографа, то есть считывать информацию с головы собаки и передавать ее хозяину посредством Raspberry Pi. Когда подобный прибор будет готов и каким образом он будет точно использоваться, пока неизвестно, но подобные гарнитуры, пусть не настолько совершенные, уже применялись профессиональными кинологами.

Все видят, что с наступлением нового тысячелетия интерес к компьютерам у нового поколения и не только является исключительно потребительским. Дети не хотят учиться программировать и создавать что-то новое, а хотят быть исключительно «юзерами». Разработчики Raspberry Pi уверены, что их устройство вернет былой интерес людей к изучению вычислительных наук и заставит их не только пользоваться новыми технологиями, но и создавать их.

Напоминаем, что попытки повторить действия автора могут привести к потере гарантии на оборудование и даже к выходу его из строя. Материал приведен исключительно в ознакомительных целях. Если же вы собираетесь воспроизводить действия, описанные ниже, настоятельно советуем внимательно прочитать статью до конца хотя бы один раз. Редакция 3DNews не несет никакой ответственности за любые возможные последствия.

Стыдно признаться, но Raspberry Pi мы заполучили больше года назад и да, не написали тогда про него ни строчки, хотя и трёхмесячное ожидание было томительным, и радость от получения посылки из Туманного Альбиона была искренней. Оно, наверное, и к лучшему. За год вокруг Raspberry Pi образовалось приличных размеров сообщество пользователей, разработчиков и компаний, которые явили миру немалое количество аксессуаров, проектов и программного обеспечения. Да и сам одноплатный компьютер успел претерпеть некоторые изменения в аппаратной части — в новых версиях убрали ряд недочётов и в два раза увеличили объём RAM у модели B.

История Raspberry Pi

Вообще история развития и появления Raspberry Pi не так проста. Первый прототип этого устройства появился в году. Уже тогда он должен был стоить $25 и предназначался для обучения школьников азам компьютерных премудростей — тому, что в англоязычной литературе принято называть Computer Science (CS), а у нас не совсем корректно зовётся информатикой (о терминологии спорят до сих пор). Основателям проекта — сотрудникам и преподавателям Компьютерной лаборатории Кембриджского университета — не нравился тот факт, что с каждым годом уровень подготовки абитуриентов неуклонно снижался. Если в 90-е годы к ним, как правило, приходили учиться молодые люди, не понаслышке знакомые с программированием, то в 2000-х типичный абитуриент был разве что немного знаком с веб-дизайном.

Сожаление разработчиков Raspberry Pi понятно, ведь их молодость пришлась как раз на время появления и расцвета первых по-настоящему домашних «персоналок» Amiga, BBC Micro, Spectrum ZX и Commodore 64. Пользователи этих ПК порой попросту вынуждены были заниматься программированием, если не находили подходящего софта для своих задач. Причём нередко надо было не просто уметь писать код, но и хорошо понимать принципы работы железной составляющей, умело обходить имеющиеся ограничения и различными ухищрениями добиваться максимальной производительности своего творения. Самые продвинутые брали в руки паяльник, ведь периферии поначалу тоже было немного. А для некоторых это и вовсе стало поводом открыть свой «свечной заводик».

Впрочем, все мы знаем, что в 90-х произошло с платформой Wintel, которая стала фактически монополистом на рынке ПК и в итоге избавила пользователей от необходимости осваивать программирование. В школах тоже решили переключиться на изучение основ работы с одним известным офисным пакетом и создание простеньких HTML-страничек. Потом лопнул пузырь доткомов, стали массово распространяться игровые приставки и персональные компьютеры. В общем, жизнь простых пользователей заметно упростилась, а ряды энтузиастов заметно поредели. Такая ситуация не устраивала преподавателей — и они загорелись идеей создания платформы, которая возродила бы интерес к самостоятельному изучению этой темы. Так ли уж всё печально, однозначно сказать трудно, но вдохновлялись создатели историей некогда легендарного учебного компьютера BBC Micro , не рассчитывая, впрочем, коренным образом изменить ситуацию с интересом к Computer Science.

Параллелей между Raspberry Pi и BBC Micro не так уж мало. Оба имеют две аппаратные, незначительно различающиеся версии — Model A и Model B. Оба основаны на RISC-подобной архитектуре, причём железо в обоих случаях используется оптимальное, хотя и не самое продвинутое. RISC OS тоже не забыли портировать. Задача у них одна и та же — заинтересовать подрастающее поколение компьютерными технологиями на достаточно продвинутом уровне. BBC Micro планировалось продать не более 12 тысяч штук, а за 10 с лишним лет в итоге было продано около полутора миллионов. Пробная партия Raspberry Pi объёмом 10 000 экземпляров разошлась за несколько минут, причём поначалу действовало правило «одна штука в одни руки». Представитель одного из двух официальных дистрибьюторов «сердечно» попросил пользователей перестать обновлять страничку онлайн-магазина, так как сервера попросту не справлялись с нагрузкой. Год спустя, во время старта продаж в США история повторилась . На текущий момент, то есть почти через полтора года после запуска, продано более полутора миллионов устройств, и это, похоже, не предел.

Скоро сказка сказывается, да не скоро дело делается. Ещё пара лет после появления первого прототипа ушла на создание различных вариантов ПК, пока в 2008 году не стало ясно, что процессоры для мобильных устройств стали доступными и достаточно мощными для работы с медиаконтентом и именно их, а не микроконтроллеры, следует использовать для претворения идеи в жизнь. В 2009 году была создана благотворительная организация Raspberry Pi Foundation, в задачи которой входит разработка и продвижение одноимённого компьютера. Два года потребовалось на создание аппаратной и программной части будущего устройства, заключение договоров и соблюдение прочих формальностей. В какой-то момент даже была идея сделать мини-ПК в виде большой флешки - с одной стороны USB-порт, а c другой HDMI-выход. Подобные устройства с Android на борту сейчас в огромных количествах клепают китайские компании. Наконец, в 2011 году появились первые альфа- и бета-версии плат. И только в начале прошлого года первая партия Raspberry Pi отправилась на сборочный конвейер, а до заказчиков она добралась ближе к лету, потому что китайский подрядчик умудрился ошибиться при сборке, что вызвало дополнительные затраты времени на исправление ошибки.

Заметьте, Raspberry Pi — по сути некоммерческий проект. Так что нет ничего удивительного в том, что на его разработку ушло столько лет. Одновременно это ответ на недовольные возгласы в духе «А почему процессор такой, а не такой-то? Где мой гигабайт памяти? Нельзя что ли было добавить поддержку SATA? Почему нет модуля Wi-Fi/3G/Bluetooth?». Помилуйте, вам за $25 (или $35) предоставили добротную машинку для домашних экспериментов и «наколенных» проектов. В конце концов, новичку проще разобраться с Raspberry Pi, чем с микроконтроллерами; он намного удобнее и функциональнее плат мини-роутеров, которые нередко используются в исследовательских задачах ; его цена заметно ниже, чем у всех остальных одноплатных решений , пусть и более функциональных. Получается, что конкурентов у Raspberry Pi пока что нет. Ну что же, мы подробно рассказали об истории создания этого проекта, но до сих пор ни разу не обмолвились о том, что он собой представляет, что с ним можно сделать и какие у него недостатки.

⇡ Технические характеристики и возможности

Raspberry Pi называют одноплатным компьютером размером с кредитную карту. На самом деле сама плата чуть крупнее — 85,6x56x21 мм — и не имеет скруглённых краёв, к тому же некоторые порты попросту торчат снаружи, не говоря уж про карту SD, которая более чем на половину выпирает за пределы платы. Решить эту проблему могут «короткие» адаптеры для micro-SD. Весит устройство всего 54 грамма. Raspberry Pi выпускается в двух версиях — Model A и Model B. У Model A нет порта Ethernet, один порт USB 2.0 и 256 Мбайт RAM, а стоит она $25. Model B оснащена портом Ethernet 10/100 Мбит/с, двумя портами USB 2.0, объём оперативной памяти у неё в два раза больше. Всё это удовольствие продаётся уже за $35. Только учтите, что это «чистая» цена, без учёта возможных налогов и расходов на доставку. Нам, к примеру, приобретение Model B обошлось чуть ли не два раза дороже. Также при покупке стоит обратить внимание на маркировку SoC. Номер партии для «старых» версий Model B с 256 Мбайт RAM начинается с K4P2G, а у ревизии с 512 Мбайт памяти — с K4P4G.

Схема Raspberry Pi Model с www.raspberrypi.org

По идее, начиная с этого года все Raspberry Pi Model B должны иметь полгигабайта RAM, но на складах перекупщиков вполне могли заваляться более ранние модели. Лицензией на производство плат обладают компании Premier Farnell, RS Components и Egoman. Причём последняя выпускает платы красного цвета, которые могут предлагаться только на китайских территориях. К первой годовщине проекта RS Components выпустили юбилейную партию плат синего цвета объёмом 1000 штук. Эти же компании имеют право продавать Raspberry Pi, а в США распространением занимается Allied Electronics. Так что все остальные магазины попросту закупают большие партии устройств у этой четвёрки и перепродают конечным потребителям. Обе модели плат от разных производителей (сборкой занимаются заводы Sony, Qisda и Egoman), имеют некоторые несущественные различия , но по большому счёту они идентичны.

Основой Raspberry Pi является система-на-кристалле, Broadcom BCM2835 (линейка BCM2708), которая включает процессорное ядро ARM11 с базовой частотой 700 МГц (возможен разгон до 1 ГГц) и графическое ядро Broadcom VideoCore IV. Из-за того, что использована ныне слегка устаревшая архитектура ARMv6, ряд дистрибутивов не поддерживают данный процессор. К ним относится, например, Ubuntu. Про Android тоже нельзя сказать, что он хорошо работает. С другой стороны, разработчики приложили максимум усилий для того, чтобы как следует подготовить ОС к работе на данном железе, чего, кстати говоря, не скажешь о многих других одноплатных ARM-компьютерах. GPU поддерживает стандарты OpenGL ES 1.1/2.0, OpenVG 1.1, Open EGL, OpenMAX и способен кодировать, декодировать и выводить Full HD-видео (1080p, 30 FPS, H.264 High-Profile). Для аппаратного ускорения MPEG-2 и VC-1 лицензии придётся докупать отдельно, и это ещё один повод напомнить, что стоимость лицензий и патентных отчислений вносит далеко не самую маленькую лепту в конечную цену почти любого высокотехнологичного устройства.

Чип памяти производства Samsung или Hynix напаян прямо поверх основного чипсета, так что увеличить RAM самостоятельно не получится. Память здесь общая, поэтому пользователь сам выбирает, сколько мегабайт отдать GPU. Видеовыходов два — композитный RCA (576i или 480i, PAL-BGHID/PAL-M/PAL-N/NTSC/NTSC-J) и HDMI 1.3a с поддержкой HDCP и протокола CEC (управление с одного ПДУ всеми мультимедийными устройствами). Так что для создания простенького медиацентра Raspberry Pi вполне подойдёт, а наличие готового решения Raspbmc значительно упрощает задачу. Выбор именно таких видеовыходов объясняется очень просто — компьютер, как в давние времена, рассчитан на подключение к телевизору, а не к мониторам. Поэтому нет, например, разъёма DVI. Ну и ладно, переходник с HDMI можно купить самому. (Сами видите, столько всего ещё можно или даже нужно докупить к этой плате ) Звук либо передаётся через HDMI, либо выводится через обычное 3,5-мм гнездо.

Встроенное устройство для чтения карт памяти гарантированно работает с большинством SD-карт объёмом до 32 Гбайт. Загружаться Raspberry Pi умеет только с карточек SD. Если точнее, то сама ОС может располагаться на USB-накопителе, но вот загрузчик всегда должен быть на SD. Кнопок включения и сброса нет — устройство само включается при подаче питания. Питается Raspberry Pi от порта micro-USB или с пары выделенных выводов GPIO. Для Model A рекомендуется источник на 5 В и 500-700 мА, а для Model B на 5 В и 700-1200 мА. То есть порта USB 3.0 или зарядного устройства для телефона должно хватить, хотя лучше подобрать более стабильный источник питания. Сами платы потребляют чуть меньше, но часть энергии требуется для работы подключенных к USB-портам устройствам. Альтернативный вариант — питание от подключенного к плате USB-хаба с отдельным БП или аккумуляторов, но это не самое лучшее решение. Кстати, контроллер Ethernet в Model B тоже «висит» на шине USB. Индикация минимальная — на плате распаяно пять светодиодов. Три из них указывают на активность и режим работы Ethernet, а ещё два сигнализируют о наличии питания и работе с SD-картой.

А теперь — самое интересное: набор низкоуровневых интерфейсов, которые позволяют подключать к Raspberry Pi платы расширения, внешние контроллеры, датчики и прочие аксессуары. Во-первых, на плате есть 15-пиновые слоты CSI -2 для подключения камеры и DSI для установки дисплея. Во-вторых, имеется колодка на 26 линий ввода-вывода общего назначения (GPIO, General Purpose Input/Output), из которых по факту для управления доступно только 17 — не густо, но и не пусто. На них же реализованы интерфейсы UART, консольный порт, SPI и I²C. На новых ревизиях плат разведены, но не распаяны ещё четыре GPIO, дополнительно дающие I²C и I²S. Если вам не знакомы все эти аббревиатуры, то не пугайтесь — это названия широко распространённых в микроэлектронике стандартов подключения одних устройств к другим. Использование GPIO — это как раз самое интересное и творческое применение Raspberry Pi.

Впрочем, недостатков у него тоже хватает. В нём, к примеру, нет собственных часов реального времени (Real Time Clock, RTC). Тех самых, которые «помнят» текущее время и идут сами по себе. Поэтому единственный способ получения времени - это синхронизация с NTP-серверами. SoC содержит в себе цифровой сигнальный процессор (DSP), но полного доступа к его API, по-видимому, до сих пор нет. Выводы GPIO никак не защищены от короткого замыкания, поэтому ошибка в монтаже может сгубить весь мини-ПК. Также они способны обрабатывать только цифровые сигналы. Видеовыходы не могут одновременно выводить картинку. Аудиовхода вообще нет. В общем, недостатков у Raspberry Pi хватает. А ещё его пример хорошо иллюстрирует процесс разработки современных устройств. Взять те же часы. Они оказались на удивление дорогим компонентом, от которого решено было отказаться. При этом разработка устройства происходила на добровольных началах, то есть никто за неё не платил. Стоимость компонентов снижается при увеличении заказа, а первую партию в 10000 штук совсем уж серьёзной не назовёшь. Сборка, доставка, налоги, пошлины, лицензии и так далее — всё это требует денег. Да и дистрибьюторы тоже хотят получить свою копеечку. И всё равно в итоге удалось уложиться в $25.

Одноплатный мини-ПК Raspberry Pi
Model A Model B
Цена $25 $35
System-on-a-chip (SoC) Broadcom BCM2835 (CPU + GPU)
CPU 700 МГц ARM11 (ядро ARM1176JZF-S), возможен разгон до 1 ГГц
GPU Broadcom VideoCore IV
Стандарты OpenGL ES 1.1/2.0, OpenVG 1.1, Open EGL, OpenMAX
Аппаратные кодеки H.264 (1080p30, high-profile);
MPEG-2 и VC-1 (лицензия продаётся отдельно)
Память (SDRAM, общая) 256 Мбайт 512 Мбайт;
256 Мбайт (до 15.10.2012)
Порты USB 2.0 1 2
Видеовыход 1 x HDMI 1.3a (CEC),
1 x RCA (576i/480i, PAL-BGHID/M/N,NTSC, NTSC-J)
Аудиовыход Гнездо 3,5 мм, HDMI
Карт-ридер SD/MMC/SDIO
Сеть - Ethernet-порт RJ45 10/100 Мбит/с
Интерфейсы 20 x GPIO (SPI, I 2 C, UART, TTL);
MIPI CSI-2, MIPI DSI
Энергопотребление 500 мА (2,5 Вт) 700 мА (3,5 Вт)
Питание 5 В через порт micro-USB или GPIO
Размеры 85,6x56x21 мм
Масса 54 г

Неудивительно, что некоторые пользователи скупают Raspberry Pi пачками и «прикручивают» к чему попало. Эта машинка может стать в ваших руках и медиацентром, и управляющим центром «умного дома», и игровой приставкой для любителей 8-битной классики , и сердцем радиоуправляемых моделей. Тут уж всё зависит от вашей фантазии, желания и прямоты рук. В Сети есть немало примеров, готовых проектов, сообществ пользователей и целых магазинов, посвящённых Raspberry Pi. Есть даже официальный очень-очень скромный The Pi Store с небольшим количеством ПО, игр, руководств и собственным журналом. Короче: «Ищущий да обрящет!» Для начала рекомендуем пролистать списки проектов на официальном форуме или же ознакомиться с наглядными примерами от Adafruit и Element14 . Ну а мы переходим ко второй части нашего обзора — практической, в которой рассмотрим процесс начальной настройки Raspberry Pi и установим на него клиент BitTorrent Sync.

Рисунок 1. Блочная диаграмма аппаратной части системы

Описание процесса монтажа аппаратной части системы занимает много времени, но является достаточно простым. В первую очередь следует соединить блок питания с стенной розеткой с помощью удлинителя, отрезав розетку это удлинителя. Зачистите провода и закрепите их с помощью винтов в терминалах блока питания. Далее соедините Raspberry Pi с блоком питания, отрезав разъем типа A от кабеля USB и соединив провода с соответствующими выводами блока питания, и вставьте разъем micro USB в разъем питания RPi. После этого следует зачистить оба конца двух жил гибкого кабеля и соединить их с соответствующими терминалами с обозначениями GND и JDVcc блока питания и блока реле. Наконец, следует удалить джампер, соединяющий вывод с обозначением JDVcc с выводом с обозначением Vcc. В том случае, если вы не удалите этот дампер, на предназначенные для напряжения 3.3 В выводы RPi будет подано напряжение в 5 В, которое с высокой вероятностью выведет компьютер из строя.

Теперь, когда питание подведено ко всем терминалам, следует соединить линии IN1-IN8 модуля реле с соответствующими выводами разъема GPIO с помощью гибкого кабеля таким образом, как показано на Рисунке 2. Представленный в данной статье код был разработан для случая, когда выводы IN1-IN7 соединены с выводами GPIO1-GPIO7. В том случае, если вы решите соединить данные выводы по-другому, вам придется модифицировать соответствующим образом ваш код.

Схема расположения выводов разъема GPIO Raspberry Pi приведена на Рисунке 2. На порты ввода-вывода Raspberry Pi подается напряжение 3.3 В, а модуль реле работает с напряжением 5 В. Однако, реле изолированы от выводов GPIO Raspberry Pi при помощи оптопар. На оптопары может подаваться напряжение 3.3 В с вывода Vcc. На вывод Vcc модуля реле может быть подано напряжение 3.3 В с разъема GPIO Raspberry Pi. Убедитесь в том, что вы убрали джампер, замыкающий выводы Vcc и JDVcc модуля реле. На вывод JDVcc должно подаваться напряжение 5 В для корректной работы реле. Рассматриваемый модуль реле размыкает контакты в активном состоянии. Из этого следует, что вы должны заземлить терминалы IN1-IN8 для включения реле.

Рисунок 2. Схема расположения выводов разъема GPIO Raspberry Pi

Предупреждение: проявляйте особую осторожность при соединении аппаратных компонентов системы. Последствия поражения электрическим током могут оказаться фатальными!

Обрежьте остатки кабелей удлинителей с вилками и закрепите провода в соответствующих терминалах модуля реле. Также подключите провода кабеля, который впоследствии будет связывать систему со стенной розеткой, к соответствующим терминалам модуля реле. Вся аппаратная часть системы может быть размещена в пенале или аналогичном контейнере. Подумайте о корпусе заранее, чтобы по окончании работы над аппаратной частью системы избежать необходимости в отсоединении и повторном присоединении проводов к терминалам модуля реле. Кроме того, я вставил несколько закрепляемых с помощью винтов зажимов для кабелей в соответствующие отверстия корпуса для ограничения натяжения кабелей (Рисунок 3).

Рисунок 3. Монтаж аппаратной части системы

Программное окружение

Я начал создание своего программного окружения с установки образа операционной системы Raspbian. Перед началом установки образа операционной системы вам потребуется подготовить дисплей, поддерживающий передачу изображения по HDMI, клавиатуру и мышь с разъемами USB, а также сетевой кабель для соединения с системой по протоколу Ethernet. Также вы можете установить соединение с системой посредством адаптера Wi-Fi. Создайте загрузочную SD-карту для первой загрузки системы в соответствии с инструкциями, приведенными на ресурсе http://www.raspberrypi.org/documentation/installation/installing-image . В процессе первой загрузки системы установщик осуществит настройку операционной системы и разместит данные из ее образа на всем доступном пространстве карты памяти. После первой загрузки вы должны иметь возможность входа в систему с помощью стандартных данных учетной записи пользователя (имя пользователя "pi" и пароль "raspberry").

Обновление системы является разумным действием, которое должно выполняться сразу же после успешного входа в систему. Образ операционной системы Raspbian базируется на пакетах программного обеспечения дистрибутива Debian и использует приложение aptitude в качестве менеджера пакетов программного обеспечения. Кроме того, вам понадобятся пакеты программного обеспечения с именами python , pip и git . Я также мог бы порекомендовать установку Webmin для упрощения процесса администрирования системы. Инструкции по установке Webmin приведены на ресурсе http://www.webmin.com/deb.html (следуйте рекомендациям, приведенным в разделе "Using the Webmin APT repository"):

Sudo apt-get update && sudo apt-get dist-upgrade sudo apt-get install python python-pip git git-core

После этого вам придется настроить соединение с использованием адаптера Wi-Fi. Вы можете найти подробные инструкции на ресурсе http://www.raspberrypi.org/documentation/configuration/wireless . Я рекомендую использовать вариант wicd-curses . На данном этапе вы можете изменить параметры настройки Raspberry Pi с помощью команды sudo raspi-config . После ввода данной команды вы получите доступ к удобному графическому интерфейсу, который позволит вам установить значения таких параметров, как объем оперативной памяти, разделяемой с графическим процессором, параметры быстродействия центрального процессора, режим использования графического интерфейса в процессе загрузки и других.

Другим полезным инструментом является интегрированная среда разработки Cloud 9 IDE . Cloud 9 IDE позволит вам редактировать свой код на уровне Raspberry Pi посредством веб-браузера. Данная интегрированная среда разработки также предоставит вам доступ к интерфейсу командной строки в рамках веб-браузера. Вы можете разрабатывать и исполнять любой код, не покидая свой веб-браузер. Интегрированная среда разработки Colud 9 IDE требует наличия определенной версии фреймворка NodeJS. Использование неподдерживаемой версии фреймворка повлечет за собой постоянные аварийные завершения работы сервера Cloud 9, которые могут привести любого пользователя в уныние. Инструкции по установке фреймворка NodeJS на компьютер Raspberry Pi приведены на ресурсе http://weworkweplay.com/play/raspberry-pi-nodejs .

Программное обеспечение

Я решил создавать пользовательский интерфейс своей системы с использованием технологий HTML5, CSS3 и JavaScript. Комбинация трех упомянутых технологий является мощным инструментом для создания пользовательских интерфейсов. Язык программирования JavaScript позволяет использовать простой API для взаимодействия с серверами. Кроме того, существует множество библиотек для языка программирования JavaScript, таких, как JQuery, Bootstrap и других, из которых можно выбрать наиболее подходящую. HTML5 предоставляет API WebSocket, позволяющее веб-браузеру поддерживать соединение в рабочем состоянии и осуществлять обмен данными посредством этого соединения. Это обстоятельство делает API WebSocket особенно полезным для реализации динамических приложений и приложений для потоковой передачи данных, таких, как игры и чаты. Каскадные таблицы стилей CSS полезны для стилизации различных элементов страницы HTML. В случае корректного использования они позволяют создавать динамические пользовательские интерфейсы путем изменения стилей элементов страниц при наступлении тех или иных событий. Для данного проекта я выбрал фреймворк JQuery для обработки событий, Bootstrap CSS для размещения кнопок в форме сетки и язык программирования JavaScript для реализации механизмов обмена данными на основе API WebSocket.

Библиотеки

Серверное приложение, работающее на уровне Raspberry Pi, должно управлять состоянием выводов разъема GPIO платы Raspberry Pi. Оно также должно предоставлять интерфейс HTTP для передачи данных графического интерфейса и интерфейс WebSocket для передачи сообщений с командами и данными состояния. Готового к установке серверного приложения с такими специфическими функциями попросту не существует, поэтому я принял решение о создании своей собственной реализации сервера с использованием языка программирования Python. Для упрощения разработки описанного серверного приложения с использованием языка программирования Python доступны модули с реализациями методов для работы с интерфейсом GPIO Raspberry Pi, для создания сервера HTTP и для работы с интерфейсом WebSockets. Так как все перечисленные модули предназначены для выполнения поставленных задач, мне пришлось разработать минимальный объем кода.

Однако, упомянутые модули не включены в комплект поставки интерпретатора Python и должны устанавливаться отдельно. В первую очередь вам понадобится модуль для управления состоянием выводов разъема GPIO Raspberry Pi. Простейший способ изменения состояния выводов данного разъема заключается в использовании библиотеки RPi.GPIO, доступной по адресу https://pypi.python.org/pypi/RPi.GPIO . Вы можете установить соответствующий модуль с помощью следующей команды:

Sudo pip install RPi.GPIO

Работа с модулем RPi.GPIO не связана с какими-либо сложностями. Вы можете найти примеры использования данного модуля по адресу . На первом шаге работы с модулем необходимо осуществить импорт его кода в код проекта. После этого вам придется выбрать режим работы. В качестве идентификатора режима работы может использоваться либо константа GPIO.BOARD, либо константа GPIO.BCM. Выбор режима работы обуславливает использование чипа BCM или выводов разъема ввода-вывода при ссылках на номера выводов во всех последующих командах. Далее следует указать, используются ли выводы из рассматриваемого разъема для ввода или вывода. Теперь вы можете использовать выводы данного разъема по назначению. Наконец, вам придется осуществить вызов метода cleanup() для сброса состояния выводов разъема GPIO. В Листинге 1 показан простейший пример использования модуля RPi.GPIO.

Листинг 1. Использование модуля RPi.GPIO

Import RPi.GPIO as GPIO # импортирование кода модуля в код проекта GPIO.setmode(GPIO.BOARD) # указание на то, что нумерация используется для обозначения выводов разъема GPIO.setup(0, GPIO.IN) # указание на то, что канал 0 будет использоваться для ввода GPIO.setup(1, GPIO.OUT) # указание на то, что канал 1 будет использоваться для вывода var1=GPIO.input(0) # чтение состояния канала 0 GPIO.output(1, GPIO.HIGH) # установка логической единицы на канале 1 GPIO.cleanup() # сброс состояния выводов разъема GPIO.



Загрузка...