張鵬
作為一個(gè)理工男,對(duì)音樂(lè)總有著迷之興趣。但是在這方面一直缺乏指導(dǎo),只在小學(xué)的時(shí)候上過(guò)幾節(jié)音樂(lè),記得少許簡(jiǎn)譜的概念。后來(lái)中學(xué)忙于文化課,大學(xué)選擇了電子專業(yè),與音樂(lè)就越來(lái)越遠(yuǎn)。筆者現(xiàn)在已經(jīng)參加工作了,小時(shí)候埋在心里的種子終究會(huì)發(fā)芽,工作閑暇利用自己專業(yè)相關(guān)的知識(shí),設(shè)計(jì)了一款電子樂(lè)器,與諸君分享。
1卡林巴琴簡(jiǎn)介
卡林巴琴本是非洲的一種民族樂(lè)器,通過(guò)彈撥發(fā)出聲音。本設(shè)計(jì)模仿卡林巴琴的外觀,采用圖1所示的鼠標(biāo)按鍵代替卡林巴琴的金屬?gòu)椘?,藍(lán)牙連接手機(jī),在手機(jī)上發(fā)出聲音。
2硬件設(shè)計(jì)
該設(shè)計(jì)采用ESP32作為主控單元,ESP32是一顆功能強(qiáng)大的物聯(lián)網(wǎng)芯片,可同時(shí)支持WiFi和藍(lán)牙功能,20+可用GPIO,運(yùn)行頻率最高可達(dá)240 MHz,可以采用C語(yǔ)言、Ardiuno、MicroPython等方式進(jìn)行開(kāi)發(fā)。
整體的設(shè)計(jì)思路是先使用ESP32的藍(lán)牙功能實(shí)現(xiàn) MIDI協(xié)議,連接手機(jī)后,與手機(jī)上的APP配合,手機(jī)在手機(jī)上發(fā)出聲音。編程語(yǔ)言使用的是MicroPython,上手相對(duì)比較簡(jiǎn)單,非電子專業(yè)的同學(xué)也可以嘗試做一下。
工作原理也非常簡(jiǎn)單,當(dāng)程序檢測(cè)到有按鍵按下時(shí), ESP32通過(guò)藍(lán)牙發(fā)送相應(yīng)的MIDI指令到手機(jī),手機(jī)收到相關(guān)的指令后,在手機(jī)上播放對(duì)應(yīng)的音符。
講完了工作原理,接下來(lái)我們看下硬件設(shè)計(jì)。如果你沒(méi)有PCB板設(shè)計(jì)經(jīng)驗(yàn),可以嘗試制作如圖3所示的簡(jiǎn)易版本,使用現(xiàn)成的ESP32_Dev_Kit開(kāi)發(fā)板配合鼠標(biāo)按鍵,在一款較大的洞洞板上簡(jiǎn)單焊接就完成了。注意,使用鼠標(biāo)按鍵的上面;上面兩個(gè)引腳分別連接 GND和ESP的引腳。
如果你有一定的PCB設(shè)計(jì)能力,建議制作圖4所示的版本,集成了鋰電池充電電路和WS2812彩燈,同時(shí)外觀也更為美觀,電路原理圖見(jiàn)圖5,元器件布局見(jiàn)圖6。為了追求美觀,所有的走線都放置在了 PCB板的背面。
3軟件設(shè)計(jì)
編程語(yǔ)言使用的是MicroPython,開(kāi)發(fā)環(huán)境使用的是uPyCraft,程序的邏輯是先通過(guò)藍(lán)牙實(shí)現(xiàn)MIDI服務(wù),等待手機(jī)連接,手機(jī)連接成功后當(dāng)檢測(cè)到有按鍵按下,就發(fā)送相關(guān)的MIDI指令到手機(jī)上。
核心代碼請(qǐng)參考電子產(chǎn)品世界網(wǎng)站論壇。代碼運(yùn)行后,根據(jù)手機(jī)平臺(tái)的不同,使用如下方式與設(shè)備建立連接,iOS平臺(tái)見(jiàn)圖7,安卓平臺(tái)見(jiàn)圖8。連接成功就可以在手機(jī)上演奏了。