Оглавление:

Часы назад в будущее: 8 шагов (с картинками)
Часы назад в будущее: 8 шагов (с картинками)

Видео: Часы назад в будущее: 8 шагов (с картинками)

Видео: Часы назад в будущее: 8 шагов (с картинками)
Видео: Если бы сказку «Морозко» снимали в наши дни 2024, Ноябрь
Anonim
Часы назад в будущее
Часы назад в будущее

Этот проект начинал жизнь как будильник для моего сына. Я сделал его похожим на временную схему из «Назад в будущее». Дисплей может показывать время в разных форматах, в том числе, конечно, из фильмов. Его можно настроить с помощью кнопок в верхней части корпуса, а также через веб-страницу, обслуживаемую Raspberry Pi Zero внутри. В одном из режимов отображения он будет показывать местную погоду (с моей метеостанции на базе Arduino), а также прогноз и любые ежедневные напоминания, настроенные через веб-интерфейс. Он также имеет аудио благодаря ЦАП и будет передавать музыку по протоколу AirPlay. Звуковым сигналом может быть любой аудиофайл по вашему выбору. Он автоматически уменьшает яркость и яркость дисплея в определенное время дня (например, рассвет и сумерки).

Шаг 1. Справочная информация

В прошлом году я искал новый проект Arduino, только что завершив свой первый проект - домашнюю метеостанцию. Мой 11-летний сын только что впервые посмотрел фильм «Назад в будущее», поэтому я подумал, что было бы забавно соорудить ему будильник, который выглядел бы как временная схема в «Делориане» на его день рождения. Это не новая идея, существует довольно много похожих проектов (например, этот), поэтому я подумал, что было бы неплохо поучиться у других и приобрести новые навыки.

Первая версия работала довольно хорошо (она не была готова к его дню рождения: я сделал это к Рождеству), но я очень амбициозно подошел к тому, что я хотел, и обнаружил, что мой скетч продолжал выходить за пределы памяти Arduino. У меня также было несколько небольших внешних аппаратных модулей (WiFi, MP3-плеер, аудиоусилитель, RTC и т. Д.), Так что все это становилось немного громоздким. В конце концов, я решил перейти на платформу Raspberry Pi, которая упростила оборудование и позволила мне упаковать гораздо больше функций и возможностей.

Шаг 2: Основные аппаратные компоненты

Внутри коробки

Вот электронные компоненты, которые я использовал. Большинство из них были источниками из Core Electronics в Австралии, но, конечно же, они легко доступны и в других местах:

  • 4 четырехбуквенных буквенно-цифровых дисплея - желто-зеленый
  • Малина Pi Zero W
  • Pimoroni pHAT DAC для Raspberry Pi Zero
  • Аудио усилитель (PAM8403 IC)
  • Блок питания Raspberry Pi 3+
  • 4 x перемычка - 0,1 ", 5-контактная, 12"
  • 40-контактный (2 x 20) ленточный кабель
  • Мужской заголовок Raspberry Pi GPIO
  • Raspberry Pi Model B - закрытый заголовок GPIO (2X20)
  • Заголовок стекирования GPIO для Pi A + / B + / PI 2 / PI 3 - сверхдлинный 2X20
  • 4 x 5-контактный штекер
  • 2 маленьких динамика мощностью 3 Вт
  • 2 коаксиальных кабеля для аналогового аудио подключения ЦАП к усилителю
  • Veraboard или специальная печатная плата для обработки Rpi на усилитель, светодиод, кнопки
  • 5 кнопочных переключателей мгновенного действия
  • 4 x 2-контактных винтовых клеммных колодки для монтажа на печатную плату

Коробка

  • Кусочки МДФ, шурупы и болты для изготовления «шасси»
  • Зеленый тонированный плексиглас, местный поставщик
  • Стирол, клей для моделирования, аэрозольная краска (цвет алюминия) из местного магазина для хобби.
  • Наклейки (файл предоставляется по запросу - распечатаны Redbubble)

Шаг 3: Собираем все вместе

Собираем все вместе
Собираем все вместе

Светодиодный дисплей для часов состоит из 16x14-сегментных буквенно-цифровых дисплеев, которые, к счастью, содержат такое же количество символов, как и схема времени «Назад в будущее». Хотя только первые три символа должны быть буквенно-цифровыми, а остальные могут быть 7-сегментными цифровыми дисплеями, чтобы имитировать опору фильма, я решил сделать их все буквенно-цифровыми, чтобы обеспечить некоторую гибкость в отображении, и чтобы они все выглядели одинаково. тем же. Рюкзаки для квадроциклов Adafruit - отличное решение здесь и могут работать на шине I2C Raspberry Pi. Более подробную информацию об этих устройствах и о том, как их подключить, можно найти здесь, на веб-сайте Adafruit. Единственное, что мне пришлось сделать немного нестандартно, - это изменить адреса трех из них, чтобы каждый рюкзак был уникальным.

Для воспроизведения звука (в стерео) я включил ЦАП Pimoroni pHAT и стерео аудиоусилитель 2 x 3 Вт на базе микросхемы PAM8403. PHAT DAC действительно легко подключить к Pi. Я установил штекерный разъем 2 x 20 контактов на Pi и стековый заголовок GPIO на ЦАП, чтобы их можно было соединить друг с другом. Штырьки штекерного разъема проходят через верхнюю часть ЦАП, что позволяет мне пропустить ленточный кабель с разъемами-розетками, сначала к прорыву Raspberry Pi для тестирования макетной платы, но в конечном итоге к закрытому заголовку на заказной печатной плате.

Для аудиоусилителя существует множество вариантов (включая просто получение чипа и сборку собственного). У этого есть возможность отключить выход, просто изменив состояние одного из контактов (высокий уровень включен, низкий уровень выключен), и я подключил его, чтобы им можно было управлять с Pi. В моих первых попытках подключить это, я обнаружил довольно много фонового шума, когда звук был включен. После долгих экспериментов с заземлением я в конце концов попытался изменить входное напряжение питания с 5 В на Pi до 3,3 В, и это исправило. Я предполагаю, что существует довольно много шума, создаваемого различными цифровыми сигналами, летающими вокруг, но кажется, что источник питания 3,3 В каким-то образом изолирован.

Другие соединения включают аналоговый звук от ЦАП к усилителю (здесь я использовал коаксиальный кабель, чтобы помочь управлять шумоподавлением) и вывод звука на пару небольших динамиков мощностью 3 Вт, которые помещаются в корпус. Есть также соединения GPIO для четырех переключателей мгновенного действия в верхней части коробки, и я подключил кнопку мгновенного действия к контактам «RUN» для жесткого сброса (см. Раздел «Дополнительные подключения» на этой странице). Кнопка сброса находится вне поля зрения на задней части корпуса. Вот диаграмма, показывающая соединения:

Шаг 4: нестандартная печатная плата

Специальная печатная плата
Специальная печатная плата

Хотя в схеме нет ничего слишком сложного, там довольно много проводки, и макетная плата может довольно быстро выглядеть как спагетти. Поэтому я разработал печатную плату, чтобы держать все под контролем. Это односторонняя доска для домашнего приготовления, и у меня есть друг, который помог ей сделать. После того, как это было сделано и подключено, я понял, что забыл включить соединения для клеммных колодок для аудио, и позже я внес изменения, чтобы переместить питание аудиоусилителя с 5 В на 3,3 В, так что это не идеально, и мне пришлось прибегнуть к какой-нибудь Veroboard, чтобы разрешить аудиоподключения. Кроме того, распиновка платы аудиоусилителя имеет нестандартное разделение (они даже различаются между контактами), поэтому подключение для этого к основной плате немного ужасно с 11 короткими соединительными проводами длиной ~ 1 см.

Если бы я сделал другую плату, я бы включил все эти модификации, а также изменил бы разъем для четырех кнопок на что-то более приятное. ЦАП и Pi будут складываться прямо сверху, поэтому ленточный кабель не потребуется. На схеме выше показано, как это может выглядеть.

Шаг 5: Корпус

Вложение
Вложение
Вложение
Вложение
Вложение
Вложение

Я хотел сделать корпус, похожий на один ряд схемы времени фильма. Три ряда светодиодных дисплеев было бы слишком много для будильника и значительно увеличили бы стоимость. Я думал сделать корпус из алюминия, но у меня нет никаких навыков в этой области. Я сделал довольно много пластиковых моделей в своей жизни, и у меня есть некоторый опыт работы с деревом, поэтому я решил сделать раму из МДФ, чтобы установить светодиоды и динамики и прикрепить плексиглас к передней части, а затем покрыть ее 5-сторонним стиролом. коробка с лицевой панелью, окрашенная аэрозольной краской «алюминий металлик». Пластик и краска были приобретены в местном модельном магазине. Я внимательно изучил надписи на опоре фильма и постарался скопировать цвета, тип и размер шрифта. Я использовал Photoshop для создания этикеток и распечатал их в виде наклеек от Redbubble.

На изображениях выше показано:

  1. Передняя часть шасси МДФ. Четыре светодиодных рюкзака крепятся спереди из плексигласа зеленого оттенка.
  2. Внутри коробки. Все рюкзаки установлены и выстроены в линию, Raspberry Pi и пользовательская печатная плата, динамики по бокам.
  3. Электропроводка установлена, внешняя оболочка готова к работе. Это было немного затруднительно!

Шаг 6: Настройка Raspberry Pi

У меня были некоторые проблемы совместимости с Raspbian Stretch (которые, возможно, были бы решены, если бы я упорствовал), но Джесси отлично справляется с этим, поэтому я решил пойти с этим.

Я настроил Pi как безголовое устройство с доступом по VNC и SSH. Это можно было сделать, даже не подключая клавиатуру или монитор, но я просто одолжил телевизор, нашел клавиатуру и довольно быстро избавился от нее. С тех пор я в значительной степени использовал VNC.

В моем коде часов используется Python 2.7.9 и довольно много библиотек, перечисленных ниже. Кроме того, я использую веб-сервер Flask и MQTT для удаленного управления и Shairplay для потоковой передачи музыки. Я просто следил за инструкциями по установке для всего этого, и у меня не было никаких проблем. Вот библиотеки python и другие пакеты и т. Д., Которые мне нужно было установить, со ссылками на примечания по установке или просто командой, которую нужно запустить, чтобы получить ее:

Библиотеки Python

  • Adafruit_LED_Backpack
  • Rpi. GPIO (apt-get install python-rpi.gpio)
  • alsaaudio
  • paho.mqtt.client (pip install paho-mqtt)
  • колба (apt-get install python-flask)

Другие пакеты и т. Д

  • москит (apt-get install mosquito)
  • Shairport
  • На веб-сайте Pimoroni есть хорошая документация по настройке DAC, так что я просто воспользовался этим.

Шаг 7: Программное обеспечение

Image
Image
Программное обеспечение
Программное обеспечение

Код часов был написан на Python и использует потоки для воспроизведения будильника и случайных звуковых сигналов в фоновом режиме, не блокируя обновления дисплея. Я использовал библиотеку ConfigParser, и файл конфигурации, который она поддерживает, считывается и записывается кодом часов, а также веб-приложением Flask, так что всякий раз, когда конфигурация изменяется через веб-интерфейс или часы, она синхронизируется. Программное обеспечение часов также включает брокера MQTT, позволяющего управлять режимом отображения и отключением звука удаленно. Мой скрытый мотив - в конечном итоге написать приложение iOS для пульта дистанционного управления, но веб-интерфейс пока работает достаточно хорошо.

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

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

Веб-приложение

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

Шаг 8: Что дальше?

Что дальше?
Что дальше?

Доступен декодер метаданных общего порта Python, поэтому я думаю, что добавлю код для отображения информации, такой как название и исполнитель, при воспроизведении музыки. Также было бы довольно легко рассчитать время восхода и захода солнца, чтобы дисплей можно было автоматически увеличивать и уменьшать яркость, а не настраивать его вручную. Может быть, добавление функции интернет-радио тоже будет интересно. Прокрутка дисплея также может быть более настраиваемой.

Рекомендуемые: