Try   HackMD

🎧 互動式聲音播放系統(支援 GPS + 外接 USB)

📌 系統概述

本系統透過 GPS 偵測使用者位置,並根據外接 USB 硬碟中的設定,自動播放對應的音訊內容。適用於戶外導覽、地景藝術、沉浸式體驗等場景。


🧩 系統組成

元件 功能
GPS 模組 偵測使用者目前位置
ESP32-S3(具 USB Host) 處理邏輯、比對位置、播放音訊
USB Host 模組(或內建) 存取 USB 硬碟資料
外接 USB 硬碟 / 隨身碟 儲存音訊檔與區域設定檔
音訊播放模組(如 I2S DAC) 播放聲音內容
OLED 螢幕 / LED(選配) 顯示系統狀態與提示

以下是對應各個元件的建議購買連結,涵蓋常用的開發平台與供應商,如:LCSC、AliExpress、Tindie、台灣蝦皮與 PChome 等。方便你採購或給團隊參考使用。


🛒 硬體元件購買連結參考

類別 元件名稱 推薦平台 購買連結
🎛 控制核心 ESP32-S3 DevKitC LCSC / AliExpress 🔗 AliExpress – ESP32-S3 DevKitC
📍 GPS 模組 Beitian BN-220 或 Neo-6M Shopee / PChome 🔗 Shopee – BN-220 GPS 模組
🔊 I2S DAC MAX98357A 模組 AliExpress / Shopee 🔗 AliExpress – MAX98357A I2S Audio Module
📢 小型喇叭 3W 4Ω 喇叭 Shopee / AliExpress 🔗 Shopee – 小喇叭
💽 USB 隨身碟 FAT32 格式即可 PChome / 量販店 🔗 PChome – 8GB USB 隨身碟
🔌 USB Host ESP32-S3 內建支援 OTG 🔸 ESP32-S3 已內建,無需額外模組
📺 OLED 顯示器 SSD1306 0.96" I2C Shopee / AliExpress 🔗 Shopee – OLED SSD1306
🔋 行動電源 / 鋰電池 5V 輸出 PChome / Shopee 🔗 Shopee – 行動電源模組
💡 LED 燈 普通 5mm LED(紅/綠) 任意平台 🔗 Shopee – LED 燈組
🔌 杜邦線 + 麵包板 杜邦線、電源線、麵包板 Shopee 🔗 Shopee – 麵包板 + 杜邦線組

📦 其他工具建議

工具 用途 購買連結
USB-C 線材 連接 ESP32-S3 開發板 🔗 PChome – USB-C 充電線
烙鐵組 模組焊接(如需長期固定) 🔗 Shopee – 烙鐵組

⚠️ 注意:ESP32-S3 的 USB Host 僅部分板子支援,請確認是否標示支援 USB OTGTinyUSB 相容。如果無,需加購 USB Host Shield 模組(可另行補購建議)。


---

需要我整合成 PDF 或提供完整打包的 Markdown + 照片版說明文件嗎?如果你準備開課、開源、或推展社群專案,這會很加分喔!

---

## 🔄 互動流程

### 1. 系統啟動
- 使用者開機
- 初始化 GPS、USB 模組與音訊模組
- 嘗試讀取 USB 中的 `/map/config.json` 設定檔

### 2. 讀取設定與音檔
- 載入所有觸發區域(多邊形座標)與對應音訊檔案名稱
- 讀取音訊資料夾中的音檔(如 `/audio/*.mp3`)

### 3. 定位與觸發播放
- 系統持續取得使用者 GPS 座標
- 每次位置更新時,比對是否進入某個設定區域
- 若進入、並符合播放條件(如尚未播放),則:
  - 播放對應音檔
  - 顯示播放狀態(可用 LED 閃爍或螢幕顯示)

### 4. 結束或重啟
- 可隨時更換 USB 硬碟內容,即時更新導覽內容

---

## 📁 USB 硬碟資料結構建議

USB/
├── map/
│ └── config.json ← 區域與音訊設定
├── audio/
│ ├── voice_cuthair_intro.mp3
│ └── other_audio.mp3


---

## 🧾 config.json 範例格式

```json
{
  "areas": [
    {
      "name": "VoiceCuthair",
      "audio": "voice_cuthair_intro.mp3",
      "polygon": [
        [25.043012, 21.538819],
        [25.042715, 21.538883],
        [25.042715, 21.539511],
        [25.043007, 21.539500]
      ],
      "playMode": "oneShot"
    }
  ]
}

🛠️ 開發建議

  • 推薦平台:ESP32-S3(支援 USB Host + I2S)
  • 音訊輸出:建議使用 I2S DAC,如 MAX98357A
  • 可搭配 Arduino 開發環境或 ESP-IDF

🔄 功能擴充建議

  • 地點記憶(避免重複播放)
  • 多語音版本支援
  • 時間 / 天氣 條件觸發
  • 搭配手機 App 顯示地圖與目前進度

0414 討論出來的架構

Raspberry Pi 3 與一片自製 HAT PCB 的連接,並在 HAT 上整合以下模組:

  • MAX98357 I2S 音訊放大器模組
  • Teensy 4.0 開發板
  • GPS 模組(如 Adafruit GPS 或是 )

🔗 各元件連接關係

元件 連接到 接腳說明
MAX98357 I2S HAT → Raspberry Pi GPIO18 (BCLK), GPIO19 (LRCK), GPIO21 (DIN)
GPS 模組 HAT → Raspberry Pi / Teensy TX → RX, RX → TX(UART)
Teensy 4.0 HAT → Raspberry Pi 用於樹莓派開關機功能
HAT Raspberry Pi 3 GPIO 排針 40 Pin 介面

🧠 備註與建議

  • 若使用 I2S 音訊模組,請在 Raspberry Pi 上啟用 I2S 介面(可編輯 /boot/config.txt)。
  • Teensy 4.0 的電壓為 3.3V,請勿直接接入 5V UART 訊號。
  • GPS 模組須確認 TX/RX 是否需邏輯電平轉換。
  • 可透過 HAT 板進行電源分配與模組選擇切換(建議加上開關與保險絲)。

🔋 電源建議

模組 建議電壓 說明
Raspberry Pi 3 5V / 2.5A 使用 micro USB 或 GPIO 5V 輸入
MAX98357 3.3V 或 5V 根據模組版本選擇
GPS 模組 3.3V 避免燒壞模組 UART
Teensy 4.0 3.3V 切勿接 5V 到 I/O 腳位

郵寄電池的解法,請對方自行在當地採購電池,製作方會用一樣的電池。

gps
https://www.adafruit.com/product/3133
u-blox NEO-6M V2 GPS 模組(附天線)
BZ251 GPS北征黑匣子航模穿越機
BZ251 GPS北征 最便宜

回信

哈囉,各位,
我已經拿到裝置並且確認好整個計畫的需求。
關於重製 pcb 與硬體的需求是沒有問題,但是更新為樹莓派4.0 以及Teensy 4.0 以及新版的 Adafruit GPS 後,原本的sd 卡中的檔案是沒有辦法繼續使用到新的硬體中,因為裡面的作業系統以及程式碼都無法適用,必須重新把作業系統更新適合樹莓派4.0,編寫新的程式碼來使用Teensy 4.0 以及新版的 Adafruit GPS。

總之,要再製這個裝置使用新的硬體是沒有問題,但是原本的軟體是無法執行,也無法解決你們的問題。唯一的解法是使用新的硬體重新開發軟體達到原本的裝置功能。

如果要重新開發會有這幾個問題:

  • 開發時間
  • 裝置功能驗收
  • 寄送到歐洲

另外,我們在研究裝置的過程中,看到一開始是用 usb gps ,後來試改為Adafruit GPS,請問這是為了什麼原因?就我們的經驗使用 usb gps 會比較好開發與維護。

哈囉,
各位,感謝回覆。
謝謝Sukandar的說明,我知道 Teensy lc與 Teensy 4.0 的差異,序列埠位置和之前不同,所以需要重新佈線。但是除了這部分外,Teensy 4.0 無內建 DAC,程式語法也有少許的不同,請問我在哪裡可以找到些程式碼好進行確認在Teensy 4.0 沒有問題?以及尋找購買 Audio Shield來測試。

舊版的 Adafruit GPS 已經停產,新版的 Adafruit GPS 跟舊版的不同,查詢天線的命令略有變化,因此改成新版的 Adafruit GPS需要修改程式碼。請問我在哪邊可以看到關於使用 Adafruit GPS 的程式碼?

哈囉,
各位,感謝回覆。
感謝Sukandar你提供的程式碼,我們已經研究完,正在找新的 gps 模組u-blox NEO-6M V2 GPS 來測試,新的gps 模組跟舊的是使用 UART 來傳資料。新的硬體架構請看附加檔案。

哈囉 PoHao ,可以請你提供一個在社子地區的測試檔案給我們使用嗎?