Skip to content

dahchengweng/petmonitor

Repository files navigation

petmonitor

PetMonitor(ESP32 + MAX30102 + GPS + MQTT) 🐾 PetMonitor:ESP32 寵物生理監測系統 整合 心跳(MAX30102)+ GPS 定位(TinyGPS++)+ MQTT 雲端上傳 + OLED 顯示 + RGB LED 狀態燈 的完整 IoT 專案。 本專案已完全模組化,採用 .ino + .h + .cpp 架構,方便維護與擴充。 PetMonitor/ │ ├── PetMonitor.ino │ ├── WiFiManager.h / WiFiManager.cpp ├── MQTTClientWrapper.h / MQTTClientWrapper.cpp ├── GPSModule.h / GPSModule.cpp ├── HeartRateSensor.h / HeartRateSensor.cpp ├── LEDController.h / LEDController.cpp ├── OledDisplay.h / OledDisplay.cpp

┌──────────────────────────────────────────────────────────┐ │ PetMonitor.ino │ │ (主流程:setup/loop,呼叫各模組 update()) │ └───────────────┬───────────────┬───────────────┬─────────┘ │ │ │ ▼ ▼ ▼ ┌────────────────┐ ┌───────────────┐ ┌────────────────┐ │ WiFiManager │ │ GPSModule │ │ HeartRateSensor │ │ WiFi 連線管理 │ │ GPS 解析 │ │ MAX30102 心跳 │ └────────────────┘ └───────────────┘ └────────────────┘ │ │ │ └───────────────┬───────────────┘ ▼ ┌────────────────────┐ │ MQTTClientWrapper │ │ 上傳心跳/GPS 到雲端 │ └────────────────────┘ │ ┌──────────────┴──────────────┐ ▼ ▼ ┌────────────────┐ ┌────────────────┐ │ LEDController │ │ OledDisplay │ │ RGB LED 狀態燈 │ │ OLED 心跳動畫 │ └────────────────┘ └────────────────┘ 功能說明 1️⃣ WiFiManager 負責 WiFi 連線、重試、狀態檢查。

2️⃣ MQTTClientWrapper 負責 MQTT 連線、重連、JSON 資料上傳。 上傳格式: { "heart": 72, "lat": 22.6273, "lng": 120.3014 } 3️⃣ GPSModule 使用 TinyGPS++ 解析 NMEA,提供:

getLat()

getLng()

isValid()

4️⃣ HeartRateSensor(MAX30102) 採用 門檻過零點法(Threshold Crossing):

動態基線(移動平均)

過零點偵測(低→高)

心跳間隔 → BPM

平滑濾波(Low-pass)

2 秒內即可得到穩定心跳

5️⃣ LEDController 依 BPM 顯示狀態:

60–80 → 綠燈(正常)

其他 → 紅燈(異常)

6️⃣ OledDisplay 顯示:

心跳動畫(兩張 bitmap 切換)

BPM 數值

GPS 資訊

手指提示畫面 🚀 安裝方式

  1. 安裝 Arduino Library 請安裝以下套件:

Library 用途 TinyGPSPlus GPS 解析 PubSubClient MQTT Adafruit SSD1306 OLED Adafruit GFX OLED 基礎繪圖 SparkFun MAX3010x MAX30102 心跳感測

🔌 硬體接線 MAX30102 SDA → GPIO 21

SCL → GPIO 22

GPS(NEO-6M) TX → GPIO 16

RX → GPIO 17

RGB LED R → GPIO 25

G → GPIO 26

B → GPIO 27

🧪 運作流程 開機 → 初始化所有模組

WiFi 連線

GPS 開始解析座標

MAX30102 開始讀取 IR 波形

心跳演算法計算 BPM

OLED 顯示動畫與 BPM

LED 顯示狀態

每 2 秒上傳 MQTT JSON 🌐 MQTT 訂閱方式 使用 MQTTX / Node-RED / Mosquitto: Topic: pet/sensor/all 收到資料範例: 🧱 模組化優勢 ✔ 乾淨、可維護 ✔ 每個功能獨立 ✔ 方便擴充(BLE、雲端 API、資料記錄) ✔ 適合課程、專題、實驗室使用

About

petmonitor mqtt + wifi + gps + oled + heartbeat

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages