Оглавление:
- Шаг 1: Перечень запчастей для радио "Машина времени Второй мировой войны"
- Шаг 2. Найдите старое радио
- Шаг 3. Удаление старого радио и сборка нового корпуса
- Шаг 4: Ремонт корпуса
- Шаг 5: Raspberry Pi Zero и усилитель
- Шаг 6: создание нового циферблата
- Шаг 7: регуляторы громкости и селектора
- Шаг 8: Электропитание и управление
- Шаг 9: сборка корпуса
- Шаг 10: загрузка звуковых файлов
- Шаг 11: схема и программное обеспечение для воспроизведения файлов
- Шаг 12: автоматическая загрузка программного обеспечения при загрузке
- Шаг 13: Что дальше?
Видео: Машина времени радиовещания Второй мировой войны: 13 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Идея заключалась в том, чтобы использовать некоторые части, которые у меня валялись, и сконструировать музыкальный автомат по образцу старого радио. Чтобы придать этому больше смысла, я также решил заполнить его старыми радиопередачами времен Второй мировой войны, а затем переназначить шкалу частот, чтобы выбрать отдельный год войны, и тогда будут воспроизводиться соответствующие радиопередачи. Я видел несколько коллекций записей MP3, так что все было готово.
Что касается оборудования, мне больше всего нравится arduino или raspberry pi zero, и для этого я буду использовать raspberry pi zero. Однако у него есть свои недостатки, и в данном случае это отсутствие простого в использовании аудио и сложных аналоговых входов. Чтобы преодолеть это, я обычно использую усилитель Adafruit I2S 3W класса D Breakout - MAX98357A, который представляет собой действительно простой способ добавить аудио к Pi, а для аналогового входа - MCP 3002, который является двухканальным преобразователем SPI. Обычно люди склонны использовать MCP 3008 с 4 входами, но я подумал, что это будет слишком просто, к счастью, мне удалось найти программное обеспечение, которое в конце концов работало с ними.
Одна из других проблем с использованием PI заключается в том, что он имеет тенденцию страдать, если вы просто выключаете его, не выполняя выключение, я сталкивался с этим бесчисленное количество раз, и всегда кажется, что это повреждает файл конфигурации сети. Поскольку это было задумано как простое автономное устройство, это было бы проблемой, поэтому я также добавил прокладку Pimoroni On / Off Shim, которая выполняет как плавное отключение при нажатии кнопки, так и позволяет загрузиться с помощью той же кнопки.
Шаг 1: Перечень запчастей для радио "Машина времени Второй мировой войны"
Необходимые детали
- Старое радио
- Французский польский
- ПесокБумага
- Лексан для циферблата
- Термоусадочный
- Raspberry Pi Zero
- I2S усилитель
- ВКЛ / ВЫКЛ регулировочная шайба
- Оратор
- Силовой кирпич
- MCP3002
- ВЕЛ
- Резистор 270R
- 2x 10k горшки
- Нажмите, чтобы переключиться
- USB-кабель
Шаг 2. Найдите старое радио
Первый шаг, конечно же, - найти подходящее старое радио, и мне удалось найти его на ebay за 15 фунтов стерлингов. Сначала был соблазн запустить его, но когда вышло шасси и был продемонстрирован полный набор резисторов и конденсаторов, которые нужно было заменить, я не чувствовал себя так плохо, когда разбирал его. Хотя, строго говоря, это не совсем набор 1940-х годов, есть некоторые комплекты для дома той эпохи, которые, безусловно, выглядели одинаково.
Шаг 3. Удаление старого радио и сборка нового корпуса
Разобрать один из них довольно просто, обычно кажется, что шасси прикреплено к корпусу, и на нем все установлено. Поэтому, как только он откручивается и ручки отпускаются, он просто выскальзывает наружу. Большинство из них полностью построено на вспомогательном шасси. Моим первоначальным намерением было использовать динамик из разорванной коробки динамика Bluetooth, но я подумал, подойдет ли старый. Приятным сюрпризом стало то, что это не только работало, но и звучало действительно здорово. Итак, следующим шагом здесь было продолжить измерения и построить новое шасси в Tinkercad. Я переопределил область набора частоты и оставил динамик на том же месте. Кроме того, была добавлена монтажная пластина для нуля пи. Я распечатал его в PETG, который, на мой взгляд, менее устойчив к деформации, и пробная подгонка всех деталей показала, что это сработает. Пришлось немного поиграться с креплением громкости, чтобы новые горшки хорошо подходили и при этом крепились через корпус.
Вы можете скачать 3D-шасси здесь, если хотите повозиться с ним
www.thingiverse.com/thing:3174818
Шаг 4: Ремонт корпуса
Теперь, когда корпус разобрали, первое, что нужно было сделать, - это решить, что делать с отделкой. Хотя корпус был не так уж и плох, я сначала подумал о том, чтобы просто хорошенько очистить его, чтобы сохранить вид потертой патины. Часто протирание уксуса освежает старый футляр, но было несколько мест, через которые лак потрескался, поэтому я решил удалить его. В старых деревянных ящиках они обычно покрыты тонким шпоном дерева, но он не настолько тонкий, чтобы его нельзя было хорошо отшлифовать. Сначала была удалена ткань решетки динамика, что было довольно отвратительно, за 50 лет пыли и грязи в ней, и отложено в сторону. Затем сошли пара толстых слоев нитромора, средство для снятия краски и старый лак. Это пришлось сделать дважды, так как в какой-то момент он, вероятно, был покрыт лаком поверх оригинальной отделки. Чтобы очистить некоторые царапины и придать ему более красивый вид, его отшлифовали наждачной бумагой с зернистостью 100, а затем окончательно отшлифовали шлифовальной губкой среднего размера. Сделайте все это в соответствии с зерном, а затем протрите уайт-спиритом, чтобы счистить пыль. В то же время ящик был закреплен столярным клеем в том месте, где шпон слегка отошел. Деревянные решетки решетки также немного расслоились, поэтому приклейте еще больше столярного клея и отталкивайте детали, где это возможно. После высыхания я просто скальпелем очистил края дерева и покрасил их в коричневый цвет акриловой краской Tamiya.
Моя первая мысль заключалась в том, чтобы просто заменить ткань динамика, но стоимость аутентично выглядящего материала довольно высока, поскольку его, как правило, продают в длинном виде. После небольшого изучения форумов по винтажному радио, похоже, что вы можете вернуть старую ткань с помощью замачивания. Поэтому, используя холодную воду и много жидкости для мытья посуды, я замочил ее на ночь, и, как ни удивительно, когда она снова высохла, она оказалась довольно чистой.
Теперь я собирался заняться отделкой и сначала решил нанести на него прозрачный лак, затем подумал об использовании аэрозольного лака и, пока на острове лаков / красок в местном магазине DIY нашел бутылку французского лака. Думая, что это будет хороший аутентичный финиш, я решил попробовать. Итак, теперь вам нужно знать, что французская полировка - это в значительной степени искусство / навык, требующий большой практики, чтобы добиться правильного результата. Вы можете найти инструкции на YouTube, и, хотя это выглядит довольно просто, это довольно запутанная операция. Кажется, что мастерство состоит в том, чтобы нанести полироль на тряпку, смоченную ватой, чтобы вы могли выдавливать полироль на дерево во время работы. Если вы просто попробуете это с тряпкой, примерно на 3/4 времени лак начнет высыхать, так как этанол испарится, и тряпка начнет тянуть. В конце концов, вместо того, чтобы получить глянцевую поверхность, мне удалось нанести пару слоев, слегка отшлифовать бумагой класса 1500, затем нанести еще несколько, и в итоге все выглядело нормально. Однако на ногтях у меня остались пятна от французского лака.
Очистить другие части было намного проще, так как все оборудование входило в ультразвуковой очиститель, а циферблат полировался небольшим количеством Silvo Polish. У Brasso был бы выбор, но Silvo и еще немного смазки для локтей было достаточно, чтобы очистить циферблатный индикатор.
В конце концов, у меня был довольно красивый деревянный ящик, готовый для самой машины времени.
Шаги в этом разделе 1. Снимите все болты / диски и ткань.
2. Деревянная планка корпуса с нитроморами.
3. Шлифование шпона.
4. Ремонт решетки радиатора
5. Очистка ткани динамика
6. французская полировка корпуса
7. Ультразвуковая очистка винтов и ручек
8. Полировка циферблатного индикатора.
Шаг 5: Raspberry Pi Zero и усилитель
С обычным аудиовыходом Raspberry PI довольно просто, поскольку у него есть выход для аудиоразъема, но для Pi Zero нет реальных собственных опций. Есть некоторые решения, которые я пробовал, где вы можете перенаправить контакты GPIO, а затем использовать фильтр нижних частот, но мне никогда не удавалось добиться приличного звучания, и, конечно, вам также нужен усилитель, чтобы получить что-то полезное.. Есть много шляп DAC, но они предназначены для людей, которые ищут действительно хороший звук и излишки для подобных проектов. Есть также несколько хороших дешевых наушников Audio со встроенными динамиками, но только недостаточно громкими для этого. Итак, я остановился на коммутационной плате усилителя i2S от Adafruit, которая решает все проблемы за один раз. Сразу отметим, что это i2S, а не i2C.
Вам понадобится всего несколько проводов, чтобы все заработало, а с достаточно приличным динамиком вы сможете получить отличный громкий монофонический звук.
Шаг 6: создание нового циферблата
Идея здесь, конечно же, состоит в том, чтобы заменить существующие циферблат и стекло на те, которые показывают год вместо частоты. К счастью, существующий был просто напечатанным вкладышем, поэтому я бросил его на сканер и скопировал в Paint Shop Pro, использовал инструмент клонирования и стер старые числа, а затем просто вводил новые на каждый год. Стекло в магнитоле поцарапалось и потрескалось и, как оказалось, тоже из пластика. Я распечатал только рамку лицевой панели, чтобы упростить пробную установку, и изначально пытался сделать ее из акрила. Обычно у меня не хватает терпения с акрилом, и я в конечном итоге треснул, пытаясь просверлить центральное отверстие. Поэтому я обратился к поликарбонату толщиной 1,5 мм, который намного легче обрабатывать ножовкой и сверлить. Вы можете найти его также под названием Lexan или Macrolon, в зависимости от того, где вы живете, и он также требует файла, поэтому вскоре у меня была рамка и циферблат, которые подходили. Интересно также то, что на оригинальной бумаге был небольшой металлический налет, я могу только предположить, что на кого-то повлияла оригинальная латунная указка, возможно, какой-то процесс старения?
Шаг 7: регуляторы громкости и селектора
Одним из недостатков Raspberry pi для мастеринга является то, что у него нет собственного аналогового входа. На самом деле это не такая уж большая проблема, если вы добавите простой АЦП (аналого-цифровой преобразователь), и MPC3002 соответствует всем требованиям и преобразует аналоговый вход в 10-битное значение, которое можно прочитать на шине SPI.
Почти все примеры, которые вы найдете, относятся к MPC3008, который является 4-канальным устройством, и код для этого определенно не работает с MPC3002. Также, кажется, есть много примеров, которые тоже не работают, но есть один, который я могу подтвердить, и его код можно найти здесь.
github.com/CaptainStouf/Adafruit-raspi-pyt…
С помощью этого кода вы можете легко прочитать два канала и использовать результаты. В моем примере один будет использоваться для объема, а другой - для выбора даты. В какой-то момент у меня также был установлен поворотный энкодер, но однооборотный объем более подходит, и с помощью переключателя частоты это также означало, что я мог собрать все это, а затем просто настроить местоположения маркеров года с большим заявлением о большом регистре. Естественно, что pyhon не поддерживает оператор case, поэтому длинный оператор if then else if выполнит свою работу.
На картинке показан MCP3002, установленный на небольшой прототипной плате, и банк 10K.
Шаг 8: Электропитание и управление
Pi просто питается от USB, поэтому его очень легко запустить, однако вы в конечном итоге повредите SD-карту, если просто дернете питание. Есть много способов отслеживать нажатие кнопки и инициировать выключение, но тогда вам, как правило, придется выключить и снова включить питание, чтобы восстановить его. Чтобы обойти это и сделать проект простым в использовании, я использую прокладку Pimoroni ON / OFF. Это позволяет вам нажать один раз, и он включится, а затем долгое нажатие, и он запустит полное завершение работы. Чтобы сделать его немного портативным, я использую старый блок питания, который также поддерживает зарядку аккумулятора. Powerbanks достаточно дешевы и способны поддерживать Pi в течение некоторого времени.
Я правильно установил кнопку включения в то место, откуда старый сетевой шнур выходил сзади. Поскольку есть задержка при загрузке Pi, я жестко подключил светодиод к шине 3v3, которая включается, и как только PI получает питание и обеспечивает приятное подлинное свечение на циферблате. Я вставляю резистор 270R в линию, а другой конец просто заземляю. Вы также можете добавить еще один к контакту GPIO, если хотите дать дополнительные эффекты, такие как мерцание, но на данный момент этого достаточно, чтобы показать, что питание включено.
Шаг 9: сборка корпуса
Когда корпус и шасси были готовы и протестированы, оставалось всего несколько 4-миллиметровых болтов и гаек Nyloc, чтобы удержать его. Саморезы с фланцами удерживают заднюю часть на месте.
Кнопка питания также хорошо вписалась в старое отверстие для сетевого шнура.
Я также хотел повторно использовать старые ручки, и они изначально были спроектированы так, что, кажется, подходят к латунным стержням и были немного слишком большими для горшков. Поскольку это не будет грубым обращением, я просто наложил термоусадочную пленку на горшки, а затем приклеил на нее ручки. Он крепко и крепко держится, и при необходимости его можно разобрать.
Шаг 10: загрузка звуковых файлов
Я использую файлы MP3, и на Archive.org есть фантастическая подборка, вы можете найти сгруппированные трансляции военного времени, и в основном есть два варианта на выбор.
Я начал с выбора в основном новостей, а затем они копируются в каталоги на PI. Вы также можете найти более крупный выбор, который называется Большой, по следующей ссылке. Ежегодно идет несколько сотен передач, количество и размах которых просто поражает.
archive.org/details/1939RadioNews
archive.org/details/1940RadioNews
archive.org/details/1941RadioNews
archive.org/details/1942RadioNews
archive.org/details/1943RadioNews
archive.org/details/1944RadioNews
archive.org/details/1945RadioNews
Большая коллекция
archive.org/details/WWII_News_1939
archive.org/details/WWII_News_1940
archive.org/details/WWII_News_1941
archive.org/details/WWII_News_1942
archive.org/details/WWII_News_1943
archive.org/details/WWII_News_1944
archive.org/details/WWII_News_1945
Я использую Filezilla как простой способ передать их на Pi, так как он может входить в систему и передавать данные через SSH, поэтому нет необходимости настраивать диск SAMBA или FTP-сервер.
Шаг 11: схема и программное обеспечение для воспроизведения файлов
После того, как усилитель заработает и вы сможете перейти по приведенной ниже ссылке для установки, вам также потребуется установить проигрыватель mpg123, довольно простой поиск в Google, код Python приведен ниже. Просто убедитесь, что в вашей конфигурации Raspi включены i2s и SPI. Я поместил этот файл в каталог / home / pi / volume /, чтобы потом запустить его при загрузке.
#! / usr / bin / env python
# WW2 Radio - программа для чтения АЦП MCP3002 и преобразования в настройки объема и года # Выход через усилитель i2S 20.10.2018 - Ajax Jones # Фрагменты кода предоставлены с https://learn.adafruit.com/adafruit-max98357-i2s- class-d-mono-amp / raspberry-pi-usage # MCP 3002 Python https://github.com/CaptainStouf/Adafruit-raspi-python/blob/master/Adafruit_MCP3002/MCP3002.py импортировать RPi. GPIO как GPIO, время, os from os import listdir import subprocess from time import sleep import random GPIO.setmode (GPIO. BCM) # читать данные SPI из микросхемы MCP3002, 2 возможных adc (0 и 1) def readadc (adcnum, clockpin, mosipin, misopin, cspin): if ((adcnum> 1) или (adcnum <0)): return -1 GPIO.output (cspin, True) GPIO.output (clockpin, False) # запускает низкий уровень часов GPIO.output (cspin, False) # вывести CS low commandout = adcnum << 1; commandout | = 0x0D # стартовый бит + односторонний бит + MSBF bit commandout << = 4 # нам нужно отправить здесь только 4 бита для i в диапазоне (4): if (commandout & 0x80): GPIO.output (mosipin, True) else: GPIO.output (mosipin, False) commandout << = 1 GPIO.output (clockpin, True) GPIO.output (clockpin, False) adcout = 0 # чтение одного нулевого бита и 10 бит АЦП для i в диапазоне (11): GPIO.output (clockpin, True) GPIO.output (clockpin, False) adcout <0): print «Файлы mp3 не найдены!» вернуть mp3_files print "--WW2 Radio ------------------------------------------ --------------------- "last_read = 0 # сохранить последнюю позицию потенциометра объема last_year = 0 # сохранить последнюю позицию диапазона частотного диапазона. Допуск = 5 # допускайте небольшой допуск, поэтому небольшое движение горшков не вызывает изменений, пока True: trim_pot_changed = False year_pot_changed = False для adcnum в диапазоне (2): ret = readadc (adcnum, SPICLK, SPIMOSI, SPIMISO, SPICS) if (adcnum == 0): # прочитать горшок для селектора года, чтобы увидеть, что он переместился year_adjust = abs (ret - last_year) if (year_adjust> толерантность + 10): year_pot_changed = True if (year_pot_changed): # Значения для проверки if then могут быть сделано после его встроенного subprocess.call (['killall', 'mpg123']) # убить любой запущенный MP3-файл sleep (0.1); if ret 50 and ret = 150 and ret = 250 and ret = 350 and ret = 450 and ret = 550): war_year = "1945" # сохраняем значение банка в следующий раз в цикле last_year = ret print (" Воспроизведение с "), print (war_year), print (" number of files = "), war_dir = '/ home / pi / radio / WWII_News _' + war_year + '/' play_list = list_year (war_year) num_of_files = len (play_list) print num_of_files play_file = random.randint (1, num_of_files) # случайным образом выберите один из файлов для воспроизведения war_mp3 = war_dir + play_list [play_file] subprocess. Popen (['mpg123', war_mp3]) # Используйте mpg123 в качестве проигрывателя для аудио сна (0,1); # сделайте небольшую паузу перед продолжением if (adcnum == 1): # прочтите объем pot_adjust = abs (ret - last_read) if (pot_adjust> толерантность): trim_pot_changed = True if (trim_pot_changed): set_volume = ret / 10.24 # convert 10bit adc0 (0-1024) значение pot в уровень громкости 0-100 set_volume = round (set_volume) # округлить десятичное значение set_volume = int (set_volume) # преобразовать объем как целое число # Использовать значение из банка для отправки уровня на программа amixer print 'Volume = {volume}%'.format (volume = set_volume) set_vol_cmd = 'sudo amixer cset numid = 1 - {volume}%> / dev / null'.format (volume = set_volume) os.system (set_vol_cmd) # set volume # сохранить показания потенциометра для следующего цикла last_read = ret # Пауза после изменения громкости, чтобы мы не влияли на слишком много изменений, если горшок меняет быстро time.sleep (0.5)
Шаг 12: автоматическая загрузка программного обеспечения при загрузке
Есть много способов запустить команду на Pi при загрузке, но я считаю, что это самый простой: откройте Crontab.
sudo crontab -e
Теперь просто добавьте эту строку
@reboot python /home/pi/volume/year.py &
и это должно сработать, при следующей перезагрузке запустится программа управления звуком, и вы должны услышать свою первую трансляцию.
Шаг 13: Что дальше?
В настоящее время я занимаюсь сборкой небольшой печатной платы, которая будет установлена поверх Raspberry Pi, чтобы я мог где-нибудь установить усилитель i2S и АЦП вместе с некоторыми винтовыми клеммами для горшков. Это позволит мне сделать установку немного аккуратнее и легко сделать еще несколько для друзей.
В настоящее время я собираю файлы для радио космических гонок, начиная со спутника и заканчивая посадками на Луну.
Пожалуйста, дайте мне знать, если у вас есть какие-либо идеи или вы хотите получить какие-либо советы или подсказки о том, как собрать их самостоятельно.
Подпись.
Второй приз Аудиоконкурса 2018
Рекомендуемые:
Изучающий историю Второй мировой войны: 3 шага
Ученик истории Второй мировой войны: Привет, ребята! В этом году для моего компьютерного класса нам было поручено создать какое-то электронное устройство, чтобы показать, что мы узнали в классе. Я один из тех, кто любит историю Второй Мировой войны, поэтому я решил создать устройство, которое поможет людям уйти
Восстановление рабочего состояния мультиметра времен Второй мировой войны: 3 шага
Восстановление рабочего состояния мультиметра времен Второй мировой войны. Несколько лет назад я приобрел в свою коллекцию этот ранний мультиметр Simpson Electric. Он был в черном кожаном футляре, который был в отличном состоянии, учитывая его возраст. Патентное ведомство США патентовало механизм счетчика в 1936 г
Радио-машина времени: 8 шагов (с изображениями)
Радио-машина времени: я нашел здесь, в Instrutables, отличный проект: «Машина времени для радиовещания Второй мировой войны». Идея меня поразила, но я не питонист и мне нравится стимпанк. Поэтому я решил построить похожую вещь из других материалов. Здесь вы найдете список
Куб времени - гаджет для отслеживания времени Arduino: 6 шагов
Time Cube - гаджет для отслеживания времени Arduino: я хотел бы предложить вам простой, но действительно полезный проект Arduino для отслеживания событий времени, перевернув какой-нибудь интеллектуальный гаджет-куб. Переверните его на "Работа". > " Учиться " > " Работа по дому " > " Отдых " сторона, и он посчитает
Создание и редактирование покадровой анимации: битва за Кан во время Второй мировой войны: 6 шагов
Создание и редактирование покадровой анимации: Вторая мировая война Битва за Кан: Битва за Кан была битвой во Второй мировой войне, и теперь я воссоздаю ее с помощью покадровой анимации lego, а здесь пошаговое руководство по созданию и редактированию Покадровая съемка времен Второй мировой войны