Умный дом, построенный на базе Raspberry Pi 3 — многофункциональный комплекс, позволяющий контролировать и управлять всеми элементами вашего песта проживания, будь то квартира, дача или частный дом. Под его «руководством» работают многие элементы, начиная от лампочек в помещениях, заканчивая системой отопления и запуском систем, распознающих присутствие человека.
Особенность системы заключается в слаженной работе всех компонентов, надежности и сравнительной легкости настройки.
Каков принцип работы умного дома? Какие характеристики и возможности актуальны? Что учесть при настройке и подготовке к работе? Как собрать систему умный дом на базе Raspberry Pi 3? Эти и другие вопросы рассмотрим ниже.
Принцип работы
Умный дом на базе Raspberry Pi 3 популярен, благодаря легкости сборки, в том числе для людей без специального опыта. Основой всей системы является небольшая материнская плата, в которую производитель заложил огромный потенциал.
Первоначально компания продавала две комплектации прибора — модели А и В. Первая отличалась объем памяти размером в 256 МБ, а вторая в два раза большим ее размером.
Модель А какое-то время была в продаже, благодаря наличию доступа к глобальной сети, но после обновления до версии «В» в первом варианте отпала необходимость. Новая версия отличалась компактностью и наличием четырех портов USB.
Построение умного дома на основе Raspberry Pi 3 зависит от предпочтений владельца. Вне зависимости от этого, принцип работы остается неизменным:
- Главную функцию выполняет сервер. Это центральное устройство, собирающее информацию и производящее необходимые вычисления. Роль главного сервера играет материнская плата Raspberry Pi, на которую инсталлируется WEB-интерфейс. Его особенность заключается в возможности связи с планшетом, ноутбуком или телефоном.
- Сервер находится во взаимосвязи с окружающими его модулями. Контакт осуществляется с помощью RS-485. Для обеспечения слаженного функционирования системы в каждой комнате устанавливается специальный контроллер. Его задача заключается в приеме и анализе поступающей информации с последующей отправкой команд на исполняющие устройства (изделия бытовой техники).
- Связь модуля Raspberry Pi с контроллерами обеспечивается с помощью UART-порта. К последнему подключается специальный проводник на интерфейс RS-485. Стоит учесть, что в последних моделях устройства уже предусмотрен такой интерфейс (он идет уже в базе).
- В роли операционной системы выступает Raspberry. В комплексе с ней работает одно из доступных расширений, к примеру, Pimatic.
При желании система умный дом может быть собрана на платформе «открытого» типа, к примеру, Fhem, openHAB, SHC. Не менее востребованный вариант — применение платформы wiBulter.
Где применяется Raspberry Pi 3 Model B
Сфера применения умного дома на базе Raspberry Pi ограничивается только познаниями установщика и пожеланиями владельца дома. Здесь возможны следующие варианты:
- Применение в качестве полного компьютера. При желании к системе можно подключить дисплей и клавиатуру, подсоединить мышку, а после пользоваться полученным ПК на Windows Последнее возможно только для Raspberry Pi B, а также моделей 2B или 3B.
- Сбор множества небольших компьютеров Raspberry Pi для получения ПК с большим числом ядер и высокой производительностью. Для этого требуется соединить в один сервер требуемое число изделий и найти удобное место для размещения. Также придется решить вопрос с охлаждением конструкции. Готовый компьютер по производительности не уступит даже наиболее мощному CPU, приобретенному за несколько сотен долларов.
- Инсталляция на Raspberry эмулятора консоли, скачивание игровых образов, подключение монитора и джойстика. Этого достаточно для превращения системы в игровую платформу для развлечений.
- Подключение сенсорного дисплея диагональю 8-15 дюймов, создание деревянного или металлического корпуса и установка ОС Android. В результате получается многофункциональный планшет, сделанный своими силами.
- Создание собственной осветительной системы для улицы или дома посредством настройки умного дома Raspberry Pi. При желании будут загораться только определенные лампочки, что позволяет удивить любимых и близких людей.
- Обустройство настенного органайзера. Все, что требуется — подключить уменьшенную версию ПК к дисплею, настроить ОС и закрепить конструкцию на стене.
Возможности умного дома на Raspberry Pi позволяют использовать конструкцию в качестве приставки, домашней метеостанции, охранной системы или планшета. Возможности применения почти не ограничены.
Особенности и характеристики Raspberry Pi 3 Model B
Устройство представляет собой компактный компьютер, имеющий размеры пластиковой карты банка. На чипе установлено необходимое оборудование для работы — CPU, «оперативка», HDMI-разъем, USB и композитный выход. Также имеется Ethernet-разъем, беспроводная связь и блютуз.
В блоке Raspberry Pi 3 Model B предусмотрено четыре десятка вводных и выводных контактов базового назначения. Они предназначены для подключения периферийных устройств, нуждающихся во взаимодействии с остальными элементами внешнего мира. Речь идет о коммутации с сенсорами и исполнительными изделиями, работающими от сети.
Базовая ОС для умного дома на Raspberry Pi 3 — Linux. Операционная система инсталлируется на карту памяти типа microSD, которая устанавливаемся в специальном разъеме платы.
Многие ранее работали только с Windows и бояться Linux. В этой ОС нет ничего необычного. Она проста в пользовании и отличается высоким уровнем безопасности. Если при установке допущены ошибки в настройке, их легко исправить путем восстановления образа.
Версия Raspberry Pi 3 Model — более продвинутый вариант второй модели. Новая плата отличается полной совместимостью с прошлой версией, но отличается большей производительностью и дополнительными средствами для подключения:
- Появилась беспроводная связь Wi-Fi серии 802.11n и блютуз 4.1.
- Предусмотрен процессор с четырьмя ядрами (тип — ARM Cortex-A53). Частота работы составляет 1,2 гигагерца. В основе лежит однокристальный чип типа Broadcom BCM
В CPU предусмотрена архитектура ARM v53. Это позволяет использовать любую операционную систему, к примеру, Ubuntu или Windows 10.
Применение 4-ядервного чипа гарантирует рост мощности изделия на 50-60 процентов (если сравнивать со второй модель) и на 2019 процентов в сравнении с первым Raspberry Pi.
Благодаря этой особенности, мини ПК открывает еще больше возможностей по созданию сложных проектов умного дома, что на фоне доступа к Сети открывает почти безграничные перспективы.
Новая модель Raspberry Pi 3 наделена «оперативкой» на 1 ГБ. Часть этой памяти применяется графической подсистемой. Что касается графической части, здесь установлен 2-ядерный CPU VideoCore IV.
Система поддерживает разные стандарты типа OpenGL ES 2.0, VC-1, OpenVG, MPEG-2. Дополнительные возможности — способность кодировать, раскодировать и выводить полноэкранное видео формата HD на экран. Параметры видео — 1080p, 60 FPS, H.264.
Периферия
Неизменный плюс системы заключается в возможности подключения ТВ или дисплея с помощью HDMI-выхода. Разрешение можно менять в диапазоне от 640*350 до 1920*1200. Выход композитного типа имеет два режима работы — NTSC и PAL. Для коммутации колонок и наушников предусмотрено 3,5-миллиметровое гнездо.
Дополнительные плюсы умного дома на базе Raspberry Pi 3 — порты USB, соединенные внутренним хабом. При необходимости можно подключить мышь и клавиатуру.
На устройстве предусмотрена возможность экономии ресурсов ЦП. Для этого на Raspberry Pi 3 модели имеются 15-пнинковые разъемы. Среди них — CSI-2, используемый для подключения камеры, и DSI для коммутации экрана.
Имеется ряд интерфейсов низкого уровня, а именно питающие пины (3 и 5 Вольт, а также «земля), 40 портов для общего ввода и вывода, SPI с возможностью выбора, серийный UART и I2C/TWI.
Для подключения к умному дому на базе Raspberry Pi 3 модели B предусмотрен блютуз 4.1, Wi-Fi 802.1 n и Ethernet (10/100 Мбит). В последнем случае выход обустроен на обычном разъеме типа RJ-45.
Питающая часть и размеры
На изделие подается напряжение 5 В, поступающее от специального адаптера через питающие пины или microUSB-разъем. Для надежности лучше применять источник, имеющий I от 2-х ампер и более. В этом случае появляется возможность для подключения к портам USB более мощных изделий.
Аппаратного выключателя, обеспечивающего подачу напряжения, на плате нет. Активация мини ПК происходит посредством включения шнура в розетку, а для отключения используются базовые функции ОС.
Размеры платы всего 8,5*5,4 см. В ней помещаются необходимые порты, часть из которых слегка выступает за общие габариты (на несколько миллиметров).
ПО
В умном доме на базе Raspberry Pi 3 Model B отсутствует привычный жесткий диск, поэтому «операционка» устанавливается на выносном носителе (карте памяти). Ее необходимо заранее подготовить и поставить.
При наличии нескольких карт памяти можно использовать разные образы для системы умного дома. Стоит учесть, что карта памяти в комплектацию не идет, поэтому ее придется докупать самостоятельно. Желательно брать microSD с емкостью от 4 ГБ и более.
Базовые параметры:
- CPU: 64 бита 4 ядра. Тип — ARM Cortex-A53. Частота — 1,2 ГГц. Чип однокристаллический BCM2837;
- Оперативка — один гигабайт LPDDR2 SDRAM;
- цифровой HDMI-выход на видео;
- аудио-выход на 3,5 мм (4 pin);
- порты USB типа 2.0×4;
- сетевое обеспечение — Wi-Fi11n, 10/100 мегабайт RJ45 Ethernet;
- для подключения дисплея — Display Serial Interface (DSI);
- блютуз — Bluetooth 4.1, Low Energy;
- для подключения видеокамеры — MIPI Camera Serial Interface (CSI-2);
- слот для MicroUSD;
- 40 портов ввода-вывода;
- размеры — 8,6*5,6*1,7 см.
Преимущества Raspberry Pi 3 Model B
Умный дом на базе Raspberry Pi 3 Model B имеет ряд неоспоримых плюсов:
- Наличие большого выбора интерфейсов, позволяющих максимально расширить возможности системы. Здесь предусмотрен блютуз, имеется Wi-Fi, порты HDMI и USB.
- Возможность подключения модема GSM для выхода на связь с оператором, предоставляющим услуги глобальной сети.
- Наличие мощного процессора с четырьмя ядрами на 1,2 ГГц, способного решать серьезные задачи.
- Полная совместимость новой и предыдущей версии.
- Компактность. Устройство имеет небольшие размеры, а весит всего 45 грамм.
- Доступность разгона. При желании доступно увеличение производительности системы.
- Легкость применения. Программирование Raspberry Pi 3 Model B можно осуществлять на разных языках.
Также стоит выделить ряд преимуществ умного дома, построенного на базе Raspberry Pi 3 Model B:
- Возможность обезопасить здание путем защиты от потопа, установки видеонаблюдения, создания противопожарной и охранной систем.
- Установка систем, повышающих комфорт. Речь идет об электрических приборах, а также специальных устройствах, управляющих шторками.
- Возможность инсталляции системы, обеспечивающей дополнительную экономию. Применяются сенсорные смесители, датчики движения, а также датчики, фиксирующие перемещение человека или животных.
- Доступность инсталляции развлекательных специальных систем. К примеру, к умному дому на Raspberry Pi 3 Model B можно подключить мультирум или домашний кинотеатр.
Для полноты картины стоит учитывать и ряд минусов, характерных для умного дома на Raspberry Pi 3 Model B:
- Монтаж таких устройств подойдет для крупных особняков, расположенных вне черты города и имеющих большую площадь.
- Для установки нужно знать особенности и правила применения каждого из элементов. В крайнем случае, под рукой желательно иметь квалифицированного специалиста, готового в любой момент помочь в интересующем вопросе.
- Со временем умный дом, построенный на Raspberry Pi 3 Model B, устареет. По этой причине возможны трудности с поиском необходимых компонентов (в случае поломки).
В целом, устройство имеет больше положительных качеств, поэтому заслуживает внимание людей, желающих обустроить комфортный и удобный в эксплуатации дом.
Модули, которые можно использовать
Для расширения функциональности умного дома на Raspberry Pi 3 Model B можно использовать дополнительные модули. Их применение расширяет число доступных опций и позволяет создать уникальную систему, обеспечивающую максимальное удобство:
- ВИДЕОКАМЕРА. Подключение этого модуля позволяет дополнить умный дом системой видеонаблюдения. Камера совмещается с операционной системой небольшого ПК Raspberry Pi 3 Model B. После установки устройства можно фиксировать видео в разрешении Full HD и делать фотографии с разрешением в 5 МП.
- ДАТЧИКИ ДЫМА И ВОДЫ. Установка этих модулей позволяет защитить имущество от пожара и протечки соответственно. Для владельцев больших домов это полезная опция, позволяющая избежать неприятностей. В случае задымления или потопа система оперативно информирует владельца о наличии проблем.
- ИЗМЕРИТЕЛЬ ТЕМПЕРАТУРЫ И ВЛАЖНОСТИ ВОЗДУХА. С помощью таких модулей можно превратить умный дом на базе Raspberry Pi 3 Model B в метеостанцию с подробными сведениями о ситуации за окном и внутри помещения.
- ДАТЧИК ДВИЖЕНИЯ. Подключение устройства позволяет автоматически включать и отключать свет в помещениях. Датчик движения полезен на улице, в гараже, в коридоре и других нежилых помещениях.
- МОДУЛЬ БЕСПРОВОДНОЙ СВЯЗИ. Для объединения внешних устройств и контроллера можно использовать приемник и передатчик, работающие на частоте 433 Гц. При наличии средств можно купить более прогрессивный вариант устройства — Z-Wave Fibaro Home Center
Применение указанных датчиков расширяет возможности умного дома и повышает уровень его защиты.
Первые настройки и подготовка к работе
Для начала стоит ознакомиться с инструкцией и рекомендацией производителя относительно применения устройства. Стоит убедиться в наличии необходимых датчиков и спланировать их подключение. Плата установлена в специальной коробке, защищающей изделие от механических воздействий. Устройство не люфтит и выглядит весьма солидно.
После снятия верхней крышки можно получить доступ к плате. Единственная трудность заключается в подключении бокового разъема. Для удобства рекомендуется покупать угловой шлейф.
Дополнительно покупается два радиатора, предназначенные для охлаждения контроллера Ethernet и основного чипа.
Есть и другие решения.
Для первого пуска потребуется карта памяти, с установленной на нее операционной системой. Минимальный размер флешки должен быть от 4 Гб и более. Образ ОС доступен в Интернете (ссылка на скачивание ниже). Также потребуется программа Win32 Disc Imager.
После скачивания образа на ноутбук его необходимо распаковать из архива, после чего вставить карту памяти в кардридер. Далее запускается уже установленная программа Win32 Disc Imager.
Как только работа завершена, с помощью программы выбирается образ и записывается на флеш-накопитель.
Далее достается карту памяти с образом и вставляется в устройство Raspberry Pi 3 Model B. После этого подключается клавиатура, дисплей и мышка. При желании можно использовать беспроводную клавиатуру.
Сборка системы умный дом
Во избежание проблем приведем подробную инструкцию по сборке системы и подготовки ее к работе. Алгоритм действий имеет следующий вид:
- Вход на официальный сайт устройства Raspberry Pi 3 Model B и скачивание требуемой версии ОС.
- Установка карты в разъем материнской платы для установки ОС.
На этом настройка Raspberry Pi 3 Model B завершена.
- Инсталляция Node JS. Прохождение этого этапа потребуется для полноценной работы NodeMCU ESP-12E.
- Установка Homebridge и настройка автоматического пуска с Root-правами (устройство должно запускаться после включения Raspberry Pi 3 Model B).
- Подключение внешних модулей по специальной схеме.
После завершения указанных работ необходимо зайти в мобильный телефон и открыть приложение Home. После этого стоит добавить платформу Raspberry Pi.
По завершении процесса авторизации пользователю доступно управление разными устройствами в квартире или доме.
Владелец управляет освещением, знает точную информацию о влажности и температуре, получает сведения о наличии протечки или задымлении (при появлении таких проблем).
Это лишь часть возможностей умного дома на Raspberry Pi 3 Model B, которые получает владелец.
Перейдя посылке можно ознакомиться с полной инструкцией по установки Raspberry Pi 3 Model B.
Что может получиться смотрите на видео.
Итоги
Умный дом на базе Raspberry Pi 3 Model B — удобная альтернатива уже существующих и более дорогостоящих устройств. Особенность платформы заключается в компактности, возможности расширения функционала и небольшой цене. К ней можно подключить разные внешние модули, не переживая о проблемах с совместимостью.
Для успешного подключения и установки рекомендуется знание принципов работы с командной строкой. Для этого требуется подготовить систему к работе, найти необходимые материалы в Сети и выполнить настройку.
Несмотря на временные затраты, результатом труда является мощная и удобная система, обеспечивающая полную автоматизацию дома. В дальнейшем к ней можно подключить мультимедийные и иные устройства.
В уже довольно не новом посте, посвященном Raspberry Pi, это устройство рассматривалось исключительно, как маленький и очень дешевый компьютер. Бесспорно, Raspberry Pi им и является. Но, помимо этого, у Raspberry Pi есть еще и 26 пинов GPIO (General Purpose Input Output), что очень кстати в свете моего недавнего увлечения электроникой. Почему? Давайте разберемся.
Отмечу, что все написанное ниже справедливо для Raspberry Pi 2 Model B. Если у вас другая малина, то расположение пинов и другие детали могут отличаться. Поэтому обязательно сверьтесь с официальной документацией. В качестве операционной системы я использовал релиз Raspbian от 2016-09-28, который можно скачать здесь. Более поздние релизы мне не нравятся, потому что из соображений безопасности в них решили по умолчанию отключать SSH. Что довольно смешно, потому что в этот же релиз решили включать Adobe Flash.
Итак, расположение пинов описано на официальном сайте:
На этой картинке явно изображен один из углов устройства (слева вверху), поэтому по ошибке пронумеровать пины вверх ногами довольно сложно. Очень интересно, что курили ребята, решившие так нумеровать пины. Если кто-нибудь знает ответ, расскажите, пожалуйста, в комментариях. Чтобы окончательно всех запутать, они решили сделать две нумерации. Выше представлена «логическая» нумерация. Под этими номерами пины видны операционной системе. Есть еще и «физическая» нумерация, про которую можно прочитать по приведенной выше ссылке. В рамках данной заметки используется исключительно «логическая» нумерация, изображенная на картинке.
Допустим, мы хотим программно управлять напряжением, подаваемым на 2-й пин. Проще всего это сделать через sysfs.
Первым делом «экспортируем» пин, без этого шага им не получится управлять:
echo 2 > /sys/class/gpio/export
Делаем его out-пином, то есть, он будет либо подавать, либо не подавать напряжение в 3.3 вольта:
echo out > /sys/class/gpio/gpio2/direction
Подаем напряжение:
echo 1 > /sys/class/gpio/gpio2/value
Перестаем подавать напряжение:
echo 0 > /sys/class/gpio/gpio2/value
Узнаем, подается ли сейчас напряжение:
cat /sys/class/gpio/gpio2/value
По завершении работы пину можно сделать unexport:
echo 2 > /sys/class/gpio/unexport
Есть мнение, и не только мое, что 3.3 вольта — как-то маловато. Кроме того, было бы неплохо не только включать и выключать напряжение, но и изменять его в некотором диапазоне. Увы, насколько мне известно, ничего этого Raspberry Pi не умеет. Поговаривают, что умеет Arduino, но опыта использования этого устройства на момент написания этих строк у меня нет.
Можете подключить пин к цепи из светодиода и резистора с сопротивлением 470 Ом и проверить, что описанным выше образом светодиод можно включать и выключать. Для земли (то есть, минуса) можно использовать любой пин, изображенный на приведенной выше схеме черным цветом. Понятно, что работу с sysfs можно автоматизировать на любом языке программирования по вкусу. Можно подключить сразу три светодиода разного цвета и получить программно управляемый светофор. Собственно, это я и сделал, воспользовавшись пинами 3 и 4.
Важно! После загрузки Raspberry Pi некоторые пины по дэфолту могут подавать напряжение. Возможно, это не то, чего вы хотите для вашей цепи. У меня по дэфолту ток был на пинах 2, 3 и 14. Я бы советовал перепроверить эту информацию на вашей конкретной Raspberry Pi и конкретной версии Raspbian. Имейте также в виду, что написанная вами же программа может оставить пины в неизвестном состоянии (например, если вы прибьете ее kill’ом). Наверное, в общем случае лучше всего проектировать цепь так, чтобы она была готова к любым комбинациям наличия или отсутствия тока на используемых вами пинах.
До сих пор были рассмотрены out-пины. Они как бы «пишут» на макетную плату, но не позволяют узнать ее текущее состояние. Например, нажата ли в настоящих момент какая-то кнопка. Даже если цепь разомкнута, out-пины об этом не знают. Поэтому есть еще и in-пины.
Экспортируем 5-ый пин и делаем его in-пином:
echo 5 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio5/direction
Этот пин я подключил к цепи из резистора сопротивлением 10 кОм и кнопки, которая в нажатом состоянии замыкает цепь, а в отпущенном размыкает.
«Прочитать» кнопку можно так:
cat /sys/class/gpio/gpio5/value
Считывается 1, если кнопка не нажата, то есть, цепь разомкнута, и 0, если кнопка нажата, то есть, цепь замкнута.
В итоге получилась такая конструкция (иллюстрация про кнопку взята отсюда):
А вот и скрипт на Python, который при нажатии на кнопку тушит текущий светодиод и зажигает следующий за ним:
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
# Use «logical» pin numbers
GPIO.setmode(GPIO.BCM)
# Disable «This channel is already in use» warnings
GPIO.setwarnings(False)
# Setup LED’s: 2 — green, 3 — yellow, 4 — redfor i in range(2,5):
GPIO.
setup(
i
,
GPIO.
OUT)
GPIO.
output(
i
, False)
current_led = 2
GPIO.
output(
current_led
, True)
# Prepare to read button state
BUTTON
= 5
PRESSED_CODE
= 0
GPIO.
setup(
BUTTON
,
GPIO.
IN,
pull_up_down
=
GPIO.
PUD_UP)
while True:
# GPIO.wait_for_edge(
BUTTON
,
GPIO.
FALLING)# print(«Button pressed»)# GPIO.wait_for_edge(
BUTTON
,
GPIO.
RISING)# print(«Button released»)
time.sleep(0.05)
if
GPIO.
input(
BUTTON
) ==
PRESSED_CODE:
GPIO.
output(
current_led
, False)
current_led
= max(2, (
current_led +
1)
%
5)
GPIO.
output(
current_led
, True)
time
.
sleep(0.1)
Опытным путем удалось подобрать временные задержки, при которых светодиоды переключаются в точности так, как ожидает пользователь. Закомментированный в приведенном коде метод wait_for_edge на практике работает совершенно непредсказуемо. Например, если зажать кнопку на несколько секунд, то последующие нажатия будут приводить к зажиганию светодиодов в каком-то почти случайном порядке.
Насколько мне известно, это по большому счету все, что можно сделать с помощью GPIO на Raspberry Pi. Поправьте, если я не прав.
Дополнение: В комментариях подсказывают, что малина также умеет и ШИМ. Еще один пример использования GPIO в одноплатном компьютере описывает заметка Реверс-инжиниринг роутера на примере GL.iNet GL-AR750.
Метки: Linux, Python, Электроника.
В этой статье мы поговорим о том, как подключать к Raspberry Pi датчики и другие внешние устройства через GPIO порты платы. Для работы будем использовать Python и библиотеки. Если вы новичок в работе с распбери, рекомендуем прочитать статью об установке Python и библиотек для Raspberry Pi.
Подключение внешних устройств к Raspberry Pi
Отличие Raspberry Pi от Arduino
Среди любителей радиотехники и электроники каждый слышал о существовании таких устройств как Arduino и Raspberry Pi. Обе платы используются для решения схожих задач, оба прекрасно подходят для начинающих. Но по сравнению с Ардуино Raspberry – это многофункциональный компьютер, на котором может запускаться операционная система.
Из основных отличий можно выделить тактовую частоту – Raspberry работает в 40 раз быстрее Ардуино, и объем оперативной памяти – у Raspberry памяти больше примерно в 128000 раз. За счет простоты управления и использования разрабатывать аппаратные проекты на Ардуино предпочтительнее. Ардуино может работать с любыми датчиками или чипами, а Raspberry Pi не такая гибкая, для работы с датчиками требуются дополнительные аппаратные устройства. Raspberry Pi очень требовательна к питанию, напряжение должно быть строго 5 В на входе, в то время как для ардуино рекомендуемое питание 7-12 В, которое стабилизируется до 5 В.
Важное отличие заключается в среде, в которой пишется программа. С Arduino IDE работать намного проще, чем с Linux. Установка библиотек для написания программы требуется для обеих систем, но код на Ардуино будет написан проще и короче.
Raspberry Pi возможно использовать в режиме многозадачности, как обычный компьютер. Одновременно может работать несколько программ в фоновом режиме.
Для расширения возможностей можно совместно использовать обе платы. Для управления датчиками и сенсорами использовать Ардуино, а сложные вычислительные задачи оставить для Raspberry Pi.
Описание GPIO
Количество портов в более старых и новых моделях Raspberry Pi отличается –model A и model B оснащены 26 выводами общего назначения GPIO, в следующих версиях количество выводов увеличено до 40.
Существует несколько видов обозначений выводов:
- BCM – нумеруются выходы микропроцессора Broadcom. Используются при работе со специальными пакетами Rpi.GPIO. В большом количестве проектов используется именно эта нумерация.
- WiringPi – нумеруются контакты для пакета Wiring Pi. Это библиотека, похожая на библиотеки для Ардуино, для работы с GPIO контактами.
- Обычная цифровая нумерация выходов на самой плате.
Расположение контактов изображено на рисунке. На картинке для удобства последние 14 контактов отделены – это и есть новые выходы, которые были добавлены в новых версиях платы.
Описание контактов GPIO
Номер вывода | BCM | WiringPi | Описание контакта |
1 | 3v3 | Питающий контакт на 3,3В | |
2 | 5v | Питающий контакт на 5 В | |
3 | BCM2 | 8 | SDA |
4 | 5v | Питающий контакт на 5 В | |
5 | BCM3 | 9 | SCL |
6 | GND | Земля | |
7 | BCM4 | 7 | GPCLK0 |
8 | BCM14 | 15 | TXD – отвечает за передачу данных |
9 | GND | Земля | |
10 | BCM15 | 16 | RXD – отвечает за прием данных |
11 | BCM17 | 0 | Вывод общего назначения |
12 | BCM18 | 1 | PCM_C – используется в сочетании с ШИМ-методом. |
13 | BCM27 | 2 | Контакт общего назначения |
14 | GND | Земля | |
15 | BCM22 | 3 | Контакт общего назначения |
16 | BCM23 | 4 | Контакт общего назначения |
17 | 3V3 | Питающее напряжение 3,3В | |
18 | BCM24 | 5 | Контакт общего назначения |
19 | BCM10 | 12 | MOSI |
20 | GND | Земля | |
21 | BCM9 | 13 | MISO |
22 | BCM25 | 6 | Контакт общего назначения |
23 | BCM11 | 14 | SCLK |
24 | BCM8 | 10 | CS0 |
25 | GND | Земля | |
26 | BCM7 | 11 | CS1 |
27 | BCM0 | 30 | ID_SD |
28 | BCM1 | 31 | ID_SD |
29 | BCM5 | 21 | Контакт общего назначения |
30 | GND | Земля | |
31 | BCM6 | 22 | Контакт общего назначения |
32 | BCM12 | 26 | Контакт общего назначения |
33 | BCM13 | 23 | Контакт общего назначения |
34 | GND | Земля | |
35 | BCM19 | 24 | MISO |
36 | BCM16 | 27 | Контакт общего назначения |
37 | BCM26 | 25 | Контакт общего назначения |
38 | BCM20 | 28 | MOSI |
39 | GND | Земля | |
40 | BCM21 | 29 | SCLK |
Выводы земля, напряжение питания и другие аналогичные можно использовать любые, которые будут удобнее в конкретном проекте. Важно следить за тем, чтобы напряжение на GPIO было 3,3В, иначе контакт может быть вывеен из строя.
Среди выводов общего назначения имеются UART-контакты (на восьмом и десятом контактах). Они позволяют обеспечить взаимодействие Ардуино и Raspberry Pi. Также 4 вывода поддерживают I2C, главной задачей которых является коммуникация с периферией. Для верификации в коде нужно добавить строки
sudo apt-get install i2c-tools
sudo i2cdetect -y 1
Для осуществления доступа к I2C нужно подключить библиотеку smbus.
SPIподдерживают 11 выводов общего назначения. С помощью этого интерфейса можно настроить подключение нескольких устройств с помощью одной группы контактов.
Пример проекта: мигание светодиодов
Для работы понадобятся плата Raspberry Pi, светодиод, резистор на 200 Ом и соединительные провода. Анод светодиода (длинная ножка) нужно подключить через резистор к одному из цифровых выводов, например GPIO24, катод (короткая ножка) – к земле. Макет подключения представлен на рисунке. Резистор в данной схеме нужен для того, чтобы уберечь светодиод от перегорания. Выбрать правильный номинал можно пользуясь законом Ома R=U/I. Плата работает от напряжения 3,3В. Номинал, который будет получен по формуле – минимальный, можно выбирать сопротивление больше, но в этом случае яркость светодиода будет несколько ниже.
Теперь нужно написать программу. Код будет написан в установленной версии Python 2. Для этого нужно открыть среду Python 2 (IDLE) и нажать «новый файл».
В окно редактора нужно написать скетч, который заставит светодиод загореться на 10 секунд и отключит его. В первую очередь нужно выбрать нумерацию выходов. Как говорилось выше, существует несколько типов нумерации. В данном случае будет использоваться нумерация BCM.
Сам код выглядит следующим образом:
[py]
from RPi import GPIO
from time import sleep //первые 2 строки включают библиотеки для совместной работы с GPIO и sleep
GPIO.setmode(GPIO.BCM) //этой строкой выбирается нумерация контактов
GPIO.setup(24,
GPIO.
OUT) //чтобы управлять светодиодом или другим устройством, нужно задать OUT. Для того чтобы считывать сигнал сенсора, нужно ввести IN.
GPIO.output(24, True) //подача истины на контакты
sleep(10) //светодиод загорается на 10 секунд, ожидание
GPIO.output(24, False)
GPIO.cleanup() //сброс всех настроек портов, чтобы они не мешали следующей программе.
[/py]
Нужно нажать запуск программы с помощью F5 или меню Run/Run Module.
Код можно немного изменить, чтобы светодиод включался и выключался с определенной частотой. Для этого нужно добавить оператор while вместо строк
GPIO.
output и Sleep.В цикле нужно задать частоту, с которой будет мигать светодиод. В данном случае он будет мигать раз в 1 секунду.
[py]
while True:
GPIO.output(24, True)
sleep(1)
GPIO.output(24, False)
sleep(1)
[/py]
Большим недостатком такой программы будет то, что она будет повторяться бесконечно и остановить штатным методом ее будет невозможно. Для этого нужно ввести дополнительно конструкцию, прерывающую работу при наборе на клавиатуре комбинации Ctrl+C.
[py]
try:
while True:
GPIO.output(24, True)
sleep(0.5)
GPIO.output(24, False)
sleep(0.5)
except KeyboardInterrupt:
print ‘program stop’
[/py]
Программу нужно сохранить, нажав ctrl+S. Затем нужно нажать F5, светодиод начнет мигать с периодичностью раз в секунду. Чтобы остановить выполнение программы, нужно нажать ctrl+C.
Выводы
В этой статье мы приступили к новой большой теме и сделали первые шаги в программировании на Python под Raspberry с использование
GPIO.
Возможности микроконтроллера существенно превышают привычный Arduino, поэтому для создания по-настоящему умных устройств придется осваиваться с новыми инструментами для работы с периферией. В дальнейших статьях мы продолжим наши эксперименты.
%PDF-1.5
%
1 0 obj
>
endobj
2 0 obj
>
endobj
3 0 obj
>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 33 0 R] /MediaBox[ 0 0 595.32 841.92] /Contents 4 0 R/Group>/Tabs/S>>
endobj
4 0 obj
>
stream
x][~03OK p\lqvd8#’ߪ»M{zۛa^>»%~ʪwn`;0Xa߿~{O_A!û?~%o{1Xuxׯ(~oN?_??;:ׯ_=+_*/}%һ3w i3^LOu1?c>O^;eZelڧiMkD12#v8-7.u?Wuz6gws{v=gBq