Управление розеткой raspberry pi. Система управления умным домом на основе Raspberry Pi. Работа с консолью на Raspberry Pi

. Сегодня третий урок, на котором мы поработаем с консолью и утилитой apt-get, научимся делать скриншоты и настроим удаленное управление через VNC.

Видео третьего урока:

Для третьего урока нам понадобится:

  • плата Raspberry Pi;
  • кабель питания;
  • USB-клавиатура;
  • USB-мышь;
  • монитор или телевизор с HDMI/RCA/DVI интерфейсом;
  • кабель, один конец которого RCA или HDMI, а другой соответствует вашему монитору;
  • SD-карта с уже установленной ОС Raspbian (как ее установить смотри );
  • USB-разветвитель с собственным питанием;
  • WiFi-модем.

Работа с консолью на Raspberry Pi

В ОС Raspbian (как и в других дистрибутивах Linux ) имеется главная консоль. Если бы мы не сделали соответствующие в rasppi-config , консоль открывалась бы сразу при запуске операционной системы. Работать с такой консолью не удобно, поскольку придется выйти из графического режима. Гораздо удобнее использовать предустановленную программу LXTerminal , которая эмулирует главную консоль в виде окна в графическом интерфейсе. Когда мы откроем эту программу, увидим строчку pi@raspberrypi ~ $ Здесь pi — имя пользователя в ОС, raspberrypi — hostname, ~ — текущая директория, ~ заменяет /home/pi . Когда мы видим такую строку, можем писать свою команду. В частности, здесь можно делать действия с файлами, папками, архивами (но эти действия можно делать и в графическом режиме, что гораздо удобнее).

Sudo

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

Утилита apt-get и установка программ

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

Альтернативный способ поиска, скачивания и установки программ на Raspberry Pi консольная утилита apt-get.

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

sudo apt-get update

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

apt-cache search <запрос>

например,

apt-cache search tree

После запроса будет выведен список программ и утилит, в названии или описании которых имеется введенный запрос. Выбираем подходящую программу и запоминаем ее название.

Запрашиваем установку:

sudo apt-get install <название>

например,

sudo apt-get install tree

Установку потребуется подтвердить с помощью Enter.

После установки можно узнать информацию о программе или утилите:

info <название>

например,

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

Для использования консольной программы вводим <название> <параметры и флаги>, например tree .

Для удаления программы используется команда (удаление также нужно подтверждать):

sudo apt-get remove <название>
например,
sudo apt-get remove tree
Периодически с этой утилитой желательно совершать следующие действия:
sudo apt-get update (обновление базы программ)
sudo apt-get upgrade (обновление установленных программ)
sudo apt-get autoremove (удаления оставшихся после удаления программ библиотек, сопутствующих программ и др.)

Создание скриншотов на Raspberry Pi

К сожалению, ОС Raspbian не имеет предустановленных средств для создания снимков экрана — скриншотов.

Искать средства для создания скриншотов в apt-get можно с помощью запроса:

apt-cache search screen capture

Мне показалась удобной утилита scrot для скриншотов. Установка утилиты scrot:

sudo apt-get install scrot

Для создания скриншота необходимо ввести команду scrot. Можно указать задержку выполнения команды — это необходимо, чтоб вы успели свернуть или закрыть консоль — а то именно она попадет в скриншот. Для задержки в 5 секунд необходимо ввести:

Настройка удаленного управления через VNC

Virtual Network Computing (VNC ) - система удаленного доступа к рабочему столу компьютера . Управление осуществляется путем передачи нажатий клавиш на клавиатуре и движений мыши с одного компьютера на другой и ретрансляции содержимого экрана через компьютерную сеть. Будем использовать VNC для удаленного управления Raspberry Pi.

Чтобы настроить удаленное управление, установим и запустим VNC-сервер x11vnc, узнаем ip-адрес Raspberry Pi:
sudo apt-get install x11vnc
x11vnc -desktop:0
Просмотрим ip-адрес Raspberry Pi с помощью команды hostname -I.

На компьютер, с которого мы хотим удаленно управлять Raspberry Pi, скачаем и установим VNC-клиент, например, от realVNC . Запустим его и введем ip-адрес Raspberry Pi. После этого мы можем удаленно управлять.

На этом третий урок закончен, следует!

В следующем уроке мы поработаем с портами GPIO, в частности помигаем светодиодом в разных режимах.

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

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

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

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

  • 1 x ;
  • 1 x кабель Ethernet;
  • 1 x ноутбук или стационарный ПК;
  • 1 x SD карта (минимальный размер 4 ГБ);
  • 1 x кабель Micro USB (чтобы запитать 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

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

Сегодня научимся управлять включением и выключением реле с помощью 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) пробуем понажимать кнопки в веб-интерфейсе. Они уже должны работать и щёлкать релюшкой.
Результат сборки:

Так сложилось, что первая программа, которую человек пишет при изучении программирования называется «Hello World!». Суть этой программы сводится к тому, чтобы после запуска на экране появилась указанная простая фраза. Обычно для этого используется всего несколько строк кода.

В мире микроэлектроники, аналогичной задачей можно считать управление светодиодом. А именно, периодическое включение и выключение — мигание. В этом уроке мы как раз займемся подключением светодиода к Raspberry Pi и составлением программы на языке python, заставляющей этот светодиод мигать.

1. Выводы общего назначения Raspberry Pi (GPIO)

Одно из главных преимуществ Raspberry Pi - это наличие выводов общего назначения (General Purpose Iinput/Outputs). GPIO - это группа контактов, которыми можно управлять с помощью программы. Причем управление это может быть совсем простым, например, включение/выключение светодиода. Либо весьма сложным - обмен данными с периферийными устройствами по специализированным протоколам.

В терминах цифровой электроники, управлять — значит менять на выводе уровень напряжения. Другими словами, все что мы можем сделать с помощью программы — это соединить желаемый вывод либо с контактом питания (+3.3 В), либо с землей (Gnd). Изобразим это на принципиальной схеме.

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

Если мы в программе подаем на вывод №23 истину True, то Raspberry Pi соединит этот вывод с питанием +3.3В, и через резистор побежит ток. Если же мы передадим ложь — False, то контроллер соединит вывод №23 с землей, и с обоих концов от резистора окажутся равные потенциалы — ток никуда не побежит. То есть, с помощью программы мы как бы щелкаем невидимым переключателем, то вверх, то вниз!

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

Светодиод - это устройство, которое представляет собой полупроводниковый прибор, способный излучать свет при пропускании через него электрического тока в прямом направлении (от анода к катоду). Ниже приведена схема типичного светодиода с линзой.

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

  • анод светодиода имеет более длинный проводник;
  • со стороны катода, корпус светодиода немного срезан.

А вот так выглядят светодиоды «вживую».

Это обычные одноцветные светодиоды. А бывают еще двух, и даже трехцветные. Так, например, выглядит трехцветный (RGB) светодиод:

У этого светодиода сразу четыре ноги. Одна - катод, а три другие - аноды для трех разных цветов.

В современной микроэлектронике применяются миниатюрные светодиоды для поверхностного монтажа. Такие индикаторы, например, имеются на Raspberry Pi для информирования пользователя о состоянии системы.

3. Схема включения

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

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

Внешний вид макета

В схеме, помимо самого светодиода присутствует резистор. Зачем он нужен? Дело в том, что если подключить светодиод напрямую к источнику напряжения 3.3 Вольт (а именно такое рабочее напряжение у Raspberry Pi), то светодиод непременно выйдет из строя!

Для правильной работы светодиода необходимо строго выдерживать рабочий ток и напряжение. Например, обычный красный светодиод имеет рабочий ток 20 мА, при напряжении от 1.8 до 2 Вольт. Резистор позволяет нам снизить напряжение в цепи и установить нужный ток. Такой резистор еще называют токозадающим.

I = U/R;

Сила тока, протекающая через некий элемент равна отношению напряжения, приложенного к этому элементу на его сопротивление.

Выразим из этой формулы сопротивление R:

Как уже было замечено, Raspberry Pi работает с напряжением 3,3 Вольта. Значит, чтобы на светодиоде осталось 2 Вольта, нам нужно куда-то убрать лишние 1,3 Вольта. Заставим резистор съесть их!

Получается, нам нужно подобрать сопротивление резистора таким образом, чтоб он убрал лишние 1,3 Вольта, при токе 20 мА. Подставим эти числа в полученную формулу:

R = 1,3В/20мА = 1,3В/0,02ОА = 130/2 = 65 Ом

Таким образом, в Raspberry Pi токозадающий резистор для красного светодиода имеет номинал 65 Ом. Именно его мы и должны установить в схему.

Если под рукой нет резистора именно на 65 Ом, то можно использовать любой другой большего номинала, например, 100 Ом или даже 200 Ом. Просто светодиод будет гореть чуть менее ярко.

4. Программа

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

Первое, что нам нужно сделать — это задать тип нумерации выводов общего назначения. Есть два типа. Первый тип — это нумерация разъема, а второй тип — нумерация выводов микропроцессора. На рисунке изображен разъем GPIO.

Слева на право начинается нумерация первого типа: 1,2. За ней не подписано, но идет по порядку: 3,4 — 5,6 — и т.д. В конце разъема — 39,40.

Сверху и снизу идет нумерация процессора (BCM). На нашей схеме мы подключили светодиод к выводу №23 согласно нумерации BCM.

В программе тип нумерации задается с помощью функции setmode :

GPIO.setmode(GPIO.BCM)

Теперь нужно задать режим работы вывода №23. Всего есть два режима: вывод (OUT) и ввод (IN). Мы хотим управлять светодиодом, значит нам нужен режим «вывод». А вот если бы мы хотели прочитать какой-то сигнал, например, с датчика, то следовало бы выбрать режим «ввод».

GPIO.setup(23, GPIO.OUT)

Чтобы подать на вывод №23 истину, используем функцию output :

GPIO.output(23, True)

Помимо этих функций, нам понадобится пауза sleep . Эта функция ставит на паузу выполнение программы. В качестве аргумента указывается количество секунд паузы.

Sleep(5)

Наконец, чтобы функции работы с GPIO и sleep работали, в самом начале программы подключим две библиотеки:

From RPi import GPIO from time import sleep

Итак, вся программа целиком.

From RPi import GPIO from time import sleep GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) GPIO.output(23, True) sleep(5) GPIO.output(23, False) GPIO.cleanup()

5. Мигание светодиодом в цикле

Усовершенствуем программу таким образом, чтоб светодиод мигал непрерывно с частотой 1 Герц (то есть один раз в секунду). Для этого нам нужно будет добавить в программу оператор цикла while .

From RPi import GPIO from time import sleep GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) while True: GPIO.output(23, True) sleep(0.5) GPIO.output(23, False) sleep(0.5) GPIO.cleanup()

Цикл while будет работать пока истинно условие, указанное в нем. Чтобы цикл работал без остановки, в качестве условия мы поставили True .

Составленная нами программа имеет один неприятный изъян. Если мы ее запустим, она войдет в бесконечный цикл и мы не сможем её остановить штатными средствами. А если мы её остановим нештатно, то не выполнится функция cleanup , что нежелательно.

Добавим в программу еще одну конструкцию, которая позволит нам в любой момент прервать работу цикла с помощью комбинации клавиш Ctrl+C. При этом программа завершится в нормальном режиме и выполнит функцию cleanup .

From RPi import GPIO from time import sleep GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) try: while True: GPIO.output(23, True) sleep(0.5) GPIO.output(23, False) sleep(0.5) except KeyboardInterrupt: print "program stop" GPIO.cleanup()

Задания

Наконец, немного поиграем со светодиодами на Raspberry Pi.

  1. Сирена. Подключить два светодиода и мигать ими на манер полицейской сирены — первый гаснет, второй зажигается. Один светодиод оставить на выводе №23, второй можно подключить к соседнему №24.
  2. SOS. Генерировать сигнал SOS с помощью азбуки Морзе. Три раза мигнуть быстро — с периодом 0.5 секунды, затем три раза с периодом 1 секунда, наконец еще три раза опять быстро.