«Умный дом» – это высокотехнологичная интеллектуальная система на базе одноплатного микрокомпьютера, берущая на себя управление всеми коммуникациями дома, квартиры.
Система программируется и настраивается владельцем жилища под свои нужды и в соответствии с его представлением о функциональности.
Система «Умный дом» на базе Raspberry Pi 3 хороша тем, что стоимость ее невелика, а функциональность можно наращивать постепенно.
Платформа Raspberry Pi 3 – главные особенности
В феврале 2016 компания Raspberry Pi выпустила в широкую продажу новую версию микрокомпьютера Raspberry Pi 3, модель «В».
Модель сразу же получила широкую популярность среди пользователей, о чем говорит все возрастающий объем ее продаж.
Структурная схема системы «Умный Дом» на базе Raspberry Pi 3
Построенный на базе Raspberry Pi 3 «Умный дом» позволяет не только взять под контроль и управление практически все коммуникации жилища, но и произвольно наращивать функциональность в процессе эксплуатации.
Основные характеристики Raspberry Pi 3
Новый микрокомпьютер получил:
- процессор ARM Cortex-A53;
- оперативную память в один гигабайт;
- встроенные WiFi и Bluetooth 4.1;
- полную совместимость с предыдущими моделями.
Процессор имеет четыре ядра, разрядность 64 бита, частоту 1.2 ГГц, что в 10 раз превышает производительность первой модели.
WiFi стандарта 802.11b/g/n с возможностью передачи данных со скоростью до 600 Мб/сек на частоте 5.0 ГГц.
По заказу «Raspberry Pi» компания «Broadcom» разработала и выпустила новый монокристалл BCM2837 с архитектурой, аналогичной кристаллам BCM2835 и BCM2836, что обеспечило совместимость с предыдущими моделями.
Одноплатные компьютеры Raspberry Pi 3 и Arduino – главные отличия
Сравнение этих платформ не совсем корректно. Прежде всего потому, что Raspberry Pi 3 по своему наполнению является компьютером с полным набором функций, а Arduino отнести к классу компьютеров достаточно проблематично.
Raspberry Pi 3 оснащен мощным четырёхъядерным процессором, частота которого в 40 раз выше тактовой частоты Arduino. Оперативная память Raspberry Pi 3 имеет емкость, в 128000 раз превышающую емкость оперативной памяти Arduino.
Отличие электронной платы Raspberry Pi 3 от Arduino
Но эти показатели говорят не о том, что Raspberry Pi 3 превосходит Arduino, а о том, что эти устройства предназначены для решения разных задач.
Задачи, решаемые Raspberry Pi 3 с помощью ПО, не под силу решать простому Arduino. Но он превосходно справляется с задачами сугубо аппаратных проектов, со считыванием и обработкой аналоговых сигналов.
Обработка аналоговых сигналов ведется в реальном масштабе времени, причем эти сигналы могут поступать с датчиков и чипов любых типов и производителей. Для того, чтобы Raspberry Pi 3 мог так же обрабатывать аналоговые сигналы, ему нужны дополнительные аппаратные средства.
Реализация проекта «Умный дом» на базе Raspberry Pi 3
Для тех, кто решил создать Raspberry Pi 3 «Умный дом» своими руками, вначале следует определиться, какие функции будут реализовываться, как они будут включаться в рабочую конфигурацию. И, в соответствии с этим, комплектовать будущую систему необходимыми устройствами.
Периферийные устройства «умного дома»
Для реализации проекта Raspberry Pi 3 «Умный дом» понадобятся такие модули:
- модуль видеокамеры;
- модуль поддержки беспроводной связи;
- датчик движения;
- датчик измерения влажности и температуры;
- датчик задымленности;
- датчик протечки воды.
Кроме этого, для системы Raspberry Pi 3 «Умный дом» потребуются карта памяти MicroSD емкостью 32 ГГб, блок питания, пятивольтовое реле.
Подключение видеокамеры к плате Raspberry Pi 3
Одним из важнейших дополнительных устройств для реализации проекта Raspberry «Умный дом» является модуль NodeMCU ESP-12E с радиоинтерфейсом Wi-Fi и интегрированной в плату модуля микрополосковой антенной.
Операционные системы
Как и любой компьютер, Raspberry Pi 3 без программного обеспечения представляет собой просто бесполезный набор электронных элементов.
Чтобы этот набор превратить в инструмент, реализующий свои функциональные возможности, в него нужно «вдохнуть жизнь», то есть наполнить его соответствующим программным обеспечением.
Этот процесс выполняется в несколько этапов. Вначале необходимо выбрать и загрузить для Raspberry Pi 3 «Умный дом» iOS – мобильную операционную систему.
В качестве носителя для ОС и размещения на нем программ в Raspberry Pi 3 используется микрокарта памяти SD. Для установки ОС можно выбрать один из трех способов:
- купить SD-карту, на которую уже была предварительно установлена ОС;
- загрузить на карту памяти NOOBS (New Out Of the Box Software) – установщик ОС, и затем устанавливать ОС прямо с карты;
- монтировать образ ОС прямо на карту SD.
Для системы Raspberry «Умный дом» разработано более 40 различных ОС. Чаще всего используются ОС Raspbian OS, Ubuntu Mate, Windows 10 IoT, RICS OS.
Наиболее адаптированной под аппаратные средства Raspberry Pi 3 явл
Установка операционной системы Raspbian OS для Raspberry Pi 3
яется операционная система Raspbian OS, устанавливаемая с загруженного на SD-карту установщика NOOBS.
Установка операционной системы
Перед тем, как начать работать с микрокомпьютером, следует подготовить необходимые приборы и аксессуары.
Для самого первого запуска понадобятся:
- микрокарта SD, емкостью не менее четырех гигабайт (предпочтительно 32 гигабайта);
- блок питания на пять вольт;
- кабель с разъемами HDMI;
- монитор с HDMI-подключением;
- клавиатура и мышь с USB-подключением;
- компьютер с разъемом для SD-карты;
- подключение к интернету – Ethernet.
Следующие действия таковы:
- форматирование SD-карты;
- скачивание архива установщика NOOBS и распаковка его в корневую директорию SD-карты;
- карта вставляется в слот микрокомпьютера, подключаются все устройства, включается блок питания;
- при первом запуске из списка выбирается нужная ОС и запускается ее установка;
- по завершении установки установить и настроить программы Raspberry Pi 3 «Умный дом».
Установка сервера Homebridge и настройка модулей
Система «Умный дом» работает с технологией Home Kit, объединяющей все устройства «умного дома» в одном приложении, и воспринимающей голосовые команды, поданные на русском языке. Но таких устройств, особенно «понимающих» русский язык, не так уж и много, к тому же, они очень дорогие.
Сервер Homebridge выполняет роль своеобразного мостика между всеми устройствами дома и Home Kit. Этот сервер эмулирует Home Kit API.
Серверу доступны сотни самых различных плагинов, благодаря которым стало возможным осуществлять управление всеми домашними устройствами, которые даже конструктивно не предназначены для работы с Home Kit. Главное преимущество Homebridge то, что он может работать на любом компьютере, в том числе и на Raspberry Pi 3.
Установка сервера Homebridge
При подключении нового модуля следует обновить программное обеспечение, поскольку от момента приобретения модуля до включения его в рабочую конфигурацию могут быть обновлены драйверы, и на старых версиях модуль может не работать.
После обновления, в списке предлагаемых модулей найти нужный и добавить его в рабочую конфигурацию. На физическом уровне соблюдать рекомендуемые меры предосторожности (например, снимать с себя статическое электричество).
Заключение
Система «Умный дом» на базе Raspberry Pi 3, созданная своими руками, обойдется в разы дешевле аналогичной готовой системы, а функциональность ее можно наращивать практически неограниченно.
Видео: Raspberry Pi Model 3 B — устанавливаем систему управления умным домом Domoticz
-
Archont
- Сообщения: 1
- Зарегистрирован: 08 фев 2018, 15:54
Блок автономного управления 3D-принтером на основе Raspberry Pi
Непрочитанное сообщение
Archont » 09 фев 2018, 15:54
В нашей организации есть 3D-принтер Printbox3d One. У него есть встроенный картридер для SD-карт. Но чтобы запустить печать все равно нужен ПК. Из-за чего принтером пользоваться не очень удобно: он сильно ограничен в мобильности.
Поэтому я решил сделать блок автономного управления. Был куплен Raspberry Pi 3, к нему подключен 5-дюймовый сенсорный дисплей (640×480).На 3D-принтере был распечатан корпус для этого устройства. Для управления принтером использовано Pronterface (Printrun). Но проблема в том, что это приложение не рассчитано для работы на таком низком разрешении – часть элементов выходит за пределы экрана. А сами элементы не рассчитаны на управления с сенсорного дисплея с помощью стилуса. Поэтому приложение пришлось переработать. Бонусом добавлена русская локализация.
Построено два образца устройства. Одно теперь используется в организации для работы с 3D-принтером и в процессе исправляются косяки, второе устройство приобрел знакомый для своего принтера. Планируется добавить функцию удаленного управления.
Возникла идея коммерциализировать данную разработку.
Хотелось бы узнать мнение публики.
Хотел бы вы приборести данное устройство? Цена около 140$ (8000 рублей).
Если нет, то почему?
Если да, то какие функции вы считает наиболее важными? (Возможность сделать 3D-принтер независимым от ПК; повысить мобильность; возможность управлять 3D-принтером удаленно).
Фотографии устройства:
-
bazis
- Сообщения: 1
- Зарегистрирован: 22 мар 2016, 13:53
Re: Блок автономного управления 3D-принтером на основе Raspberry Pi
Непрочитанное сообщение
bazis » 09 фев 2018, 16:35
Что если поставить на 10″ fullhd китайский планшет линукс и подключить принтер по otg? Нормальный корпус и экран и всё баксов за 100.
Вариант, который мне ближе — апельсин за $15 + любой старый андроид планшет, который будет по wifi выводить интерфейс октопринта. Опять же получаем качественный экран в красивом корпусе за меньшие деньги.
-
schs
- Сообщения: 349
- Зарегистрирован: 15 сен 2017, 19:41
- Имя: Сергей
- Откуда: Apatity
- Благодарил (а): 79 раз
- Поблагодарили: 32 раза
Re: Блок автономного управления 3D-принтером на основе Raspberry Pi
Непрочитанное сообщение
schs » 09 фев 2018, 16:51
Archont писал(а): ↑
09 фев 2018, 15:54
Если нет, то почему?
Смысла нет. Raspberry(Orange) ставиться в корпус самого принтера, рулится по сети с любого компьютера.
Octoprint в качестве принтсервера.
Рядом стоит старый планшет с экраном 10.1″ и старый ноут с экраном 15.6″
Планшет стоит 2т.р, ноут 3т.р. С чего удобнее локально рулить пока не определился, потом останется одно устройство.
Если нужна только локальная печать с тач экраном опять же дешевле и лучше поставить другой контроллер , например lerdge,
там и экран цветной нормальный, и куча других плюшек.
SPrinter 233, SPrinter mini техно, mini Kossel, anycubic photon mono
-
StanislavI
- Сообщения: 190
- Зарегистрирован: 24 ноя 2017, 08:49
- Имя: Станислав
- Благодарил (а): 4 раза
- Поблагодарили: 6 раз
Re: Блок автономного управления 3D-принтером на основе Raspberry Pi
Непрочитанное сообщение
StanislavI » 09 фев 2018, 17:09
schs писал(а): ↑
09 фев 2018, 16:51
Если нужна только локальная печать с тач экраном опять же дешевле и лучше поставить другой контроллер , например lerdge,
там и экран цветной нормальный, и куча других плюшек.
Так можно в той же апельсине/малине организовать вай-файную точку доступа и тот же планшет подключить по воздуху к принтсерверу. Будет автономно. Можно замуровать в принтер, не отличишь от представленного девайса. В итоге бюджет будет $50 баксов на новый планшет с али и еще $20 на апельсину
-
schs
- Сообщения: 349
- Зарегистрирован: 15 сен 2017, 19:41
- Имя: Сергей
- Откуда: Apatity
- Благодарил (а): 79 раз
- Поблагодарили: 32 раза
Re: Блок автономного управления 3D-принтером на основе Raspberry Pi
Непрочитанное сообщение
schs » 09 фев 2018, 21:09
pamalofeev писал(а): ↑
09 фев 2018, 18:08
Если планшет не самый чахлый, то можно и без фруктовых обойтись. Я запускал на древнем планшетнике окту под linux deploy
У меня планшетноут используется лишь как локальная консоль, хотя подключаются по сети к принтсерверу.
Обычно рулится со стационарного компьютера, дома или на работе.
pamalofeev писал(а): ↑
09 фев 2018, 18:08
Я запускал на древнем планшетнике окту под linux deploy
Слишком уж заморочено. Проще использовать отработанные решения. Да и управлять включениемвыключением питания принтера с планшета на котором запущен octoprint нетривиальная задача.
SPrinter 233, SPrinter mini техно, mini Kossel, anycubic photon mono
-
pamalofeev
- Сообщения: 16
- Зарегистрирован: 05 ноя 2017, 23:16
Re: Блок автономного управления 3D-принтером на основе Raspberry Pi
Непрочитанное сообщение
pamalofeev » 09 фев 2018, 23:12
schs писал(а): ↑
09 фев 2018, 21:09
Слишком уж заморочено. Проще использовать отработанные решения. Да и управлять включениемвыключением питания принтера с планшета на котором запущен octoprint нетривиальная задача.
Да не, не слишком. По сравнению с установкой на апельсин добавляется один шаг — установить андроид-приложение. А питанием можно управлять не только пинами фрукта, а и платой принтера и g-code m80/m81. Рецепт не для всех конечно, но если использовать планшетник в качестве пульта, то почему бы не использовать его же как сервер? Окта ресурсов после старта много не ест.
Кстати, попробовал ещё раз на своём планшетнике TouchUI запустить после обновления армбиан (стоит lubuntu xenial desktop) и клиппера, стало гораздо лучше, оперативки из 512мб свободной ещё примерно 100 остаётся, а нагрузка цпу иногда до 100% подскакивает, так что если ядер больше одного то вообще нормально будет. Основной потребитель chromium.
-
wolfs_SG
- Сообщения: 354
- Зарегистрирован: 09 янв 2016, 15:22
- Имя: Sergey
- Откуда: Кемерово
- Благодарил (а): 2 раза
- Поблагодарили: 41 раз
Re: Блок автономного управления 3D-принтером на основе Raspberry Pi
Непрочитанное сообщение
wolfs_SG » 10 фев 2018, 07:24
Короче… «Все уже придумано»… у меня тоже на апельсине, а управляю по VPN с мобильника когда сам вне дома… помниться кто-то говорил, что ставят карту памяти для того, чтоб перенес принтер и напечатал… у меня сделано по другому… создал точку wi-fi’ную на мобиле и принтер к ней подключился… а дальше опять web интерфейс и полное управление принтером… файлы так же через мобилу можно загрузить для печати, а на мобилу любим доступным способом…
Если настроить пару профилей куры на принтере, то можно уже и STL’ками оперировать…
Все в этой жизни прах и суета, кроме охоты.
Тургенев И.С.
—
Один неудачный день на охоте, гораздо лучше одного удачного на работе.
-
Alex Post
- Сообщения: 6749
- Зарегистрирован: 11 янв 2017, 17:22
- Имя: Александр
- Откуда: Брест, РБ
- Благодарил (а): 319 раз
- Поблагодарили: 776 раз
- Контактная информация:
Re: Блок автономного управления 3D-принтером на основе Raspberry Pi
Непрочитанное сообщение
Alex Post » 10 фев 2018, 09:22
У меня за почти три года только раза два возникала необходимость запустить готовый г-код на печать «удаленно». И оба раза это желание удовлетворялось при помощи «хомо сапиенса» в лице сына. А так практически всегда процессу печати предшествует слайсинг а часто — и моделинг. Вполне допускаю, что у кого то это не так, и нужно именно прямо сейчас запустить на печать вот этот файлик на принтере в Москве, находясь в командировке в Новосибирске
Но как то ИМХО маловероятный сценарий. Ну а если сценарий не такой суровый — то лучше чуть подождать, но проконтролировать процесс, чтоб убедиться, что на катушке есть пластик, что первый слой хорошо и ровно прилип, что на столике не уснул, например, кот
Да мало ли что может пойти не по плану…
Prusa i3 rework — трудится с 2015 года
Черно-оранжевый 3D-SPrinter 232 — https://3deshnik.ru/forum/viewtopic.php?f=21&t=393
-
schs
- Сообщения: 349
- Зарегистрирован: 15 сен 2017, 19:41
- Имя: Сергей
- Откуда: Apatity
- Благодарил (а): 79 раз
- Поблагодарили: 32 раза
Re: Блок автономного управления 3D-принтером на основе Raspberry Pi
Непрочитанное сообщение
schs » 10 фев 2018, 16:45
Alex Post писал(а): ↑
10 фев 2018, 09:22
А так практически всегда процессу печати предшествует слайсинг а часто — и моделинг
Всё именно так, нарисовал, отслайсил и на печать. Всё не слезая со стула:-)
Alex Post писал(а): ↑
10 фев 2018, 09:22
Вполне допускаю, что у кого то это не так, и нужно именно прямо сейчас запустить на печать вот этот файлик на принтере в Москве, находясь в командировке в Новосибирске
Не обязательно так далеко. Но не идти же в соседний кабинет ради того чтобы вставить карточку? У меня есть чем более интересным заняться.
Alex Post писал(а): ↑
10 фев 2018, 09:22
Ну а если сценарий не такой суровый — то лучше чуть подождать, но проконтролировать процесс, чтоб убедиться, что на катушке есть пластик, что первый слой хорошо и ровно прилип, что на столике не уснул, например, кот
Зачем ждать? Пустил на печать и смотри себе на здоровье как слои ложаться. Через обзорную камеру видно весь кабинет, на принтере своя камера, точнее две, одна независимая IP, другая USB, привязанная к octoprint. Если что пошло не так, всегда можно остановить печать и отключить принтер.
SPrinter 233, SPrinter mini техно, mini Kossel, anycubic photon mono
-
Alex Post
- Сообщения: 6749
- Зарегистрирован: 11 янв 2017, 17:22
- Имя: Александр
- Откуда: Брест, РБ
- Благодарил (а): 319 раз
- Поблагодарили: 776 раз
- Контактная информация:
Re: Блок автономного управления 3D-принтером на основе Raspberry Pi
Непрочитанное сообщение
Alex Post » 11 фев 2018, 21:25
schs писал(а): ↑
10 фев 2018, 16:45
идти же в соседний кабинет
ну у меня это все в одном кабинете, на расстоянии вытянутой руки
schs писал(а): ↑
10 фев 2018, 16:45
на принтере своя камера, точнее две, одна независимая IP, другая USB
я, конеячно, не психиатр, но ИМХО это уже какими то отклонениями попахивает
Prusa i3 rework — трудится с 2015 года
Черно-оранжевый 3D-SPrinter 232 — https://3deshnik.ru/forum/viewtopic.php?f=21&t=393
-
schs
- Сообщения: 349
- Зарегистрирован: 15 сен 2017, 19:41
- Имя: Сергей
- Откуда: Apatity
- Благодарил (а): 79 раз
- Поблагодарили: 32 раза
Re: Блок автономного управления 3D-принтером на основе Raspberry Pi
Непрочитанное сообщение
schs » 11 фев 2018, 22:18
Alex Post писал(а): ↑
11 фев 2018, 21:25
я, конеячно, не психиатр, но ИМХО это уже какими то отклонениями попахивает
Профессиональные девиации
Octoprint пишет таймлапс только с USB штатно, полезно иметь такую возможность, можно посмотреть запись, как печаталась деталь.
Но USB камеры почти все имеют малое разрешение, хреновые сенсоры, оптику самого отстойного качества.
Зато IP камеры недорогие и дают хорошую картинку.
SPrinter 233, SPrinter mini техно, mini Kossel, anycubic photon mono
Мы уже делали ноутбук на Raspberry и Arduino, сегодня создадим альтернативный вариант на основе «малины».
Как написано выше — это не первая попытка сделать полностью работающий ноутбук с помощью Raspberry Pi. Ноутбук, который будет создан в этом уроке будет на основе Raspberry Pi 3. Он имеет 1 ГБ оперативной памяти, четырехъядерный процессор, 4 USB порта и один порт Ethernet. Ноутбук отвечает потребностям повседневной жизни и плавно запускает такие программы как VLC медиаплеер, Mozilla Firefox, Arduino IDE, Libre Office, Libre CAD и т.д.
Для удобства использования мини-ноута в качестве дисплея был выбран 7-дюймовый (IPS-технология) HD-дисплей. Аккумулятор 5600 mAh обеспечивает питание ноутбука. После полной зарядки ноутбук работает около 2 часов.
Шаг 1: Что вам понадобится?
На старте этого проекта планы были использовать более сложную электронику и дизайн, но в в конце концов все свелось к этим компонентам:
- 1x — Raspberry Pi 3;
- 1x — 7 дюймовый ЖК-дисплей с адаптером;
- 1x — маленькая Bluetooth-клавиатура;
- 1x — 5600 мАч USB внешний аккумулятор;
- 1x — мини-динамик;
- 1x — мини-переключатель;
- 1x — карта памяти 8-16 ГБ;
- 1x — 3,5 мм аудиоразъем;
- 1x — пластиковая коробка 11×17 см.
Используемые инструменты:
- Паяльник;
- Горячий клей;
- Резак.
Шаг 2: Корпус
Нужна пластиковая коробка 11×17 см, которой открывается сверху. Вы также можете использовать 3D-принтер для создания корпуса мини-ноутбука. Затем мы должны правильно расположить все компоненты внутри пластиковой коробки. Raspberry Pi ставим слева вниз, внешний аккумулятор в правой нижней части коробки, а динамик над платой.
Затем размещаем 7-дюймовый дисплей на открывающейся части коробки.
Шаг 3: Обзор всех компонентов
В проекте три основных компонента.
- Дисплей. Был выбран 7-дюймовый HD-дисплей с IPS-технологией. Этот дисплей очень тонкий и подходит под корпус.
- Клавиатура. Использована USB-клавиатура с USB-интерфейсом, которая также соответствует дизайну корпуса. Это была лучшая и самая маленькая клавиатура, которую смогли найти. Можно использовать клавиатуру от обычного планшета. Для текущего проекта это была самая лучшая и самая маленькая клавиатура.
- Raspberry Pi 3. Основа проекта. Плата имеет 1 ГБ оперативной памяти, четырехъядерный процессор, 4 USB-порта и один порт Ethernet.
Шаг 4: Блок питания
Выбранный энергоблок должен иметь важную функцию: Pass-Through Charging (PTC), что означает, что мы должны одновременно заряжать и использовать ноутбук.
Для того, чтобы емкость 5600 мАч работала так как нам нужно до конца — мы должны открыть блок и припаять переключатель. Сделайте аналогично фото выше.
Шаг 5: Выбор операционной системы
Выбор операционной системы полностью зависит от типа выполняемой вами работы. В проекте нужны были функции рабочего стола, поэтому была выбрана Raspbian Pi OS. Есть несколько других, которые можно принимать во внимание:
- Raspbian. Официальная поддерживаемая операционная система создателей. Raspbian поставляется с предустановленным программным обеспечением для обучения, программирования и общего использования.
- Ubuntu Mate. Стабильная, простая в использовании операционная система с настраиваемой рабочей средой. Идеально подходит для тех, кто хочет получить максимальную отдачу от своих компьютеров и предпочитает традиционную рабочую метафору.
- OSMC (Open Source Media Center). Бесплатная платформа с открытым исходным кодом на базе Linux и основанная в 2014 году. Позволяет воспроизводить медиафайлы из локальной сети, подключенного хранилища и Интернета.
Шаг 6: Установка операционной системы
Как только вы решите с операционной системой с которой вы хотите работать — самое время установить её. Raspberry Pi 3 устанавливается с SD-карты. Поэтому нужно записать образ на SD-карту.
Какой тип SD-карты лучше?
Рекомендация по выбору размера SD-карты зависит от операционной системы, которая устанавливается. В проекте использовалась карта 16 ГБ. Это дало следующее преимущество: быстрая загрузка и выполнение операций чтения и записи.
Запись образа на SD-карту выполняется путем записи файла изображения с помощью Win 32 Disk Imager.
- Используйте SD Formatter для форматирования SD-карты.
- Откройте Win32 Disk Imager и найдите загруженный вами образ. Нажмите «Write» после завершения.
- Дождитесь завершения записи.
- По окончании записи безопасно извлеките SD-карту из компьютера.
- Если вы правильно выполнили шаги, Raspberry Pi должна успешно загрузиться.
Шаг 7: Сборка деталей для проверки работы
- Прежде всего возьмите Raspberry Pi 3 и возьмите адаптер/коннектор дисплея для соединения с «малиной».
- Затем возьмите 7-дюймовый дисплей и соедините с другим концом коннектора дисплея.
- Вставьте 16 ГБ карту памяти внутри слота карты памяти Raspbian Pi 3.
- Затем подключите питание 5600 мАч к Raspbian Pi 3.
- Включите и увидите, что желтый светодиод светится на плате, а 7-дюймовый дисплей включился.
- Если всё сработало хорошо, переходите к следующему шагу.
Шаг 8: Делаем дисплей привлекательным
Нанесите клей как показано на фото выше на 7-дюймовый дисплей очень осторожно. Убедитесь, что черная часть дисплея не в клее.
Затем возьмите черный бумажный или картонный лист и вырежьте форму рамки. Затем положите её на дисплей, как показано выше.
Шаг 9: Окончательная сборка
- Прежде всего, возьмите резак и сделайте держатели для Raspberry Pi 3, зарядки и переключателя питания.
- Используйте немного клея, чтобы прикрепить и удерживать дисплей на крышке.
- Клеем Raspbarry Pi 3 в соответствующее место.
- Клеем источник питания в соответствующее место.
- Подключите «малину» к коннектору дисплея и источнику питания.
Шаг 10: Делаем аудиосистему
Возьмите один динамик от радио, игрушки или наушников и подключите к аудиоразъему 3,5 мм. Дальше вставьте динамик в Raspberry.
Звук этого динамика слабый, но если вам нужен громкий звук — подключите аудио усилитель. Сделайте «накрывашку» как на фото выше и приклейте её сверху.
Шаг 11: Заключительный этап
Raspberry ноутбук почти готов. Его полностью можно использовать и он работает. Откройте и включите ноут. Raspberry Pi должен успешно загрузиться, если вы все шаги сделали правильно.
Подключите Bluetooth-клавиатуру и наслаждайтесь работой.
18 мая 2018 в 22:47
| Обновлено 7 декабря 2019 в 00:17 (редакция)
Опубликовано: Редакция
Уроки, Raspberry
Наконец до меня добралась очередная посылка из интернет-магазина GearBest с одноплатным компьютером Raspberry Pi 3 Model B, базовыми аксессуарами для него и еще кое-какой мелочевкой.
О том, что такое Raspberry Pi и возможностях его применения можно прочитать подробнее в статье «Raspberry Pi и Arduino: в чем между ними разница и для чего они нужны».
А в этой статье будет описан процесс знакомства с микрокомпьютером — от распаковки до первого запуска операционной системы и выполнения первоначальных настроек.
Что нам понадобится
Для начала работы понадобится обязательно:
- Raspberry Pi 3 Model B
- Набор медных радиаторов для Raspberry Pi
- Акриловый корпус для Raspberry Pi 3B / 2B
- Блок питания 5V 2.5A
- Карта памяти microSD объемом от 8Гб
Это то, из чего будет состоять микрокомпьютер в сборе.
Кроме того, нужно иметь следующую периферию:
- Монитор или телевизор с HDMI-входом
- Проводная клавиатура
- Проводная мышь
- Картридер для microSD-карт или устройство, способное выполнять его функцию
Экран для вывода информации, устройства ввода, картридер для записи образа операционной системы.
А для большего удобства не лишним будет иметь:
- Bluetooth-клавиатура
- Bluetooth-мышь
Управлять «малинкой» беспроводными мышью и клавиатурой удобнее, чем их проводными собратьями.
Небольшой обзор Raspberry Pi 3 Model B
Микрокомпьютер Raspberry Pi 3 Model B поставляется в картонной коробке красно-белой расцветки с фирменным логотипом в виде малины.

Если Arduino может производить по open-source лицензии любой желающий, то с Raspberry Pi все проще: эти платы являются коммерческой разработкой, и выпускаются всего двумя компаниями: RS Components (в тандеме с Allied Electronics) в Англии и Element14 в Китае по лицензии Raspberry Pi Foundation.
Платы производства Element14 и RS Components/Allied Electronics являются 100% идентичными и единственное различие между ними заключается в дизайне упаковке — на ней будут логотипы либо того, либо другого производителя.
Я покупал Raspberry Pi 3 английского производства, о чем свидетельствует гордая надпись «made in UK» на печатной плате. На плате производства Element14 надпись выглядела бы как «made in PRC» (PRC — People’s Republic of China, Китайская Народная Республика).
Что представляет из себя Raspberry Pi 3 Model B в техническом плане?
- SoC: Broadcom BCM2837
- Процессор: ARM Cortex-A53 (4 ядра)
- Графический процессор: Broadcom VideoCore IV
- Оперативная память: 1Гб LDDR2
- Встроенные адаптеры: 10/100Мбит Ethernet, Bluetooth 4.1 LE, Wi-Fi 802.11n
- Порты: 4xUSB 2.0, HDMI, 3.5мм аудиовыход, 40-pin GPIO (как на Arduino), Camera Serial Interface (CSI), Display Serial Interface (DSI)
- Разъем под microSD-карту

Последнее — это действительно круто.
Раньше при использовании Raspberry Pi приходилось затыкать 2 USB-порта из имеющихся четырех адаптерами Bluetooth и Wi-Fi, а теперь они распаяны на печатной плате и оба беспроводных интерфейса работают «из коробки». Помимо того, что так «малина» выглядит эстетичнее, это еще и удешевляет конечную стоимость ее эксплуатации — ведь даже дешевые USB-адаптеры Bluetooth и Wi-Fi стоят не меньше 5 долларов каждый.
Блок питания для Raspberry Pi
Питание на Raspberry Pi подается через стандартный microUSB-разъем, как и на большинство современных мобильных гаджетов.
Этот микрокомпьютер весьма требователен к электропитанию — для нормальной работы необходимо использовать источник питания, способный выдавать не менее 2А, а лучше 2,5А тока.
При недостатке питания Raspberry Pi скорее всего запустится, но будет очень сильно тормозить.
Вообще, Raspberry Pi может тормозить по 2 причинам: либо используется медленная microSD-карта (ниже 10 класса скорости), либо не хватает питания. Если не хватает питания, то на подключенном к микрокомпьютеру экране в правом верхнем углу будет отображаться желтый значок молнии.
Питания может не хватать по 2 причинам: слабый источник питания (например, большинство зарядных устройств для смартфоном выдают ток до 1А) или плохой USB-кабель.
Так что к выбору блока питания нужно подходить осознанно.
Я специально заказал БП на 2.5А для Raspberry Pi, несмотря на наличие в хозяйстве обычных зарядных устройств для смартфонов.
Установка радиаторов на Raspberry Pi
Первым делом при подготовке Raspberry Pi к запуску следует озаботиться его охлаждением.
Как-никак, а перед нами компьютер с процессором и другими чипами, которые имеют свойство нагреваться при работе.
Китайцы производят и продают наборы радиаторов для микрокомпьютеров. Радиаторы бывают алюминиевыми, медными и керамическими. Я выбрал набор из меди, потому что теплоемкость медных радиаторов больше алюминиевых, а керамика в качестве пассивного охлаждения — вещь для меня совершенно непонятная.
2 крупных радиатора крепятся на верхней части платы, а плоская пластина будет закреплена на чипе оперативной памяти с нижней стороны.
Крепятся радиаторы к чипам, судя по всему, обычным двусторонним скотчем. По крайней мере для 3M-ленты этот клейкий материал выглядит уж слишком тонким.
Чипы перед наклейкой радиаторов на всякий случай следует обезжирить спиртом. Крупный чип слева — сердце микрокомпьютера, однокристальная система Broadcom BCM2837 с интегрированным процессором и графическим адаптером. В синтетических тестах греется до 100°C, так что оставлять его без охлаждения никак нельзя.
Правее, возле USB-портов, находится контроллер USB. Он тоже греется, хотя и не так сильно, как SoC Broadcom BCM2837. Второй радиатор из набора будет закреплен на нем.
2 верхних радиатора надежно закреплены на своих местах.
Медная пластина закреплена на модуле 1Гб LDDR2 памяти с нижней стороны. Оперативная память сильно не греется, поэтому полноразмерный радиатор на ней не нужен. Но медная пластина все же пусть будет. На всякий случай. Как минимум, ее наличие способно защитить чип от случайных механических повреждений.
Забегая наперед: радиаторы оказались действительно полезной вещью, когда процессор «малины» находится под нагрузкой, то установленный на нем радиатор начинает обжигать палец. Так что пренебрегать их установкой, думая что «раз производитель не оснастил ими плату — значит и не нужно», не стоит.
Сборка корпуса для Raspberry Pi 3
После установки радиаторов остается только установить Raspberry Pi в корпус — и на этом приготовления к запуску можно считать законченными.
Корпус, как и радиаторы, продается отдельно. Конечно, можно обойтись и без него — но будет очень неприятно, если плата микрокомпьютера погибнет преждевременно от разряда статического электричества или будет случайно повреждена каким-то иным образом.
Кроме того, крепление в корпусе придает всей конструкции законченный и эстетичный вид.
Тот корпус, который я купил, сделан из прозрачного акрила (оргстекла) и поставляется в виде набора для самостоятельной сборки.
Состоит он из 6 акриловых пластин: 4 боковушки, днище и подъемная крышка.
Все элементы оклеены с обеих сторон защитной транспортировочной пленкой. Я сначала этого не понял: больно хорошо пленка прилегает к пластинам, нигде нет воздушных пузырей и надрывов. Так что про себя подумал плохо о китайцах, приславших мутный и исцарапанный корпус, и собрал его «как есть» :).
Потом сообразил что к чему, разобрал все обратно на составляющие и снял с них защитную пленку.
Затем снова собрал корпус. Вот такая получилась красота.
Единственный недостаток — такой корпус быстро собирает на себя жирные отпечатки пальцев, что портит вид. Поэтому периодически нужно протирать его салфеткой.
Установка и настройка Raspbian
С «железной» частью мы вроде разобрались.
Raspberry Pi установлен в корпус, на чипы наклеены радиаторы, найден подходящий источник питания.
Осталось установить на микрокомпьютер операционную систему, сделать базовые настройки — и можно пользоваться.
Установка Raspbian
На настоящий момент для Raspberry Pi существует 6 официальных операционных систем и около 30 неофициальных, включая в том числе и Android.
В большинстве руководств по Raspberry Pi рекомендуют использовать установщик NOOBS (New Out Of The Box Software). Это официальный установщик от разработчиков Raspberry Pi, содержащий в себе дистрибутив Raspbian и возможность загрузить из интернета 5 остальных официальных дистрибутивов и установить любой из них на Raspberry Pi.
Я попробовал — мне не понравилось.
NOOBS имеет смысл использовать для установки одновременно двух или более разных ОС на одну Raspberry Pi, с возможностью выбора между установленными ОС при включении.
Если мы планируем использовать на Raspberry Pi только одну ОС (в данном случае — Raspbian), то можно поступить сделать все гораздо проще и быстрее: сразу записать операционную систему на microSD-карту.
Для этого потребуется microSD-карта и картридер. Либо устройство, способное его заменить (mp3-плеер, смартфон, видеорегистратор, планшет — любое устройство, отображающее установленную в него карту памяти в качестве накопителя при подключении к компьютеру).
Крайне желательно использовать карту памяти не ниже 10 класса скорости, т.к. использование более медленных microSD-карт будет тормозить работу устройства.
А сам процесс установки Raspbian сводится к трем простым шагам.
Шаг 1. Форматирование microSD-карты
Имеющуюся microSD-карту необходимо отформатировать в формате FAT32.
Для этого нужно использовать бесплатную утилиту SD Card Formatter.
Стандартное средство для форматирования Windows почему-то не подходит: при попытке запуска Raspbian с отформатированной через него карты памяти будет выдаваться ошибка «error resizing existing FAT partition».
Шаг 2. Запись дистрибутива Raspbian
После подготовки microSD-карты необходимо скачать дистрибутив Raspbian с официального сайта.
Скачанный образ дистрибутива заархивирован, так что после скачивания архив нужно распаковать в любую папку.
Распакованный образ Raspbian нужно записать на подготовленную microSD-карту, для чего можно воспользоваться бесплатной утилитой Rufus.
Шаг 3. Первый запуск Raspbian на Raspberry Pi
На этом процедура установки завершена.
Карту памяти с записанным на нее Raspbian нужно установить в Raspberry Pi и подключить к микрокомпьютеру монитор и питание, после чего произойдет первый запуск операционной системы.
Теперь можно подключить Raspberry Pi к беспроводной Wi-Fi сети, а если есть Bluetooth мышь и клавиатура, то провести их сопряжение с микрокомпьютером для большего удобства использования.
Ставим обновления
После установки Raspbian и подключения к интернету посредством Ethernet или Wi-Fi соединения нужно на всякий случай обновить все пакеты до актуальной версии.
Делается это через терминал посредством ввода двух команд:
sudo apt-get update sudo apt-get upgrade
Первая команда загружает сведения о доступных обновлениях пакетов, вторая загружает непосредственно сами обновления.
На всякий случай обновим еще прошивку Raspberry Pi:
sudo rpi-update
По завершению установки обновлений Rapsberry Pi нужно перезагрузить:
reboot
И если все сделано правильно, то после перезагрузки система уведомит нас о том, что она была обновлена до актуальной версии.
Многие команды в *nix-системах начинаются с sudo: это означает, что исполнение команды запускается с правами суперпользователя, что является аналогом «Запуска от имени администратора» в Windows.
Убираем черные поля по краям экрана
В некоторых случаях после загрузки Raspbian пользователь обнаруживает черные поля по краям экрана.
Это значит, что неверно выставлена развертка.
Исправляется буквально в два клика мышкой путем правки файла конфигурации через текстовый редактор:
sudo leafpad
Открываем файл /boot/config.txt и ищем в нем строку:
#disable_overscan=1
И убираем символ #, превращая ее из комментария в исполняемую команду:
disable_overscan=1
На этом все. После перезагрузки интерфейс Raspbian будет отображаться на полном экране без каких-либо черных полей.
Настройки локализации
По умолчанию Raspbian настроен под британского пользователя.
Изменить настройки локализации можно в настройках, как через графический интерфейс (Menu -> Parameters -> Raspberry Pi Configuration), так и через консоль:
sudo raspi-config
Мне показалось, что менять настройки через графический интерфейс удобнее, поэтому в этом тексте я буду рассматривать его.
Итак, запускаем «Raspberry Pi Configuration».
На вкладке System нажимаем «Change Password…» и задаем root-пароль. По умолчанию он отсутствует, что в дальнейшем может помешать выполнению некоторых команд.
Переключаемся на вкладку Localisation.
«Set Locale…» — выбираем Country: RU (Russia), Character Set: UTF-8. Язык системы (пункт Language) можно поменять на «ru (Russian)», а можно оставить как есть. Локализация Raspbian выполнена не на 100%, и при выборе русского языка придется довольствоваться мешаниной из русского и английского текстов в интерфейсе.
«Set Timezone…» — здесь нужно выбрать подходящий часовой пояс. Поскольку территория России захватывает и Европу и Азию, то в зависимости от географического положения в «Area» выбирается либо «Asia», либо «Europe», а в «Location» — один из городов, часовой пояс в котором соответствует часовому поясу вашей местности.
Например, на Урале часовой пояс UTC/GMT+5, что принято называть «Екатеринбургским часовым поясом». В графе «Location» в Raspbian нет населенного пункта Ekaterinburg (Yekaterinburg), но есть населенный пункт Ashkhabat, живущий по тому же часовому поясу. Поэтому я выставляю его, и на системных часах начинает отображаться мое местное время.
«Set Keyboard…» — не трогаем, о раскладках клавиатуры речь пойдет дальше.
«Set WiFi Country» — тут выставляем «RU Russia», хотя большой необходимости в этом нет, встроенный адаптер работает и на локальных настройках по умолчанию. Скорее всего, эта настройка важна для некоторых стран третьего мира, где стандарты Wi-Fi жестко ограничиваются в милитаристских целях.
Раскладка клавиатуры
Нужные раскладки клавиатуры и возможность переключения между ними добавляются вводом консольной команды:
setxkbmap us,ru -option grp:alt_shift_toggle
В данном случае добавляются русская и английская раскладка. Английская стоит как основная, а переключение между ними происходит по сочетанию клавиш Alt+Shift.
Можно изменить сочетание на Ctrl+Shift, если так привычнее, внеся соответствующую правку в эту команду.
Проблема в том, что Raspbian не запоминает эту команду, и после каждой перезагрузки Raspberry Pi ее придется вводить заново. А это неудобно.
Поэтому открываем текстовый редактор:
sudo leafpad
И правим через него системные настройки клавиатуры, хранящиеся в файле /etc/default/keyboard.
Нужно заменить строки:
XKBLAYOUT="gb" XKBOPTIONS=""
На:
XKBLAYOUT="us,ru" XKBOPTIONS="grp:alt_shift_toggle,grp_led:scroll"
Теперь добавим в систему графический индикатор раскладки клавиатуры:
sudo apt-get install gxkb
И поместим его в автозагрузку. Это тоже делается через редактирование текстовых файлов:
sudo leafpad
Открываем файл /home/pi/.config/lxsession/LXDE-pi/autostart и дописываем в его конец строку:
@gxkb
Теперь осталось только перезагрузить Raspberry Pi для применения изменений:
reboot
На этом базовую настройку можно считать завершенной.
Впечатления от использования Raspberry Pi 3
Первое, на что обращаешь внимание при использовании Raspberry Pi — полная бесшумность его работы.
Нет, понятно, что если используется полностью пассивное охлаждение и нет ни воздушных кулеров, ни даже обычного HDD на основе движущихся частей, то издавать шум просто нечему.
Но сам факт существования подобного компьютера — настоящего, полноценного компьютера, и при этом полностью бесшумного — поначалу потрясает воображение.
Теперь что касается производительности.
Мощности Raspberry Pi 3 Model B хватает на выполнение простых офисных и мультимедийных задач: комфортную работу в офисном пакете, просмотр видео и серфинг не очень тяжелых сайтов в интернете.
А вот просмотр онлайн-видео дается «малинке» уже тяжеловато, а при одновременном открытии 4-5 вкладок ютуба Raspbian начинает немного подвисать.
По слухам, с воспроизведением онлайн-видео все обстоит более чем хорошо в специально заточенных под мультимедийную составляющую операционных системах — например, OpenELEC. Тему использования Raspberry Pi в качестве домашнего медиацентра я планирую обязательно рассмотреть в будущем.
Ну а дистрибутив Raspbian предназначен для обучения программированию (недаром в нем «из коробки» уже предустановлены IDE для программирования на Java и Python, и такая забавная штука как Scratch — среда программирования, позволяющая составлять алгоритмы в визуально-графической форме) и для управления подключенной по GPIO периферией. Это тоже интересная тема, и к использованию GPIO-интерфейса Raspberry Pi я еще вернусь в будущем.
Заключение
Вот так прошло мое знакомство с микрокомпьютером Raspberry Pi 3.
В следующих статьях цикла будут рассмотрены такие темы как:
- подключение к Raspberry Pi сенсорного TFT-дисплея
- удаленное управление через SSH
- организация домашнего медиацентра
- совместное использование Raspberry Pi и Arduino
- сравнение Raspberry Pi с другими присутствующими на рынке одноплатными компьютерами
А для тех, кто заинтересовался перспективой покупки Raspberry Pi 3 хочу напомнить, что адекватная цена на этот микрокомпьютер колеблется в пределах $35-$40.
Именно по такой цене Raspberry Pi можно приобрести в Китае, в то время как у наших «серых» дилеров розничная стоимость этого микрокомпьютера начинается от 3000 рублей и может достигать 4500 рублей.
Не кормите кучу посредников — заказывайте Raspberry Pi по честной цене в Китае!
Raspberry Pi 3B (английская сборка)в интернет-магазине GearBest Raspberry Pi 3B (китайская сборка)в интернет-магазине GearBest
Быстрая регистрация
После регистрации вы можете задавать вопросы и отвечать на них, зарабатывая деньги. Ознакомьтесь с правилами, будем рады видеть вас в числе наших экспертов!
Создать аккаунт
В возрасте 3 лет для ребёнка нужны игрушки, развивающие логику, память, мышление, моторику, те, которые помогают узнавать мир, а также игрушки для физического развития. Чтобы ребёнок развивался физически, у него должны быть в арсенале мячи, самокат, велосипед, подходящие по возрасту. Для развития … Читать далее
Весенние каникулы у школьников должны начаться двадцать четвёртого марта. Они длятся десять дней. Четвёртая четверть начинается со второго апреля. Получается, что до каникул примерно девять недель. У первоклассников есть дополнительные каникулы. Последняя неделя февраля.
Снизьте потребление высококалорийной пищи, сахара, а также замените растительное масло на сливочное, оно и полезнее и менее жирное.
Займитесь спортом, вам помогут упражнения для пресса и живота, можете воспользоваться приложением тренировок, скачав на ваш … Читать далее
При камнях в желчном пузыре нельзя пить только желчегонные. Иначе, когда вы будете принимать желчегонные, пойдёт желчь. И если в желчном пузыре есть камни, когда они пойдут, могут застрять в протоках. А протоки очень маленькие, буквально несколько сантиметров. Камни застрянут, и случится приступ … Читать далее
Бегом бежать к врачу. Не ждать никакого совета в интернете, не спрашивать у подружек, знакомых, коллег по работе. Не сидеть просто так на месте и не ждать пока оно пройдёт само. Диарея может привести к обезвоживанию организма. А так как мама будущая тесно связана со своим малышом, то обезвоживание … Читать далее
Я использую ОМЕГА 3-6-9. Бывает еще просто Омега 3.Многие считают, что если мы будем меньше жиров употреблять, но сосуды буду чище и мы будем здоровее. Это не так. Жиры ведь бывают разные и они необходимы нашему организму: для защиты клеточных мембран от повреждений, для участия в тепловом обмене … Читать далее
На 3 стакана молока нужно 8 столовых ложек манки с горкой. Это если готовить для взрослого человека, то получится густая. Можно взять 7 ложет на 3 стакана и каша получится более жидкая и подходящая для ребёнка. Не забывайте, что манную крупу нужно медленно всыпать в молоко, что бы она не слиплась и … Читать далее
Думаю, что неудачные сериалы и на второй сезон не имеют право. Зачем снимать то, что никто не смотрит и никакой ценности из себя не представляет? Не интересно, не смешно, не весело, не познавательно. Прошло время бразильских сериалов, которые смотрели, поскольку это было в новинку. Сейчас хочется … Читать далее
Отличается не только широчайшим спектром применения, но и поддержкой устройств сторонних разработчиков, значительно расширяющих функциональность платы. Сегодня мы рассмотрим простейший способ научить работать Raspberry Pi с сенсорным экраном. А на выходе получим крошечный планшет с настольной операционной системой.
Какие есть экраны для Raspberry Pi
Есть как минимум три возможности подключить экран:
- Display-порт в виде зажимного разъёма на фронтальной поверхности.
- HDMI-разъём.
- Пины GPIO — разъёма универсального ввода-вывода.
Все они позволяют подключать к Raspberry Pi экраны с тачскрином.
Через дисплейный разъём работают некоторые стандартные LCD-панели (для разработчиков и встраиваемых устройств). Есть и оригинальный 7-дюймовый экран , устанавливаемый с обратной стороны Raspberry. К сожалению, этот вариант очень дорогой, зато для его запуска не требуется ничего. Просто скачать систему и вставить флешку с ней. В обычном Raspbian (Debian для Raspberry Pi) обеспечивается нативная поддержка этой железки.
Более доступным вариантом, особенно в странах СНГ, где доставка из Великобритании убивает всю прелесть «Малинки», стали экраны компании WaveShare, работающие через GPIO . Почему? Это позволяет реализовать поддержку экрана в любых вариантах NIX-систем для Raspberry Pi с любыми версиями платы (для Raspberry Pi 2 и 3 используется один дистрибутив, для первой ревизии — отдельный) и упростить настройку и отладку полученной системы. К тому же они всегда есть в наличии и стоят всего 23 доллара .
Как подключить
Нет ничего проще: нужно всё распаковать, а потом подключить экран к GPIO-разъёмам Raspberry Pi. Не потребуется даже считать пины — просто совместите платы так, чтобы экран был ровно над основной платой.
Как настроить
Есть два метода: скачать готовый дистрибутив или настроить систему самостоятельно. Первый потребует перейти на официальную страницу проекта . Затем выбрать подходящий дистрибутив, скачать и записать его на флешку. Вставили, подключили питание — наслаждаемся работой. К сожалению, в данном случае придётся довольствоваться устаревшей версией операционной системы.
Второй способ подойдёт уже знакомым с Linux пользователям и сначала потребует установить в систему драйверы, а затем перевести работу компьютера на резистивный дисплей. С инструкцией можно ознакомиться на официальном сайте . Кстати, по этой же технологии можно подключить аналогичный экран стороннего производителя.
К сожалению, ни тот ни другой способ не заставит работать одновременно и экран, подключённый через GPIO, и HDMI-порт. Реализовать трансляцию на телевизор или монитор можно уже внутри системы, подключая монитор в качестве дополнительного экрана.
Продолжаю публиковать цикл статей об освоении Raspberry Pi и Arduino.
Сегодняшняя статья посвящена подключению сенсорного TFT-дисплея к Raspberry Pi.
Для “малинки” выпускается и продается великое множество различных сенсорных дисплеев, но каких-то особых различий между ними нет. В основе лежит проверенная временем линейка дисплеев от компании Waveshare Electronics, которую копируют и выпускают с использованием тех же комплектующих под своим лейблом другие китайские производители.
TFT-дисплей: краткий обзор и подключение
TFT-дисплеи для Raspberry Pi можно поделить на 3 разновидности:
- подключаемые через DSI-интерфейс (15-контактный разъем для плоского шлейфа)
- подключаемые через HDMI-разъем
- подключаемые через GPIO
Большинство дисплеев с маленькой диагональю (до 4 дюймов) подключаются через GPIO и представляют собой печатную плату, на которой зафиксирован сам TFT-модуль, распаян адаптер и GPIO-разъем для подключения.
Подобные платы в среде Raspberry Pi принято называть HAT: Hardware Attached on Top, что в переводе означает “аппаратура, подсоединенная сверху”.
Краткий обзор
Купленный мною модуль производства китайской фирмы Keyes (не путать с китайской же – это разные компании) представляет собой HAT-плату из красного текстолита.
Сверху на нем смонтирован сенсорный дисплей диагональю 3,2″ с разрешением 320×240 пикселей – как на старых смартфонах середины нулевых годов, а также 3 физические кнопки.
Задействованный модуль дисплея имеет название INANBO-TP32D, но практической пользы знание этой подробности не несет.
На обратной стороне расположен 26-контактный GPIO-слот для подключения платы к Raspberry Pi. Тут же виден DSI-интерфейс с уже подключенным к нему шлейфом от TFT-модуля, какой-то контроллер и другие мелкие детали.
По сути, плата является адаптером, который должен подружить конкретный TFT-модуль с конкретными спецификациями, сенсорный интерфейс и хардварные кнопки с “малиной” через GPIO.
Подключается дисплей к “малинке” очень просто – совмещаем расположенный на HAT-плате разъем со штырьками GPIO начиная с самых крайних.
Мне пришлось вытащить свою Raspberry Pi 3 из корпуса – иначе плата не насаживалась на штырьки, упираясь своими “рожками” в боковые стенки. Вообще, эти рожки – голый текстолит, так что можно аккуратно спилить их лобзиком и тогда плата прекрасно поместится в корпус. Но смысла в таком действии я не увидел, и далее объясню почему. Также я пока не стал снимать защитную пленку – она несколько неряшливо смотрится на фото, но не мешает работать с дисплеем.
При подаче питания на Raspberry Pi дисплей засветится сплошным белым цветом, но изображения на нем не возникнет. Это нормально, так и должно быть. Белое свечение свидетельствует о том, что дисплей исправен, правильно подключен и на него поступает питание с GPIO. А вот для вывода на него изображения понадобится скачать и установить драйвера.
Установка драйверов
Загуглив “драйвера для дисплея Raspberry Pi”, я сперва наткнулся на какие-то страшные и громоздкие мануалы, в которых рекомендовалось скачать какие-то файлы из git-репозитория, потом куда-то их установить, затем вручную внести правки в файлы конфигурации и вручную же выставить правильное разрешение экрана путем правки других файлов.
Возможно, когда-то эти инструкции действительно были актуальны и ради подключения внешнего дисплея приходилось идти на такие мучения.
Но на данный момент установка драйверов для TFT-дисплея к Raspberry Pi не более сложна, чем процесс физического подключения дисплея к микрокомпьютеру, и займет не более 5 минут времени.
Первым делом нужно скачать архив с драйвером (LCD-show-161112.tar.gz) с вот этой страницы
.
Затем распакуем его при помощи консольной команды:
Tar xvf LCD-show-161112.tar.gz
Перейдем в директорию с распакованным драйвером:
Cd LCD-show/
И запустим скрипт, который сделает всю остальную работу:
./LCD32-show
Обратите внимание, что этот скрипт создан для работы с дисплеем диагональю 3,2″ – как у меня. Поэтому для работы с дисплеями других диагоналей потребуется запуск других скриптов: LCD28-show, LCD35-show, LCD4-show, LCD4-800×480-show, LCD43-show, LCD5-show, LCD7-800×480-show, LCD7-1024×600-show, LCD101-1024×600-show.
Все они идут в комплекте с вышеуказанным драйвером, а для какого дисплея предназначен какой скрипт – понятно из названий.
Если все сделано правильно, то после запуска скрипта Raspberry Pi начнет перезагружаться, а на дисплее появится изображение.
Для переключения обратно с сенсорного TFT-дисплея на HDMI-монитор нужно снова из консоли зайти в папку с драйвером:
Cd LCD-show/
И активировать скрипт:
./LCD-hdmi
После этого “малина” опять перезагрузится, экран загорится белым цветом, а изображение будет выводиться на подключенный по HDMI монитор.
Также драйвер позволяет переворачивать изображение на 90, 180 и 270 градусов:
Cd LCD-show/
./LCD32-show 90
После перезагрузки изображение на TFT-дисплее будет повернуто на 90 градусов.
Cd LCD-show/
./LCD32-show 180
cd LCD-show/
./LCD32-show 270
Вот эти команды поворачивают изображение на 180 и 270 градусов соответственно.
Cd LCD-show/
./LCD32-show 0
Возврат к ориентации экрана по умолчанию.
Сенсорный интерфейс отдельно настраивать не надо – он уже прописан в драйвере и активируется по умолчанию.
Нерешенным остается вопрос с физическими кнопками, которые присутствуют на некоторых модулях экранов. Я пока оставил его без внимания, потому что не увидел смысла в наличии этих кнопок для себя. Какие действия мне на них вешать, и, главное, зачем?
TFT-дисплей для Raspberry Pi 3 в работе
Подвох заключается в том, что графический интерфейс Raspbian не предназначен для работы в разрешении 320×240.
Вот так выглядит рабочий стол Raspbian PIXEL. Я заранее установил в настройках интерфейса самый маленький из возможных размер ярлыков в панели задач – иначе в столь низком разрешении они накладываются друг на друга.
Открываем меню. Более-менее терпимо, хотя конечно же это ненормально, когда меню занимает больше половины ширины экрана.
Откроем браузер Chromium. Всё! Ярлыки и шрифты в панели задач съехали и полезли друг на друга – уменьшение их размера до минимально возможного не помогло. Сам браузер к такому разрешению экрана абсолютно не адаптирован, и серфинг сайтов практически невозможен. То есть, он как бы есть, но необходимость постоянно скроллить веб-страницы не только по вертикали, но и в горизонтальном направлении делает это занятие бессмысленным.
А вот с консолью работать вполне можно. Тут низкое разрешение не помеха. А если выгрузиться из GUI вообще, то пользование консолью станет еще удобнее.
Заключение
Небольшие подключаемые TFT-дисплеи для Raspberry Pi отлично подходят для работы с консолью в полевых условиях и способны стать заменой обычному полноразмерному монитору.
Также они могут использоваться в DIY-устройствах на базе Raspberry Pi (умный дом, медиацентр, 3d-принтер, станок с ЧПУ) для вывода информации и управления через специально созданный с учетом низкого разрешения и малой диагонали графический интерфейс.
Но для работы в Raspbian PIXEL они непригодны по причине отсутствия адаптации к разрешениям ниже 1024×600 в этом GUI.
К качеству работы обозреваемого в этой статье дисплея у меня претензий нет. Но на данный момент мне просто некуда его применить, так что он отправляется отдыхать на полку. Планирую в дальнейшем задействовать его в устройстве “умного дома”.
В комплекте с монитором поставляется п-образный HDMI-HDMI переходник, стилус и латунные стойки с винтиками.
С обратной стороны экрана есть переключатель, сдвиньте его ближе к микро-usb разъёму.
Здравствуйте.
Мне уже доводилось писать про на Raspberry Pi без графики и про . Сейчас мы будем устанавливать ОС RASPBIAN JESSIE
с графикой и подключать 5-ти дюймовый экран с тачскрином, который можно приобрести в магазине чип и дип за 4000р.
Плюс, поверх основной ОС установим полноценный медиацентр Kodi для удобного просмотра видео контента. То есть для переключения между RASPBIAN и
Распакуйте образ, который будет весить 4
с лишним Гб
.
SD
-карточку лучше всего используйте не менее 8ГБ
и желательно хорошего качества известного бренда (у меня Transcend Premium 400x)
. От этого сильно зависит скорость работы малины.
О том, как поместить образ на флешку написано в предыдущей , начиная с и до главы «Запуск
«. После выполнения описанных там действий не вынимайте карточку и возвращайтесь сюда.
Теперь нужно найти и отредактировать файл config.txt
(если работаете в windows, то обязательно скачайте текстовый редактор Notepad++ и делайте всё в нём)
.
В windows этот файл находится в корне диска (на самом деле это загрузочный раздел boot, около 100Мб. Размечен как FAT32. Другая часть флешки размечена в ext4 и windows просто её не видит)
на который записывали образ…
… а в на разделе boot.
Разметка карточки происходит следующим образом: создаётся первый раздел (boot) для загрузочных файлов и форматируется в FAT32
, размером 100Мб, а второй раздел форматируется в ext4
для файловой системы, размером около 5ГБ. При первом старте, файловая система автоматически расширяется на всё оставшееся пространство карточки (в предыдущих релизах это делалось вручную).
Ну, что-то я отвлёкся…
Открываем файл config.txt
и находим там строчки:
# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1
Изменяем их так:
# uncomment to force a specific HDMI mode (this will force VGA)
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_cvt 800 480 60 6 0 0 0
Пока что с этим файлом всё, теперь малина заведётся с нашим мониторчиком (без этих строк на экране была бы только рябь)
.
Сохраняем файл, отсоединяем карточку, вынимаем из компа и вставляем в RPI.
Собираем «бутерброд» из экрана и малины (так чтоб совпали HDMI-разъёмы)
, вставляем HDMI-переходник (входит он туго)
, и подаём питание на RPI и на экран (то есть нужно запастись двумя проводами с микро-usb и двумя блоками питания)
. Да, не забудьте подключить клавиатуру и мышку.
БП для малины должен быть около 2-х ампер, а для экрана хватит и одного. Если питания будет не хватать, то на экране будет появляться иконка с жёлтой молнией.
Если малина перегреется то на экране появится термометр.
После старта на экране покажется разноцветный квадрат, а потом надпись на на белом фоне, сообщающая, что файловая система расширена на всё оставшееся пространство карточки. Следом появятся четыре малинки в левом углу и побегут различные строчки, потом экран потемнеет на несколько секунд и появится рабочий стол…
Ваши данные:
Login — pi
Password — raspberry
Маленькое отступление: первое — тачскрин у Вас пока ещё не работает, и второе — если при работе окно не помещается в экран и не видно каких-то кнопок, тогда нужно зажать левый Alt
и мышкой таскать окно за любое место.
Сначала необходимо сконфигурировать систему.
Делать это можно открыв терминал и писать команды там (правда это не совсем удобно ибо мелко)
.
Либо подключиться по ssh (логин и пароль написан выше)
. Я буду делать по ssh и Вам советую поступить так же.
Итак, вводим команду:
Sudo raspi-config
Первый пункт игнорируем так как файловая система уже расширена автоматически. В этом можно убедиться открыв ещё один терминал и дать команду:
Второй пункт — смена пароля, остаётся на Ваше усмотрение.
Третий и четвёртый пункты не трогаем.
Открываем пятый пункт и выбираем Change Locale
Если нужно вернуться в предыдущее окно нажмите Esc
.
Стрелочкой «вниз» крутим до ru_RU.UTF-8 UTF-8
, ставим «звёздочку» пробелом и жмём Enter
.
В следующем окне выбираем ru_RU.UTF-8
и опять жмём Enter
.
Возвращаемся в пятый пункт и заходим в Change Timezone
, выбираем Europe
и жмём Enter
.
Выбираем Ваш город и жмём Enter
.
Опять возвращаемся в пятый пункт и заходим в Change Keyboard Layout
, выбираем Generic 105-key (Intl) PC
и жмём Enter
.
В следующем окне выбираем Other
и жмём Enter
.
Крутим стрелочкой до Russian
и жмём Enter
.
В следующем окне крутим вверх до Russian
и жмём Enter
.
В следующих трёх окнах просто жмём Enter
.
Теперь клавишей Tab
выберите «Finish
» и жмите Enter
.
На этом основное конфигурирование закончено (при желании к нему можно вернутся в любое время)
, перегрузите систему командой:
Теперь про обновления.
Обновите репозитории командой…
Sudo apt update
… Но не обновляйте систему — sudo apt upgrade
, если это сделать, то начнутся проблемы с тачскрином, раскладками клавиатуры и ещё с чем-то.
Sudo apt install synaptic mc
Устанавливаем xscreensaver
без которого экран будет гаснуть через 10мин.
Sudo apt install xscreensaver
Что ещё устанавливать решайте сами.
Теперь надо вывести на верхнюю панель значёк раскладок клавиатуры. Если это делать штатными средствами, то оно будет работать до первой перезагрузки. Поэтому мы пойдём другим путём.
Устанавливаем программу gxkb
Sudo apt install gxkb
Добавляем gxkb
в автозагрузку:
Nano /home/pi/.config/lxsession/LXDE-pi/autostart
После всех строчек нужно вписать вот это — @gxkb
Сохраните и закройте файл.
Выбор комбинации клавиш для переключения делается в файле — /home/pi/.config/gxkb/gxkb.cfg, по умолчанию там указан alt_shift
, я переправил на ctrl_shift
:
Nano /home/pi/.config/gxkb/gxkb.cfg
Сохраните, закройте файл и перегрузитесь.
Тачскрин
Скачайте в домашнюю папку архив:
Cd /home/pi
wget https://сайт/file/LCD-show-161112.tar.gz
Архив брался .
Распаковав его:
Tar xvf LCD-show-161112.tar.gz
У Вас появится папка LCD-show, в которую нужно перейти…
И запустить скрипт:
Sudo ./LCD5-show
После этого малина сразу перезагрузится и оживёт уже с рабочим тачскрином. Если точность позиционирования Вас устраивает, то можно ничего не калибровать.
Если необходима калибровка, тогда переходим в папку LCD-show…
Cd /home/pi/LCD-show
И устанавливаем пакет xinput-calibrator_0.7.5-1_armhf.deb
Sudo dpkg -i -B xinput-calibrator_0.7.5-1_armhf.deb
То же самое можно проделать в «проводнике», тыкнув правой кнопкой мышки по пакету и выбрав пункт «Установка пакетов».
Теперь зайдите в меню программ, в раздел в разделе «Параметры» и выберите «Calibrate Touchscreen». После точного попадания во все четыре мишени появятся настройки, которые нужно записать в файл /etc/X11/xorg.conf.d/99-calibration.conf
.
Запускаем ещё один терминал, открываем там файл…
Sudo nano /etc/X11/xorg.conf.d/99-calibration.conf
… и удаляем всё из него.
Возвращаемся в окно с калибровочными данными, копируем секцию «InputClass» и вставляем её в ранее открытый и опустошённый файл.
Section «InputClass»
Identifier «calibration»
MatchProduct «ADS7846 Touchscreen»
Option «Calibration» «171 3957 174 4042»
EndSection
У Вас свои цифры.
Чтоб добавить «правую кнопку мыши» нужно сделать так:
Section «InputClass»
Identifier «calibration»
MatchProduct «ADS7846 Touchscreen»
Option «Calibration» «171 3957 174 4042»
Option «EmulateThirdButton» «1»
Option «EmulateThirdButtonTimeout» «550»
Option «EmulateThirdButtonMoveThreshold» «50»
EndSection
Для появления контекстного меню нужно удерживать стилус около полусекунды. Последняя опция — это видимо порог дрожания.
Сохраняем файл, закрываем и перегружаемся. Теперь всё будет точно.
Поскольку калибровщик вносит небольшие изменения в файл config.txt
(который мы правили ещё на компьютере)
, то стоит о нём немного сказать. Это файл в котором находятся стартовые настройки, откроем его и посмотрим:
Sudo nano /boot/config.txt
Наши правки исчезли и появились в конце, с ещё одной строкой:
# Enable audio (loads snd_bcm2835)
dtparam=audio=on
hdmi_group=2
hdmi_mode=1
hdmi_mode=87
hdmi_cvt 800 480 60 6 0 0 0
dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255…
Мы тоже добавим…
Находим строки:
# uncomment to force a console size. By default it will be display»s size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720
И делаем их так:
# uncomment to force a console size. By default it will be display»s size minus
# overscan.
framebuffer_width=800
framebuffer_height=480
Чуть ниже находим это:
# uncomment if hdmi display is not detected and composite is being output
hdmi_force_hotplug=1
И добавляем три строки:
# uncomment if hdmi display is not detected and composite is being output
hdmi_force_hotplug=1
hdmi_ignore_cec_init=1
hdmi_ignore_cec=1
gpu_mem=256
Можете попробовать выделить больше памяти под видео — gpu_mem=512.
Если хотите увеличить ток поступающий на usb, тогда добавьте куда-нибудь строчку:
Max_usb_current=1
Но тут надо понимать, что если Вы подключите мощные потребители, то может не хватать тока самой малине, что выражается в нестабильной работе.
Сохраняем файл и перегружаемся.
Описанных настроек вполне достаточно для нормальной работы RPI, однако рекомендую почитать про различные параметры этого конфига вот .
Wifi и Bluetooth
Если хотите отключить wifi и/или bluetooth, тогда надо создать файл — /etc/modprobe.d/raspi-blacklist.conf
Sudo nano /etc/modprobe.d/raspi-blacklist.conf
И вставить в него вот это:
#wifi
blacklist brcmfmac
blacklist brcmutil
#bt
blacklist btbcm
blacklist hci_uart
Так отключен wifi и bluetooth.
А так отключен только wifi:
#bt
blacklist btbcm
blacklist hci_uart
Устанавливаем:
Sudo apt-get install samba samba-common-bin
Бекапим конфиг:
Sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
Создаём свой:
Sudo nano /etc/samba/smb.conf
Содержимое:
Workgroup = WORKGROUP
netbios name = RaspberryPi
server string = share
security = user
map to guest = bad user
browseable = yes
path = /home/pi/papka
writeable = yes
browseable = yes
guest ok = yes
Сохраняем и закрываем.
Создаём папку для самбы:
Mkdir /home/pi/papka
Даём ей права:
Sudo chmod -R 777 /home/pi/papka
Рестартуем самбу:
Sudo /etc/init.d/samba restart
Настроено на гостевой вход (заходи кто хошь)
и на чтение-запись.
Медиацентр Kodi
Создаём группу «input», если она не существует:
Sudo addgroup —system input
Устанавливаем Kodi
:
Sudo apt-get install kodi
После установки ничего не запускаем.
Создаём файл — /etc/udev/rules.d/99-input.rules
Sudo nano /etc/udev/rules.d/99-input.rules
И вносим в него следующее:
SUBSYSTEM==input, GROUP=input, MODE=0660
KERNEL==tty*, GROUP=tty, MODE=0660
Сохраняем и закрываем.
Создаём ещё один файл — /etc/udev/rules.d/10-permissions.rules
Sudo nano /etc/udev/rules.d/10-permissions.rules
# input
KERNEL==»mouse*|mice|event*», MODE=»0660″, GROUP=»input»
KERNEL==»ts*|uinput», MODE=»0660″, GROUP=»input»
KERNEL==js*, MODE=0660, GROUP=input
# tty
KERNEL==tty*, MODE=0666
# vchiq
SUBSYSTEM==vchiq, GROUP=video, MODE=0660
Сохраняем и закрываем.
Sudo usermod -a -G audio pi
sudo usermod -a -G video pi
sudo usermod -a -G input pi
sudo usermod -a -G dialout pi
sudo usermod -a -G plugdev pi
sudo usermod -a -G tty pi
Sudo nano /etc/rc.local
Получится вот так:
Сохраняем и закрываем.
Перегружаем малину чтоб изменения вступили в силу.
Теперь в меню программ в разделе «Аудио и видео» находим «Kodi Media Center» и стартуем…
Вы увидите как изображение расплывётся и превратится в лягушку полосочки. Это будет происходить в течении пары минут, а затем появится картика. Посредине будет окно предлагающее отключить несовместимые репозитории — нажмите Yes
.
Вынужден сразу предупредить, что тачскрин в Kodi работает не корректно, можно сказать, что вообще не работает. Как решить эту проблему я пока не знаю. Поэтому в нашем распоряжении только мышь и клава.
Теперь настроим Kodi. Нажмите кнопку SYSTEM
, затем Appearance
и наконец Interntional
. Нажмите Language
и выберите русский язык (Russian)
.
Далее нажмите на иконку с домиком внизу-справа, нажмите большую кнопку СИСТЕМА
, а потом маленькую слева — «Система». Выберите «Вывод звука» и в разделе «Устройство вывода звука» выберите — PI: Analogue
. После этого Kodi будет нормально запускаться без всяких полосок на экране.
Дело в том, что до наших изменений по HDMI-каналу шёл и звук и видео, и получалась «каша». Теперь по HDMI идёт только видео, а звук через разъём для наушников.
Теперь опять нажмите на иконку с домиком, затем кнопку выключения (слева-снизу), а затем «Выход». Скорее всего Вы увидите зависший чёрный экран, поэтому перегрузите малину отключением питания.
После перезагрузки снова запустите Kodi, теперь уже не будет никаких полосок. Осталось только сделать так, чтоб плеер не зависал при выходе.
Для этого надо создать скрипт — /usr/local/bin/startkodi
Sudo nano /usr/local/bin/startkodi
Содержимое:
#!/bin/bash
fbset_bin=`which fbset`
xset_bin=`which xset`
xrefresh_bin=`which xrefresh`
if [ ! -z $fbset_bin ]; then
DEPTH2=`$fbset_bin | head -3 | tail -1 | cut -d » » -f 10`
fi
kodi «[email protected]»
if [ ! -z $fbset_bin ]; then
if [ «$DEPTH2» == «8» ]; then
DEPTH1=16
else
DEPTH1=8
fi
$fbset_bin -depth $DEPTH1 > /dev/null 2>&1
$fbset_bin -depth $DEPTH2 > /dev/null 2>&1
fi
if [ ! -z $xset_bin ] && [ ! -z $xrefresh_bin ]; then
if [ -z $DISPLAY ]; then
DISPLAY=»:0″
fi
$xset_bin -display $DISPLAY -q > /dev/null 2>&1
if [ «$?» == «0» ]; then
$xrefresh_bin -display $DISPLAY > /dev/null 2>&1
fi
fi
VT=»$(fgconsole)»
if [ «$VT» ]; then
sudo chvt 7
sudo chvt «$VT»
fi
Сохраните, закройте и дайте скрипту права:
Sudo chmod a+x /usr/local/bin/startkodi
Теперь в терминале дайте команду:
Сейчас «выход» будет работать как надо.
Запускать скрипт через терминал не удобно, поэтому его нужно добавить в меню программ. Зайдите в меню, в пункте «Параметры» найдите «Main Menu Editor» и запустите его. Слева выберите «Аудио и видео» и нажмите справа кнопку «Создать элемент».
В появившемся окне, напротив Name:
напишите MyKodi, а напротив Command:
напишите startkodi.
Нажмите ОК
, в списке появится новый пункт — MyKodi
Ещё раз нажмите ОК
.
Теперь для запуска медиацентра, в меню «Аудио и видео» есть кнопка MyKodi
.
Кто бы мог подумать еще в 2010 году, что такое явление как «Raspberry Pi» обретет тысячи поклонников по всему миру.
Не смог пройти мимо и я. Сегодня я покажу на примере как подключать и использовать LCD (хотя аббревиатура уже включает в себя слово «дисплей» далее я будут все равно его использовать) совместно с Raspberry Pi.
Скажу сразу: статья ориентирована на тех, кто не первый раз сталкивается с Raspberry.
Пример подключения LCD дисплея к Raspberry Pi
На борту Raspberry Pi имеет особый разъем типа GPIO. К нему-то мы и подключим дисплей.
Выбор LCD дисплея
Для наших целей подойдет любой жидкокристаллический знакосинтезирующий (символьный) дисплей на базе микроконтроллера Hitachi HD44780U или его аналогов. LCD дисплеи бывают 8×2, 16×2, 4×20 и т.д. — строк на количество знаков. Их выпускает куча разных фирм — Winstar, МЭЛТ и другие.Для сборки прототипа я приобрел дисплей Winstar WH0802A-YYH-CT. Теперь нужно определиться с порядком соединения пинов на разъеме IDC с пинами на GPIO, плюс разобраться как мы подключим питание к нашему дисплею.Оказывается все просто! Вдокументации находим таблицу с распиновкой порта LCD дисплея для 4-х битного режима и дополняем ее следующим образом:
Где GND — это «минус», а +5V — «плюс» питания, которое мы берем все из того же GPIO разъема. Подписи GPIO — соответствуют… ну вы сами догадались)Данный дисплей имеет подсветку. Для ее включения достаточно подключить LEDA к +5V, а LEDK — к GND. !ВНИМАНИЕ!
Для использования LCD дисплея в данной схеме ваш источник питания, который вы подключаете к Raspberry Pi, должен быть рассчитан на потребляемый ток, как минимум, 2А. !ВНИМАНИЕ!
Выбор и использование библиотек для работы с LCD дисплеем
Для работы с LCD дисплеем нам нужно написать программу. Делать это я буду на языке Си. Но для компиляции листинга нам потребуется загрузить набор библиотек. Мой выбор пал на пакет библиотекwiringPi , который был использован встатье . Сам пакет предназначен не только для подключения LCD дисплея.Процесс установки пакета описан насайте . Листинг «mylcd.c» с текстом программы я привожу ниже (по стандарту С99).
#include //стандартная библиотека ввода-вывода
#include //библиотека из пакета wiringPi
#include //библиотека из пакета wiringPi
int main (void)
{
printf («Raspberry Pi LCD testn») ;
//Инициализация порта GPIO
if(wiringPiSetup ()==-1)
{
printf («GPIO Setup failed!n») ;
}
int fd;
printf («Start LCD initialization…n») ;
//Инициализация LCD
fd = lcdInit (2,8,4, 11,10, 1,0,2,3,0,0,0,0);
if(fd==-1)
{
printf («Initialization failedn») ;
}
else
{
printf («GO!n»);
//Очистка дислпея
lcdClear(fd);
//Перевод каретки на первую позицию первой строки
lcdPosition (fd,0,0);
//Вывод форматированного текста
lcdPrintf(fd, «Hello Pi»);
//Перевод каретки на вторую строку и вывод текста
lcdPosition (fd,0,1);
lcdPrintf(fd, » World!»);
}
return 0;
}
В листинге нас особо интересует следующие функции:
1.wiringPiSetup()- функция для инициализации порта GPIO2.
lcdInit(int rows, int cols, int bits, int rs, int strb, int d0, int d1, int d2, int d3, int d4, int d5, int d6, int d7) — функция для инициализации LCD дисплея, где:* int rows — число строк дисплея (у нас 2)* int cols — число знаков в строке (у нас 8)* int rs — маппинг порта wiringPi на управляющий регистр дисплея RS (у нас 11)* int strb — маппинг порта wiringPi разрешающий регистр дисплея E (у нас 10)* int d0, int d1, int d2, int d3, int d4, int d5, int d6, int d7 — маппинг портов wiringPi на шину данных дисплея3.
lcdPrintf(int handle, char *message, …) — в качестве int handle передаем указатель на дисплей, * message — указываем в кавычках текст для вывода
После того, как купили и распаковали raspberry pi 3 model b появится вопрос:
Как подключить «малинку» к монитору или тв?
На raspberry pi 3 есть цифровой видеовыход HDMI и можно подключить компьютер к монитору с помощью кабеля HDMI — HMDI, если у монитора или ТВ есть разъем HDMI.
Если у монитора или ТВ есть разъемы, как на картинке — HDMI, DVI, D-sub есть выбор через какой тип разъема подключиться.
Raspberry pi как подключить
Через HDMI: нужен только кабель. Передача данных через этот интерфейс позволяет передавать цифровые видеоданные высокого разрешения и многоканальные цифровые аудио сигналы.
Через DVI: нужен переходник DVI-D и hdmi, а также кабель hdmi-hdmi. Передача данных через этот интерфейс позволяет передавать видеосигнал на цифровые устройства, такие как ЖК мониторы, ТВ и проекторы.
Через D-SUB: нужен переходник D-SUB и hdmi, а также кабель d-sub — d-sub. Этот тип разъемов широко применяется в компьютерной технике Это пятнадцати контактный интерфейс для подключения мониторов VGA (SVGA)
Переходники:
переходник D-SUB и hdmi
С переходником d-sub hdmi. Так как преобразование цифрового сигнала в аналоговый осуществляется микросхемой (какой именно — не известно) — гарантированы только разрешения: 1440х900 60 Гц и 1280×1024 75 Гц. Более высокие 1920х1080 60 Гц не факт, все зависит от модели переходника и того, как вам повезет.
Здравствуйте друзья
В своих обзорах устройств умного дома экосистемы Xiaomi — я уже неоднократно упоминал название Domoticz. Наконец у меня дошли руки поделится своими наработками на эту тему, и рассказать что же это такое и каким образом можно дополнить стандартные возможности умного дома от Xiaomi при помощи этой системы. В рамках одного обзора это рассказать невозможно, но нужно с чего-то начинать — поехали…
Вступление — пару слов о Domoticz
1. Что такое Domoticz ?
Это мультиплатформенное ПО с открытым кодом ориентированное на создание системы управления умным домом. Поддерживает большое количество различных устройств разных вендоров, в том числе работает с устройствами Xiaomi.
2. Какие устройства Xiaomi могут управлятся Domoticz?
Буду говорить только о тех устройствах, которые я проверил лично. На данный момент можно управлять шлюзом Xiaomi Gateway — и всеми устройствами которыми он управляет — кнопки, датчики открытия и движения, розетки ZigBee, выключатели Aqara. Так же поддерживаются осветительные гаджеты Yeelight — RGBW и White лампы, потолочный светильник Celling Light.
Читал про работу с bluetooth сенсорами miflora.
3. Для чего мне Domoticz ?
Система имеет более гибкие возможности по настройке сценариев — например проверку активности устройства, то чего нет в MiHome, или создание переменных — которые позволяют по одному условию — например нажатие клавиши — выполнять различные действия, в зависимости от значения переменной.
Сценарии, созданные в Domoticz не зависят от китайских серверов и наличия интернет.
Domoticz расширяет функциональность устройств — например новые действия «free fall» или «alert» для кубика, или «Long Click Release» для кнопки.
4. Если я буду использовать Domoticz то не смогу работать с MiHome?
Обе системы прекрасно живут паралелльно — функциональность MiHome — полностью сохраняется, просто часть сценариев будет жить в одной системе — часть в другой. В принципе все сценарии могут жить в Domoticz.
5. Зачем мне нужен MiHome если я буду использовать Domoticz?
По крайней мере для добавления новых устройств. Выбор стоит за вами — но мое мнение — на данный момент Domoticz лучше всего использовать как дополнение к MiHome
6. Что нужно для подключения устройств Xiaomi к Domoticz?
Сразу хочу успокоить — паяльников, программаторов и танцев с бубнами не надо. Так же вам не понадобится Linux или виртуальные машины — попробовать все можно прямо на вашей рабочей винде, а если вам понравится — то есть смысл выделить для нее отдельную аппаратную платформу, например герой сегодняшнего обзора.
Буквально после первых удачных экспериментов на своем настольном ПК, я загорелся идеей отдельной аппаратной базы для Domoticz. Выбор свой я остановил, после штудирования пабликов — на Raspberry Pi Model 3 B — компактный но мощный одноплатный компьютер на базе Soc процессора BCM2837 с 4 ядрами Cortex-A53, работающим на частоте 1.2GHz, 1GB ОЗУ и беспроводными модулями Wi-Fi и Bluetoth 4.1.
Комплект
В свой заказ я включил 4 позиции —
Скрин оплаты
Raspberry Pi Model 3 B Motherboard —
Что интересно в магазине имеется две модификации — китайская и английская. На момент покупки китайская стоила на 7 долларов дешевле, ее я и взял. Чего там китайского — честно говоря для меня загадка.
Корпус для Raspberry Pi Model 3 B —
Блок питания HN — 528i AC / DC 5V 2A —
Медные радиаторы для 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
.
Рекомендую сразу установить статический IP адрес для Raspberry. Узнать текущие адреса можно при помощи команды ifconfig
, где
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 вставляем
interface eth0
static routers=192.168.0.1
Для wi-fi
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 доступна по веб интерфейсу:
Теперь самое время приступить к добавлению устройств Xiaomi. Но сначала —
Подготовительные работы
Итак, что нужно для того что бы начать работать с Domoticz?
Резервирование IP адресов
Первым делом необходимо, тем устройствам которыми вы планируете управлять — пока это шлюз и лампы — установить статические IP адреса. Это делается на вашем домашнем роутере, при помощи таблицы клиентов DHCP которая выглядит примерно так —
и информации из вкладок Network info плагинов управления шлюзом и лампами, где указаны MAC адреса устройств
Используя эту информацию нужно прописать выдачу постоянных IP адресов этим устройствам — так как они будут управлятся именно по IP, и если адрес будет сменен — Domoticz потеряет связь с ним. Таблица резервирования адресов выглядит примерно так —
Режим разработчика
Необходимо активировать режим разработчика. Для шлюза Xiaomi Gateway необходимо зайти в меню, выбрать опцию about, внизу экрана где написана версия (2.23 у меня) — нажимать на нее до тех пор пока в меню не появится две новые опции, они могут быть на китайском, в моем примере — на английском. Нажимаем на первую из двух — local area network communication protocol, в меню активируем верхний переключатель и записываем пароль шлюза.
Для ламп все проще — нужно установить приложение Yeelight, если вы его еще не поставили, и для каждого светильника — заходим в меню, режим разработчика — включить
Добавление устройств
Для добавления устройств переходим во вкладку Настройки — Оборудование
127.0.0.1:8080/#/Hardware (вместо 127.0.0.1 — адрес вашего Domoticz)
Выбираем тип устройства Xiaomi Gateway, называем его как нибудь, указываем его IP адрес, который мы зарезирвировали на роутере, прописываем пароль полученный в окне режима разработчика. Порт — у меня работает на порту 54321. В вики домотикз описано подключение с указанием порта 9898
Для добавления ламп — просто добавляем устройство YeeLight LED — адреса указывать не надо, лампы подтянутся сами.
Датчики подключенные к шлюзу подтянутся не сразу все, это процесс может занять час и более — нужно подождать. Это связано с тем, что устройства ZigBee активируются только в момент передачи данных. Немного подтолкнуть процесс можно — открывая и закрывая окна с датчиками, дышать на датчики температуры, включать выключать розетки — словом вынуждать устройства передавать данные.
Устройства
Устройств добавится НАМНОГО больше чем вы ожидаете:) Список их доступен на вкладке Настройки — устройства.
127.0.0.1:8080/#/Devices
Например каждый датчик температуры и влажности — добавится как три устройства, отдельно температура, отдельно влажность, и все вместе. Розетки — отдельно розетка (управляемое устройство) отдельно — как датчик энергопотребления. А вот шлюз — отдельно подстветка, отдельно сирена сигнализации, отдельно будильник, дверной звонок и регулятор звука. Для того чтобы добавить устройство в список используемых — в конце строки нужно нажать зеленую стрелочку. Убрать из используемых — синюю стрелочку. То что нам не нужно — не добавляем.
Добавленные к использованию устройства располагаются по нескольким вкладкам —
Переключатели
На этой вкладке собраны все управляемые устройства
127.0.0.1:8080/#/LightSwitches
Выключатели, кнопки, лампы, и прочее. Здесь мы можем включать, выключать, и делать любые действия с устройствами в ручном режиме.
Например выбрать звук который будет звучать на шлюзе, или цвет свечения на RGB лампе или яркость на белой лампе.
Температура
На этой вкладке группируются климатические датчики — влажности и температуры
127.0.0.1:8080/#/Temperature
Поначалу они все называются одинаково, определить где какой — можно по их показаниям и сверке с приложением Mi Home, после чего их можно соответсвенно переназвать.
Вспомогательное
Здесь сгрупирован датчик освещенности шлюза — хотя его показания весьма странные, и счетчики потребления энергии розеток.
127.0.0.1:8080/#/Utility
Сценарии
Для создания сценариев — необходимо перейти во вкладку — Настройка — Дополнительно — События. Написание сценариев доступно в двух вариантах — блочный и скриптовый на языке lua.
Примеры сценариев
Учится работать с Domoticz лучше начинать с блоков. Тут все разбито на группы и составлять сценарии довольно просто. Пример простого сценария на блоках — включение света по обнаружению движения, и выключения через минуту после того как датчик движения перейдет в статус выключено. После составления сценария нужно назвать его, поставить галочку на опции Event active: — для включения и сохранить его.
Точно такой же сценарий на lua
Примеры использования
Больше внимания конкретным сценарям я буду уделять в других обзорах, тут в качестве примера приведу сценарий, который НЕВОЗМОЖНО
реализовать в Mi Home, а именно — двухкнопочный выключатель Aqara c размыканием проводов — левая кнопка будет работать по назначению — разрывать и соединять фазу, а правая — не подключенная к линии (для питания выключателя достаточно подключения только одной из кнопок) — будет включать и выключать Yeelight лампу, которая физического соединеня с выключателем не имеет.
В данном сценарии будет проверятся состояние лампы Yeelight, значение самого выключателя On или Off — значения иметь не будет. Если состояние лампа отлично от Off — значит она работает, и будет выключена, а если выключена — то будет включена.
На этом, вводную часть по Domoticz буду завершать, если тема будет интересна — то продолжу, интересного еще очень много.
Видеоверсия обзора (2 части) —
Спасибо за внимание.
Планирую купить
+170
Добавить в избранное
Обзор понравился
+99
+231
Модель сразу же получила широкую популярность среди пользователей, о чем говорит все возрастающий объем ее продаж.
Структурная схема системы «Умный Дом» на базе Raspberry Pi 3
Построенный на базе Raspberry Pi 3 «Умный дом» позволяет не только взять под контроль и управление практически все коммуникации жилища, но и произвольно наращивать функциональность в процессе эксплуатации.
Основные характеристики Raspberry Pi 3
Новый микрокомпьютер получил:
- процессор ARM Cortex-A53;
- оперативную память в один гигабайт;
- встроенные WiFi и Bluetooth 4.1;
- полную совместимость с предыдущими моделями.
Процессор имеет четыре ядра, разрядность 64 бита, частоту 1.2 ГГц, что в 10 раз превышает производительность первой модели.
WiFi стандарта 802.11b/g/n с возможностью передачи данных со скоростью до 600 Мб/сек на частоте 5.0 ГГц.
По заказу «Raspberry Pi» компания «Broadcom» разработала и выпустила новый монокристалл BCM2837 с архитектурой, аналогичной кристаллам BCM2835 и BCM2836, что обеспечило совместимость с предыдущими моделями.
Одноплатные компьютеры Raspberry Pi 3 и Arduino – главные отличия
Сравнение этих платформ не совсем корректно. Прежде всего потому, что Raspberry Pi 3 по своему наполнению является компьютером с полным набором функций, а Arduino отнести к классу компьютеров достаточно проблематично.
Raspberry Pi 3 оснащен мощным четырёхъядерным процессором, частота которого в 40 раз выше тактовой частоты Arduino. Оперативная память Raspberry Pi 3 имеет емкость, в 128000 раз превышающую емкость оперативной памяти Arduino.
Но эти показатели говорят не о том, что Raspberry Pi 3 превосходит Arduino, а о том, что эти устройства предназначены для решения разных задач.
Задачи, решаемые Raspberry Pi 3 с помощью ПО, не под силу решать простому Arduino. Но он превосходно справляется с задачами сугубо аппаратных проектов, со считыванием и обработкой аналоговых сигналов.
Обработка аналоговых сигналов ведется в реальном масштабе времени, причем эти сигналы могут поступать с и чипов любых типов и производителей. Для того, чтобы Raspberry Pi 3 мог так же обрабатывать аналоговые сигналы, ему нужны дополнительные аппаратные средства.
Реализация проекта «Умный дом» на базе Raspberry Pi 3
Для тех, кто решил создать Raspberry Pi 3 «Умный дом» своими руками, вначале следует определиться, какие функции будут реализовываться, как они будут включаться в рабочую конфигурацию. И, в соответствии с этим, комплектовать будущую систему необходимыми устройствами.
Периферийные устройства «умного дома»
Для реализации проекта Raspberry Pi 3 «Умный дом» понадобятся такие модули:
- модуль ;
- модуль поддержки беспроводной связи;
- датчик измерения влажности и ;
Кроме этого, для системы Raspberry Pi 3 «Умный дом» потребуются карта памяти MicroSD емкостью 32 ГГб, блок питания, пятивольтовое реле.
Одним из важнейших дополнительных устройств для реализации проекта Raspberry «Умный дом» является модуль NodeMCU ESP-12E с радиоинтерфейсом Wi-Fi и интегрированной в плату модуля микрополосковой антенной.
Операционные системы
Как и любой компьютер, Raspberry Pi 3 без программного обеспечения представляет собой просто бесполезный набор электронных элементов.
Чтобы этот набор превратить в инструмент, реализующий свои функциональные возможности, в него нужно «вдохнуть жизнь», то есть наполнить его соответствующим программным обеспечением.
Этот процесс выполняется в несколько этапов. Вначале необходимо выбрать и загрузить для Raspberry Pi 3 «Умный дом» iOS – мобильную операционную систему.
В качестве носителя для ОС и размещения на нем программ в Raspberry Pi 3 используется микрокарта памяти SD. Для установки ОС можно выбрать один из трех способов:
- купить SD-карту, на которую уже была предварительно установлена ОС;
- загрузить на карту памяти NOOBS (New Out Of the Box Software) – установщик ОС, и затем устанавливать ОС прямо с карты;
- монтировать образ ОС прямо на карту SD.
Для системы Raspberry «Умный дом» разработано более 40 различных ОС. Чаще всего используются ОС Raspbian OS, Ubuntu Mate, Windows 10 IoT, RICS OS.
Наиболее адаптированной под аппаратные средства Raspberry Pi 3 явл
яется операционная система Raspbian OS, устанавливаемая с загруженного на SD-карту установщика NOOBS.
Установка операционной системы
Перед тем, как начать работать с микрокомпьютером, следует подготовить необходимые приборы и аксессуары.
Для самого первого запуска понадобятся:
- микрокарта SD, емкостью не менее четырех гигабайт (предпочтительно 32 гигабайта);
- блок питания на пять вольт;
- кабель с разъемами HDMI;
- монитор с HDMI-подключением;
- клавиатура и мышь с USB-подключением;
- компьютер с разъемом для SD-карты;
- подключение к интернету – Ethernet.
Следующие действия таковы:
- форматирование SD-карты;
- скачивание архива установщика NOOBS и распаковка его в корневую директорию SD-карты;
- карта вставляется в слот микрокомпьютера, подключаются все устройства, включается блок питания;
- при первом запуске из списка выбирается нужная ОС и запускается ее установка;
- по завершении установки установить и настроить программы Raspberry Pi 3 «Умный дом».
Установка сервера Homebridge и настройка модулей
Система «Умный дом» работает с технологией Home Kit, объединяющей все устройства «умного дома» в одном приложении, и воспринимающей голосовые команды, поданные на русском языке. Но таких устройств, особенно «понимающих» русский язык, не так уж и много, к тому же, они очень дорогие.
Сервер Homebridge выполняет роль своеобразного мостика между всеми устройствами дома и Home Kit. Этот сервер эмулирует Home Kit API.
Серверу доступны сотни самых различных плагинов, благодаря которым стало возможным осуществлять управление всеми домашними устройствами, которые даже конструктивно не предназначены для работы с Home Kit. Главное преимущество Homebridge то, что он может работать на любом компьютере, в том числе и на Raspberry Pi 3.
При подключении нового модуля следует обновить программное обеспечение, поскольку от момента приобретения модуля до включения его в рабочую конфигурацию могут быть обновлены драйверы, и на старых версиях модуль может не работать.
После обновления, в списке предлагаемых модулей найти нужный и добавить его в рабочую конфигурацию. На физическом уровне соблюдать рекомендуемые меры предосторожности (например, снимать с себя статическое электричество).
Заключение
Система «Умный дом» на базе Raspberry Pi 3, созданная своими руками, обойдется в разы дешевле аналогичной готовой системы, а функциональность ее можно наращивать практически неограниченно.
Видео: Raspberry Pi Model 3 B — устанавливаем систему управления умным домом Domoticz
В данном проекте запускаем своё iOS, Android или Web приложение, а также пишем (вернее, чуть дописываем) чат бот на питоне, который управляет розетками через радио модуль, подключенный к Raspberry Pi.
В итоге, можем управлять домашними приборами и получать от них статусы удаленно и совместно с другими пользователями через общий чат.
Интересно?
А зачем?
Вопрос “а зачем это нужно?” не всегда остро стоит для проектов из серии «умный дом» и всяческих Internet of Things, здесь часто тратится куча времени и денег на автоматизацию чего-то, что на практике удобнее переключать по старинке обычным настенным выключателем:-) Но при этом получаешь кучу удовольствия и полезного опыта в процессе и далее радуешься исправной работе механизма, который сделал сам.
Но кроме вышеупомянутых удовольствий, мне кажется, управление домом и общение устройств через чат, конкретнее XMPP протокол, имеет право на жизнь по следующим причинам:
- Человеческий язык
— довольно легко заставить чат бот общаться с вами на человеческом языке, что довольно удобно, особенно для менее технических членов семьи. Также это позволяет в перспективе подключить голосовое управление. - Универсальный удаленный доступ
— к XMPP чат серверу можно подключаться откуда угодно и из любого Jabber совместимого IM клиента. Людям удобно, а как подключить устройства описано в данной статье. - Удобное управление для всей семьи
— подключите домашних в единый групповой чат, где сидят боты, отвечающие за дом или приборы в доме. Вы можете обсуждать свои семейные вопросы и одновременно управлять домом. Все видят, кто какие команды подал приборам, можно видеть их (ботов) ответы и отчеты, просмотреть предыдущую историю и т.п. Это удобно. - Система независимых распределенных агентов
. Каждый прибор или набор датчиков, которые имеют представительство (по сути, пользователя) в чате, соответственно являются независимыми агентами и могут общаться с другими приборами и быть управляемыми ими или вами напрямую. Единый сервер не обязателен. Можно поднять свой чат бот для каждого важного прибора или датчика, а также настроить главного бота с элементами AI, такой себе “дворецкий” или “majordomo”, который будет всеми девайсами управлять, причем они будут общаться в доступном вам и другим членам семьи чате на понятном вам языке, так что вы всегда можете отследить что происходило или вмешаться в процесс.
Реквизит
Для данного мини-проекта нам потребуются следующие компоненты:
1. Raspberri P.
У меня модель B, заказал буквально за день до объявления о выходе B+, но в принципе, любая модель тут подойдет, главное смотрите, чтоб GPIO пины были совместимы с управляющим модулем, который вы выберете. Об этом ниже.
Ну а так, главное требование — запустить чат бот на питоне.
2. Аксессуары к вашему Pi.
WiFi модуль, простые USB клавиатура и мышь, карточка SD памяти с дистрибутивом Raspbian, блок питания, по желанию — пластиковый корпус.
Это стандарт для “малинки”, но т.к. я покупал её впервые, специально под этот проект, то не знал, что WiFi и SD карта не входят в стандартный комплект, и пришлось дозаказывать, так что имейте в виду. Также для настройки вам потребуется монитор или телевизор с HDMI кабелем.
3. Управляющий модуль (RF transmitter) и розетки или другие приборы с приёмником (RF receiver).
Здесь нужно сказать, что я пошел по быстрому или ленивому пути, и заказал готовый RF модуль для Pi и набор радиоуправляемых розеток от Energenie . В комплекте идет готовый RF передатчик, который подключается на GPIO пины вашей малинки. Кому этот путь не по душе, есть альтернативы, в инете куча гайдов о том, как к существующим радиоуправляемым приборам подобрать код и управлять ими через простой дешевый китайский RF передатчик. В качестве альтернативы можно через Pi управлять приборами непосредственно прямым проводным подключением с GPIO, а также через WiFi и по другим каналам.
Вот фото моего Energenie комплекта:
4. Чат-клиент.
В данном туториале используется Q-municate , это мессенджер с открытым исходным кодом от нашей платформы QuickBlox, который можно скачать с github и забилдить под iOS, Android или запустить Web версию на десктоп и других платформах. Преимущество использования Q-municate в том, что вы можете кастомизировать интерфейс под себя и сделать своё собственное приложение, например, только для своей семьи.
Но это совершенно не обязательно. Вы можете использовать любой Jabber/XMPP совместимый клиент, например Adium.
Итак, начнем.
Устанавливаем дистрибутивы / dependencies для Raspbian
Логинимся на малинку и ставим следующие вещи под рутом:
apt-get install python-dev
pip install sleekxmpp
pip install dnspython
pip install pyasn1 pyasn1-modules
apt-get install python-rpi.gpio
Нам собственно нужен sleekxmpp, это базовый проект для чат бота, а остальное решает вопросы с различными зависимостями для этого проекта. Ну и плюс python-rpi.gpio позволит контролировать GPIO пины малинки из нашего питон скрипта.
Подключаем и проверяем модуль радиоуправления
Если вы используете другой модуль, не от Energenie, то эту часть вам придется исследовать самостоятельно.
При использовании же готового Pi-mote модуля всё просто и хорошо описано в официальной инструкции от производителя: energenie4u.co.uk/res/pdfs/ENER314%20UM.pdf
Лично я потратил непозволительно много времени пытаясь определить, работает ли мой комплект радиоуправляемых розеток, меряя напряжение на малинке, пробуя неофициальные скрипты и т.п., так как розетки Energenie почему-то никак не хотели управляться скриптом, как это описано у производителя и на нескольких блогах. Не сразу дошло еще раз заглянуть в мануал и прочитать на этот раз внимательно, а там английским по белому говорится, что сокеты нужно запустить сначала в обучающем режиме. Логично. В своё оправдание могу только сказать, что проект делал рано по утрам в выходные, пока семья спит, видимо, сказался недосып:-)
Итак, обучаем. Согласно инструкции, запускаем скрипт
Sudo python ENER002.py
вставляем розетки в розетки) и если лампочки на них не мигают, то переводим в режим обучения нажатием кнопки выключения в течение 5 секунд. Лампочки замигали, нажимаем “Enter” на клавиатуре чтобы подать сигнал из скрипта и видим быстрое мигание лампочки, это значит что обучение прошло успешно. Повторяем то же самое с остальными розетками. Один Pi-mote модуль может подавать 4 разных кода, т.е. управлять можно 4 разными наборами Energenie розеток, при этом никто не мешает использовать один код для нескольких розеток одновременно.
Поднимаем чат сервер
Нам нужен XMPP / Jabber совместимый чат сервер с возможностью создания MUC (группового чата или чат комнаты) в нём, чтобы подключить туда наш чат бот и человеков-пользователей.
В принципе, на Pi можно поднять свой чат сервер, например вот здесь http://box.matto.nl/raspberryjabberd.html описывается установка ejabberd на Raspberri Pi.
В данной статье мы опять идем по пути наименьшего сопротивления и используем готовый бесплатный чат сервер от QuickBlox . Вам нужно просто создать аккаунт, чтобы получить свой собственный чат сервер и веб админку к нему.
Шаги ниже описывают регистрацию и заодно создание пользователя для нашего чат бота и MUC комнаты для общения.
Дальше нам нужно взять и модифицировать это под свои нужды.
Если вы тоже используете Energenie для управляемых розеток и QuickBlox для чат сервера, то вы можете взять мой готовый скрипт здесь: https://github.com/QuickBlox/sample-powerbot-python-rpi .
Вам нужно будет только поменять credentials в начале скрипта, прописав туда свои ключи приложения и пользователя (того, что мы создали выше).
Ниже мы пройдемся более детально по внесённым изменениям, но вкратце, что было сделано (заранее прошу прощения за уровень питон кода — давно не программист и тем более не питонщик — буду благодарен за любые улучшения и пулл реквесты):
1. Добавлено авто-присоединение по приглашению в другие чат комнаты.
2. Подправлена совместимость с QuickBlox и Q-municate (мелочи типа формата названия чат комнат и т.п.)
3. Добавлен собственно парсинг команд для управления приборами — в нашем случае это «lamp on», «lamp off», «all on» и «all off» — и вызов функций switch_on / switch_off из питон модуля energenie, который уже отдает команды на плату радиопередатчика через GPIO.
Кто работает напрямую с GPIO, посмотрите в energenie.py как реализована работа с GPIO.
Авто-присоединение в другие чат комнаты
Опциональная фича, но лично мне этого не хватало, например, когда в мессенджере у вас в друзьях висит этот бот-дворецкий и вы можете создавать новые чаты и приглашать его туда. Без этого работать будет, но тогда бот будет привязан к тому чату, в который вы его запустили.
Как реализовать авто-присоединение — парсим станзы входящих XML сообщений, т.к. нам обязательно прийдет сообщение о том, что создан такой-то MUC чат, если данный пользователь был туда приглашен.
В нашем случае мы используем платформу QuickBlox и конкретное приложение Q-municate, в нём приглашение в новый групповой чат выглядит примерно так:
RECV: Taras Filatov created new chat53b78c0c535c12798d0050551234040,1258466,126535021404538064Yanus Poluektovich, Sergey Fedunets[email protected]1
Отслеживаем фразу “created new chat” в XMPP станзах, и если она встречается, то парсим оттуда xmpp_room_jid, это и будет id вновь созданной комнаты.
Дальше запускаем процесс с этим же скриптом
Имейте в виду, для того чтоб это работало, нужно сделать скрипт исполняемым:
Chmod +x powerbot.py
Код реализации представлен ниже:
If msg[«mucnick»] != self.nick and «Create new chat» in msg[«body»]:
from bs4 import BeautifulSoup
y = BeautifulSoup(str(msg))
roomToJoin = y.xmpp_room_jid.string
print («Got an invite to join room»)
botId = subprocess.Popen(, shell=True)
print «spawned new bot ID=»
print botId
self.send_message(mto=msg[«from»].bare,
mbody=»Thank you for your kind invitation, joining your new room now!»,
mtype=»groupchat»)
Приветствие + инструкции
Определяем кодовое слово, в данном случае “powerbot”, и выдаем в ответ приветствие и подсказку о том, как пользоваться / общаться с нашим ботом.
Проверка “if msg[«from»] != self.nick” нужна чтобы бот не реагировал на сообщения от себя самого.
#
# Reply to help request (any message containing «powerbot» in it)
#
if msg[«mucnick»] != self.nick and «powerbot» in msg[«body»]:
reply_test_message = self.make_message(mto=msg[«from»].bare,
mbody=»Powerbot is greeting you, %s! Usage: lamp to control socket 1, all to control all sockets. Example: «lamp on» switched socket 1 on.» % msg[«mucnick»],
mtype=»groupchat»)
self.copy_dialog_id(msg, reply_test_message)
reply_test_message.send()
print «Sent help text: » + str(reply_test_message)
Включение / выключение лампы и других приборов
Отслеживаем команду “lamp on” (включить лампу), если команда получена, то включаем розетку switch_on(lampSocket) и отчитываемся о выполнении.
#
# Handle «lamp on» command
#
if msg[«mucnick»] != self.nick and «lamp on» in msg[«body»]:
switch_on(lampSocket)
confirmation_message = self.make_message(mto=msg[«from»].bare,
mbody=»Lamp has been switched on, %s.» % msg[«mucnick»],
mtype=»groupchat»)
self.copy_dialog_id(msg, confirmation_message)
confirmation_message.send()
print «Lamp switched on, sent confirmation: » + str(confirmation_message)
Аналогичным образом реализованы “lamp off”, “all on” и “all off” (последние отвечают за включение или выключение всех управляемых розеток).
Запускаем чат бот
Из bash на малинке выполняем нехитрую команду:
Sudo python powerbot.py -d -r
Sudo нужно для доступа к GPIO. Если вы использовали QuickBlox, то в качестве адреса MUC комнаты просто скопируйте JID адрес из таблички Chat Dialogs.
В результате на экране появятся логи аутентификации и обмена XMPP статусами с сервером:
Всё, бот готов и ждет ваших указаний в чат-комнате.
Кстати, вы могли обратить внимание, что функции реакции на команды продублированы одновременно в
def message(self, msg):
и
def muc_message(self, msg):
первый блок обрабатывает приватные сообщения 1:1, а второй — групповые.
То есть управлять ботом можно и в приватном чате, хотя на мой взгляд, это менее интересно.
Собираем чат клиент под iOS (варианты: Android, Web)
Как я писал выше, можно общаться с ботом через любой Jabber / XMPP — совместимый чат клиент.
Мы легких путей не ищем, поэтому собираем своё приложение — клиент для управления ботом ну и заодно для общения с домашними и друзьями.
Свой собственный мессенджер с ботом и групповыми чатами:-)
Однако, как вы увидите, мы здесь тоже идем по быстрому и ленивому пути и берем готовый open-source проект нашей собственно разработки,
который называется Q-municate.
1. Тянем с гита проект для соответствующей платформы:
iOS: bitbucket.org/quickblox/qmunicate-ios
Android: github.com/QuickBlox/q-municate-android
Web: github.com/QuickBlox/q-municate-web
2. Открываем в IDE.
3. Правим креденшелы — меняем стандартные константы с ключами приложения на скопированные из админки QuickBlox. В iOS это меняется в AppDelegate.m, в Android в Consts.java.
4. Компилируем, билдуем на девайс.
По желанию кастомизируем интерфейс и прочее, .
Демонстрация
Скрины:
свой билд Q-municate я назвал гордо «Q-Power»
находим бота в френдах или групповом чате
общаемся с ботом
Видео управления лампой через чат:
Спасибо за внимание, надеюсь пригодится, а еще лучше если данный «proof of concept» сподвигнет кого-то реализовать идею до конца, и микроволновка вдруг заговорит с тостером, а давать им всем команды будет жена голосом через вашу домашнюю Siri:-)
Данный проект берет свое начало в 2014 году, когда передо мной встала задача обеспечить удаленное управления обогревательными приборами в своем загородном доме. Дело в том, что практически каждые выходные мы с семьей проводим на даче. И если летом мы, задержавшись по тем или иным причинам в городе, приехав в дом могли сразу лечь спать, то зимой, когда температура опускается до -30 градусов, мне приходилось тратить по 3-4 часа на протопку дома. Я видел следующие пути решения данной проблемы:
- «Умный дом»
— собственно решения, построенные на реализации «умного дома».
«Неумное решение»
— можно оставлять включенными обогреватели со встроенными термостатами на минимальной температуре поддержания тепла. Собственно ничего «умного» в этом решении нет, но 24/7 работающие обогревательные приборы в деревянном загородном доме не внушают доверия. Хотелось хотя бы минимального контроля над их состоянием, автоматизации и какой-нибудь обратной связи;
GSM-розетки
— данным решением пользуются мои соседи по дачному участку. Если кто-то не знаком с ними, то это просто управляемый посредством SMS команд переходник, который включается в розетку, а сам обогреватель включается в него. Не самое бюджетное решение, если нужно обеспечить обогрев целого дома — ссылка на маркет . Я вижу его как самое простое и менее трудозатратное в реализации, но имеющее минусы в процессе эксплуатации, такие как: целый ворох сим карт и работы по поддержанию их положительного баланса, так как для каждой комнаты нужен минимум один обогреватель, ограниченность и неудобства их контроля по средствам SMS;
Как наиболее перспективное решение мною был выбран третий вариант и следующим вопросом на повестке дня стал — «Какую платформу для реализации выбрать?».
Уже не помню сколько я потратил время на поиски подходящих вариантов, но в итоге из бюджетных и доступных в магазинах решений я нашел системы: NooLite и CoCo (сейчас уже переименовали в Trust). При их сравнении решающую роль для меня сыграло то, что у NooLite есть открытое и задокументированное API для управления любыми его блоками. На тот момент необходимости в нем не было, но я сразу отметил, какую гибкость в дальнейшем это может дать. Да и цена у NooLite была существенно ниже. В итоге я остановил свой выбор именно на NooLite.
Система NooLite состоит из силовых модулей (под разные типы нагрузок), датчиков (температура, влажность, движение) и управляющего ими оборудования: радио пульты, настенные выключателей, USB-адаптеров для компьютера или Ethernet-шлюза PR1132. Все это можно использовать в различных комбинациях, соединять их между собой напрямую или управлять через usb-адаптеры или шлюз, подробнее об этом можете почитать на официальном сайте производителя.
Для моей задачи центральным элементом умного дома я выбрал Ethernet-шлюза PR1132, который будет управлять силовыми блоками и получать информацию с датчиков. Для работы Ethernet-шлюза необходимо подключить его к сети кабелем, поддержки Wi-Fi в нем нет. На тот момент у меня в доме уже была организована сеть, состоящая из WiFi-маршрутизатора Asus rt-n16 и USB—модема для доступа к интернету. Поэтому весь монтаж NooLite для меня заключался лишь в том, чтобы подключить шлюз кабелем к маршрутизатору, расположить в доме радиодатчики температуры и смонтировать силовые блоки в центральном электрощитке.
У NooLite есть ряд силовых блоков для разной подключаемой нагрузки. Самый «мощный» блок может управлять нагрузкой до 5000 Вт. Если требуется управление большей нагрузкой, как в моем случае, то можно сделать подключение нагрузки через управляемое реле, которым, в свою очередь, будет управлять силовой блок NooLite.
Схема подключения
Ethernet-шлюза PR1132 и маршрутизатор Asus rt-n16
Беспроводной датчик температуры и влажности PT111
Электрощиток и силовой блок для наружного монтажа SR211 — в дальнейшем вместо этого блока я использовал блок для внутреннего монтажа и поместил его прямо в электрощитке
Ethernet-шлюз PR1132 имеет web-интерфейс через которой осуществляется привязка/отвязка силовых блоков, датчиков и управление ими. Сам интерфейс выполнен в довольно «топорном» минималистическом стиле, но этого вполне достаточно для доступа ко всему необходимому функционалу системы:
Настройки
Управление
Страница одной группы выключателей
Подробно о привязке и настройке всего этого — опять же на официальном сайте.
На тот момент я мог:
- управлять обогревателями, находясь в локальной сети загородного дома, что было не очень-то и полезно, исходя из первоначальной задачи;
- создавать таймеры включения/отключения по времени и дню недели.
Как раз таймеры автоматизации на какое-то время решили мою первоначальную задачу. В пятницу утром-днем обогреватели включались, и уже к вечеру мы приезжали в теплый дом. На случай, если наши планы изменятся, был поставлен второй таймер, который ближе к ночи отключал батареи.
Первая реализация позволила частично решить мою задачу, но все-таки хотелось онлайн управления домом и наличие обратной связи. Я начал искать варианты организации доступа к дачной сети из вне.
Как я упомянул в предыдущем разделе — дачная сеть имеет доступ к интернету через usb модем одного из мобильных операторов. По умолчанию мобильные модемы имеют серый ip адрес и без дополнительных ежемесячных трат белого фиксированного ip не получить. При таком сером IP не помогут и различные no-ip сервисы.
Единственный вариант, который мне удалось на тот момент придумать — VPN. На городском маршрутизаторе у меня был настроен VPN-сервер, которым я время от времени пользовался. Мне было необходимо настроить на дачном роутере VPN-клиент и прописать статические маршруты до дачной сети.
Схема подключения
В результате дачный роутер постоянно держал VPN соединение с городским роутером и для доступа к шлюзу NooLite мне нужно было с клиентского устройства (ноутбук, телефон) подключится по VPN к городскому маршрутизатору.
На этом этапе я мог:
- получить доступ к умному дому из любого места;
В целом это практически на 100% покрывало первоначальную задачу. Однако я понимал, что данная реализация далека от оптимальной и удобной в использовании, так как каждый раз я должен был выполнять ряд дополнительных действий по подключению к VPN. Для меня это не было особой проблемой, однако для остальных членов семьи это было не очень удобно. Так же в этой реализации было очень много посредников, что сказывалось на отказоустойчивости всей системы в целом. Однако на некоторое время я остановился именно на этом варианте.
С появлением ботов в Telegram я взял на заметку, что это смогло бы стать довольно удобным интерфейсом для управления умным домом и, как только у меня появилось достаточно свободного времени, я приступил к разработке на Python 3.
Бот должен был где-то находится и, как самое энергоэффективное решение, я выбрал Raspberry Pi. Хоть это и был мой первый опыт работы с ним, особых сложностей в его настройке не возникло. Образ на карту памяти, ethernet кабель в порт и по ssh — полноценный Linux.
Как я уже говорил — у NooLite есть задокументированное API, которое и пригодилось мне на данном этапе. Для начала я написал простенькую обертку для более удобного взаимодействия с API:
noolite_api.py
«»»
NooLite API wrapper
«»»
import requests
from requests.auth import HTTPBasicAuth
from requests.exceptions import ConnectTimeout, ConnectionError
import xml.etree.ElementTree as ET
class NooLiteSens:
«»»Класс хранения и обработки информации, полученной с датчиков
Пока как таковой обработки нет
«»»
def __init__(self, temperature, humidity, state):
self.temperature = float(temperature.replace(«,», «.»)) if temperature != «-» else None
self.humidity = int(humidity) if humidity != «-» else None
self.state = state
class NooLiteApi:
«»»Базовый враппер для общения с NooLite»»»
def __init__(self, login, password, base_api_url, request_timeout=10):
self.login = login
self.password = password
self.base_api_url = base_api_url
self.request_timeout = request_timeout
def get_sens_data(self):
«»»Получение и прасинг xml данных с датчиков:return: список NooLiteSens объектов для каждого датчика:rtype: list
«»»
response = self._send_request(«{}/sens.xml».format(self.base_api_url))
sens_states = {
0: «Датчик привязан, ожидается обновление информации»,
1: «Датчик не привязан»,
2: «Нет сигнала с датчика»,
3: «Необходимо заменить элемент питания в датчике»
}
response_xml_root = ET.fromstring(response.text)
sens_list =
for sens_number in range(4):
sens_list.append(NooLiteSens(response_xml_root.find(«snst{}».format(sens_number)).text,
response_xml_root.find(«snsh{}».format(sens_number)).text,
sens_states.get(int(response_xml_root.find(«snt{}».format(sens_number)).text))))
return sens_list
def send_command_to_channel(self, data):
«»»Отправка запроса к NooLite
Отправляем запрос к NooLite с url параметрами из data:param data: url параметры:type data: dict:return: response
«»»
return self._send_request(«{}/api.htm».format(self.base_api_url), params=data)
def _send_request(self, url, **kwargs):
«»»Отправка запроса к NooLite и обработка возвращаемого ответа
Отправка запроса к url с параметрами из kwargs:param url: url для запроса:type url: str:return: response от NooLite или исключение
«»»
try:
response = requests.get(url, auth=HTTPBasicAuth(self.login, self.password),
timeout=self.request_timeout, **kwargs)
except ConnectTimeout as e:
print(e)
raise NooLiteConnectionTimeout(«Connection timeout: {}».format(self.request_timeout))
except ConnectionError as e:
print(e)
raise NooLiteConnectionError(«Connection timeout: {}».format(self.request_timeout))
if response.status_code != 200:
raise NooLiteBadResponse(«Bad response: {}».format(response))
else:
return response
# Кастомные исключения
NooLiteConnectionTimeout = type(«NooLiteConnectionTimeout», (Exception,), {})
NooLiteConnectionError = type(«NooLiteConnectionError», (Exception,), {})
NooLiteBadResponse = type(«NooLiteBadResponse», (Exception,), {})
NooLiteBadRequestMethod = type(«NooLiteBadRequestMethod», (Exception,), {})
telegram_bot.py
import os
import logging
import functools
import yaml
import requests
import telnetlib
from requests.exceptions import ConnectionError
from telegram import ReplyKeyboardMarkup, ParseMode
from telegram.ext import Updater, CommandHandler, Filters, MessageHandler, Job
from noolite_api import NooLiteApi, NooLiteConnectionTimeout,
NooLiteConnectionError, NooLiteBadResponse
# Получаем конфигурационные данные из файла
config = yaml.load(open(«conf.yaml»))
# Базовые настройка логирования
logger = logging.getLogger()
logger.setLevel(logging.INFO)
formatter = logging.Formatter(«%(asctime)s — %(filename)s:%(lineno)s — %(levelname)s — %(message)s»)
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)
logger.addHandler(stream_handler)
# Подключаемся к боту и NooLite
updater = Updater(config[«telegtam»][«token»])
noolite_api = NooLiteApi(config[«noolite»][«login»],
config[«noolite»][«password»],
config[«noolite»][«api_url»])
job_queue = updater.job_queue
def auth_required(func):
«»»Декоратор аутентификации»»»
@functools.wraps(func)
def wrapped(bot, update):
if update.message.chat_id not in config[«telegtam»][«authenticated_users»]:
bot.sendMessage(chat_id=update.message.chat_id,
text=»Вы неавторизованы.nДля авторизации отправьте /auth password.»)
else:
return func(bot, update)
return wrapped
def log(func):
«»»Декоратор логирования»»»
@functools.wraps(func)
def wrapped(bot, update):
logger.info(«Received message: {}».format(update.message.text if update.message else update.callback_query.data))
func(bot, update)
logger.info(«Response was sent»)
return wrapped
def start(bot, update):
«»»Команда начала взаимодействия с ботом»»»
bot.sendMessage(chat_id=update.message.chat_id,
text=»Для начала работы нужно авторизоваться.n»
«Для авторизации отправьте /auth password.»)
def auth(bot, update):
«»»Аутентификация
Если пароль указан верно, то в ответ приходит клавиатура управления умным домом
«»»
if config[«telegtam»][«password»] in update.message.text:
if update.message.chat_id not in config[«telegtam»][«authenticated_users»]:
config[«telegtam»][«authenticated_users»].append(update.message.chat_id)
custom_keyboard = [
[«/Включить_обогреватели», «/Выключить_обогреватели»],
[«/Включить_прожектор», «/Выключить_прожектор»],
[«/Температура»]
]
reply_markup = ReplyKeyboardMarkup(custom_keyboard)
bot.sendMessage(chat_id=update.message.chat_id,
text=»Вы авторизованы.»,
reply_markup=reply_markup)
else:
bot.sendMessage(chat_id=update.message.chat_id, text=»Неправильный пароль.»)
def send_command_to_noolite(command):
«»»Обработка запросов в NooLite.
Отправляем запрос. Если возращается ошибка, то посылаем пользователю ответ об этом.
«»»
try:
logger.info(«Send command to noolite: {}».format(command))
response = noolite_api.send_command_to_channel(command)
except NooLiteConnectionTimeout as e:
logger.info(e)
return None, «*Дача недоступна!*n`{}`».format(e)
except NooLiteConnectionError as e:
logger.info(e)
return None, «*Ошибка!*n`{}`».format(e)
except NooLiteBadResponse as e:
logger.info(e)
return None, «*Не удалось сделать запрос!*n`{}`».format(e)
return response.text, None
# ========================== Commands ================================
@log
@auth_required
def outdoor_light_on(bot, update):
«»»Включения уличного прожектора»»»
response, error = send_command_to_noolite({«ch»: 2, «cmd»: 2})
logger.info(«Send message: {}».format(response or error))
bot.sendMessage(chat_id=update.message.chat_id, text=»{}».format(response or error))
@log
@auth_required
def outdoor_light_off(bot, update):
«»»Выключения уличного прожектора»»»
response, error = send_command_to_noolite({«ch»: 2, «cmd»: 0})
logger.info(«Send message: {}».format(response or error))
bot.sendMessage(chat_id=update.message.chat_id, text=»{}».format(response or error))
@log
@auth_required
def heaters_on(bot, update):
«»»Включения обогревателей»»»
response, error = send_command_to_noolite({«ch»: 0, «cmd»: 2})
logger.info(«Send message: {}».format(response or error))
bot.sendMessage(chat_id=update.message.chat_id, text=»{}».format(response or error))
@log
@auth_required
def heaters_off(bot, update):
«»»Выключения обогревателей»»»
response, error = send_command_to_noolite({«ch»: 0, «cmd»: 0})
logger.info(«Send message: {}».format(response or error))
bot.sendMessage(chat_id=update.message.chat_id, text=»{}».format(response or error))
@log
@auth_required
def send_temperature(bot, update):
«»»Получаем информацию с датчиков»»»
try:
sens_list = noolite_api.get_sens_data()
except NooLiteConnectionTimeout as e:
logger.info(e)
bot.sendMessage(chat_id=update.message.chat_id,
text=»*Дача недоступна!*n`{}`».format(e),
parse_mode=ParseMode.MARKDOWN)
return
except NooLiteBadResponse as e:
logger.info(e)
bot.sendMessage(chat_id=update.message.chat_id,
text=»*Не удалось получить данные!*n`{}`».format(e),
parse_mode=ParseMode.MARKDOWN)
return
except NooLiteConnectionError as e:
logger.info(e)
bot.sendMessage(chat_id=update.message.chat_id,
text=»*Ошибка подключения к noolite!*n`{}`».format(e),
parse_mode=ParseMode.MARKDOWN)
return
if sens_list.temperature and sens_list.humidity:
message = «Температура: *{}C*nВлажность: *{}%*».format(sens_list.temperature, sens_list.humidity)
else:
message = «Не удалось получить данные: {}».format(sens_list.state)
logger.info(«Send message: {}».format(message))
bot.sendMessage(chat_id=update.message.chat_id,
text=message,
parse_mode=ParseMode.MARKDOWN)
@log
@auth_required
def send_log(bot, update):
«»»Получение лога для отладки»»»
bot.sendDocument(chat_id=update.message.chat_id,
document=open(«/var/log/telegram_bot/err.log», «rb»))
@log
def unknown(bot, update):
«»»Неизвестная команда»»»
bot.sendMessage(chat_id=update.message.chat_id, text=»Я не знаю такой команды»)
def power_restore(bot, job):
«»»Выполняется один раз при запуске бота»»»
for user_chat in config[«telegtam»][«authenticated_users»]:
bot.sendMessage(user_chat, «Включение после перезагрузки»)
def check_temperature(bot, job):
«»»Периодическая проверка температуры с датчиков
Eсли температура ниже, чем установленный минимум —
посылаем уведомление зарегистрированным пользователям
«»»
try:
sens_list = noolite_api.get_sens_data()
except NooLiteConnectionTimeout as e:
print(e)
return
except NooLiteConnectionError as e:
print(e)
return
except NooLiteBadResponse as e:
print(e)
return
if sens_list.temperature and
sens_list.temperature
Данный бот запускается на Raspberry Pi под Supervisor, который контролирует его состояние и запускает его при перезагрузке.
Схема работы бота
При запуске бот:
- посылает зарегистрированным пользователям сообщение о том, что он включился и готов к работе;
- мониторит подключение к интернету. В условии работы через мобильный интернет были случаи, когда он пропадал. Поэтому была добавлена периодическая проверка доступности подключения. Если заданное количество проверок заканчивается неудачей, то сначала скрипт перезагружает через telnet маршрутизатор, а потом, если это не помогло, и сам Raspberry Pi;
- мониторит температуру внутри помещения и отправляет пользователю уведомление, если она опустилась ниже заданного порога;
- выполняет команды от зарегистрированных пользователей.
Команды жестко прописаны в коде и включают в себя:
- включение/выключение обогревателей;
- включение/выключение уличного прожектора;
- получение температуры с датчиков;
- получение файла логов для дебага.
Пример общения с ботом:
В итоге я и все члены семьи получили довольно удобный интерфейс управления умным домом через Telegram. Все, что нужно сделать — установить телеграмм клиент на свое устройство и знать пароль для начала общения с ботом.
В итоге я могу:
- управлять умным домом из любого места с любого устройства со своей учетной записью Telegram;
- получать информацию с датчиков, расположенных в доме.
Данная реализация на все 100% решила первоначальную задачу, была удобной и интуитивно понятной в использовании.
Бюджет (по текущим ценам):
- NooLite Ethernet-шлюз — 6.000 рублей
- NooLite силовой датчик для управления нагрузкой — 1.500 рублей
- NooLite датчик температуры и влажности — 3.000 рублей (без влажности дешевле)
- Raspberry Pi — 4.000 рублей
На выходе у меня получилось довольно гибкая бюджетная система, которую можно легко расширять по мере необходимости (NooLite шлюз поддерживает до 32 каналов). Я и члены семьи могут с легкостью пользоваться ей без необходимости выполнять какие-то дополнительные действия: зашел в телеграмм — проверил температуру — включил обогреватели.
На самом деле данная реализация не последняя. Буквально неделю назад я подключил всю эту систему к Apple HomeKit, что позволило добавить управление через приложение для iOS «Дом» и соответствующую интеграцию с Siri для голосового управления. Но процесс реализации тянет на отдельную статью. Если сообществу будет интересна данная тема, то готов в ближайшее время подготовить еще одну статью.
Благодаря широкому ассортименту дополнительных модулей миниатюрный компьютер Raspberry Pi наилучшим образом подходит для любителей сборки недорогих систем умного дома (Smart Home) своими руками.
В качестве операционной системы можно использовать Raspbian, основанную на ядре Linux, вместе с такими расширениями, как Pimatic. Еще проще собрать «умный дом» можно с помощью комплексных программно-аппаратных решений на «открытой платформе», например openHAB, Fhem, SHC (SmartHome Control) или wiButler.
Модули Smart Home для Raspberry Pi
Построение системы «умный дом» на Raspberry Pi имеет смысл только тогда, когда с ее помощью можно управлять различными устройствами, а для этого необходимы соответствующие модули.
Так как Raspberry Pi — это популярный продукт для любителей мастерить, в продаже имеется огромный выбор модулей для Smart Home. Мы покажем вам некоторые из самых интересных.
433 МГц — приемник и передатчик для Raspberry Pi
Частота 433 МГц часто используется в компонентах доступных систем Smart Home, например, переключателях и термостатах радиаторов отопления, которые можно найти в строительных магазинах.
Такие передатчики и приемники идеально подходят для установки в систему «умный дом», построенную на Raspberry Pi. Бандл из этих двух модулей можно легко приобрести примерно за 600 рублей.
Модуль камеры для Raspberry Pi
С подключенным модулем камеры Raspberry Pi можно использовать в качестве системы видеонаблюдения.
Камера совместима с операционной системой Raspbian, она способна записывать видео в разрешении Full HD и делать 5-мегапиксельные фотографии.
Этот модуль доступен как с инфракрасным фильтром, так и без него по цене от 2000 рублей.
Датчик движения для Raspberry Pi
Если вы хотите, чтобы лампы освещения и другие электронные устройства (например, камера) включалось при появлении движения в какой-то области вашего дома, понадобится датчик движения, подключенный к системе умного дома.
Особенно привлекательным по цене является упаковка из пяти «пироэлектрических инфракрасных PIR датчиков движения».
Этот пакет вы можете приобрести всего за 480 рублей.
Датчик влажности и температуры воздуха для Raspberry Pi
Функционал метеостанции относится к базовому для Smart Home. Получать и обрабатывать метеоданные с помощью Raspberry Pi очень легко. Вам понадобится всего лишь один дешевый датчик, который вы подключите к мини-компьютеру: идеально подойдет DHT11, который стоит менее чем 600 рублей.
Модуль Enocean для Rapsberry Pi
Enocean — это беспроводная технология, которая обходится без источника питания. Суть вот в чем: энергия, необходимая для совершения того или иного действия, возникает из-за изменения состояния (нажатие на кнопку, разница температур, появление солнечного света, дуновение ветра и т. д.).
Соответственно, часто сопутствующими модулями являются переключатели или датчики температуры.
Чтобы управлять устройствами с помощью технологии Enocean через Rapsberry Pi, вам понадобится подходящий модуль, приобрести который можно всего за 3600 рублей.
Пожарная сигнализация для Raspberry Pi
Часто система умного дома используется для повышения уровня домашнего комфорта, но одной из важных функций может стать и защита жилища. Помимо охранной сигнализации и камер видеонаблюдения можно установить датчики дыма и протечки воды.
С помощью датчика дыма, который стоит всего 500 рублей, вы построите собственную пожарную сигнализацию. Однако при конструировании такой важной охранной части «умного дома» вы должны дважды проверять надежность работы системы.
Модуль Homematic для Rapsberry Pi

Теперь вы можете соединить соответствующий модуль беспроводной связи с Raspberry. Один из таких, от компании ELV, стоит около 1700 рублей.
С представленными в этой статье модулями вы сможете построить весьма многофункциональную систему Smart Home. Однако, для Rapsberry Pi существуют еще множество других модулей, например, для работы с беспроводными стандартами Z-Wave и Zigbee.
Фото:
компании-производители, CHIP.de




























































































































































