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:
1@MainActor2final 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
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
