步驟1:獲得您想要實現的概述
在我們的案例中,我們決定購買此收音機,因此我們只需要專注于內部-
由于我們將無線電功能與推子和揚聲器保持在一起,因此它們是引起困惑的關鍵。
但是我們將無線電中的按鈕功能更改為輸入鍵。為謎語。因為我們認為兩個按鈕以前的背景燈很無聊,所以我們將它們更改為RGB,從而為謎語提供了額外的支持。
作為收音機的核心,我們選擇了由ATMega328支持的Raspberry Pi B +,它應該負責按鈕,LED,伺服(用于密碼箱)和謎語的一些關鍵功能。
Raspberry具有強大的處理能力,但體積很小,無法在表殼中占據一席之地。
基于這些輸入和輸出的可能性,我們創建了一些謎語,每個謎語都有其獨特之處解決方法。這些可以在其他PDF“謎語”中找到。
步驟2:打開無線電并刪除不必要的部分
我們已經知道哪些部分是必需的,讓我們擺脫那些不再有用的部分。
其中很多。實際上,除了揚聲器,顯示屏,按鈕(實際上是您所看到的),電位器以及螺絲以外的所有東西。而且由于我們需要的電流比變壓器提供的電流還要多,因此我們也可以卸下0.6 A的小型變壓器。
無線電現在將非常空,這將導致下一部分:
第3步:獲取新零件
如前所述,我們得到了:
-Raspberry Pi B +
-ATMega328 (有時稱為AVR)
-RGB LEDs
-TDA2005作為放大器
另外:
以下是我們決定使用每個組件的原因:
步驟4:第一個(較小的)電路板
舊的電路板無法用于進一步的工作,我們必須設計自己的電路板以滿足我們的要求。您應注意螺釘和LED的斑點,因為它們應與舊零件和外殼兼容。我們需要在按鈕上鉆一些孔,因為RGB LED比以前的LED稍大。由于按鈕的三個RGB LED以及另外一個作為顯示屏背光的第四個LED,應該能夠以所有可能的組合和顏色發光,因此我們決定使用微控制器來獲取有關按鈕的所有信息以及一些按鍵功能謎語之謎,控制所有LED并控制伺服機構的位置,伺服機構負責密碼箱的關閉機構。由于伺服只能由PWM控制,而Raspberrys的PWM功能已經用于內置聲音,因此這是微控制器的另一個動機。所有這些組件都可以通過“串行外設接口”(SPI)進行訪問,其中AVR處于從模式,而Raspberry處于主模式,方法是同時向AVR發送兩個字節,同時向Raspberry交換一個字節。由于有多個端口,中斷以及PWM和SPI接口,因此ATMega328可以正常工作。您可能會隨意使用自己的代碼,但是我們決定使用兩個字節的第一個半字節(四位)指定不同的功能,并使用其他三個半字節作為參數:
?0x0:保持當前狀態進程,將忽略參數,僅用于更新按鈕和標志
?0x1:靜態LED燈,每三位控制一個LED(RGB),從LSB開始
?0x2:前行燈,參數控制起始位置
?0x3:后行燈,參數控制起始位置
?0x4:旋轉燈,參數控制起始位置,但更改僅在相同的LED上發生(三步后重復)
?0x5:向后旋轉光
?0x6:自動:參數是所有LED的遮罩,按下負責按鈕時亮起
?0x7-0xE:反應測試:參數將被忽略;可能會分為不同但尚未實現的功能
?0xF:通過參數
設置伺服位置
您將收到的字節的結構如下:
第一個半字節(從MSB開始的前四個字節)用于反應測試的以下標志(在Raspberry上的軟件中尚未完全實現):
?位7:1,如果所有LED均為相同顏色,則為0否則
?位6:1,如果按任意鍵直到所有LED均以相同顏色點亮,否則為0
?位5:1,如果在所有LED均以相同顏色點亮時按下任何鍵,則為0,否則
?位4:1(如果已啟動并正在運行反應測試,否則為0)
進一步的半字節給出有關所按下按鈕狀態的信息:
?位3:如果按下了按鈕4(為Internet廣播功能的開關預定義,尚未實現),則為1,否則為0/p》
?位2:如果按下了按鈕3(最右邊的那個),則為1,否則為0
?位1:如果按下了按鈕2,則1:1(mi ddle 1),否則0
0位0:如果按下了按鈕1(最左邊的那個),則0:否則0
我們用pcb-mill制作了電路板。我們使用的文件也已上傳。為了更輕松地更新微控制器的軟件,我們在電路板上的“系統內編程器”(ISP)接口中內置了該控制器。像所有按鈕的下拉電阻和LED的串聯電阻一樣,將伺服器,第四按鈕和第四LED的針頭放置在其上。
步驟5:第二(主)電路板
第二個電路板采用了舊主板的功能,其中包括一個放大器。覆盆子的聲音輸出,可通過具有打開/關閉功能的對數電位器(之前也用于音量控制)進行控制。我們決定只為放大器使用此開關功能,以避免樹莓的長啟動延遲,但在關閉時使無線電無噪聲。
次級電位器負責設置頻率。由于Raspberry沒有內置的模數轉換器(ADC),我們使用了MCP3002,這是一個10位分辨率的兩通道ADC,也可以通過SPI訪問。因為我們只需要一個通道,所以我們實現了它來兼顧兩個通道的差異,但是可以將第二個通道用于帶有針頭和跳線的將來用途,該跳線將第二個通道接地。
請注意電位計的位置!我們決定重用舊的,并測量它們的舊位置和螺釘的位置。
由于舊的0.6 A電源不足以為所有設備供電,因此我們決定使用2 A電源。但是在為這些電源準備了一些草案之后,我們決定使用舊的2A開關電源,該電源可提供1A的5V電源(用于為Raspberry,ADC,AVR和LED供電)和1A的12V電源(用于放大器)。 )。測量所有零件并將它們繪制到PCB軟件中需要花費大量時間。但是,如果您繪制了組件和電路,則電路板的布線非常快!
由于我們的放大器提供的功率遠遠超過內置揚聲器所能提供的功率,因此我們決定使用微調,以限制輸出,以免損壞揚聲器。研磨電路板后,您必須將零件焊接到電路板上,這需要一段時間。一旦一切準備就緒,您可以將其放回盒中,連接由插頭連接準備的所有連接。
步驟6:構建秘密箱
密碼箱位于收音機的背面。因為盒子應該自己打開,所以我們在其中放置了一個帶有伺服電機的接頭。我們用3毫米厚的MDF板對盒子以及接頭進行了激光切割。將盒子粘上,然后擰緊伺服電機和關節。盒子和關節的矢量圖形已粘貼,因此您可以自己進行激光切割。
盒子的側面(從外面可以看到)是剪掉收音機的前面板,所以它隱藏的時間更長。
步驟7:軟件
AVR用C編程,并用編程器閃爍。請注意對負責的拒絕位進行編程,以避免微控制器的預分頻器將8 MHz預先縮放為1 MHz,因為這會使Raspberry與AVR通信時出現問題。不幸的是,這不是通過代碼行而是通過IDE的接口(在我們的例子中是AtmelStudio)來完成。我們建議您閱讀二手微處理器的數據表中的負責部分!
由于我們用Java編寫了謎語代碼,因此最困難的部分是開發用于在Raspberry之間進行通信的軟件/驅動程序。 Pi和ATMega可以獲取按鈕和電位計的信息以及點亮LED。
使用庫connectionpi用C語言編寫驅動程序非常容易。這就是為什么我們首先在C中構建用于測試的工具的原因。我們上載了軟件,因此您將了解如何自己完成操作或僅獲取文件。使用Java,即使Java與平臺無關,也可以通過Java訪問驅動程序。圍繞它構造一個面向對象的接口,我們可以同時實現所有功能。
盡管如此,我們還是實現了這些東西:
-首先有噪音,就像在真實的收音機中一樣
-如果玩家在六個頻率中的一個附近移動,他將首先聽到背景噪音,然后變成聲音,問他一個謎或只是給他提示
-如果當前頻率有問題,則玩家可以使用前面的按鈕來回答。
-當所有不同頻率的問題都得到回答時正確地打開背面的盒子,玩家將獲得鑰匙或餅干之類的獎勵。如您所愿。
軟件完成后,將其放在Raspberry Pi和微控制器上,關閉收音機,然后開始困惑!
步驟8:記錄音頻文件。..
為使我們的代碼簡單,我們使用Java的標準庫來處理音頻輸入文件。這就是為什么我們以音頻/波形格式記錄謎語的原因。由于原始謎語僅以德語錄制,因此我們只能提供所附的德語示例。另外,我們使用了一些背景。我們添加了電子管放大器的聲音效果,以使其聽起來更真實,但是Raspberry內置的“聲卡”的不良音質已經為我們的復古收音機帶來了良好的噪音。隨意使用自己的背景聲音。也許一些老式音樂也可以做到!或錄音機/錄音帶的聲音。為了在沒有任何輸入的情況下以某種頻率聆聽謎語之后渡過漫長的橋梁,我們錄制了一些隨機注釋(ZIP中的r1.wav-r10.wav),如果匹配,則可以針對每個頻率播放。
責任編輯:wv
-
收音機
+關注
關注
58文章
591瀏覽量
75886
發布評論請先 登錄
相關推薦
評論