Raspberry pi управление. Raspberry Pi: управление светодиодом. Восстановление работы Raspberry Pi после сбоев

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

Raspberry Pi представляет собой миникомпьютер, который имеет много портов, которые могут быть использованы для подключения различных периферийных устройств. Вы можете подключить отдельный монитор через HDMI порт и клавиатуру и мышь через USB разъемы, также у Raspberry Pi имеется Ethernet порт, поэтому вы можете использовать интернет в своих проектах на Raspberry Pi.

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

Оборудование и программное обеспечение

Прежде, чем мы продолжим, нам понадобится программное обеспечение, которое необходимо скачать. Ниже приведен список программного обеспечения и ссылки, откуда вы можете его скачать бесплатно:

  • Raspbian OS : когда вы покупаете Raspberry Pi, у вас есть возможность (в некоторых магазинах) купить предустановленную на SD карту операционную систему, либо просто скачать zip-файл c https://www.raspberrypi.org/downloads/ , который содержит образ Raspbian OS, чтобы записать его на вашу SD карту;
  • SDFormatter : у SD Card Association есть очень хорошее ПО, которое может быть использовано для форматирования вашей SD карты. Посетите https://www.sdcard.org/downloads/formatter_4/index.html и скачайте SDFormatter для вашей операционной системы;
  • Win32DiskImager : чтобы записать Raspbian OS на вашу SD карту, вам понадобится полезная утилита Win32DiskImager. Скачать её можно здесь ;
  • : вам будет необходимо определить IP адрес вашего Raspberry Pi, когда подключите его компьютеру. Просто скачайте эту программу http://www.advanced-ip-scanner.com/ ;
  • PuTTy : PuTTy - это SSH клиент, который будет использоваться для подключения к Raspberry Pi. Вы можете скачать его здесь http://www.putty.org/ ;
  • VNC : и последнее это VNC сервер. Скачать его можно здесь https://www.realvnc.com/download/ .

Когда скачаете всё это программное обеспечение, распакуйте и установите его.

Установка операционной системы

  1. Вставьте SD карту в картридер и проверьте, какая буква была присвоена диску.
  2. Откройте Win32DiskImager, возможно понадобится запустить его от имени администратора.
  3. Выберите образ распакованной Raspbian OS.
  4. Выберите букву, присвоенную вашей SD карте, в выпадающем списке устройств. Убедитесь в том, что выбрали правильную букву диска, чтобы не повредить данные на каком-либо другом диске.
  5. Нажмите Записать (Write ) и ждите завершения.
  6. Закройте Win32DiskImager, выньте SD карту и вставьте её в Raspberry Pi.

Примечание: после записи операционной системы вы заметите, что на SD карте осталось лишь несколько мегабайт. Это из-за созданного раздела, остальная часть свободного пространства скрыта. Вы сможете это исправить, как только мы подключимся к Raspberry Pi.

Общий интернет через Ethernet порт

Как только SD карта будет готова, вставьте её в Raspberry Pi. Подключите USB кабель питания. А также соедините Raspberry Pi и ноутбук кабелем Ethernet.

Если вы подключаете Raspberry Pi к роутеру с доступом к интернету, то этот шаг можно пропустить.

Проверка IP адреса, присвоенного вашему Raspberry Pi

Это просто, убедитесь, что ваш Raspberry Pi подключен к Ethernet сети вашего компьютера (напрямую или через роутер). Если всё работает нормально, вы увидите, что светодиоды на плате мигают.


Подключение к Raspberry Pi через PuTTy

Отлично! Перед тем, как продолжить, посмотрим, что у нас уже сделано к текущему моменту.

В данной статье мы рассмотрим управление входами/выходами (GPIO) микрокомпьютера Raspberry Pi через Web-интерфейс. Это дает возможность управлять различными устройствами через интернет.

Особенности данного проекта:

серверная программа, запущенная на Raspberry Pi для чтения значений GPIO

использование MySQL базы данных для хранения состояния GPIO

– использование веб-сервера Apache2 для контроля GPIO через веб-браузер

Итак, первое, что вам необходимо установить на Raspberry Pi, это:

Apache веб-сервер

MySQL сервер

– phpMyAdmin (есть русская версия)

Т.к. микрокомпьютер Raspberry Pi работает на Linux-системах, то в интернете полно описаний на русском языке как устанавливать все эти пакеты. Поэтому зацикливаться на этом мы не будем. Есть неплохая инструкция применительно к Raspberry Pi, но на английском языке: почитать .

Полноценный root-доступ

Для получения полного root доступа необходимо в терминале набрать команду sudo -i , которая переводит пользователя в сессию под root-ом.

Если вы уже включили root эккаунт, то дальше можете пропустить, если нет, то после команды sudo -i необходимо задать пароль пользователю root, делается это командой passwd root. После чего введите 2 раза пароль. Теперь можно закрыть SSH-сессию и войти заново уже под root’ом.

Настройка базы данных

Для упрощения работы, все действия с MySQL будем делать из оболочки phpMyAdmin.

Скачать файлы проекта

Оригинал статьи на английском языке (перевод Колтыков А.В. для сайта cxem.net)

Рисунок 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.

Raspberry Pi представляет собой не просто миникомпьютер, предназначенный для того, чтобы из него и проигрывали на нем музыку. Он может применяться и в более серьезных электротехнических . Для этого у него имеются линии ввода/вывода общего назначения (GPIO), которые мы сегодня рассмотрим.



GPIO находятся на разъеме 2×13, на котором можно найти интерфейсы SPI, I2C, UART и линии питания 3.3 В и 5 В.



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



Итак, как же управлять линиями GPIO на Raspberry Pi?


Для начала нужно установить библиотеку RPi.GPIO Python Library. Возможно, она уже была предустановленна на ваш дистрибутив операционной системы Raspbian OS. Чтобы проверить это, введите:


sudo python


Затем введите в строчке:


import RPi.GPIO as GPIO


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


Для начала загружаем RPi GPIO Library:


wget http://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.3.1a.tar.gz


Затем извлекаем файлы:


tar zxf RPi.GPIO-0.3.1a.tar.gz


Потом переходим в извлеченный каталог:


cd RPi.GPIO-0.3.1a


И устанавливаем библиотеку:


sudo python setup.py install


Использование библиотеки RPi.GPIO Python Library


# импорт библиотеки import RPi.GPIO as GPIO # используем нумерацию разъема Raspberry Pi GPIO.setmode(GPIO.BOARD) # или GPIO.setmode(GPIO.BCM) # настраиваем выводы GPIO на вход или выход GPIO.setup(11, GPIO.IN) GPIO.setup(13, GPIO.OUT) # берем входное значение с вывода 11 input_value = GPIO.input(11) # устанавливаем выходное значение на вывод 13 GPIO.output(13, GPIO.HIGH) #GPIO.output(13, GPIO.LOW)

Различие между GPIO.setmode(GPIO.BOARD) и GPIO.setmode(GPIO.BCM) заключается в системе нумерации выводов. В первом случае используется нумерация разъема P1 на борту Raspberry Pi, а во втором случае нумерация выводов системы-на-кристалле Broadcom, являющейся ядром Raspberry Pi. Следует знать, что в случае с BCM нумерация выводов между первой и второй ревизиями немного отличается, а при использовании BOARD ревизия не имеет никакого значения, все остается тем же самым.


Теперь подключим к Raspberry Pi светодиоды и кнопки. На разъеме нам доступны восемь GPIO.



Соединения:



Значения сопротивлений резисторов могут быть вычислены следующим образом. Используемые в данном случае 5-миллиметровые светодиоды потребляют ток 20 мА. Напряжение, подаваемое с Raspberry Pi, составляет 3.3 В. Тогда сопротивление будет равно 3.3 В / 20 мА = 165 Ом. Для кнопок были задействованы резисторы 1 КОм.




from time import sleep import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) GPIO.setup(16, GPIO.IN) GPIO.setup(18, GPIO.IN) GPIO.setup(11, GPIO.OUT) GPIO.setup(13, GPIO.OUT) GPIO.setup(15, GPIO.OUT) GPIO.output(11, GPIO.LOW) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO.LOW) # state - определяет должен ли светодиод быть включенным или выключенным state = 0 # increment - направление изменения состояний inc = 1 while True: # кнопка нажата if (GPIO.input(16) == True): if (inc == 1): state = state + 1; else: state = state - 1; # достигнуто максимальное состояние state, возвращаемся назад (декремент) if (state == 3): inc = 0 #достигнуто минимальное состояние state, возвращаемся назад (инкремент) elif (state == 0): inc = 1 if (state == 1): GPIO.output(11, GPIO.HIGH) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO.LOW) elif (state == 2): GPIO.output(11, GPIO.HIGH) GPIO.output(13, GPIO.HIGH) GPIO.output(15, GPIO.LOW) elif (state == 3): GPIO.output(11, GPIO.HIGH) GPIO.output(13, GPIO.HIGH) GPIO.output(15, GPIO.HIGH) else: GPIO.output(11, GPIO.LOW) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO.LOW) print("pressed B1 ", state) # нажата кнопка сброса if (GPIO.input(18) == True): state = 0 inc = 1 GPIO.output(11, GPIO.LOW) GPIO.output(13, GPIO.LOW) GPIO.output(15, GPIO.LOW) print("pressed B2 ", state) sleep(0.2);

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

Сегодня научимся управлять включением и выключением реле с помощью raspberry pi 2 , для примера будем включать и выключать розетку , управлять светильником или других электроприбором. Я использовал реле SRD-05VDC-SL-C .
1) Подключаем его к raspberry pi и к линии 220В. Я подключал только одно реле, но на плате у меня их два.

Перенесу сюда изображение разъемов GPIO raspberry pi 2

GPIO raspberry pi 2

На изображении ниже схема подключения реле к raspberry pi 2 и линии 220 В .

Схема подключения реле к raspberry pi 2 и линии 220 В
(изображение кликабельно)

Ещё раз поясню.
По схема реле соединяется с одной стороны с GPIO портами raspberry pi 2, а с другой с розеткой 220 В. На плате с реле есть 4-е пина — GND, IN1, IN2, VCC.
a) GND на реле надо соединить с GND на raspberry pi.
b) IN1 и IN2 — это как раз два реле. IN1 я подключил к GPIO17(пин 11), а IN2 к GPIO25(пин 22). Они у меня просто свободны, у вас могут быть свободны другие GPIO разъемы.
с) к пину VCC на реле подключаем 5v на raspberry pi 2. Я решил использовать пин №2 на raspberry.
Так же на плате есть контакты по три штуки возле каждого реле. От линии 220В я подвёл провод к контакту NO1 на реле 1. Контакт COM1 на реле 1 соединяю с одним из разъемов розетки. На второй контакт розетки я сразу подаю 220 B, то есть он идёт напрямую, минуя реле и raspberry. Если подключить не к NO1, а к NC1 то питание будет подаваться постоянно, розетка будет давать ток и без raspberry, поэтому NC1 я просто не использую.
С физическим подключением думаю понятно. Будьте аккуратны. Вы всё выполняете на свой страх и риск.

Перейдём к программной части.
2) пишем 2-а простейших скрипта:
sudo nano /script/gpio/relay01-01-down.sh

#!/bin/bash

echo 17 > /sys/class/gpio/export
echo out >
echo 1 > /sys/class/gpio/gpio17/value

и второй скриптик:
sudo nano /script/gpio/relay01-01-up.sh
содержимое должно быть таким:
#!/bin/bash

echo 17 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio17/direction
echo 0 > /sys/class/gpio/gpio17/value

3) делаем их исполняемыми:
sudo chmod +x /script/gpio/relay01-01-down.sh
sudo chmod +x /script/gpio/relay01-01-up.sh

В целом можно уже поиграться, подсоединив к розетке лампу поочерёдно запуская каждый скрипт, будет то включать лампу, то выключать
sudo /script/gpio/relay01-01-up.sh
sudo /script/gpio/relay01-01-down.sh

4) Но интересней сделать кнопки управления реле в веб-интерфейсе. Веб-сервер уже поднят по , поэтому в его корне(по умолчанию это директория /var/www/) пишем в файл index.php код с кнопками. Код можно .
Там же в корне веб-сервера создаём файл style.css с содержимым, которое можно .

Заходим на веб-сервер http://ip-адрес-raspberru-pi/ и должны увидеть две кнопки(они ещё не работают).

5) добавляем права для www-data следующим образом:
sudo visudo
там дописываем:
www-data ALL=(ALL) NOPASSWD: ALL

6) пробуем понажимать кнопки в веб-интерфейсе. Они уже должны работать и щёлкать релюшкой.
Результат сборки:




Top