Pull to refresh

Старинное радио на базе Android

Reading time 3 min
Views 16K

Введение


Мне очень нравится простота некоторых старинных радио: три-четыре станции. Вот – джаз, вот – новости, вот – классика. Ну, а ещё мне нравится мастерить всякие интересные штуки. Поэтому я решил собрать радио, которое будет проигрывать загруженную мною музыку и скачивать подкасты. Более того, хотелось, чтобы вид устройства был в стиле начала XX-ого века.

В этом посте я расскажу про детали проекта: про устройство на базе Android, про IOIO Board и про вырезание по дереву.


Результат


Вот как выглядит законченный проект:



Процесс создания


Компоненты

Радио. Поиск на ebay показал, что в продаже есть очень много старинных радио. Какие-то работают, какие-то сломаны. Я выбрал самое приличное из сломанных: внутренности мне всё равно ни к чему, а работающую вещь ломать не хотелось. Да и стоят ломаные на порядок дешевле. Вот что мне приглянулось:



Вот как выглядели неработающие вакуумные лампы:



Archos 28. Этот дешевый плеер на базе ОС Android мне приглянулся ещё с предыдущего проекта. Небольшая цена, 8 Gb встроенной памяти, звуковой выход и Wi-Fi отлично подходят для несложной конструкции. Личным опытом было также установлено, что плеер отлично работает в режиме 24/7.

Читатель спросит: почему бы не решить задачу микроконтроллером и набором модулей? Мне показалось дешевле и проще использовать этот телефон: всё, что надо, уже собрано на одной плате, плюс ОС Android предоставляет неплохой уровень абстракции. Радио будет включено в сеть круглые сутки, так что проблем с энергопотреблением не возникает.

IOIO Board для взаимодействия с «железом». Эта штука подключается к устройству по USB и распознаётся ОС как «включен режим дебага». Есть небольшое API, которое позволяет из любой Android программы читать состояние линии (как цифровой, так и аналоговой) и генерировать на линии сигнал (цифровой и PWM).
Читатель спросит: почему бы не использовать Android ADK? Увы, поддержка ADK была добавлена лишь в Android 2.3. Плеер от Archos работает на 2.2.

Усилитель на базе STA540. Я плохо разбираюсь в усилителях. Выбор пал именно на эту деталь во многом из-за рекомендаций знакомых, ну, и из-за наличия набора по сборке. STA540 – электронный усилитель класса AB. Мне очень понравился режим Stand-by: чрезвычайно тихий режим (совершенно не слышно шумов).
Читатель спросит: почему бы не отреставрировать уже существующие вакуумные лампы? Ответ прост: у меня нет аппаратуры для тестирования и работы с ними. А ещё стрёмно работать c 120V. Радио, которое я купил, похоже использовало архитектуру AA5.

Колонки Blaupunkt GTx-542. 4 Ома, 70-20,000 Hz, две полосы (для низких и высоких частот) и подходящие размеры определили мой выбор.
Читатель спросит: почему не какие-нибудь другие колонки? Тут я разведу руками. Если есть какие-либо соображения, почему другая модель подходит лучше, пожалуста, пишите в комментариях.

Прочее Китайский нонеймовый датчик угла поворота, чтобы песни переключать боковой ручкой. Четыре кнопки и несколько резисторов.

Подоготовка шасси

Сперва я достал старые компоненты и очистил металлическую основу от вековой грязи (спасибо, WD-40). Чтобы не крепить новые компоненты на железку, я решил вырезать шасси из основы печатной платы:



Подоготовка корпуса

В целом корпус подходил очень хорошо. Я даже решил оставить старинный потенциометр для ручки изменения звука. Мне не нравилось лишь одно: экран телефона был слишком глубоко утоплен в корпус. С помощью Dremel'я я сделал нишу:



С телефоном это выглядит вот так:



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

Ничего особо сложного не предстояло. Устройство управляется Android приложением, которое читает состояние железа и играет подходящую песню с SD-карты. Пожалуй самым интересным был процесс подготовки интерфейса. Мне очень хотелось сделать так, чтобы экран подходил по стилю к корпусу. Я придумал такую модель: четыре барабана в ряд (по барабану на станцию). На каждом барабане написаны названия песен. Боковая ручка крутит текущий барабан, кнопки переключают барабаны.
Сперва я попробовал реализовать это на OpenGL. Надо сказать, получилось не очень красиво. Так что я остановился на обычной двухмерной графике. Сперва, нарисовал фон:


Потом выбрал шрифты и эффекты:



Логика для скачивания подкастов вышла черзывчайно простая: скачиваем последний выпуск BBC Global News, кладём его на SD-карточку и удаляем все предыдущие выпуски. Повторить два раза в день.

В планах прикрутить небольшой FTP-сервер, чтобы музыку можно было закачивать по сети (устройство и так должно быть подключено в домашнему Wi-Fi).

Всё вместе

Железо выглядит вот так:



Мне очень хотелось, чтобы кнопки говорили о том, что будет играть. Одна папка-станция играет джаз, другая – обработанную классику, третья – разные мелодии, четвёртая станция – новости. Вот как выглядит главный дисплей:



Вот как выглядит устройство сзади:



Заключение


Радио играет музыку, скачивает подкасты и радует своим видом. Я буду рад ответить на любые вопросы, выслушать критику и предложения.
Tags:
Hubs:
+94
Comments 38
Comments Comments 38

Articles