Умное зеркало Magic Mirror своими руками

Умное зеркало Magic Mirror

реклама

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

Материалы, которые вам понадобятся

  • Raspberry Pi (я использовал версию A+ для моего зеркало, чтобы быть уверенным, что все будет работать);

    Raspberry Pi

    Raspberry Pi

  • SD-карта с linux (я использовал операционную систему raspbian jessie);
  • LCD-дисплей с входом HDMI (я использовал старый монитор с адаптером HDMI-VGA);
  • Wi-Fi адаптер.

волшебное зеркало

Установка и настройка

Перед установкой всех компонентов нужно запустить:

sudo apt-get install php5 midori unclutter

это все необходимые материалы, основанные на репозитории, которые нам потребуются.

Я пропущу момент записи операционной системы Raspbian на SD-карту, просто пойдите в Google и поищите там, это элементарно. После того, как вы запустите pi с системой jessie, загрузится графический интерфейс. Нажмите меню и зайдите в настройку конфигурации Raspbian в разделе настроек. Установите файловую систему и параметры локализации для корректного отображения времени. Настройки загрузки менять не обязательно, так как мы хотим, чтобы графический интерфейс загружался автоматически.

Перезагрузитесь, чтобы сохранить настройки и проверьте, что вы подключаетесь к вашей беспроводной Wi-Fi сети. Далее Raspbian будет автоматически подключаться каждый раз при включении, поэтому вам нужно будет сделать это только один раз.

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

sudo apt-get update sudo apt-get upgrade

Мы собираемся установить веб-сервер и php. Если вы просто установите php5, тогда он также установит apache2 и все, что нужно для его запуска.

sudo apt-get install php5

Теперь нам нужно получить интерфейс волшебного зеркала, который является веб-сайтом на php. Создатель поддерживает репозиторий git, в котором собрано все необходимое. Перейдите в каталог apache и клонируйте git repo (на самом деле это не так страшно).

cd /var/www/html sudo git clone https://github.com/MichMich/MagicMirror

Git создал папку MagicMirror и скопировал все файлы из репозитория в нее. Я не изменял никаких прав, поэтому любые изменения, которые вы вносите, должны будут использовать sudo или Вам нужно будет изменить разрешения для папок и файлов.

С этого момента ваше волшебное зеркало уже работает! Но еще не на русском языке, и оно не появляется, когда вы включаете Raspbian. Также вы можете использовать браузер на любом компьютере в своей сети, чтобы посмотреть как сейчас выглядит Ваше «умное зеркало». Для этого нужно узнать ip адрес вашей Raspbian с помощью команды ifconfig и запустить в браузере: http: // <Raspbian IP> / MagicMirror /.

Настройки config.js

sudo nano /var/www/html/MagicMirror/config.js

Затем мы должны изменить остальные настройки config.js.

Настройки config

Здесь вам нужно будет немного поработать, вам нужно найти и изменить 3 вещи:

  • язык (например, русский — ru);
  • ключ API для показа карты погоды;
  • RSS-канал (если вы хотите, чтобы зеркало показывало новости);
  • ваша личная календарная ссылка из gcal или другого приложения для веб-календаря.

Приложение календарь может читать любой календарь iCal, который используется в Интернете. Если вы используете календарь Google, вы можете получить ссылку на него, нажав на маленькую стрелку внизу справа от имени вашего календаря и выбрав «Настройки календаря». Скопируйте ссылку на свой календарь и с помощью nano отредактируйте js-файл. Если вы используете ссылку общего календаря, он просто покажет «Занят» для каждого события, но это не совсем то что нужно.

погода

Погода api бесплатна. зайдите на страницу регистрации API и зарегистрируйтесь! После этого вы можете получить свой ключ API.

cd /var/www/html/MagicMirror/js

Я использую полный путь, что бы вы не потерялись.

Вот что вам нужно будет изменить, я просто изолирую строки. Это не большой файл, поэтому их будет не сложно найти.

var lang = 'nl';

к var lang = ‘ru’;

'APPID':'YOUR_FREE_OPENWEATHER_API_KEY'

Замените YOUR_FREE_OPENWEATHER_API_KEY на карту открытой погоды api key

'q':'Baarn,Netherlands',

в

'q':'<city>,<state>',

изменение

реклама

var feed = 'http://feeds.nos.nl/nosjournaal?format=rss';

в

var feed = '<rss feed of your choice>';

Например, я подключил новости Ars Technica

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

var afternoon = [ 'Привет, красавица!', <--ends with comma 'Хорошо выглядишь!', <--ends with comma 'Ты сегодня супер!' <--last item, no comma!! ];

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

комплименты

Используйте комбинацию CTRL+O для сохранения и CTRL+X, чтобы выйти из nano и протестировать в браузере. С любого компьютера в сети вы можете перейти по адресу http: // <IP of pi> /MagicMirror/index.php и увидеть своими глазами, как все работает, или на самом pi открыть браузер и перейти к http: // localhost / MagicMirror / index.php

Загрузка в полноэкранный браузер

Теперь мы можем изменить поведение загрузки pi так, чтобы он загрузился и не заснул. Я рекомендую установить кнопку питания на вашем зеркале, чтобы он не тратил электричество весь день. Или еще лучше, прикрепить датчик движения.

Файл, который нам нужно отредактировать для этого, — это файл автозапуска диспетчера дисплея. Raspbian использует LXDE для своего графического интерфейса, но я собираюсь использовать midori для веб-браузера. Мидори довольно быстра, поэтому я использую ее вместо установки хрома или firefox, или какой-то другой глупости. Вы можете использовать любой браузер, который хотите, но вам нужно будет узнать, как самому сделать его в полноэкранном режиме. Что касается midori:

sudo apt-get install midori

Затем мы редактируем файл автозапуска для пользователя. В большинстве других инструкций вы редактируете файл в каталоге / etc, но это не сработает, потому что raspbian регистрируется пользователем. Когда он регистрирует пользователя в config в / etc, он переопределяется конфигурацией в домашнем каталоге (очень подло 🙂 ). Файл находится здесь: /home/pi/.config/lxsession/LXDE-pi/autostart

Итак, идем

nano /home/pi/.config/lxsession/LXDE-pi/autostart

Закомментируйте (поставьте в начале # ) строки, которые уже находятся в файле, и добавьте эти 4 строки.

@xset s off @xset -dpms 
@xset s noblank 
@midori -e
Fullscreen -a http://localhost/MagicMirror/index.php

Они нужны, чтобы отключит скринсейвер и запустит волшебное зеркало при загрузке и пропустит загрузку графического интерфейса LXDE.

Определение движения

Пассивный инфракрасный датчик движения

Пассивный инфракрасный датчик движения

Это простой и недорогой компонент, который отвечает за включение и выключение монитора.

Обнаружение движения

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

Сохраните этот файл как pir.py

#!/usr/bin/env python import sys import time import RPi.GPIO as io import subprocess io . setmode ( io . BCM ) SHUTOFF_DELAY = 60 # seconds PIR_PIN = 25 # 22 on the board LED_PIN = 16 def main (): io . setup ( PIR_PIN , io . IN ) io . setup ( LED_PIN , io . OUT ) turned_off = False last_motion_time = time . time () while True : if io . input ( PIR_PIN ): last_motion_time = time . time () io . output ( LED_PIN , io . LOW ) print "." , sys . stdout . flush () if turned_off : turned_off = False turn_on () else : if not turned_off and time . time () > ( last_motion_time + SHUTOFF_DELAY ): turned_off = True turn_off () if not turned_off and time . time () > ( last_motion_time + 1 ): io . output ( LED_PIN , io . HIGH ) time . sleep ( . 1 ) def turn_on (): subprocess . call ( "sh /home/pi/photoframe/monitor_on.sh" , shell = True ) def turn_off (): subprocess . call ( "sh /home/pi/photoframe/monitor_off.sh" , shell = True ) if __name__ == '__main__' : try : main () except KeyboardInterrupt : io . cleanup ()

Включение и выключение монитора

Существует 2 способа включения и выключения монитора. Используйте команду tvservice для выключения порта монитора.

pi@raspberrypi ~/photoframe $ chmod 0744 monitor_off.sh pi@raspberrypi ~/photoframe $ cat monitor_off.sh tvservice -o pi@raspberrypi ~/photoframe $ chmod 0744 monitor_on.sh pi@raspberrypi ~/photoframe $ cat monitor_on.sh tvservice -c "PAL 4:3" && fbset -depth 8 && fbset -depth 16

Этот метод фактически отключает порт, который отлично работает, за исключением случаев, когда вы подключены к монитору HDMI и отключается, когда порт выключен. Когда вы идете в комнату, порт снова включается, но монитор выключен, поэтому он не возвращается обратно. В этом случае просто переключите виртуальные терминалы, чтобы отключить экран, используя команду chvt .

pi@raspberrypi ~/photoframe $ chmod 0744 monitor_off.sh pi@raspberrypi ~/photoframe $ cat monitor_off.sh chvt 2 pi@raspberrypi ~/photoframe $ chmod 0744 monitor_on.sh pi@raspberrypi ~/photoframe $ cat monitor_on.sh chvt 7

Этот проклятый курсор…

Чтобы убрать курсор, установите unclutter

sudo apt-get install unclutter

Поворот дисплея

Мне не нужно было это делать, но вы можете использовать монитор или телевизор с другим соотношением сторон, не 3: 4, и хотите, чтобы он был высоким. Эти инструкции предназначены для raspbian, поэтому они могут немного отличаться от других особенностей linux. Нам нужно отредактировать файл config.txt, который использует raspbian во время загрузки, а параметр отсутствует в файле, поэтому нам нужно его добавить.

sudo nano /boot/config.txt

В нижней части файла добавьте:

DISPLAY_ROTATE=X

X — это то, как вы хотите повернуть его, используйте этот список, чтобы получить номер:

  • 0 = нет вращения;
  • 1 = поворот на 90 градусов по часовой стрелке;
  • 2 = вращение на 180 градусов по часовой стрелке;
  • 3 = вращение на 270 градусов по часовой стрелке.

Финал

Теперь пойдите, постройте свое волшебное зеркало.

корпус для умного зеркала

корпус для умного зеркала

установка электроники умного зеркала

установка электроники умного зеркала


Читайте также:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.