Tüm Yazılar
KategoriiOS
Okuma Süresi
12 dk
Yayın Tarihi
2026-05-13
Kelime Sayısı
767kelime

Kahveni hazırla - bu içerikli bir makale!

MADPAW Pet Tracker: GPS + Activity ML Mimarisi ve 30 Günlük Pil Hedefi

Özet

Kendi yan projem MADPAW'ın donanım + iOS tasarım notları: GPS tracker + activity classification, 30+ gün pil hedefi. Low-power location, on-device ML, scheduled fix pattern'leri ve 32 günlük lab testi planı.

  • LiPo 800mAh ile optimize edilmemiş tasarım günde %8, 30 günde %240 tüketiyor — hedef karşılanmıyor
  • Motion-triggered wake-up günlük bütçeyi %3'e indiriyor; 30 günde %90, 32 günlük lab testi planı buna dayanıyor
  • Create ML Activity Classifier 4 sınıf; hedef %95 validation accuracy, 20KB altı model bütçesi
  • ESP32 sınıfı donanımda Neural Engine yok — model TFLite Micro'ya çevrilir, inference bütçesi 8ms/window
MADPAW Pet Tracker: GPS + Activity ML Mimarisi ve 30 Günlük Pil Hedefi
MADPAW kendi yan projem: GPS + activity ML yapan bir pet tracker tasması ile iOS uygulaması, hâlâ geliştirme aşamasında — ne satışa çıktı ne de bir üretim partisi var. Aşağıdakiler ölçülmüş ürün sonuçları değil; donanım + iOS tasarım kararları ve tasarım hedefleri.

Problem: Pet tracker hardware (collar device) için 30+ gün pil ömrü hedefi. Cihaz GPS lokasyon + 3-axis accelerometer'dan activity (uyku/yürüme/koşma) sınıflandırma yapacak, sahibinin iPhone'una sync edecek.

Tasarım hedefleri: 32 günlük pil testini (lab ortamı) geçmek, %95 activity accuracy, sahada manuel müdahale gerektirmeyen OTA güncelleme akışı. Testler henüz koşulmadı — bunlar hedef.

1. Power Budget

Pet tracker LiPo 800mAh. 30 günde tükenmemesi gereken işlem:

Component
Daily budget
GPS fix (every 60 min)
24 fix × 2sn lock
~3% battery
Accelerometer (continuous)
%1.5/gün
BLE advertise (every 5sn)
%2/gün
ML inference (every 5dk)
%0.4/gün
Wi-Fi sync (sahibinin home, daily)
%1/gün
Toplam
~8% / gün
30-day projection
240% — fail!

Bu bütçe hedefi karşılamıyor — optimizasyon tasarımın merkezinde.

2. Smart Scheduling

Native cihaz sleep'te kalır, sadece motion algılandığında uyanır:

  • Accelerometer interrupt (motion threshold) wake-up
  • Motion detected → ML inference + GPS fix
  • No motion → sleep mode, GPS off

Bu pattern ile daily budget %3/gün seviyesine iner. Hesapta 30 gün = %90, yani 32 günlük lab testi planı bu bütçeye dayanıyor.

3. On-Device ML Pipeline

3-axis accelerometer 25Hz → 60-sample window → Core ML model.

Model: Create ML Activity Classifier, 4 class (sleep/walk/run/play). Eğitim planı:

  • Hedeflenen etiketli set: ~200 saat (çeşitli ırk + boyut)
  • Train 80% / val 10% / test 10% bölünmesi
  • Hedef validation accuracy: %95 bandı
  • Model boyutu bütçesi: 20KB altı (.mlmodelc)

ESP32-class hardware'da Apple Neural Engine yok — Core ML model TFLite Micro'ya çevrilir. Inference bütçesi: 8ms / window.

4. iOS App: Sahibinin Tarafı

iOS app low-power BLE listener:

swift
1@MainActor
2final class TrackerManager: ObservableObject {
3 private var central: CBCentralManager?
4 @Published var lastSyncedAt: Date?
5 @Published var lastActivity: ActivityClass?
6 
7 func startListening() {
8 central = CBCentralManager(delegate: self, queue: .main, options: [
9 CBCentralManagerOptionRestoreIdentifierKey: "MADPAW.tracker"
10 ])
11 }
12}

Background BLE scan only when phone home (geofence) — battery savings.

Map UI: GPS history last 24 saat, activity heatmap.

5. Cloud Sync

iOS app proxy:

  • BLE \<-\> Firebase Realtime DB
  • Activity events: tracker → BLE → iOS → Firebase
  • Owner can share with multiple family members (Firestore family-id collection)

Daily volume per device: ~3MB. 10K+ cihazlık bir filo varsayımında ~36GB/ay mertebesi — Firebase free tier'ın üstünde ama ucuz bir bant.

6. Hardware Pin-out & Firmware

  • ESP32 (S3, ARM Cortex M4)
  • u-blox NEO-M9N GPS module
  • ADXL355 accelerometer
  • Power management IC (TI BQ24295)
  • BLE-only (no Wi-Fi during travel — power)

Firmware in C (Arduino IDE → ESP-IDF migration v2'de):

  • FreeRTOS task layout
  • 4KB ML model embedded
  • OTA via BLE (iOS app uploads firmware)

7. Manufacturing & Production

Üretim tarafı henüz planlama aşamasında; hedefler:

  • İlk parti hedefi: 10K+ cihaz mertebesinde bir filo
  • Tedarik: Shenzhen bandında bir ODM
  • 18 ayda 4 hardware revizyonu için pay bırak
  • App Store onayı bu cihaz sınıfında görece sorunsuz (NFC yok, sağlık regülasyonu yok)
  • İade hedefi: sektör bandının (%3-5) altında kalmak

8. Öğrenimler

1. Battery target ön ödeme şart. "Sonra optimize ederim" bu cihaz sınıfında yetmez — power profile day 0'dan itibaren hedef olmalı.

2. Always-on listener yerine scheduled çalışmak bu bütçede %95 bandında battery tasarrufu getirir. Motion-triggered wake-up, DIY hardware'in best practice'i.

3. ML model boyutu önemli. 18KB'lık bir model TFLite Micro ile rahat çalışır; 100KB+ bir model bu hardware'e sığmaz.

4. BLE-only design. Wi-Fi gezinti sırasında fazla tüketir; Wi-Fi'ı yalnız home dock + sync için ayır.

5. iOS background BLE için CBCentralManagerOptionRestoreIdentifierKey zorunlu — restoration olmadan owner ev dışındayken sync kopar.

6. Activity training data'yı baştan planla. Bu sınıfta birkaç on saatlik bir ilk set %95 bandını vermez; hedef seti ~200 saate çıkarmadan accuracy hedefini taahhüt etmemek gerekiyor.

7. Bu kategoride App Store yorumlarını belirleyen kalem battery iddiası. "30 günde 1 şarj" demek kanıt ister: lab verisi + geniş bir beta grubunun ölçümü App Store açıklamasını desteklemeli. Kanıtlanmamış bir pil iddiası doğrudan rating'e yazılır.

Sonuç: IoT hardware + iOS app birleşik bir problem. Battery optimization, ML on-device, BLE state machine — her biri tek başına aylarla ölçülen iş. Birleşik olarak 6-8 ay R&D planlamak gerekir; bu bütçeyi baştan ayırmayan projeler pil hedefini tutturamaz.

Etiketler

#Case Study#GPS#Activity Classification#Core ML#Battery Optimization#Hardware
Muhittin Çamdalı

Muhittin Çamdalı

Senior Mobile Engineer

12+ yıllık deneyime sahip Senior Mobile Engineer. iOS, Flutter ve React Native ile mobil ürünler geliştiriyorum; full-stack ve AI-native çalışıyorum.

iOS Geliştirme Haberleri

Haftalık Swift tips, SwiftUI tricks ve iOS best practices. Spam yok, sadece değerli içerik.

Onay e-postasındaki bağlantıyı açıp “Aboneliğimi onayla” düğmesine bastığında aboneliğin başlar. Bültende açılma/tıklama istatistikleri tutulur; dilediğin an tek tıkla ayrılabilirsin. Gizlilik

Paylaş

İlgili İçerik