第1步:WW2 Time Machine無線電部件列表
所需部件
舊收音機(jī)
法語(yǔ)波蘭語(yǔ)
SandPaper
Lexan撥打
Heatshrink
Raspberry Pi Zero
I2S放大器
開/關(guān)墊片
揚(yáng)聲器
電源磚
MCP3002
電阻器270R
2x 10k電位器
推動(dòng)開關(guān)
USB線
第2步:尋找舊收音機(jī)
第一步當(dāng)然是找一個(gè)合適的舊收音機(jī)我設(shè)法在ebay上以15英鎊的價(jià)格找到了這個(gè)。有一種誘惑讓它一開始運(yùn)行,但是當(dāng)機(jī)箱出來并且顯示需要更換的全部電阻器和電容器陣列時(shí),我并沒有覺得將它拆開是如此糟糕。雖然嚴(yán)格來說它不是一個(gè)1940年代的集合,但是那個(gè)時(shí)代的一些家用構(gòu)建工具包肯定看起來很相似。
步驟3:刪除舊無線電并構(gòu)建新機(jī)箱
將這些中的一個(gè)分開是相當(dāng)簡(jiǎn)單的,通??雌饋頇C(jī)箱安裝在機(jī)箱上并且一切都安裝好了。因此,一旦松開并釋放旋鈕,它就會(huì)滑出。大多數(shù)都完全建立在子機(jī)箱上。我的初衷是使用一個(gè)撕開的藍(lán)牙音箱的揚(yáng)聲器,但我想知道舊的揚(yáng)聲器盒是否有效。令人驚喜的是,它不僅發(fā)揮了作用,而且聽起來也很棒。因此,下一步是繼續(xù)測(cè)量所有內(nèi)容并在Tinkercad中構(gòu)建新機(jī)箱。我重新定義了頻率撥號(hào)區(qū)域并將揚(yáng)聲器保持在同一位置。此外,還添加了用于pi 0的安裝板。我把它打印在PETG中,我發(fā)現(xiàn)它對(duì)翹曲的抵抗力較小,所有部件的試驗(yàn)似乎表明它會(huì)起作用。我必須在音量安裝方面稍微玩一下,以便新的音箱非常適合并且仍然可以通過音箱安裝。
第4步:翻新案例
當(dāng)案件被剝離時(shí),首先要做的就是決定如何處理完成。雖然情況并不太糟糕,但我最初還是想過給它一個(gè)很好的清潔,以保持磨損的銅綠外觀。通常用醋擦拭會(huì)使舊的情況變得清新,但是有一些地方清漆已經(jīng)裂開,所以我決定把它剝掉。對(duì)于舊木箱,它們通常用薄木板覆蓋,但它不是那么薄,以至于你無法在它上面打磨。首先取下?lián)P聲器格柵布,這是非常令人厭惡的,其中有大約50年的灰塵和污垢,并放在一邊。然后,幾件厚厚的Nitromors涂層,脫漆劑和舊清漆最終脫落。這必須做兩次,因?yàn)樗赡茉谠纪繉拥哪承c(diǎn)上涂漆。為了清除一些劃痕并使其具有更好的光潔度,用一些100粗砂紙打磨,然后用中等打磨海綿進(jìn)行最后打磨。將所有這些與谷物一致,然后用白酒擦拭,以清除灰塵。與此同時(shí),盒子也用一些木膠固定,其中膠合板略微拉開。木格柵條也有一些分層,所以更多的木膠和盡可能地撬回碎片。一旦干了,我就用一把手術(shù)刀清理木頭的邊緣,用一些Tamiya丙烯酸漆涂成棕色。
我的第一個(gè)想法就是更換揚(yáng)聲器布,但是看起來真實(shí)的材料的成本相當(dāng)陡峭,因?yàn)樗枰L(zhǎng)時(shí)間銷售。經(jīng)過一些老式的無線電論壇探索之后,看起來好像你可以把舊布帶回來。因此,使用冷水和大量洗滌液,我浸泡過夜,令人驚訝的是,一旦它再次變干,它就變得很干凈了。
現(xiàn)在我要去處理完成并最初決定給它一個(gè)清漆,然后考慮使用噴霧清漆,而在當(dāng)?shù)?a href="http://www.brongaenegriffin.com/v/tag/3822/" target="_blank">DIY商店的清漆/油漆島發(fā)現(xiàn)一瓶法國(guó)拋光。認(rèn)為這將是一個(gè)很好的真實(shí)完成我決定試一試。因此,現(xiàn)在您需要知道法式拋光幾乎是一種藝術(shù)形式/技能,需要大量練習(xí)才能做到正確。您可以在YouTube上搜索說明,雖然看起來相當(dāng)簡(jiǎn)單但操作非?;靵y。訣竅似乎是用浸在棉絨中的抹布擦亮,這樣你就可以在工作時(shí)擠出木頭上的拋光劑。如果你只是用抹布試一下,大約3/4的方式,當(dāng)乙醇蒸發(fā)并且抹布開始拖動(dòng)時(shí),拋光開始變干。所以最后不是獲得高光澤度,我設(shè)法涂上幾層,用1500級(jí)紙輕輕擦拭,再涂一些,最后看起來還不錯(cuò)。然而,我的指甲上仍然留有法國(guó)拋光劑污漬。
使用所有硬件進(jìn)入超聲波清潔器并使用一些Silvo Polish拋光表盤時(shí),清理其他部件變得更加容易。 Brasso可以選擇,但是Silvo和更多的肘部潤(rùn)滑脂足以清潔表盤指示器。
最后,我有一個(gè)漂亮的木箱準(zhǔn)備好時(shí)間機(jī)器本身。
本節(jié)中的步驟
1。剝?nèi)ト魏温菟?表盤和布料。
2。木材用硝化物剝離案例
3。打磨單板
4。修復(fù)格柵
5.清潔揚(yáng)聲器布
6.法蘭拋光外殼
7.超聲波清潔螺絲和旋鈕
8。拋光百分表
步驟5:Raspberry Pi Zero和放大器
使用普通的Raspberry PI音頻輸出非常簡(jiǎn)單,因?yàn)樗幸粋€(gè)音頻插孔輸出,但對(duì)于Pi Zero,沒有真正的原生選項(xiàng)。我嘗試了一些解決方案,你可以重新布線GPIO引腳,然后使用低通濾波器,但我從來沒有真正能夠得到一些聽起來不錯(cuò)的東西,當(dāng)然你也需要一個(gè)放大器來獲得可用的東西。有很多DAC帽子,但這些是為那些尋找真正好的音頻和過度殺戮這些項(xiàng)目的人。還有一些不錯(cuò)的廉價(jià)音響帽子,內(nèi)置揚(yáng)聲器,但只是不夠響亮。所以我現(xiàn)在決定使用Adafruit的i2S放大器分線板,它可以一次性解決所有問題。請(qǐng)注意它是i2S而不是i2C。
你只需要幾根線就可以啟動(dòng)并運(yùn)行,并且有足夠的揚(yáng)聲器,你可以得到一些偉大的,響亮的單聲道音頻。
第6步:進(jìn)行新的撥號(hào)
這里的想法是當(dāng)然是用一個(gè)顯示年份而不是頻率的表盤替換現(xiàn)有的表盤和玻璃。幸運(yùn)的是,現(xiàn)有的只是一個(gè)印刷插頁(yè),所以我把它放到掃描儀上并將其復(fù)制到Paint Shop Pro中,使用克隆工具擦掉舊數(shù)字,然后每年輸入一些新的數(shù)字。隨著玻璃,收音機(jī)中的一個(gè)被劃傷和破裂,結(jié)果也是塑料制成的。我打印出只是表圈環(huán)繞,使測(cè)試裝配變得容易,最初試圖用丙烯酸制作一個(gè)。我一般對(duì)丙烯酸沒有足夠的耐心,并在試圖鉆中心孔時(shí)最終破解它。所以我使用1.5毫米聚碳酸酯,這更容易鋼鋸和鉆孔。您可以根據(jù)您居住的地方找到它也稱為L(zhǎng)exan或Macrolon,它也需要一個(gè)文件,所以我很快就有一個(gè)適合的表圈和表盤。有趣的是,原始紙張上面都有輕微的金屬沉積物,我只能假設(shè)它是受原始黃銅指針影響的人,也許是一些老化過程?
第7步:音量和選擇器控件
Raspberry pi修補(bǔ)的一個(gè)缺點(diǎn)是它沒有任何原生模擬輸入。如果你添加一個(gè)簡(jiǎn)單的ADC(模數(shù)轉(zhuǎn)換器)并且MPC3002符合這個(gè)要求并且它將模擬輸入轉(zhuǎn)換為可以在SPI總線上讀取的10位值,那么問題就不是太大了。
您發(fā)現(xiàn)的幾乎所有示例都適用于MPC3008,這是一個(gè)4通道設(shè)備,其代碼肯定不適用于MPC3002。似乎還有許多例子也不起作用,但有一個(gè)我可以確認(rèn)作品,它的代碼可以在這里找到。
https://github.com/CaptainStouf/Adafruit-raspi-pyt.。.
使用此代碼,您可以輕松閱讀兩個(gè)頻道并使用結(jié)果。我的例子是使用一個(gè)用于卷,另一個(gè)用于日期選擇。我在某一點(diǎn)上也安裝了一個(gè)旋轉(zhuǎn)編碼器,但是單個(gè)轉(zhuǎn)動(dòng)音量更合適,而且頻率選擇器也意味著我可以將它全部組裝起來,然后用一個(gè)很好的大案例聲明來調(diào)整年份標(biāo)記的位置。當(dāng)然pyhon不支持case語(yǔ)句所以if if else else語(yǔ)句將完成這項(xiàng)工作。
圖片顯示MCP3002位于小型原型板和10K電位器上
步驟8:電源和控制
Pi剛剛運(yùn)行USB電源,因此非常容易上手,但如果只是猛拉電源,最終會(huì)破壞SD卡。有很多方法可以監(jiān)控按下按鈕并啟動(dòng)關(guān)機(jī),但是您往往需要重新啟動(dòng)電源才能將其重新啟動(dòng)。為了解決這個(gè)問題并制作一個(gè)易于使用的項(xiàng)目,我使用了Pimoroni ON/OFF墊片。這可以讓你按下一次然后再打開電源然后長(zhǎng)按它就可以完全關(guān)閉。為了使它有點(diǎn)便攜,我使用一個(gè)舊的電源組來處理電池充電。 Powerbanks足夠便宜,能夠在相當(dāng)長(zhǎng)的時(shí)間內(nèi)運(yùn)行Pi。
我按下按鈕使按鈕合適地放在舊主電源線從后面出來的位置。當(dāng)Pi啟動(dòng)時(shí)出現(xiàn)延遲時(shí),我將一根LED硬接線連接到3v3導(dǎo)軌上,當(dāng)PI接通電源并在表盤上提供真正的真實(shí)發(fā)光時(shí)。我把270R電阻放在一邊,另一端放到地上。如果你想提供額外的效果,如閃爍,你也可以在GPIO引腳上添加另一個(gè)效果,但是現(xiàn)在這足以顯示電源已打開。
步驟9:裝出案例
箱子和底盤都經(jīng)過準(zhǔn)備和測(cè)試,只需要幾個(gè)4毫米的螺栓和Nyloc螺母就可以使用。法蘭式自攻螺釘可以將后背固定到位。
電源按鈕也很好地安裝在舊電源引線孔中。
我也想重新使用舊的旋鈕,它們最初的設(shè)計(jì)似乎是用于黃銅棒,而且對(duì)于花盆來說有點(diǎn)太大了。由于這不會(huì)得到任何粗暴的處理,我只是在罐子上滑了一些熱縮,然后將旋鈕粘在那上面。它握得很好而且很緊,如果有必要你仍然可以分開。
第10步:下載聲音文件
我正在使用MP3文件,有很多精選的Archive.org,你可以找到分組廣播戰(zhàn)時(shí)廣播,主要有兩種選擇可供選擇。
我從主要的新聞選擇開始,然后將這些選擇復(fù)制到PI的目錄中。您還可以在以下鏈接中找到更大的選擇,稱為Big one。每年有數(shù)百個(gè)廣播,其數(shù)量和范圍相當(dāng)驚人。
https://archive.org/details/1939RadioNews
https://archive.org/details/1940RadioNews
https://archive.org/details/1941RadioNews
https://archive.org/details/1942RadioNews
https://archive.org/details/1943RadioNews
https://archive.org/信息/1944RadioNews
https://archive.org/details/1945RadioNews
更大的收藏
https://archive.org/details/WWII_News_1939
https://archive.org/details/WWII_News_1940
https://archive.org/details/WWII_News_1941
https://archive.org/details/WWII_News_1942
https://archive.org/details/WWII_News_1943
https://archive.org/details/WWII_News_1944
https://archive.org/details/WWII_News_1945
我使用Filezilla作為一種簡(jiǎn)單的方法將它們傳輸?shù)絇i,因?yàn)樗梢允褂肧SH登錄和傳輸,因此無需設(shè)置SAMBA驅(qū)動(dòng)器或FTP服務(wù)器。
步驟11:播放文件的電路和軟件
放大器工作完畢后,您可以按照下面的設(shè)置鏈接進(jìn)行操作需要安裝mpg123播放器,非常直接的谷歌搜索Python代碼如下。只需確保在Raspi配置中啟用了i2和SPI。我已將此文件放入目錄/home/pi/volume/中,以便我可以在以后啟動(dòng)時(shí)運(yùn)行它。
#!/usr/bin/env python
# WW2 Radio - software to read MCP3002 ADC and convert to volume and year adjustment
# Ouput via i2S amplifier 20/10/2018 - Ajax Jones
# Code fragments supplied from 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
import RPi.GPIO as GPIO, time, os
from os import listdir
import subprocess
from time import sleep
import random
GPIO.setmode(GPIO.BCM)
# read the SPI data from the MCP3002 chip, 2 possible adc‘s (0 and 1)
def readadc(adcnum, clockpin, mosipin, misopin, cspin):
if ((adcnum 》 1) or (adcnum 《 0)):
return -1
GPIO.output(cspin, True)
GPIO.output(clockpin, False) # start clock low
GPIO.output(cspin, False) # bring CS low
commandout = adcnum 《《 1;
commandout |= 0x0D # start bit + single-ended bit + MSBF bit
commandout 《《= 4 # we only need to send 4 bits here
for i in range(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
# read in one null bit and 10 ADC bits
for i in range(11):
GPIO.output(clockpin, True)
GPIO.output(clockpin, False)
adcout 《《= 1
if (GPIO.input(misopin)):
adcout |= 0x1
GPIO.output(cspin, True)
adcout /= 2 # first bit is ’null‘ so drop it
return adcout
# Use these pinouts for the raspberry pi zero
SPICLK = 11
SPIMOSI = 10
SPIMISO = 9
SPICS = 8
# set up the SPI interface pins
GPIO.setup(SPIMOSI, GPIO.OUT)
GPIO.setup(SPIMISO, GPIO.IN)
GPIO.setup(SPICLK, GPIO.OUT)
GPIO.setup(SPICS, GPIO.OUT)
# Note that bitbanging SPI is incredibly slow on the Pi as its not
# a RTOS - reading the ADC takes about 30 ms (~30 samples per second)
# which is awful for a microcontroller but better-than-nothing for Linux
# list year , this retrieves a list of files from the specified directory and returns the list
def list_year(radio_year):
war_dir = ’/home/pi/radio/WWII_News_‘+radio_year
mp3_files = [ f for f in listdir(war_dir) if f[-4:] == ’.mp3‘ ]
if not (len(mp3_files) 》 0):
print “No mp3 files found!”
return mp3_files
print “--WW2 Radio ---------------------------------------------------------------”
last_read = 0 # store the last position of the volume pot
last_year = 0 # store the last position of the frequency pot
tolerance = 5 # allow a small tolerance so slight movement of the pots doesnt cause a change
while True:
trim_pot_changed = False
year_pot_changed = False
for adcnum in range(2):
ret = readadc(adcnum, SPICLK, SPIMOSI, SPIMISO, SPICS)
if (adcnum == 0): # read the pot for the year selector to see it has moved
year_adjust = abs(ret - last_year)
if ( year_adjust 》 tolerance+10):
year_pot_changed = True
if (year_pot_changed): # Values for the if then checks can be made after its built
subprocess.call([’killall‘, ’mpg123‘]) # kill any MP3 running
sleep(0.1);
if ret 《=50:
war_year=“1939”
elif (ret 》50 and ret 《150):
war_year=“1940”
elif (ret 》=150 and ret 《250):
war_year=“1941”
elif (ret 》=250 and ret 《350):
war_year=“1942”
elif (ret 》=350 and ret 《450):
war_year=“1943”
elif (ret 》=450 and ret 《550):
war_year=“1944”
elif (ret 》=550):
war_year=“1945”
# save the value of the pot for the next time around the loop
last_year = ret
print (“Playing from ”),
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) # randomly select one of the files to play
war_mp3 = war_dir + play_list[play_file]
subprocess.Popen([’mpg123‘, war_mp3]) # Use mpg123 as the player for the audio
sleep (0.1); # provide a slight pause before continuing
if (adcnum == 1): # read the volume pot
pot_adjust = abs(ret - last_read)
if ( pot_adjust 》 tolerance):
trim_pot_changed = True
if ( trim_pot_changed ):
set_volume = ret / 10.24 # convert 10bit adc0 (0-1024) pot value into a 0-100 volume level
set_volume = round(set_volume)# round out decimal value
set_volume = int(set_volume) # cast volume as integer
# Use the value from the pot to send a level to the amixer prog
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
# save the potentiometer reading for the next loop
last_read = ret
# A pause after changing the volume so we dont act on too many changes if the pot changes fast
time.sleep(0.5)
步驟12:在加載時(shí)自動(dòng)啟動(dòng)軟件
有許多方法可以在啟動(dòng)時(shí)在Pi上運(yùn)行命令,但我發(fā)現(xiàn)這是最簡(jiǎn)單的,打開Crontab
sudo crontab -e
現(xiàn)在只需添加此行
@reboot python /home/pi/volume/year.py &
這應(yīng)該可以解決問題,下次重新啟動(dòng)音頻控制時(shí),編程將運(yùn)行,您應(yīng)該聽到第一次廣播。
-
收音機(jī)
+關(guān)注
關(guān)注
60文章
601瀏覽量
77551
發(fā)布評(píng)論請(qǐng)先 登錄
【開源獲獎(jiǎng)案例】基于T5L智能屏的FM收音機(jī)

評(píng)論