Новая жизнь старого кассетника

Завалялся у меня
старый проигрыватель дисков, кассет и т.д. – старый стал, лазер подсел, даже на
максимальном токе диски уже не читал. Да и морально устарел – ни тебе MP3, ни USB. Но сделан был добротно, посему и выкинуть жалко
было. Валялся в подвале, место занимал. Но благодаря гениально-простому
применению ARM-а английскими
инженерами, наличию свободного времени в связи с отсутсвием загрузки в
проектах, решил я вдохнуть жизнь с железяку, безмолвно просившую меня открытой
крышкой дископриемника.


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

137339727151dc611737c79.jpg  Проигрыватель был
успешно принесен из подвала и разобран для идентификации нужных входов/выходов.
А нужно мне было не много – 5В и вход стерео на усилитель мощности. В принципе,
это заняло найбольшую часть времени, потраченного на конструирование – без
осцилографа при помощи одного только мультиметра ... Но, метод научного тыка
доказал свою эффективность и необходимые входы были найдены. Правда вместо
необходимых 5 В нашел только 13В, посему пришлось ставить КРЕН на 5В/1А,
соответственно  лишние 4..8Вт пришлось
рассеивать, благо под рукой оказался радиатор из старого блока питания. Ну, зато дешево. 137339728151dc61216e217.jpg

Дополнительно
поставил релюшку – 13 вольт брались непосредственно с блока питания и в
стендбае не отключались.

Итак, привод  диска – на выкинштейн.  Плату управления – туда-же. Освобождаем место
под радиатор. Закрепляем «малинку» винтами к корпусу. Между делом паяем блок
управления и индикации (во как), состоящее из одного светодиода и двух кнопок,
подтягиваем к +3.3В, чтобы противостоять наводкам от ВиФи (в «GPIO для чайников» все подробно
описано). 

137339729651dc61308ace7.jpg

   За основу программного
обеспечения берем примерчик из 5го урока и модифицируем следующим образом:    А) список каналов
держим в отдельном файле – в этом случае можно просто обновлять файл без
перекомпиляции программы. Думаю, нет смысла приводить код, стандартные файловые
операции    Б) добавляем
обработку второй кнопки (одна кнопка щелкает каналы вперед, другая – назад) 
 
int do_parent (int fd, pid_t p, int n)
{
signed char key_pressed =0;

while(!key_pressed)
{
if (bcm2835_gpio_lev(KEY_UP)) key_pressed = INCREASE_STATION;
if (bcm2835_gpio_lev(KEY_DN)) key_pressed = DECREASE_STATION;
if (key_pressed) printf("Key : %d\n", key_pressed);
}

...    В) Когда переключаемся
на другой канал – гасим светодиод . В случае успешного захвата канала –
зажигаем светодиод. Достаточно тривиально.

    Г) для автостарта пришлось вводить
искусственную задержку в пару секунд – я подозреваю, что вайфаю нужно пару
секунд, чтобы законектиться. Если в это время стартует плеер, программа
подвисает.Ну, как-то так...    137339731951dc61473f71f.jpg

Комментарии:

OPERATOR2
Замечательная работа! А я как-то свои две малины забросил, времени на хобби совсем нет...
Timofey3
Я только не понял про "пятый урок"

Для написания комментариев необходимо зарегистрироваться