03.08 教你製作2.4GHz數字無線話筒

《愛情公寓》裡有句臺詞是:“跟我賭,不是看你要什麼,而是看我有什麼!”我最近做項目,手頭剩下幾片ATmega16L單片機和一對NRF24L01+無線模塊,閒來無聊,於是做了個數字無線話筒玩玩兒,沒想到效果還不錯。

如今,越來越多的2.4GHz無線產品進入了我們的生活,如藍牙、無線上網和無線鍵鼠等,這些產品極大地方便了我們的生活。接下來我所製作的就是一款簡單的2.4GHz數字無線話筒。

2.4GHz無線技術採用的頻段處於2.405~2.485GHz (科學、醫藥、農業),這個頻段裡是國際規定的免費頻段,這為2.4GHz無線技術的可發展性提供了必要的有利條件。2.4GHz無線技術的工作方式是採用全雙工模式傳輸,這個優勢決定了它的超強抗干擾性。此外,相比採用藍牙等其他無線傳輸技術的產品,採用2.4GHz無線技術的產品,製造成本更低,提供的數據傳輸速率更高,它的抗干擾性、最大傳輸距離以及功耗更遠遠超出採用同樣免費的27MHz無線技術。

設計思路

這個設計的思路非常簡單,首先將駐極體話筒採集到的聲音模擬信號轉換成便於存儲和處理的數字信號,即AD轉換;然後通過2.4GHz的無線模塊發送到接收端;接收端收到數據後,再利用PWM將數字信號還原成聲音信號。

由於話筒傳輸的是實時的語音信號,而聲音的數字化和還原都會有延遲。因此,這個設計的關鍵是怎麼做才能保證語音信號實時傳輸。

元器件選擇

這款無線話筒結構簡單,用到的主要元器件有nRF24L01+無線模塊、AVR單片機、晶體振盪器和駐極體話筒,當然,還得有幾隻電阻、電容。

至於nRF24L01+無線模塊,現在很容易買到,也不貴。通常,這類模塊官方給出的傳輸速度有3種,分別是1Mbit/s、2Mbit/s和250kbit/s,可通過軟件選擇。然而這只是一次傳輸32字節的速度,應用中由於每次發送需要等待器件進入發送狀態,內部PLL電路工作穩定,每發送一次大約需要700μs(自動應答2Mbit/s時),所以實際能達到的最大速度大概是40~60kbit/s。

根據Atmel官方文檔,ATmega16L的AD在10位分辨率時能達到的最大采樣率大約為15kHz。而我們在這個設計中給它來點“超頻”,設置它的AD時鐘頻率為1MHz,8位分辨率,這樣可以稍稍提高AD轉換速度,達到8位16kHz採樣的目的。32字節可以存儲2ms的聲音信息:1s/16kHz=62.5μs,62.5μs×32=2ms,不要擔心,這只是個不太討厭的計算題。根據計算可以知道,發送一次數據需要大約700μs,而接收一次數據存儲了2ms的聲音數據,因此完全可以在播放這2ms聲音時進行下次的發送—接收。這就達到了實時傳輸語音信號的目的。系統流程圖見圖20.1。

教你製作2.4GHz數字無線話筒

圖20.1 系統結構圖

當然,並不是一定要用ATmega16L單片機,也可以用ATmega8單片機。其實只要帶有AD轉換且速度夠快的單片機都能使用。

電路原理圖簡介

1.發送端電路

發送端電路有數據傳輸、數據處理和聲音採集3個部分。數據傳輸部分用單片機的硬件SPI接口與NRF24L01+無線模塊連接,提高傳輸速率,簡化程序設計,如果是沒有SPI接口的單片機可以用I/O模擬SPI,這裡不再說明。聲音採集部分就是用駐極體話筒將聲音信號轉換成連續變化的電壓信號,然後通過單片機自帶AD轉換部分轉換成數字信號。從原理圖(見圖20.2)可以看出,駐極體話筒的電路之外接了一個電阻,那這個電阻的阻值(R)是怎麼確定的呢?這個設計中ATmega16L單片機AD的參考電壓選擇AVCC引腳電壓,而AVCC=VCC,所以AD輸入電壓(Vin)範圍應該在0~VCC。駐極體的工作電流(I)為0.1~1mA;Vin=VCC-I×R,如果取VCC=4.2V,則可以確定R取值應在4.2~42kΩ,這裡取R為10kΩ,保證信號不失真。數據處理部分就是單片機了,單片機控制AD的採樣率,存儲數字信號,並且控制無線模塊發送數據。

教你製作2.4GHz數字無線話筒

圖20.2 發送端原理圖

2.接收端電路

接收端電路用到的數據傳輸部分與發送端完全相同。只是在單片機PWM輸出引腳接了個低通濾波器,濾去高頻噪聲,還原語音信號。整個設計從簡單出發,因此低通濾波器只用一個電阻(10Ω)和一個電容(2.2μF)組成,截止頻率大約為7kHz,具體原理圖見圖20.3。如果想要更好的效果,可以用5532接一個帶通濾波器,效果會更好。

3.電源

發送端用一塊電壓為4.2V的鋰電池供電,方便手持使用。接收端由於要和耳機或功放連接,採用穩壓電源供電,電壓為3.3~5V。需要特別說明的是NRF24L01+對電源特別敏感,電源質量差可能會導致接收變差,甚至收不到數據,因此應注意電源濾波,最好在NRF24L01+電源附近接一個0.1μF電容。

教你製作2.4GHz數字無線話筒

圖20.3 接收端原理圖

程序編寫

電路簡單不代表程序就簡單,程序是這個數字無線話筒的靈魂。按原理圖接好電路(見圖20.4),接下來要面對的就是編程問題了。程序同樣也分為發送端和接收端。

教你製作2.4GHz數字無線話筒

圖20.4 初步完成後的發射電路實物

1.發送端程序

發送端所做的工作是AD轉換、數據暫存和數據發送。發送端程序設計的關鍵是準確地控制AD採樣率為16kHz,還能及時將數據發送出去。為此發送端ATmega16L單片機的AD工作在自動觸發模式,以定時器0為觸發源,並且以中斷方式讀取轉換結果,從而準確地控制採樣率。

2.接收端程序

接收端程序完成的工作是接收到數據後將數字信號轉換成佔空比不同的連續脈衝。程序設計的關鍵是保證PWM工作頻率與發送端採樣率相同,這樣才能準確地還原聲音信號。ATmega16L單片機帶有硬件PWM,大大簡化了程序設計。需要特別注意的是,如果沒有收到數據,要關閉PWM輸出,否則會有非常大的噪聲。

這是我的qq群657864614,我會不定時的把一些程序源代碼發佈到qq群裡面,有興趣的可以加下。

實際使用效果

原以為單片機自帶AD16kHz採樣8位分辨率,PWM變換,還有簡陋的濾波器和駐極體話筒,這樣的話筒音質一定“慘不忍聽”,製作完成後小心試用,沒想到得到是驚喜:基本無噪聲,清晰地還原了說話的聲音,接上功放(見圖20.5),音質更好。在使用PCB天線時,室內測試有效距離為6m。2.4GHz數字無線話筒使用的就是最簡單的AD轉換,沒有使用聲音的採樣量化編碼技術,音質勉強,比FM無線話筒音質稍差,比電話語音稍強。如果對音質有很高的要求,可以使用專用的音頻ADC芯片和音頻DAC芯片,但是成本就高了。

教你製作2.4GHz數字無線話筒

圖20.5 接收電路與自制的功放音箱連接

2.4GHz的無線信號非常適合於在小範圍內進行數據傳輸。動手試一試吧,洞洞板也可輕鬆搞定哦。

也許這個適合你↓↓↓↓↓


分享到:


相關文章: