想做這個主題,是因為Murtaza’s Workshop 的Youtube 頻道,有分享「AI Virtual Keyboard using OpenCV」,就是透過OpenCV 實現出虛擬鍵盤,其中也有透過 Mediapipe 辨識手勢去模擬點擊鍵盤的行為。
透過這個Youtube 專題,筆者就想做出科技感十足的虛擬鍵盤的MP3 播放器。
在這篇文章中,筆者用Arduino 首次接觸就上手(以下簡稱Arduino)專案,透過 DFPlayer Mini MP3 播放模組、Arduino 的OLED以及虛擬鍵盤手勢控制來打造一個簡單的迷你 MP3 播放器。這個專案不僅讓你可以播放音樂,還可以透過 OLED 螢幕看到歌曲名稱、音量等資訊,同時使用手勢進行控制,非常適合想要深入了解音樂播放器應用的愛好者。
撰寫/攝影 | 許鈺莨 | ||
時間 | 1小時 | 材料 |
|
難度 | 2(滿分5) |
專案原理圖
本專案是透過電腦開啟Python的虛擬鍵盤程式,透過手勢識別去觸發虛擬鍵盤,如同使用者按下鍵盤,進而去控制/播放Arduino 歌曲。
下圖的嵌入式系統,可以是本專案的電腦,可以是任何可以執行 Python 環境的裝置。 而嵌入式系統和 MCU 或 Arduino 則是透過 USB 進行序列埠有線通訊
。
DFPlayer Mini MP3 播放模組腳位介紹
若想了解更多資訊,可前往DFROBOT網站(簡體),或 國外的Github (英文)
硬體連接圖
以下是Arduino 與 DFPlayer Mini MP3 播放模組的接線圖
SD 卡中歌曲命名規則
MP3檔案命名前四個字需要使用4個數字,或4個數字加上其他字串,如0001.mp3、0010ABCD.mp3、或0050-元大.mp3。
而SD卡內可以放置100個資料夾(命名編號為01~99),每個資料夾可以放置255首歌(命名方式同上)。
程式環境設置
本專案有兩種程式需要執行,Python 和 Arduino 程式,以下先說明Arduino 程式環境操作。
筆者先提供專案程式載點(按我下載程式)
- Arduino 環境操作
- 開啟Arduino IDE
執行 arduino.exe ,檔案在BlocklyduinoF2>arduino-1.8.19裡
按下允許存取,即可開啟Arduino IDE。
- 選擇開發板及COM號
選擇開發板> Arduino AVR Boards > Arduino Uno
選擇序列埠> COM XX (LinkIt7697)
[註] 會辨識到 LinkIt7697 是因為 Arduino 的驅動程式跟 LinkIt7697 相同,而筆者之前是先使用了 LinkIt7697 ,所以可能電腦會誤認這是 LinkIt7697 ,不過不影響燒錄程式。
- 開啟並燒錄程式
請開啟 Handdetector_MP3player_Oled_Finish.ino Arduino 檔案,
並按下箭頭圖示即可上傳,如下圖所示。
- 測試 MP3 播放
燒錄成功,可以開啟序列埠監控視窗,會聽見”吱吱”的雜訊聲,接著就會撥放第一首歌,之後就可以下指令去控制歌曲播放。
根據程式,從command_1到command_10,可以相對應下列程式
若成功,可以看見OLED 顯示播放歌曲。
Python 環境操作
- 安裝Python 虛擬環境及套件
請到部落格『【AI人工智慧-神經網路運算】環境建置:安裝Anaconda、JupyterNotebook(Windows篇)』中有完整的環境及套件安裝介紹。
執行本專案程式步驟
- 開啟Anaconda Prompt
到開始 > Anaconda3 (64-bit) >選 Anaconda Prompt
- 開啟Python 專案的虛擬環境
在 Anaconda Prompt 終端機中,輸入conda activate 虛擬環境名稱,此時base 環境就會被更改
- 更換至執行程式的資料夾
筆者的檔案按放在E 磁碟區,所以要輸入”E: “,然後按Enter鍵。
在移動到目標資料夾,需輸入”cd E:\XXXX”
- 開啟Jupyter notebook
輸入”jupyter notebook“,瀏覽器要選Google Chrome開啟
- 執行程式
點選Virtual_Keyboard_Player_Arduino.ipynb兩下即可開啟程式。
選擇Kernel > Restart Kernel and Run All Cells…
輸入攝影機編號
輸入Arduino 序列埠號
若成功執行,歌曲會先撥放,然後開啟程式
- Arduino 序列埠發生錯誤
- 請確認 MicroUSB 有插入電腦
- 請檢查當初燒錄 Arduino 的序列埠號碼,並重新插入
- 請確認沒有被 Arduino IDE 程式佔用,並重新插入
程式執行結果
虛擬鍵盤介面介紹,如下圖所示
操作時,應將食指與中指合併,然後移至虛擬鍵盤,進而做出相對應控制。