Гид по технологиям

Умное зеркало на Raspberry Pi — пошаговый проект

14 min read DIY Обновлено 19 Dec 2025
Умное зеркало на Raspberry Pi — пошаговый проект
Умное зеркало на Raspberry Pi — пошаговый проект

Готовое умное зеркало, демонстрирующее интерфейс

Быстрые ссылки

  • Красивое, настраиваемое и изготовленное вручную
  • Материалы и инструменты
  • Постройка рамы
  • Разборка монитора
  • Определение размеров древесины
  • Косые (микро‑) распилы для рамки
  • Склейка рамки
  • Сборка коробки
  • Приклеивание коробки к рамке
  • Шлифовка перед покрытием
  • Покраска или тонировка
  • Защита поверхности (лакировка)
  • Крепления для навешивания
  • Установка железа и кабелей
  • Установка MagicMirror на Raspberry Pi
  • Конфигурация программного обеспечения
  • Обновление времени, календаря, погоды и новостей

Введение

Умное зеркало может показывать календарь, погоду, новости и другие виджеты — как в научно‑фантастическом фильме. Проект работает на Raspberry Pi и стандартном мониторе за полупрозрачным двухсторонним стеклом. Большая часть работы — столярные операции и аккуратная сборка, а настройка софта и модулей доступна любому, кто умеет копировать/вставлять команды и редактировать файл конфигурации.

В этом материале вы найдёте подробные инструкции по выбору материалов и размеров, разборке монитора, изготовлению рамки и корпуса, а также пошаговую установку и настройку MagicMirror. В конце — чек‑листы, критерии приёмки, варианты решения проблем и рекомендации по безопасности и приватности.

Important: Перед работой с инструментами или химическими веществами используйте средства защиты: очки, респиратор/маску при шлифовке или лакировании, средства защиты слуха при работе с электроинструментом.

Красивое, настраиваемое и изготовленное вручную

Умное зеркало показывает время, дату и календарь

Джош Хендриксон / How‑To Geek

Самая популярная программная платформа для умных зеркал — проект MagicMirror от MichMich и сообщества. Идея простая: вы делаете рамку и неглубокий корпус, куда ставите двухстороннее стекло, монитор, Raspberry Pi и кабели. Затем устанавливаете MagicMirror и добавляете нужные модули: календарь, погода, новости, часы, систему умного дома и т. п. Стандартный инсталлятор позволяет развернуть базовую систему одной строкой, а дальше вы настраиваете конфигурационный файл.

Сложнее всего — аккуратно изготовить рамку и короб. Но даже новичок в столярке справится за выходные, если не спешить: активной работы займёт около 3–5 часов, остальное — время высыхания клея и лака.

Материалы и инструменты

Стоимость проекта сильно зависит от того, что у вас уже есть. Полный список покупаемых компонентов может обойтись в ≈700 USD, но если у вас уже есть инструменты и монитор, проект выйдет значительно дешевле. В нашем примере без учёта инструментов потрачено ≈140 USD.

Основные материалы и инструменты:

  • Монитор: предпочтительно ≥24”; тонкий и лёгкий — лучше. Важно: будьте готовы снять подставку и, при желании, рамку корпуса монитора.
  • Двустороннее (two‑way) стекло: размер должен быть чуть больше экрана монитора. Можно заказать на месте у стекольщика.
  • Raspberry Pi 3 (или более новая модель).
  • Корпус для Raspberry Pi.
  • Морилка или краска по дереву.
  • Полиуретановое покрытие (если морите).
  • Шпатлёвка для дерева (для окрашиваемой поверхности — берите шпатлёвку, пригодную под морилку).
  • Наждачная бумага: зернистость 80, 120, 220 (220 можно пропустить, если красите).
  • Торцовочная пила (ми́тер‑сау) — или ручная пила и угольник.
  • Клей для дерева.
  • Рулетка.
  • Прямая линейка.
  • Малярная лента.
  • Ремни‑стяжки или резиновые багажные тросы (bungee cords).
  • Короткие шурупы по дереву, подкладки (шайбы) и распорки (шимы).
  • Нейлоновый ремень для фиксации монитора внутри корпуса.
  • Отвёртка.
  • Крепления для навешивания и тяжёлые крюки, если планируете повесить на стену.
  • Средства защиты: очки, наушники, респиратор; фильтр для паров лака при работе без вентиляции.
  • Древесина для рамки и корпуса: рекомендуются твердые породы (клен, орех) толщиной от 25 мм; для задней стенки подойдет тонкая фанера.

Опционально, но удобно:

  • F‑зажимы (минимум 4).
  • Угловые струбцины (минимум 2).
  • Шпатель для шпатлёвки.
  • Орбитальная шлифмашина.
  • Ремни «липучка»‑листы для шлифования.
  • Сверло/дрель.

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

Постройка рамки

Эскиз рамки с косыми углами и бортами коробки

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

Чертёж рамы умного зеркала в SketchUp

Инструментальная точность на этапах распилов и примерки определяет аккуратность внешнего вида. Не бойтесь перепроверять размеры и примерять компоненты по ходу.

Разборка монитора

Перед изготовлением рамы снимите подставку и, если нужно, рамку корпуса монитора. Каждый монитор разборный по‑своему: ищите шовные места по краям, аккуратно подденьте пластиковые защёлки пластиковой лопаткой. Внутри вы увидите плату инвертора (для старых CCFL), плату подсветки, разъёмы питания и контроллера. Будьте внимательны с плоскими шлейфами и контактами.

Задняя часть монитора с удалённой рамкой корпуса

Джош Хендриксон / How‑To Geek

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

Определение размеров древесины

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

Монитор с отмеченными стрелками для измерения длины и ширины

Дважды умножьте каждое измерение, чтобы получить суммарную длину досок для рамки. Также измерьте высоту корпуса монитора (толщину), чтобы выбрать ширину досок для лицевой части рамки — они должны закрывать толщину монитора или быть немного шире.

В нашем примере использовали четыре доски шириной 75 мм и толщиной 25 мм; две длиной 915 мм и две длиной 1219 мм (примерно на 36” и 48”), что давало запас на обрезку.

Косые распилы для рамки

Две доски с косыми срезами, образующие угол

45°‑ая стыковка — стандарт для декоративных рам. Для аккуратных стыков используйте торцовочную пилу. Если у вас только ручная пила, работайте медленно и используйте направляющие для точности.

Порядок действий:

  1. Установите пиле угол 45°.
  2. Отрежьте короткий кусочек для примерки — экономьте материал.
  3. Переверните доску, отмерьте внутренний размер (от края до угла) и сделайте второй 45°‑рез.
  4. Повторите для всех четырёх сторон и проверьте аккуратность соединения.

Шкала торцовочной пилы установлена на 45 градусов

Tip: большинство пил имеют упор на 45°, который щёлкает — используйте его.

При резке учитывайте толщину пилы (зазор пропила). Не резать по карандашной линии — оставляйте небольшую припускную кромку и подрезайте доводкой.

Доска на торцовочной пиле с карандашной линией для короткого реза

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

Деталь рамки с размерами и углами

Склейка рамки

Детали рамки, склеиваемые с помощью малярной ленты

Деревянный клей обеспечивает прочное соединение и аккуратный внешний вид без видимых шляпок от шурупов. Процесс:

  1. Нанесите тонкую полоску клея на каждую сопрягаемую поверхность.
  2. Дайте впитаться 3–5 минут и нанесите второй слой (концевая кромка впитывает сильнее).
  3. Сложите угол и зафиксируйте струбцинами или малярной лентой по методике “ленты‑скобы”.
  4. Излишки клея аккуратно очищайте влажной тряпкой через 10–15 минут; после застывания снимать их труднее.

Два куска досок склеены и зажаты лентой

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

Угол рамки зажат лентой и дополнительно обмотан для стягивания

Совет: пока клей полностью не схватится, периодически проверяйте, что углы остаются ровными и не «ввалились» внутрь.

После высыхания по инструкции производителя шпатлюйте заметные зазоры и отшлифуйте.

Шпатлёвка в углу рамки рядом с ножом для шпатлёвки

Шпатлёвку наносите с избытком, затем удаляйте выступивший слой шлифовкой. На стадии шпатлевки и шлифовки используйте зерно 80 для грубой подгонки, затем 120, а для финала 220 (если морите).

Поздравляем — рамка готова к сборке коробки.

Сборка коробки

Прямоугольник из досок, лежащий на рамке для примерки

Коробка — простая прямоугольная конструкция, выполненная из тех же или более тонких досок. Порядок:

  1. Отрежьте две длинные боковины по длине рамки.
  2. Отрежьте две короткие стороны по ширине между длинными боковинами.
  3. Сложите и соедините клеем и струбцинами или тянущими ремнями.
  4. Проверьте, чтобы край коробки плотно садился на рамку и не мешал расположению стекла и монитора.

Для склейки используйте F‑зажимы или тугие резиновые ремни: равномерное давление важнее силы.

Деревянный прямоугольник стянут тросом, чтобы склеить углы

Приклеивание коробки к рамке

Кромка доски с разведённым клеем

Нанесите клей по всей длине кромки коробки и прижмите к рамке. Накройте сверху гладкой фанерой или листом картона и положите равномерные грузы по периметру (банки с краской, книги). Дайте просохнуть по времени клея и затем осмотрите на зазоры.

Коробка крепится к рамке и прижата грузами

Если видны зазоры, заполняйте их шпатлёвкой по дереву и после высыхания шлифуйте.

Книги и банки с краской стоят на ровном куске МДФ для прижатия коробки к рамке

Шлифовка перед покрытием

Карандашные волнистые линии на поверхности дерева демонстрируют область шлифования

Шлифовка — важная стадия для аккуратного внешнего вида. Удалите неровности, следы клея, излишки шпатлёвки. Работайте по зерну древесины. Метод:

  1. Начните 80 зерном для снятия крупных изъянов.
  2. Перейдите на 120 для выравнивания.
  3. Закончите 220, если будете морить для гладкой поверхности.

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

Когда поверхность станет гладкой на ощупь, удалите всю пыль влажной тканью и дайте высохнуть.

Покраска и морилка

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

  • Морилка (stain) подчёркивает текстуру древесины. После морилки защитите поверхность полиуретаном.
  • Краска даёт ровный цвет и скрывает структуру дерева.

Порядок работ при морилке:

  1. Нанесите морилку равномерно кистью или тряпкой.
  2. Через несколько минут протрите излишки мягкой тряпкой.
  3. Дождитесь высыхания согласно инструкции.
  4. Покройте 1–3 слоями полиуретана, шлифуя мелкой наждачной после каждого слоя для идеальной гладкости.

Если красите, используйте грунтовку, затем 2‑3 слоя краски, давая высохнуть между слоями.

Important: работайте в хорошо проветриваемом помещении, используйте средства защиты от паров.

Крепления для навешивания и монтаж стекла

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

Установка двухстороннего стекла:

  1. Положите рамку лицевой стороной вниз.
  2. Установите стекло в фальц и зафиксируйте мягкими прокладками по углам.
  3. Разместите монитор поверх задней части и закрепите при необходимости ремнём или зажимами.
  4. Убедитесь, что монитор не давит на стекло и что есть зазор для вентиляции.

Аппаратная часть и проводка

Рассмотрите следующие рекомендации по размещению Raspberry Pi и кабелей в корпусе:

  • Raspberry Pi крепите на небольшую монтажную панель внутри коробки, чтобы не касаться задней стенки монитора.
  • Используйте короткий HDMI‑кабель, оставляя место для вентиляции.
  • Питание для монитора и Raspberry Pi ведите раздельными кабелями к внешнему источнику питания. Можно использовать удлинитель, но избегайте запутанных соединений.
  • Если нужно, сделайте отверстие для кабеля питания в задней стенке коробки и обработайте его ворсистой втулкой, чтобы не повредить провод.

Расположение компонентов с учётом тепловыделения и доступа к SD‑карте имеет значение: избегайте перегрева Raspberry Pi внутри плотно закрытого корпуса.

Установка MagicMirror на Raspberry Pi

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

Предварительные требования:

  • Raspberry Pi с установленной Raspberry Pi OS (ранее Raspbian).
  • Подключённый интернет.
  • Доступ по SSH или через локальную консоль.

Быстрая установка (официальный однострочный инсталлятор):

bash -c "$(curl -sL https://raw.githubusercontent.com/MichMich/MagicMirror/master/installers/raspberry.sh)"

Этот скрипт автоматически установит зависимости и сам MagicMirror. Если вы предпочитаете устанавливать шаг за шагом вручную, используйте следующий порядок команд.

Ручная установка (основные шаги):

# Обновляем систему
sudo apt update && sudo apt upgrade -y

# Устанавливаем зависимости
sudo apt install -y git curl build-essential

# Устанавливаем Node.js через NodeSource (пример для Node 14)
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt install -y nodejs

# Дополнительные пакеты, которые могут потребоваться
sudo apt install -y libnss3 libasound2 libatk-bridge2.0-0 libgtk-3-0 x11-xserver-utils

# Клонируем репозиторий
cd ~
git clone https://github.com/MichMich/MagicMirror
cd MagicMirror

# Устанавливаем зависимости npm
npm install --arch=armv7l --no-optional

# Копируем конфиг для редактирования
cp config/config.js.sample config/config.js

# Запускаем проект
npm start

Примечание: на старых Raspberry Pi может потребоваться сборка некоторых модулей; установка займет больше времени. Если при установке модулей npm выдаёт ошибки, попробуйте добавить флаг –no‑optional и убедиться, что пакет build‑essential установлен.

Автозапуск приложения

Чтобы MagicMirror запускался автоматически при старте, есть два распространённых подхода: pm2 или systemd.

Пример установки через pm2:

sudo npm install -g pm2
# в каталоге ~/MagicMirror
pm2 start npm --name "magicmirror" -- start
pm2 save
pm2 startup systemd

Команда pm2 startup выдаст дополнительную строку, которую нужно выполнить с sudo, чтобы pm2 запускался после перезагрузки.

Пример простого systemd‑сервиса (создайте /etc/systemd/system/magicmirror.service):

[Unit]
Description=MagicMirror
After=network.target

[Service]
Type=simple
User=pi
Environment=DISPLAY=:0
WorkingDirectory=/home/pi/MagicMirror
ExecStart=/usr/bin/npm start
Restart=always

[Install]
WantedBy=multi-user.target

После создания файла выполните:

sudo systemctl daemon-reload
sudo systemctl enable magicmirror
sudo systemctl start magicmirror

Важно: при использовании display на X сервере убедитесь, что вы запускаете среду, поддерживающую графический вывод (например, при запуске в полноэкранном режиме через Chromium на Raspbian с автологином в графику).

Настройка конфигурации MagicMirror

Файл конфигурации — config/config.js. В нём указываются модули, их позиции и параметры. Ниже — минимальный пример с часами, календарём Google, погодой и RSS‑лентой.

module.exports = {
  address: "0.0.0.0",
  port: 8080,
  ipWhitelist: [],
  language: "ru",
  timeFormat: 24,
  units: "metric",

  modules: [
    {
      module: "clock",
      position: "top_left"
    },
    {
      module: "calendar",
      header: "Календарь",
      position: "top_right",
      config: {
        calendars: [
          {
            symbol: "calendar",
            url: "Ваша_ICS_ссылка_или_Google_Calendar_feed"
          }
        ]
      }
    },
    {
      module: "currentweather",
      position: "top_left",
      config: {
        location: "Moscow",
        locationID: "", // ID населённого пункта (опционально)
        appid: "ВАШ_OPENWEATHERMAP_API_KEY"
      }
    },
    {
      module: "newsfeed",
      position: "bottom_bar",
      config: {
        feeds: [
          {title: "Lenta", url: "https://lenta.ru/rss"}
        ]
      }
    }
  ]
};

Примеры модулей и подсказки:

  • Calendar: поддерживает Google Calendar через приватный ссылочный feed (ICS). Не давайте приватную ссылку в публичных репозиториях.
  • CurrentWeather: требует ключ OpenWeatherMap или аналогичного сервиса.
  • Newsfeed: добавляйте RSS‑каналы ваших источников.
  • MMM‑RunSched, MMM‑SystemStats и другие расширения повышают функциональность.

Custom CSS

Файл custom.css (в папке css) позволяет менять стили модулей: размеры шрифтов, отступы и цвета. Создайте css/custom.css и подключите его в конфиге, если нужно.

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

  • Время: MagicMirror использует системное время Raspberry Pi — настройте правильную временную зону через raspi‑config или timedatectl.
  • Календарь: используйте приватный ICS‑фид Google Calendar: в настройках календаря → Интеграция календаря → Скопируйте “Секретный адрес в формате iCal”.
  • Погода: зарегистрируйтесь на OpenWeatherMap, получите API‑ключ и вставьте в config.
  • Новости: добавляйте надежные RSS‑ленты; проверьте формат RSS в браузере.

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

  • Отключите ненужные модули для снижения нагрузки на CPU.
  • Используйте графический ускоритель Pi (включается в config.txt) если монитор используйте аппаратное ускорение.
  • Монитор в режиме энергосбережения можно отключить — используйте xset или chromium kiosk параметры, чтобы избежать мигания.

Критерии приёмки

Перед финальным вешанием и передачей проекта проверьте:

  1. Рама собрана без видимых больших зазоров; стыки аккуратно зашпатлеваны и отшлифованы.
  2. Стекло плотно сидит в фальце и не двигается.
  3. Монитор установлен и надёжно закреплён; нет точек давления на стекло.
  4. Raspberry Pi корректно загружается и MagicMirror стартует автоматически.
  5. Все используемые API и календари отображаются и обновляются.
  6. Коробка не перегревается: температура Raspberry Pi в норме при длительной работе.
  7. Крепления и дюбели выдерживают расчётную нагрузку и закреплены в стене.

Тесты и приёмка

  • Тест запуска: включение питания — система загружается, интерфейс появляется за менее чем 60 секунд.
  • Тест модулей: календарь, погода, новости и часы обновляют данные при старте и через заданный интервал.
  • Тест устойчивости: работа 24 часа без падений приложения.
  • Тест безопасности: приватные URL календаря и ключи API не закоммичены в публичный git.

Частые проблемы и их решения

  • Проблема: MagicMirror не запускается. Решение: проверьте логи npm (npm start в папке MagicMirror), убедитесь, что зависимости установлены.
  • Проблема: черный экран/нет видео. Решение: проверьте HDMI‑кабель, питание монитора и настройки разрешения в /boot/config.txt.
  • Проблема: модули не показывают данные. Решение: проверьте ключи API, ссылки на календари, лог сети.
  • Проблема: перегрев в коробке. Решение: добавьте вентиляционные отверстия или маленький вентилятор по тихой ветке.

Альтернативные подходы и расширения

  • Использовать планшетный экран: упрощает аппаратную часть, но менее гибко по размерам.
  • Использовать телевизор с тонкой рамкой: хорошо для больших зеркал, но массивнее.
  • Добавить сенсорное управление и голосовой ассистент (Google Assistant, Snips и т. п.).
  • Использовать веб‑сервер MagicMirror и отображать на других устройствах во внутренней сети.

Модель принятия решений и оценка усилий

  • Если важен внешний вид и долговечность — выберите твердые породы дерева и морилку с полиуретаном (высокий эффект, средние усилия).
  • Если нужна простота и бюджет — используйте тонкую фанеру и краску (низкий‑средний эффект, низкие усилия).
  • Если приоритет — функциональность, а не вид — сделайте корпус простым и сосредоточьтесь на модулях (высокий эффект, средние усилия на ПО).

Роли и чек‑листы

Роль: Столяр

  • Проверить размеры монитора.
  • Отметить и раскроить доски.
  • Выполнить косые резы и собрать рамку.
  • Шпатлевка и шлифовка.
  • Нанести морилку/краску и лак.

Роль: Электрик/монтажник

  • Разобрать монитор и подготовить крепления.
  • Подготовить проходы кабелей и фиксацию Raspberry Pi.
  • Закрепить монитор и стекло в рамке.
  • Подключить питание и протестировать под нагрузкой.

Роль: DevOps/настройщик ПО

  • Установить Raspberry Pi OS и обновить систему.
  • Установить MagicMirror и зависимости.
  • Настроить автозапуск (pm2/systemd).
  • Настроить модули и проверить обновления данных.

Безопасность и приватность

  • Не публикуйте приватные ICS‑ссылки от Google Calendar и ключи API.
  • По возможности используйте локальные сервисы или прокси для получения данных.
  • Ограничьте доступ к веб‑интерфейсу MagicMirror с помощью ipWhitelist или VPN, если будете открывать доступ извне.
  • Для дат, причиной утечек могут быть скриншоты/фото — учитывайте размещение зеркала в доме.

Обслуживание и эксплуатация

  • Раз в полгода проверяйте крепления и крепёж монитора.
  • Обновляйте систему и npm‑модули: делайте резервную копию config.js перед апдейтами.
  • При появлении проблем: проверьте логи systemd или pm2, а также dmesg на предмет аппаратных ошибок.

Глоссарий (1‑строчное определения)

  • Two‑way glass: полупрозрачное стекло, отражающее свет с одной стороны и пропускающее с другой.
  • Miter (ми́тер): косой распил под фиксированным углом, часто 45°.
  • Raspberry Pi: компактный одноплатный компьютер.
  • MagicMirror: open source платформа для умных зеркал.

Краткое резюме

  • Вы сделали корпус и рамку, подготовили монитор и Raspberry Pi.
  • Установили MagicMirror, добавили базовые модули: часы, календарь, погода, новости.
  • Настроили автозапуск и базовую безопасность.

Notes: Этот проект легко адаптируется под разные размеры и стили. Простые улучшения — автоматизация подсветки, голосовое управление и интеграция с системами умного дома.


Если хотите, могу подготовить:

  • Шаблон config.js с настройками Google Calendar и OpenWeatherMap.
  • Systemd‑юнит, привязанный под конкретного пользователя.
  • Схему прокладки кабелей и сборочный чертёж для выбранного размера монитора.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Просмотр всех приложений в Google Play и экспорт списка
Руководство

Просмотр всех приложений в Google Play и экспорт списка

Сканирование Snapcode в Snapchat: камера и галерея
Социальные сети

Сканирование Snapcode в Snapchat: камера и галерея

Временная веб‑страница за минуты
Инструменты

Временная веб‑страница за минуты

Уведомления и история версий в Google Sheets
Руководство

Уведомления и история версий в Google Sheets

Как избежать лимитов Google Antigravity
Разработка

Как избежать лимитов Google Antigravity

Как устранить 5 частых проблем с домашним сервером Minecraft
Игровые серверы

Как устранить 5 частых проблем с домашним сервером Minecraft