Мне хотелось сделать готовый продукт, который не стыдно будет показать друзьям или подарить, я избегал делать проект «на коленках» с торчащими проводами и криво закрученными болтами, хотел видеть продукты как будто ты его купил в магазине. На фото Вы видите конечный продукт, установленный на моей стене. Я хотел сделать «премиум» зеркало на Raspberry Pi для рождественского подарка. Поэтому я использовал экран 39 «4K за стеклянным двухсторонним зеркалом и потратил много времени на деревообработку для изготовления рамы.
В Raspberry Pi 2 я применил радиаторы так как я хочу разогнать плату для более быстрой работы. Так же я использовал адаптер USB WiFi (от Canakit на Amazon) и Plugable Bluetooth 4.0 Low Energy. У меня были проблемы с питанием адаптеров WiFi на моей первой модели Pi, но у меня не возникало проблем с этими адаптерами на Pi2.
Экран, который я использую за зеркалом, представляет собой телевизор Seiki 39 «4K. Он был приобретен по из за его очень низкой стоимости, так же его было легко разбирать, а тот факт, что корпус и стойка были сделаны дешево, я ни сколько не волновался что разобрал его по частям. Первые пару месяцев этого проекта все было настроено Pi2 / OS / Web Dev, больше всего времени заняло настройка Pi2 к разрешению 4K которое заняло много времени и не хотело нормально отображаться, Но мне все таки удалось победить эту проблему и в один момент телевизор все таки сдался и показал перевернутую картинку в 4К. В итоге я использовал Ubuntu MATE в качестве операционной системы для удобной настройки Bluetooth.
Настройки «BIOS» Raspberry Pi хранятся в /boot
разделе системы. Этот раздел содержит config.txt
файл со всеми настройками. Чтобы повернуть монитор, добавьте следующую строку в этот файл:
display_rotate=1
Для более надежного подключения к монитору я раскоментировал параметр который позволяет использовать выход HDMI:
hdmi_force_hotplug=1
Далее прошел процесс изготовления деревянного основания для установки зеркала и телевизора, в этом деле на встречу мне пошел мой отец у которого в арсенале был инструмент для работы по дереву
Я сделал несколько планок длиной около 15 см, которые поддержкой. Первым делом они закрывали край задней части зеркала, удерживая его на месте и не позволяя ему упасть назад. Во-вторых, они держали экран на своем месте, чтобы не было движения слева направо. И в-третьих планки были подогнаны до точной толщины экрана, для того, когда я установлю экран они смогли удерживать экран, и не позволять ему двигаться в разных направлениях.
Моя сестра тоже помогала в этом проекте, в ее обязанности входило удалить с экрана всю пыль и отпечатки пальцев перед установкой.
Далее экран был установлен в деревянное основание, сама конструкция была покрашена черный цвет.
Фотография общего вида всех виджетов на экране приведена ниже. Вывести модуль погоды на экран мне помог мой друг, проанализировал API сайта погоды Weather Underground он извлек нужные данные и смог отобразить их на экране ТВ.
API
Чтобы получить данные, которые Вы хотите отобразить в зеркале, требуется использую некоторые открытые API и фиды. Для тех кто не знает, что такое API, Wikipedia дает описание :
набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) или операционной системой для использования во внешних программных продуктах. Используется программистами при написании всевозможных приложений.
Мне нравится использовать API, он чем то похож на заднюю панель вашего DVD-плеера: устройство становится намного более полезным, когда вы подключаете к нему другие устройства. Эти соединения по существу являются API.
Openweathermap.org
Openweathermap имеет отличный API для получения данных о погоде и прогнозах. Он позволяет выполнять запрос на основе местоположения и указывать, какие данные желательны. В этом случае я использую две ссылки: одну для текущей погоды, а другая для прогноза .
Календарь iCal
iCloud позволяет вам использовать календарь в формате iCal. Теперь, поскольку javascript не разрешает делать такой запрос (из-за безопасности межсайтового скриптинга), мне нужно открыть эти данные через PHP-прокси. Это на самом деле довольно легко. Это всего лишь 3 строки кода:
<?php $url = 'https://p01-calendarws.icloud.com/ca/subscribe/1/mysupersecreticloudhash'; echo file_get_contents($url);
Это сделает календарь доступным на том же сервере, что и интерфейс, просто запросив calendar.php
.
Ранее упомянутый анализатор iCal помогает мне разобрать информацию по ее приоритету. К сожалению iCloud не использует в своих каналах никаких стандартных тегов, поэтому я добавил некоторые дополнительные строки синтаксического анализа в файл javascript.
Вариант 1
Нашел недавно еще один готовый проект на GitHub: Smart-Mirror
Описание по установке https://github.com/HackerShackOfficial/Smart-Mirror
[wpdm_package id=’1327′]
Raspberry powered mirror which can display the news, weather, and time.
Installation and Updating
Code
If you have git installed, clone the repository.
git clone git@github.com:HackerHouseYT/Smart-Mirror.git
Alternatively, you can download a zip file containing the project (green button on the repository page)
Navigate to the folder for the repository
cd Smart-Mirror
Install your dependencies
make sure you have pip installed before doing this
sudo pip install -r requirements.txt
sudo apt-get install python-imaging-tk
Add your api token
Make sure vim is installed on your system: sudo apt-get install vim
Use vim
to edit you file
vim smartmirror.py
replace weather_api_token
with the token you got from forecast.io
Running
To run the application run the following command in this folder
python smartmirror.py
Вариант 2
Устанавливаем Apache , Chromium и пишем страницу для отображения нужной нам информации:
Подробнее тут https://github.com/MichMich/MagicMirror
[wpdm_package id=’1331′]
PS ! Проект иностранный, в нашем случае мы можем использовать старый добрый LCD монитор купленный на той же барахолке.
Из рекомендации для более качественной картинки использовать монитор 1080p, и с разъемами выходящими сбоку, а не на заднюю стенку
Еще приведу пару фоток для вдохновившихся людей этой темой :