Оглавление:
- Запасы
- Шаг 1. Разборка ленты
- Шаг 2: Dark Sky Pi
- Шаг 3: Код
- Шаг 4: Шляпа и сервопривод Unicorn
- Шаг 5: покачивание наушников
- Шаг 6: Сборка
- Шаг 7: тихая одержимость
Видео: 1984 WeatherMan Pi: 7 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Этот портативный кассетный проигрыватель теперь представляет собой погодный дисплей IoT в стиле начала 80-х, отображающий анимацию «текущих условий», прокручивающую график температуры и вероятности дождя через окно ленты. Когда погодные условия меняются, верхние наушники с сервоуправлением покачиваются взад и вперед, как тонкое предупреждение.
Открыв функциональную дверцу изоленты, мы видим, что пыльные оригинальные компоненты были заменены на Raspberry Pi Zero W, Pimoroni Unicorn Hat HD (светодиодная матрица) и небольшой сервопривод. Данные о погоде получены с помощью скрипта Python, который запрашивает сверхточный API погоды Dark Sky Weather, адаптированный к моему конкретному местоположению.
Это простая, но симпатичная и функциональная сборка Интернета вещей, которая находится на настольном динамике напротив моей стойки YouTube, незаметно информируя меня о погоде.
Запасы
Raspberry Pi Zero
Шляпа Pimoroni Unicorn HAT HD
Маленький сервопривод
Персональные стерео и наушники Hitachi SP-1 1984
USB-адаптер Wi-Fi
Резьбовой стержень 2 мм
Сугру (черный и серый)
Магнит GeoMag
Шаг 1. Разборка ленты
Мне теща подарила мне этот прекрасный старый кассетный магнитофон еще в сентябре, и я сразу же влюбился в его культовый вид и массивные кнопки. Настоящей ничьей, однако, было это большое окно с лентой - примерно через 15 секунд у меня была линейка, и я был поражен, обнаружив, что она с точностью до миллиметра имеет тот же размер, что и стандартная шляпа Raspberry Pi (оборудование, прикрепленное сверху).
Одного этого открытия было достаточно, чтобы продвинуть мой проект часов с кукушкой дальше в списке дел, и я сразу же приступил к работе, разобрав плеер.
Разборка прошла довольно хорошо, и у меня получилось работать с тремя отдельными частями - мне удалось сломать пару пластиковых частей, но ничего, что нельзя было бы склеить обратно.
Шаг 2: Dark Sky Pi
Я некоторое время использую Dark Sky на своем телефоне и был действительно впечатлен точностью прогнозов, поэтому был рад видеть, что они предлагают комплексный API, который я мог бы использовать в этом проекте. тоже вверх!
Сначала перейдите на https://darksky.net/dev и зарегистрируйтесь для получения бесплатной учетной записи - «пробная» учетная запись позволяет делать 1000 запросов API в день, чего достаточно для обновления каждые 1,5 минуты - часто достаточно даже для моего Британский уровень одержимости погодой.
После регистрации вы получите «Секретный ключ» - это то, что вам нужно для доступа к данным, и оно используется в скрипте Python, так что держите его под рукой (и, знаете ли, в секрете).
Я начал с адаптации сценария, который использовал в сборке счетчика подписчиков YouTube, который использует модуль запросов в Python для получения данных API. Скрипт, который я использовал, находится на GitHub, вам просто нужно добавить свой ключ API Dark Sky и, конечно же, заменить свои собственные значения широты и долготы.
Получить данные о текущих погодных условиях было довольно просто, и я решил использовать элементы «Значок», «Вероятность осадков» и «Температура».
Шаг 3: Код
Если вы хотите повторно использовать или использовать код, который я использовал, он находится в репозитории WeatherMan на GitHub - клонируйте или загрузите папку «weather» в папку «pi» на вашем Raspberry Pi.
Основные функции скрипта следующие:
weatherman.py
Это основной скрипт, который извлекает данные о погоде из Dark Sky. Вам нужно будет создать учетную запись Dark Sky на https://darksky.net/dev и ввести свой секретный ключ в указанный скрипт. Вам также нужно будет указать широту и долготу интересующего вас погодного местоположения - это можно найти на Google Maps, просто щелкните правой кнопкой мыши и выберите "Что здесь?" и вы увидите всплывающее окно, показывающее широту / долготу местоположения.
После получения данных API weatherman.py передает параметры нескольким более мелким скриптам, чтобы запустить анимацию и покачивание наушников.
Сценарий настроен на запуск при запуске путем редактирования файла запуска…
sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart
… И добавив:
@ python3 /home/pi/weather/weatherman.py &
в конце файла.
icon.py
Этот сценарий берет параметр «текущие условия» из сценария weatherman.py и использует его для отображения анимации погоды 16x16 - все они хранятся в папке «icons» и являются частью стандартной документации Unicorn HAT HD. Вы можете легко редактировать файлы PNG-анимации в GIMP или аналогичном редакторе изображений, чтобы придать им больше характера. Вы можете отредактировать анимацию «дождя» так, чтобы при определенных условиях она отображалась как «идущие люди» - современная классика 1983 года.
phone.py
Если погодные условия изменились по сравнению с последним запросом API (или это новая загрузка и не идет снег), то этот скрипт вызывается из weatherman.py и инструктирует сервопривод «покачиваться» взад и вперед, чтобы предупредить вас, что условия изменились. измененный.
осадков.py
Этот скрипт принимает параметр «вероятность выпадения осадков» из weatherman.py и отображает линии синего цвета на Unicorn HAT, относящиеся к% вероятности. Если 100% все 16 строк будут светиться синим, если 50% только 8 строк и т. Д.
temp.py
Еще один стандартный сценарий Pimoroni, он берет параметр «temp» из weatherman.py и отображает его с прокручивающимся текстом. Он настроен на использование шрифта TrueType Herkules (в папке "fonts"), но при желании можно использовать и стандартный шрифт. Вы даже можете улучшить его, чтобы отображаемый текст менял цвет в зависимости от значения температуры!
Шаг 4: Шляпа и сервопривод Unicorn
Возможность получить данные о погоде - это здорово, но теперь мне нужно было отобразить их на Unicorn HAT. Я просмотрел различные наборы значков погоды в Интернете и был на полпути к их адаптации, когда понял, что есть пример погоды, включенный в документацию Pimoroni - и он включает в себя анимацию погоды!
Это сэкономило огромное количество работы, и я сразу же приступил к работе с анимированным значком для текущих условий, некоторым прокручивающимся текстом для температуры и графиком для% осадков (который включал небольшую математику). Я сохранил скрипты отдельно и использовал модуль Python Subprocess для передачи параметров туда и обратно.
Добавление сервопривода было идеальным средством для этих предупреждений, поскольку оно создавало бы небольшой шум и привлекало внимание, но не слишком раздражало. Поскольку HAT уже занимал многие контакты Pi, я припаял сервокабели к нижней части платы, используя контакт 17 для управления движением сервопривода с помощью широтно-импульсной модуляции.
Питание сервопривода от Pi не было идеальным, но его можно было использовать только для кратковременного покачивания, поэтому точность здесь не имела большого значения. Он подключен, как показано на схеме: коричневый кабель к GND, красный к 5 В и оранжевый (кабель управления) к GPIO17.
Наконец, я отредактировал некоторые файлы анимации погоды в GIMP, чтобы добавить свои личные штрихи, такие как летучие мыши на луне и смайлик на солнце. Я также добавил в кастомную анимацию кассетного колеса "Old Tech New Spec", которая будет воспроизводиться при запуске, просто для удовольствия.
Шаг 5: покачивание наушников
Идея WeatherMan заключалась в том, чтобы он пассивно сидел на моем настольном динамике, время от времени отображая погоду, но я хотел, чтобы он делал немного больше! Наушники, которые шли в комплекте, были классикой 80-х, поэтому я решил что-то с ними сделать. После снятия всего кабеля и горячего приклеивания сломанного у меня остались три части: штекер 3,5 мм, ромбовидная кнопка и сами телефоны на гибкой металлической ленте.
Мне пришла в голову идея, что если бы я мог найти способ установить телефоны наверху устройства, я мог бы заставить их вращаться вперед и назад с помощью сервопривода и использовать это как дополнительное уведомление.
Сначала я просверлил штекер 3,5 мм и демонтировал алмазный переключатель, затем надел его на кусок стержня с резьбой. Затем я приклеил гайку к пластиковому соединителю, чтобы шток мог надежно (и прямо) сидеть на сервоприводе. На другом конце стержня я добавил еще одну гайку. Наконец, я использовал серый Sugru, чтобы прикрепить верх стержня к ремешку наушников, а также закрыть гайку в нижней части сборки. Если вы не слышали о Sugru, это пластичный клей, который поставляется в маленьких цветных пакетиках - он лепится, как Play-Doh, но прилипает, как суперклей, и затвердевает, как пластик!
Учитывая недавние холода, Sugru потребовалось несколько дней, чтобы полностью затвердеть, но вскоре наушники и их подставка были готовы к окончательной сборке.
Шаг 6: Сборка
Pi, HAT и Servo отлично работали на стенде, поэтому следующей задачей было поместить их в корпус. Перед тем, как приступить к большим компонентам, я использовал немного оставшегося серого Sugru, чтобы закрепить регулятор громкости, гнездо для наушников и переключатель «металлической ленты», перебирая косметику. Я также приклеил оригинальные кнопки Play, Stop, FF и Rew к пластиковому каналу, чтобы они оставались в нужном месте. Было жаль не использовать повторно ни одну из кнопок на этот раз, но на самом деле им было не чем управлять!
Я использовал последний из серых Sugru, чтобы удерживать сервопривод на месте, так чтобы его вал торчал в увеличенное гнездо для наушников. Перейдя к другой половине ящика, я использовал немного черного Sugru, чтобы прикрепить сборку HAT и Pi к дверце с лентой, чтобы они открывались вместе с ней. Мне очень понравился последний маленький штрих - установка магнита GeoMag так, чтобы дверца держалась плотно закрытой.
Соединение двух половинок было делом нервным, так как я боялся, что Pi и Servo столкнутся друг с другом, но в конце концов у меня было около миллиметра, которого много в моей книге. Так как забавная открывающаяся дверца открывала полный доступ ко всему внутреннему пространству для будущего обслуживания, я просто склеил две половинки вместе, и после того, как вытер жирные отпечатки пальцев, поместил наушники сверху - готово!
Шаг 7: тихая одержимость
Второй приз в конкурсе повторного использования
Рекомендуемые:
Как: установка Raspberry PI 4 Headless (VNC) с Rpi-imager и изображениями: 7 шагов (с изображениями)
Как: установка Raspberry PI 4 Headless (VNC) с Rpi-imager и изображениями: я планирую использовать этот Rapsberry PI в кучу забавных проектов еще в моем блоге. Не стесняйтесь проверить это. Я хотел вернуться к использованию своего Raspberry PI, но у меня не было клавиатуры или мыши в моем новом месте. Прошло много времени с тех пор, как я установил Raspberry
Счетчик шагов - Micro: Bit: 12 шагов (с изображениями)
Счетчик шагов - Микро: Бит: Этот проект будет счетчиком шагов. Мы будем использовать датчик акселерометра, встроенный в Micro: Bit, для измерения наших шагов. Каждый раз, когда Micro: Bit трясется, мы добавляем 2 к счетчику и отображаем его на экране
Bolt - Ночные часы с беспроводной зарядкой своими руками (6 шагов): 6 шагов (с изображениями)
Bolt - Ночные часы с беспроводной зарядкой своими руками (6 шагов): Индуктивная зарядка (также известная как беспроводная зарядка или беспроводная зарядка) - это тип беспроводной передачи энергии. Он использует электромагнитную индукцию для обеспечения электропитания портативных устройств. Самым распространенным применением является беспроводная зарядка Qi st
Как разобрать компьютер с помощью простых шагов и изображений: 13 шагов (с изображениями)
Как разобрать компьютер с помощью простых шагов и изображений: это инструкция о том, как разобрать компьютер. Большинство основных компонентов имеют модульную конструкцию и легко снимаются. Однако важно, чтобы вы были организованы по этому поводу. Это поможет уберечь вас от потери деталей, а также при повторной сборке
Проектирование печатной платы с помощью простых и легких шагов: 30 шагов (с изображениями)
Проектирование печатных плат с помощью простых и легких шагов: ПРИВЕТ, ДРУЗЬЯ Это очень полезное и легкое руководство для тех, кто хочет изучить дизайн печатных плат. Давайте начнем