打造虛擬鍵盤手勢控制音樂播放器— 使用Arduino 首次接觸就上手

想做這個主題,是因為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 環境操作

下載 BlocklyduinoF2(檔案下載請按我)

 

  • 開啟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 序列埠發生錯誤
  1. 請確認 MicroUSB 有插入電腦
  2. 請檢查當初燒錄 Arduino 的序列埠號碼,並重新插入
  3. 請確認沒有被 Arduino IDE 程式佔用,並重新插入

 

程式執行結果

虛擬鍵盤介面介紹,如下圖所示

 

操作時,應將食指與中指合併,然後移至虛擬鍵盤,進而做出相對應控制。

 

 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *