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

Здравствуйте друзья

После того, как я испытал возможности системы управления умным домом Domoticz на своем настольном компьютере и убедился в том, что она отлично дополняет, а где и заменяет Mi Home - штатную систему Xiaomi - я решил приобрести для нее отдельный одноплатный компьютер - Raspberry Pi. И в этом обзоре я расскажу про свой опыт.

Вступление

Для тех кто не читал мой первый обзор про Domoticz - . Буквально после первых удачных экспериментов, я загорелся идеей отдельной аппаратной базы для нее, в качестве рабочей платформы настольный ПК не подходит. Выбор свой я остановил, после штудирования пабликов - на Raspberry Pi Model 3 B - компактный но мощный одноплатный компьютер на базе Soc процессора BCM2837 с 4 ядрами Cortex-A53, работающим на частоте 1.2GHz, 1GB ОЗУ и беспроводными модулями Wi-Fi и Bluetoth 4.1.

Комплект

В свой заказ я включил 4 позиции -

Что интересно в магазине имеется две модификации - китайская и английская. На момент покупки китайская стоила на 7 долларов дешевле, ее я и взял. Чего там китайского - честно говоря для меня загадка.

Медные радиаторы для Raspberry Pi - страница товара

Еще для полного комплекта вам понадобится microSD карта - не менее 4 GB и HDMI кабель. У меня в загашнике был и кабель и карта на 32 ГБ, потому покупать не стал.

Что в посылке

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


Рассмотрим подробнее. Блок питания с вилкой Тип С и разъемом micro-USB.


Заявленный максимальный ток - 2А при напряжении 5 В.


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


Комплект из трех медных радиаторов в пакетике, для пассивного охлаждения.


Все радиаторы имеют квадтарную форму, два радиатора с штырями и длиной стороны около 12 мм и один плоский со стороной около 15 мм.


Корпус из темного пластика с выдавленным изображением ягоды малины на крышке


Размеры корпуса - примерно 90 на 65 мм



Корпус разбирается на 5 частей - держится все защелках, никаких винтов.


С аксессуарами покончено - пора переходить к самому главному

RASPBERRY PI 3 MODEL B

Raspberry Pi 3 Model B является прямым наследником Raspberry Pi 2 Model B. Плата полностью совместима с предшественником, но наделена большей производительностью и новыми средствами коммуникации:
64-х битным четырёхядерным процессором ARM Cortex-A53 с тактовой частотой 1,2 ГГц на однокристальном чипе Broadcom BCM2837; встроенными Wi-Fi 802.11n и Bluetooth 4.1.
Кроме того, процессор имеет архитектуру ARMv53, а значит вы сможете использовать любимую операционную систему: Debian Wheezy, Ubuntu Mate, Fedora Remix и даже MS Windows 10.


Технические характеристики подробнее

CPU - Broadcom BCM2837, ARM Cortex-A53 Quad Core, 1.2 GHz
Количество ядер процессора - 4
GPU - VideoCore IV 3D
RAM - 1 GB
Хранилище - microSD
Сетевые возможности
Ethernet 10/100
WiFi 2.4G 150 mb/s
Видео вывод - HDMI
USB порты - 4
Беспроводные возможности - Bluetooth
Аудио вывод - 3,5 Jack
85,6 х 53,98 х 17мм, 45 грамм


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


На одной из длинных сторон компьютера размещены порты micro USB для питания, полноразмерный порт HDMI, CSI-2 Camera port - для подключения камеры по интерфейсу MIPI, 3,5 мм аудиоразъем. Так же на верхней стороне находится модуль процессора и Ethernet/USB Hub lan9514-jzx


На торцевой стороне скомпонованы 4 USB порта и порт Ethernet


На другой стороне материнской платы находится 40 контактов ввода/вывода общего назначения (GPIO)


На второй торцевой стороны - находится DSI Display Port для подключения штатного дисплея


На нижней стороне платы находится модуль памяти LPDDR2 SDRAM - EDB8132B4PB-8D-F


И micro-SD разъем для карты памяти


Медные радиаторы ставятся на USB/Ethernet Hub и процессор с одной стороны


И на чип памяти с другой. Этот радиатор плоский - не мешает установке платы компьютера в корпус


В корпус все устанавливается отлично, винтовых соединений нет - садится на пластиковые выступы.


Все вырезы на корпусе в точности совпадает с разъемами компьютера



Для запуска нам потребуется внешний монитор (телевизор) с HDMI входом, USB клавиатура, будет удобнее если так же будет и мышка и питания. Монитор, клавиатура и мышка - понадобятся только на момент установки, дальше достаточно будет только блока питания.


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

Для установки операционной системы, первым делом необходимо загрузить архив с дистрибутивами - отсюда . Пока скачивается почти полутора гигабайтный архив, загружаем утилиту для форматирования SD карты - SD Card Formatter - отсюда . Этот дистрибутив гораздо компактнее - всего 6 МБ, поэтому не теряя времени, устанвливаем программу


и, после установки, вставляем карту памяти в картридер (у вас же есть картридер не правда ли) и запускаем SD Card Formatter. В меню Options необходимо установить “FORMAT SIZE ADJUSTMENT” в “ON”


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

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

При первом запуске стартует меню выбора операционной системы - что ставить, причем в списке имеется даже версия WIndows 10 для Raspberry Pi. На этом этапе можно выбрать язык (внизу экрана) - русский есть и подключится к Wi-Fi сети - кнопка Wi-Fi networks


Нужная мне опарационка - Raspbian базирующаяся на Linux Debian - представлена в двух вариантах, lite И полном, с графическим интерфейсом. Я выбрал полную версию


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


Периодически измеряя температуру во время установки, максимально что я видел - 38 градусов.

После завершения установки и перезагрузки компьютера, загружается рабочий стол Raspbian


Единственное что я сделал здесь - это в настройках включил SSH - для того чтобы управлять системой с настольного ПК, все остальное я уже делал через терминал.


Для управления Raspberry с настольного ПК, нам понадобится любая программа терминал, я использую старый добрый Putty


Имя пользователя и пароль по умолчанию - pi и raspberry . Для смены пароля воспользуйтесь командой passwd .


eth0 - это Ethernet

lo - это локальный интерфейс 127.0.0.1

wlan0 - это wi-fi интерфейс


а для того что бы отредактировать файл с настройками - вводим команду

sudo nano /etc/dhcpcd.conf

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

Например мы хотим использовать адрес 192.168.0.222, маска 255.255.255.0, адрес шлюза и DNS - 192.168.0.1

Для Ethernet вставляем

static ip_address=192.168.0.222/24
static routers=192.168.0.1

interface wlan0
static ip_address=192.168.0.222/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1


Для выходя из редактора нажимаем ctrl+x
Для сохранения изменений - нажимаем “Y” и затем enter

Установка Domoticz

Большая часть работы по настройке уже закончена, теперь нам нужно установить систему Domoticz. Делается это одной командой -

sudo curl -L install.domoticz.com | sudo bash

Которая инициализирует процесс загурзки и установки системы


В процессе установки, инсталлятор задаст вопросы по поводу места установки и т.п. - все эти моменты я оставил по умолчанию.


После успешной установки, инсталлятор напишет адреса и порты веб интерфейса системы Domoticz


Но, для работы с шлюзом Xiaomi - нам нужна beta версия системы. Обновление до крайней версии беты производится командами

cd ~/domoticz
sudo ./updatebeta


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


На данный момент я уже перенес все свои рабочие сценарии с Windows версии на Raspberry - кстати стоит добавить что обе системы мирно сосуществуют одновременно. Для обеспечения бесперебойного питания миникомпьютера достаточно использовать PowerBank, который позволяет одновременно питать устройство и получать питание от внешнего источника.

Видеоверсия обзора:

Все мои обзоры устройств Xiaomi в хронологическом порядке - Список

Надеюсь обзор был полезен и интересен, спасибо за внимание.

Продолжаем рассматривать применение компьютера Raspberry Pi для домашней автоматизации. Как вы помните, в предыдущих выпусках мы получили общие сведения о Raspberry Pi , научились, как установить и сконфигурировать операционную систему Raspbian , познакомились с фреймворком WebIOPi и его возможностями по работе с портами GPIO , в частности, как управлять дискретными входами / выходами и работу последовательного порта UART .

Сегодня я постараюсь познакомить вас с общей структурной схемой планируемой системы домашней автоматизации, которая будет создаваться с применением Raspberry Pi . (рис.1).

Рис. 1

Система домашней автоматизации состоит из центрального сервера , связанного по интерфейсу RS 485 с установленными в каждом помещении контроллерами , а к контроллерам в свою очередь подключаются все периферийные устройства (различные устройства управления, контроля, регулирования, защиты). Преимущество такой сетевой архитектуры состоит в том, что нет необходимости тянуть провода от каждого устройства к серверу, а достаточно соединить контроллеры, к которым они подключены, двумя парами проводов - по одной паре подается питание, а вторая используется для интерфейса RS 485. Кроме того, логика работы задумывается так, что выход из строя любого контроллера или даже центрального сервера не должен повлиять на работоспособность остальной системы. Другими словами, архитектура системы домашней автоматизации должна быть распределенной и децентрализованной . Подобная архитектура напоминает широко используемую в коммерческих проектах «умного дома» шину Smart Bus .

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

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

Как уже говорилось ранее, Raspberry Pi имеет собственные порты GPIO , которые можно задействовать под различные функции. UART GPIO мы используем для организации интерфейса RS 485, а остальные порты пока свободны. Поэтому, вполне логично, что кроме подключения датчиков и исполнительных устройств к контроллерам, некоторые элементы системы домашней автоматизации можно подключить и непосредственно к портам GPIO Raspberry Pi через буферное устройство при условии, что к таким элементам не нужно прокладывать длинные коммуникации. Например, это может быть датчик атмосферного давления или датчик контроля температуры с управлением охлаждения самого Raspberry Pi . На структурной схеме непосредственное подключение к портам Raspberry Pi показано через буферный модуль GPIO .

Так как на первом этапе практической реализации нашей системы мы будем организовывать подключение порта UART Raspberry Pi к контроллеру по интерфейсу RS 485, а так же подключать исполнительные устройства непосредственно к портам ввода/вывода GPIO , предлагаю для начала завершить настройку и конфигурирование Raspberry Pi для выполнения этих задач.

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

Заходим в файл конфигурирования командой:

sudo nano /etc/ webiopi / config

и устанавливаем следующие настройки [ GPIO ] (рис.2)

4 = OUT 0

7 = OUT 0

8 = OUT 0

25 = OUT 0

24 = OUT 0

Рис. 2

В разделе [ HTTP Server Configuration ] необходимо прописать строку:

doc-root = /home/pi/myproject/html

Это будет путь к папке, которую мы потом создадим для хранения страницы Web интерфейса index . html . Разумеется, можно было создать эту папку и в другом месте, прописав к ней соответствующий путь, но во избежание путаницы и проблем в дальнейшем, давайте будем придерживаться однообразия (рис.3)

gpio-export = 4, 7, 8, 25, 24

gpio-post-value = true

gpio-post-function = true

device-mapping = true


Рис. 4

В файле конфигурации настройки завершены. Сохраняем их нажатием сочетания клавиш Ctrl и O , затем нажимаем Enter и выходим командой Ctrl и Х .

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

/home/pi/myproject/html (рис.5)


Рис. 5

Для контроля правильности выполненных операций, распакуйте архив тестового файла в папку html . Там должен появится файл index . html . Введите сетевой адрес Raspberry Pi , логин и пароль (webiopi / raspberry ). Выполните перезагрузку WebIOPi командой:

sudo /etc/init.d/webiopi restart

После этого вы должны увидеть тестовый web интерфейс (рис.6). С помощью этого интерфейса можно управлять выходами GPIO 4 , 7 , 8 , 24 , 25 кликая мышкой по соответствующей кнопке. Высокий уровень на выходе показывается оранжевым цветом, низкий - черным. После каждого клика по кнопке состояние выхода меняется на противоположное. Для визуального контроля выполняемых команд к этим выходам можно подключить светодиоды через токоограничивающие резисторы 300 - 470 Ом .

Рис. 6

Если у вас все получилось, значит, настройки выполнены правильно. В следующем выпуске нашего обзора перейдем к практической реализации в «железе» первого этапа системы домашней автоматизации.

Рисунок 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. Давно хотел подключить строчный дисплей к этому одноплатному компьютеру, и даже попробовал это сделать используя библиотеку wiringpi, но уж очень много выводов занимает такое подключение. Первое, что пришло в голову, было использование сдвиговых регистров, но все же я решил посмотреть в сторону шины I2C или SPI. Почитав топики в интернете нашел классное решение - RGB LCD SHIELD KIT W/ 16X2 CHARACTER DISPLAY - ONLY 2 PINS USED! . На плате используется всего два пина для управления SDL и SCK по шине I2C, плюс еще места хватило для пяти тактовых кнопок. В данном устройстве скорость не так сильно важна, поэтому шина I2C мне вполне подошла. «Сердцем» платы является микросхема компании Microchip, расширитель портов MCP23017 .

Всем привет!

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

В воображении сразу вырисовывались какие-то стойки с blade-ами, аренда виртуалки на Digital Ocean, или, на худой конец, круглосуточно гудящий компьютер под столом.

А ведь хочется чего-то тихого, изящного, бесшумного, и желательно бесплатного…

Стоп! Но ведь все уже изобретено до нас!

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

Кому интересно - го под кат (кстати, обратите внимание, как бутербродом напаяны чипы на плате).

Спустя пять лет после выпуска первых устройств Raspberry Pi, проект продолжает набирать все большую и большую популярность и распространятся далеко за пределами его первоначального назначения. Основатель проекта Эбен Аптон изначально надеялся продать не более чем 10 000 плат, но на данный момент уж больше 10 000 000 устройств находятся в руках студентов, преподавателей и других людей ит-специальностей.

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

С таким огромным количеством возможностей может быть сложно понять с чего начать Raspberry Pi 3 применение. В этой статье будет рассмотрено начало работы Raspberry Pi. Я предполагаю, что вы уже знаете как подключить экран, мышь, клавиатуру, питание и поставить операционную систему. Сегодня мы рассмотрим что делать дальше.

У многих людей есть Raspberry Pi, но они даже не знают какая у них версия устройства. Можно определить версию устройства по количеству памяти, этот параметр отличается больше всего. Или например, в более поздних платах были добавлены дополнительные слоты GPIO. Но есть и некоторые незначительные отличия, о которых вам стоит знать при создании своего проекта.

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

cat /proc/cpuinfo |grep "Revision"

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

Если вы видите очень большой номер, который начинается с 1000 дальше идет номер ревизии и снова 1000, то это признак перенапряжения питания.

Вот некоторые сравнительные характеристики разных версий устройств:

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

Аппаратное обеспечение:

cat /proc/cpuinfo

cat /proc/version

Оперативная память:

cat /proc/memory

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

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

Если вы считаете, что вашему устройству не хватает питания, можно проверить напряжение с помощью мультиметра. На старых платах есть отверстия на верхней части платы подписанные TP1 и TP2.На модели B+, Pi2 и Pi3 они размещены внизу платы, на стороне SD карты, и отмечены PP3 и PP7.

Сначала подключите все периферийные устройства, которые вы собираетесь использовать. Установите мультиметр на измерение напряжения до 20 вольт. Подключите красный провод к TP1 или PP3, а черный к TP2 или PP7. Мультиметр должен выдать значение около 5 Вольт. отклонение в 0,25 Вольт - это плохо и чем ближе к пяти, тем лучше. Если вы обнаружили снижение напряжения это могло произойти по двум причинам:

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

В общем, подключение Raspberry Pi не вызывает много проблем.

Добавление кнопки сброса

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

На плате есть два отверстия рядом друг с другом, одно круглое, второе - квадратное. На модели B они отмечены как P6 и находятся рядом с портом HDMI. На более поздних платах они размещаются ближе к портам GPIO и обозначены RUN.

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

Использование GPIO и датчиков

Помимо своей низкой цены, Raspberry Pi очень привлекательный для пользователей из-за возможности использовать GPIO.

GPIO или general purpose input/output это порты общего назначения ввода и вывода. Почти все проекты Raspberry Pi построены на использовании этих портов. Их сила в гибкости.

Первые платы Raspberry Pi имели 26 GPIO портов, Raspberry Pi 2 и Pi 3 имеют 40. С технической точки зрения только 17 из 26 и 28 из 40 соответственно. Остальные - это электрические контакты и заземления. Все порты обозначены номерами, но чтобы правильно их использовать вам понадобиться распечатка с описанием значений. Например, для 40:

Или для 28:

Ее можно распечатать и приложить к плате, чтобы не запутаться во время работы:

Чтобы заставить GPIO делать то, что вам нужно понадобиться немного программирования. Обычно, все можно сделать на Python. Если вы не знали, то часть имени Pi походит от инструмента для обучения программированию на Python. Вы можете найти очень много инструкций по использованию Python для Raspbery и GPIO в интернете.

Найдите проект

Ваше устройство почти готово. Все, что осталось - это определится с проектом и начать что-то делать. Даже если вы еще не написали ни одной строчки кода или не работали паяльником, Raspberry Pi может стать идеальным средством для обучения этим вещам.

Если вы не хотите ничего программировать, но хочется сделать что-то полезное, можно установить Kodi на Raspberry и сделать домашний медиа центр.

После этого можно перейти к поиску других проектов. Что вам больше нравиться, игры? Домашняя автоматизация? Фотография? Возможно, кто-то уже выложил в интернете инструкции, как сделать то что вы хотите. Используйте их или сделайте что-то свое. Вот некоторые интересные проекты, которые вы можете реализовать:

  • Cupcade - самый простой способ создать собственную небольшую игровую систему. Но здесь нужно покупать устройство комплектом, чтобы получить все необходимые детали;
  • MagicMirror - один из самых популярных проектов на Raspberry Pi, суть в том, чтобы выводить текстовую информацию на зеркало с помощью экрана и этого микрокомпьютера;
  • Minecraft - вы можете создать свой сервер Minecraft на основе Raspberry Pi;

Это далеко не все интересные проекты с помощью которых можно найти применение Raspberry Pi 3. Еще несколько вы можете найти в статье .

Выводы

В этой статье мы рассмотрели начало работы raspberry pi. Это очень интересное устройство может быть достаточно полезным при правильном использовании. А вы уже купили Raspberry Pi? Собираетесь покупать? Или уже собрали свой проект и нашли применение raspberry pi? Напишите в комментариях!

На завершение видео от 16 бит тому назад про Raspberry Pi: