- Katılım
- 25 Eki 2023
- Konular
- 384
- Mesajlar
- 942
- Çözüm
- 18
- Online süresi
- 1mo 1d
- Reaksiyon Skoru
- 1,149
- Altın Konu
- 171
- Başarım Puanı
- 207
- MmoLira
- 2,136
- DevLira
- 12
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
TurkMMO “DEV REHBER”Kendi Giyilebilir Teknolojini Yap:
Akıllı Bileklik / Yüzük / Klips / Sensör Patch
Donanım + Firmware + Mobil Uygulama + Güvenlik + Optimizasyon
Merhaba Turkmmo ailesi,
Bu konu “ürün önerisi” değil. Bu konu: kendi giyilebilir cihazını sıfırdan üretme.
Öyle hobi seviyesinde “LED yakalım” da değil; kaputu açacağız:
- Mimari (sensör → işlemci → Bluetooth → telefon)
- Güç yönetimi (pil, şarj, düşük güç modları)
- Firmware (ESP32/NRF52), protokol, veri formatı
- Güvenlik (BLE pairing, şifreleme, veri minimizasyonu)
- Kasa/ergonomi (bilekte rahat, su ter dayanımı)
Bu rehberi “TurkMMO kullanıcıları kendi cihazını yapabilsin” diye yazdım:
3 seviyeli ilerleyeceğiz: Başlangıç → Orta → Pro.
0) Çok Net Uyarı (Güvenlik/Etik)
- Tıbbi cihaz yapmıyoruz. Nabız/SpO2 ölçersin ama “teşhis” diye satamazsın.
- Vücuda implant, iğne, deri altı iş yok. Bu rehber “giyilebilir” = dış kullanım.
- Lityum pil güvenliği: Şarj devresi doğru değilse pil şişer/yanar. Korumalı modül kullanacağız.
- Veri mahremiyeti: Kayıt/konum/biometri hassas. Varsayılan olarak “minimum veri” + “lokal işleme” hedef.
1) Önce Hedef Seç: Hangi Cihazı Yapıyoruz?
Giyilebilir cihazlar “form faktör” ile başlar. 4 tane sağlam hedef:
| Proje | Ne yapar? | Zorluk | En kritik konu |
|---|---|---|---|
| A) Akıllı Bileklik | Nabız/ivme/titreşim + bildirim | Orta | Kasa + pil + konfor |
| B) Akıllı Klips (yaka/kemer) | Hareket/sıcaklık/gesture + BLE | Kolay | Pil ömrü ve sağlamlık |
| C) “Patch” (kumaşa takılan modül) | Spor modu: ivme + titreşim + log | Orta | Ter/nem dayanımı |
| D) Akıllı Yüzük (PRO) | Küçük alanda sensör + BLE | Zor | PCB miniaturizasyon + şarj |
Bu rehberde en mantıklı öğrenme yolu:
Önce Klips → sonra Bileklik → en son Yüzük.
Çünkü yüzük “mini PCB + özel kasa” ister.
2) Sistem Mimarisi: “Kaputun Altı”
Cihazın beyni şu akış:
Kod:
[Sensörler] -> [MCU] -> (Filtre/Özet) -> [BLE] -> [Telefon App] -> (Opsiyon: Cloud)
|
[Power Mgmt]
İyi tasarımın altın kuralı:
Sürekli yayın yok.
Veriyi topla, özetle, paketle, “burst” gönder.
Böylece pil ömrü 3 günden 10 güne çıkabilir.
3) Parça Listesi: Başlangıç / Orta / Pro
3.1 Başlangıç (En Kolay, En Hızlı Sonuç)
- MCU: ESP32 (BLE var) veya nRF52 (daha düşük güç, daha iyi BLE)
- Sensör: MPU-6050 / ICM-42688 (ivme+gyro), TMP117 (sıcaklık)
- Titreşim: coin vibration motor + sürücü
- Pil: 100–300 mAh LiPo
- Şarj: TP4056 modül (korumalı) + Type-C soket
- Kasa: 3D baskı veya hazır küçük kutu + klips
3.2 Orta Seviye (Bileklik gibi hissettiren)
- Ekran: 0.96" OLED (I2C) veya küçük e-ink
- Haptik: ERM yerine LRA (daha kaliteli titreşim)
- Buton + kapasitif dokunma
- Su/ter: silikon conta, conformal coating
3.3 Pro (Yüzük / Ultra küçük cihaz)
- Özel PCB (JLCPCB/PCBWay) + özel kasa
- nRF52 tavsiye (ultra düşük güç)
- Şarj: pogo pin / kablosuz şarj (Qi mini coil) gibi seçenekler
4) Firmware: “Cihazı Cihaz Yapan Şey”
Firmware hedefimiz:
- Sensörü oku
- Basit filtre/özet çıkar
- BLE üzerinden paket gönder
- Uyku moduna gir (pil için şart)
Aşağıdaki örnek “pseudo-code” bir iskelet:
Kod:
// Döngü Mantığı (örnek)
init_sensors();
init_ble();
while(true){
read_imu();
compute_steps(); // basit adım tespiti
compute_motion_score(); // hareket yoğunluğu
if(time_to_send){
pack_payload(); // küçük paket
ble_notify(); // burst gönder
}
deep_sleep(900ms); // pilin dostu
}
4.1 Veri Formatı (Küçük = İyi)
BLE’de paket küçük olmalı. Örnek payload:
Kod:
struct Payload {
uint32_t ts; // timestamp
uint16_t steps; // adım
int16_t ax, ay, az; // ivme (ölçekli)
uint8_t batt; // %
uint8_t flags; // durum bitleri
}
5) BLE Tasarımı: Uygulama ile “Konuşma Protokolü”
BLE’de standart yaklaşım:
- Service UUID (uygulama cihazı bulur)
- Characteristic 1: Notify (cihaz veri yollar)
- Characteristic 2: Write (uygulama komut yollar)
Komut örneği:
Kod:
0x01 -> titreşim ver
0x02 -> ekranı uyandır
0x03 -> örnekleme hızını değiştir
0x04 -> cihaz reset
5.1 Güvenlik: “BLE açık kapı olmasın”
Minimum güvenlik kuralı:
- Pairing zorunlu olsun
- Bonded device list tut
- Yetkisiz write kabul etme
- Mümkünse “signed command” (HMAC gibi) ekle
“Benim cihazım, benim verim” diyorsan:
Komutları imzala. Basit HMAC bile iş görür (mobil + cihaz aynı anahtarı bilir).
6) Mobil Uygulama: En Kolay Yol
3 seçenek var:
- A) nRF Connect/LightBlue ile test (en hızlı)
- B) Flutter (Android+iOS tek kod)
- C) Native Android (Kotlin) (en güçlü kontrol)
Başlangıç için:
Önce nRF Connect ile çalıştığını gör.
Sonra Flutter’a geç.
App ekranları (minimum viable)
- Cihaz tarama + bağlan
- Canlı veri (steps/batt/motion)
- “Titreşim Test” butonu
- Log kayıt (CSV export)
7) Güç Yönetimi: Pil Ömrünü 3 Katına Çıkaran Sırlar
Pil yönetimi giyilebilir cihazda “ana boss”.
İşte gerçek kurallar:
| Hata | Sonuç | Çözüm |
|---|---|---|
| Sürekli BLE açık | Pil erir | Burst gönder + connection interval ayarla |
| Sensör sürekli yüksek hızda | Pil erir | İhtiyaca göre örnekleme |
| Ekran sürekli açık | Pil biter | AOD yoksa 5-10 sn timeout |
| Derin uyku yok | Gün değil saat | Deep sleep + wake timer |
Mini Grafik: Pil Katilleri
Kod:
Tüketim etkisi (yüksek -> düşük)
BLE sürekli bağlantı ██████████
Ekran açık ████████
Sensör yüksek Hz ██████
CPU yüksek frekans █████
Deep sleep yok ██████████
8) Kasa / Ergonomi: “Takılabilir” Olmazsa Proje Çöpe Gider
İnsanlar elektronik değil, konfor giyer.
Bilek/yaka için 3 kritik:
- Ağırlık dağılımı (tek noktaya yük binmesin)
- Ter/nem koruması (conformal coating + silikon conta)
- Buton/dokunma erişimi (kazara basmayı azalt)
Pro ipucu:
Elektronik kartı “kasanın ortasına” değil, bilekte “yan tarafa” kaydırmak bazen daha rahat olur.
9) Kalibrasyon: Ölçüm Doğru Değilse Her Şey Yalan
Giyilebilir projelerde en çok şok olan yer: “sensör var ama veri saçma”.
Çünkü hareket gürültüsü (motion artifact) + mekanik oynamalar çok.
- İvme sensörü: Offset kalibrasyonu yap (düz zeminde 10 sn ortalama)
- Adım sayma: kişiye göre eşik ayarla (boy/kilo/yürüyüş tarzı)
- Nabız (PPG) projesi yapacaksan: sabit temas, ışık kaçaklarını engelleyen kasa şart
1) |a| = sqrt(ax^2+ay^2+az^2)
2) low-pass filtre (gürültü azalt)
3) eşik üstü geçiş say
4) 250ms "debounce" (çift saymayı önle)
2) low-pass filtre (gürültü azalt)
3) eşik üstü geçiş say
4) 250ms "debounce" (çift saymayı önle)
10) Pro Seviye: OTA Güncelleme + Crash Log + Anti-Tamper
Cihazı “ürün” yapan 3 ekstra:
- OTA firmware update (telefondan güncelle)
- Crash log (son 20 hata kodunu sakla)
- Anti-tamper (cihaz reset/klon denemesini algıla)
OTA yoksa sahada güncelleme = eziyet.
Log yoksa debug = kör dövüşü.
Kod:
// Crash log örneği (basit)
- NVS/Flash içine: last_error_code, reboot_count, last_uptime
- Uygulama bağlanınca: log çek + raporla
11) “3 Proje Tarifi” (Kopyala-Üret Mantığı)
Tarif #1: Sessiz Alarm + Haptik Bildirim Klipsi
- ESP32 + coin motor + LiPo + TP4056
- BLE komut: 0x01 titreşim, 0x02 profil değiştir
- Kullanım: gece alarmı + “guild toplantısı” hatırlatma
Tarif #2: “Hareket Skoru” Bilekliği (Spor/Oyun Molası)
- nRF52 + IMU + OLED
- Her 5 dk: motion score + kısa log
- Stres/tilt yerine “mola önerisi” gibi kullan
Tarif #3: Patch Modül (Kumaşa Tak-Çıkar)
- Su/ter korumalı kasa + klips/velcro
- Hareket yoğunluğu + sıcaklık trend
- Amaç: “dayanıklılık” test cihazı
12) Sık Sorunlar (Troubleshooting) — “Çalışmıyor” Diyenleri Kurtarma Bölümü
| Sorun | Muhtemel sebep | Çözüm |
|---|---|---|
| BLE bağlantı kopuyor | Connection interval kötü / güç düşüyor | Interval ayarla + burst mantığı |
| Pil 1 günde bitiyor | Deep sleep yok / sensör sürekli | Uyku modları + sensör duty cycle |
| Adım sayma saçma | Eşik yanlış / cihaz sallanıyor | Kalibrasyon + debounce + kasa sabitleme |
| Titreşim zayıf | Sürücü yok / yanlış voltaj | Driver ekle + doğru motor seç |
13) TurkMMO’ya Görev: “Topluluk Cihazı” Yapalım mı?
Bence bu rehberin en güzel finali şu olur:
TurkMMO giyilebilir teknoloji bölümünde “Topluluk Projesi” başlatmak.
Önerim:
- TurkMMO Haptik Klips v1 (en hızlı sonuç)
- Basit BLE protokol standardı
- 3D baskı kasa dosyaları
- Her üye kendi modunu yapar: oyun, spor, iş
TurkMMO DEV REHBER (BÖLÜM 2)“Çalışan Ürün” Aşaması:
Şema + BLE Protokol + ESP32/nRF52 Kod İskeleti + Flutter App + Test/Debug
Hedef: 1 haftada “TurkMMO Haptik Klips v1” çıkarıyoruz
Merhaba Turkmmo ailesi,
Bu bölümde “teoride güzel” değil, gerçekte çalışan cihaz çıkaracağız.
Önce “en kolay, en sağlam” projeyi seçiyoruz:
TurkMMO Haptik Klips v1Sessiz alarm + bildirim titreşimi + hareket skoru + pil yüzdesi
1) Parça Listesi (Net, Ürün Gibi)
İki yol var: ESP32 (kolay) veya nRF52 (pil canavarı).
Başlangıç için ESP32 ile gidiyoruz, sonra nRF’ye geçmek kolay.
| Parça | Öneri | Neden? |
|---|---|---|
| MCU | ESP32 DevKit (BLE) | Hızlı prototip, bol örnek |
| IMU | MPU-6050 / ICM-42688 | Hareket skoru / adım / titreşim filtre |
| Titreşim Motoru | Coin vibration motor (3V) | Küçük, klips için ideal |
| Motor Sürücü | NPN transistor (2N2222) + diyot | ESP32 pininden motor direkt sürülmez |
| Pil | LiPo 150–300mAh | Boyut/ömür dengesi |
| Şarj Modülü | TP4056 (korumalı) Type-C | Güvenli şarj, kolay |
| Regülatör (ops.) | 3.3V LDO (MCP1700 vb.) | Daha stabil sensör beslemesi |
Not:
TP4056 “korumalı” olsun (DW01A’lı). Pil güvenliği şaka değil.
2) Şema / Bağlantı (Wiring) — Tek Tek, Net
Aşağıda “klips v1” için minimum bağlantı şeması var.
MPU6050 (I2C):
- VCC -> 3.3V
- GND -> GND
- SDA -> ESP32 GPIO21
- SCL -> ESP32 GPIO22
Titreşim Motoru (Transistör ile):
- Motor + -> Batarya + (veya 3.7V hattı)
- Motor - -> Transistör Collector
- Transistör Emitter -> GND
- ESP32 GPIO25 -> 1K direnç -> Transistör Base
- Motor uçlarına ters diyot (1N4148/1N4007) (geri EMF için)
Pil / Şarj:
- LiPo -> TP4056 B+ / B-
- TP4056 OUT+ / OUT- -> sistem beslemesi
- VCC -> 3.3V
- GND -> GND
- SDA -> ESP32 GPIO21
- SCL -> ESP32 GPIO22
Titreşim Motoru (Transistör ile):
- Motor + -> Batarya + (veya 3.7V hattı)
- Motor - -> Transistör Collector
- Transistör Emitter -> GND
- ESP32 GPIO25 -> 1K direnç -> Transistör Base
- Motor uçlarına ters diyot (1N4148/1N4007) (geri EMF için)
Pil / Şarj:
- LiPo -> TP4056 B+ / B-
- TP4056 OUT+ / OUT- -> sistem beslemesi
Mini Grafik: Motor Sürücü Mantığı
Kod:
GPIO25 HIGH -> Base akımı -> Transistör açılır -> Motor döner
GPIO25 LOW -> Transistör kapanır -> Motor durur
Diyot -> Motor kapandığında geri tepmeyi emer
3) BLE Protokol Standardı (TurkMMO Standardı™)
Cihazı “ürün” yapan şey protokol. Şimdi TurkMMO için basit ama sağlam bir standart koyuyoruz.
3.1 UUID’ler (Örnek)
Kod:
Service UUID: 6E400001-B5A3-F393-E0A9-E50E24DCCA9E
Notify Char UUID: 6E400003-B5A3-F393-E0A9-E50E24DCCA9E
Write Char UUID: 6E400002-B5A3-F393-E0A9-E50E24DCCA9E
3.2 Paket Formatı (Notify)
Kod:
Payload (binary, little-endian):
- u32 ts (Unix ms / veya saniye)
- u16 steps (adım)
- i16 ax,ay,az (ivme ölçekli)
- u8 batt (0-100)
- u8 motion (0-255)
- u8 flags (bit0:charging bit1:lowpower bit2:vibration_on)
Toplam: 4+2+6+1+1+1 = 15 byte (çok iyi)
3.3 Komutlar (Write)
Kod:
CMD 0x01: Vibrate pattern
[0x01][duration_ms u16][strength u8][repeat u8]
CMD 0x02: Set sample rate
[0x02][hz u8]
CMD 0x03: Set mode
[0x03][mode u8] // 0:normal 1:lowpower 2:game 3:sleep
CMD 0x04: Ping
[0x04] -> cihaz notify ile "pong" döner
4) Firmware (ESP32) — Çalışır İskelet
Aşağıdaki kod “tam ürün” değil ama:
- I2C sensör okur
- Basit motion score üretir
- BLE notify ile paket yollar
- Write komutuyla titreşim verir
ESP32 Arduino / PlatformIO (örnek iskelet)
Kod:
/*
TurkMMO Haptik Klips v1 - ESP32 iskelet
- Notify: 15 byte payload
- Write: komutlar (vibrate, mode vs.)
*/
#include <Arduino.h>
#include <Wire.h>
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>
static const char* SERVICE_UUID = "6E400001-B5A3-F393-E0A9-E50E24DCCA9E";
static const char* CHAR_UUID_WRITE = "6E400002-B5A3-F393-E0A9-E50E24DCCA9E";
static const char* CHAR_UUID_NOTIFY = "6E400003-B5A3-F393-E0A9-E50E24DCCA9E";
BLECharacteristic* pNotifyChar = nullptr;
#define MOTOR_PIN 25
// MPU6050 basit adres
#define MPU_ADDR 0x68
uint16_t steps = 0;
uint8_t motion = 0;
uint8_t batt = 80;
uint8_t flags = 0;
uint32_t NowMs(){ return millis(); }
void MotorVibrate(uint16_t durationMs, uint8_t strength, uint8_t repeat){
// strength: 0-255 -> basit PWM
ledcAttachPin(MOTOR_PIN, 0);
ledcSetup(0, 20000, 8);
for(int i=0;i<repeat;i++){
ledcWrite(0, strength);
delay(durationMs);
ledcWrite(0, 0);
delay(80);
}
}
void MPUInit(){
Wire.beginTransmission(MPU_ADDR);
Wire.write(0x6B); // PWR_MGMT_1
Wire.write(0x00); // wake up
Wire.endTransmission(true);
}
void ReadMPU(int16_t &ax,int16_t &ay,int16_t &az){
Wire.beginTransmission(MPU_ADDR);
Wire.write(0x3B); // ACCEL_XOUT_H
Wire.endTransmission(false);
Wire.requestFrom(MPU_ADDR, 6, true);
ax = (Wire.read()<<8) | Wire.read();
ay = (Wire.read()<<8) | Wire.read();
az = (Wire.read()<<8) | Wire.read();
}
// Çok basit motion score: |ax|+|ay|+|az| normalize
uint8_t ComputeMotion(int16_t ax,int16_t ay,int16_t az){
uint32_t v = (uint32_t)abs(ax) + (uint32_t)abs(ay) + (uint32_t)abs(az);
v = v / 512; // kaba ölçek
if(v > 255) v = 255;
return (uint8_t)v;
}
class CmdCallbacks : public BLECharacteristicCallbacks {
void onWrite(BLECharacteristic* pChar) override {
std::string v = pChar->getValue();
if(v.size() < 1) return;
uint8_t cmd = (uint8_t)v[0];
if(cmd == 0x01 && v.size() >= 6){
uint16_t dur = (uint8_t)v[1] | ((uint8_t)v[2] << 8);
uint8_t str = (uint8_t)v[3];
uint8_t rep = (uint8_t)v[4];
MotorVibrate(dur, str, rep);
}
else if(cmd == 0x03 && v.size() >= 2){
uint8_t mode = (uint8_t)v[1];
// flags veya sampling ayarı burada değişir
}
}
};
void BuildAndNotify(int16_t ax,int16_t ay,int16_t az){
uint8_t payload[15];
uint32_t ts = NowMs();
// Little-endian pack
payload[0]=ts; payload[1]=ts>>8; payload[2]=ts>>16; payload[3]=ts>>24;
payload[4]=steps; payload[5]=steps>>8;
payload[6]=ax; payload[7]=ax>>8;
payload[8]=ay; payload[9]=ay>>8;
payload[10]=az; payload[11]=az>>8;
payload[12]=batt;
payload[13]=motion;
payload[14]=flags;
pNotifyChar->setValue(payload, sizeof(payload));
pNotifyChar->notify();
}
void setup(){
pinMode(MOTOR_PIN, OUTPUT);
digitalWrite(MOTOR_PIN, LOW);
Wire.begin(21,22);
MPUInit();
BLEDevice::init("TurkMMO-KlipsV1");
BLEServer* pServer = BLEDevice::createServer();
BLEService* pService = pServer->createService(SERVICE_UUID);
BLECharacteristic* pWriteChar = pService->createCharacteristic(
CHAR_UUID_WRITE,
BLECharacteristic::PROPERTY_WRITE
);
pWriteChar->setCallbacks(new CmdCallbacks());
pNotifyChar = pService->createCharacteristic(
CHAR_UUID_NOTIFY,
BLECharacteristic::PROPERTY_NOTIFY
);
pNotifyChar->addDescriptor(new BLE2902());
pService->start();
BLEAdvertising* pAdvertising = BLEDevice::getAdvertising();
pAdvertising->addServiceUUID(SERVICE_UUID);
pAdvertising->start();
}
void loop(){
int16_t ax,ay,az;
ReadMPU(ax,ay,az);
motion = ComputeMotion(ax,ay,az);
// çok kaba adım mantığı (örnek): motion yükselince say
static uint8_t prev = 0;
if(motion > 60 && prev <= 60) steps++;
prev = motion;
static uint32_t lastSend = 0;
if(millis() - lastSend > 1000){
lastSend = millis();
BuildAndNotify(ax,ay,az);
}
delay(20);
}
Not: Bu kod “ilk çalışan demo”. Pil optimizasyonunu 7. bölümde yapacağız.
5) Flutter App (Minimum) — Cihazı Bul, Bağlan, Veri Göster
Flutter tarafında hedef:
- Scan → connect
- Notify dinle → payload parse
- Butonla titreşim komutu gönder
Flutter’da en yaygın paket: flutter_blue_plus.
Buraya “tam kod” dökebilirim ama forumda devasa olur.
O yüzden net bir iskelet veriyorum:
lib/
main.dart
ble/ble_scan.dart
ble/ble_device.dart
model/payload.dart
ui/dashboard.dart
main.dart
ble/ble_scan.dart
ble/ble_device.dart
model/payload.dart
ui/dashboard.dart
Payload parse örneği (mantık)
Kod:
// bytes -> ts, steps, ax, ay, az, batt, motion, flags
// little-endian decode
İstersen bir sonraki mesajda Flutter’ın “tam çalışan” örnek kodunu da döşerim (scan+notify+write).
6) Test / Debug Planı (Göz Kararı Değil, Sistematik)
- Aşama 1: nRF Connect ile bağlan → notify geliyor mu?
- Aşama 2: Write ile 0x01 titreşim komutu at → motor çalışıyor mu?
- Aşama 3: Sensör değerini hareket ettir → motion artıyor mu?
- Aşama 4: 1 saat açık bırak → kopma var mı?
Kayıt Tablosu (Test Log)
| Test | Beklenen | Sonuç | Not |
|---|---|---|---|
| Notify 1Hz | Sürekli paket | OK/FAIL | Kopma? |
| Vibrate cmd | Motor çalışır | OK/FAIL | Güç yetti mi? |
7) Optimizasyon (Pil Ömrü 3 Kat) — Gerçek “Wearable” Burada Başlar
Şu an demo kod “çok konuşkan”.
Şimdi “giyilebilir” seviyesine indiriyoruz.
7.1 BLE Ayarı
- Connection interval yükselt (ör: 30–50ms değil, 100–200ms)
- Notify’ı 1Hz yerine 0.2Hz (5 saniyede 1) yap
7.2 Sensör Duty Cycle
- IMU’yu sürekli 200Hz okuma
- Normal mod: 25–50Hz yeter
- Low power mod: 10Hz + daha seyrek gönderim
7.3 Sleep Modu
ESP32’de bile “light sleep” kullanabilirsin.
nRF52’ye geçtiğinde deep sleep zaten efsane olur.
Mini Grafik: Optimizasyon Etkisi
Kod:
Pil Ömrü
+%10 -> BLE interval
+%20 -> Notify seyrekleştirme
+%25 -> Sensör örnekleme düşürme
+%40 -> Sleep modları
Toplam -> 2-3X (gerçekçi)
8) Güvenlik (Minimum “Anti-Spam / Anti-Hijack”)
Ürün gibi olsun istiyorsan:
- Pairing zorunlu
- İlk eşleşmeden sonra sadece bonded cihaz kabul
- Komutlarda basit “token”
Basit token örneği:
Kod:
CMD paketinin sonuna 2 byte token ekle:
token = (ts ^ 0xBEEF) & 0xFFFF
Uygulama da aynı tokenı hesaplar.
Yetkisiz komutlar çöpe gider.
Bu “askeri” değil ama “yan masadaki biri titreşim bastı” tarzı saçmalığı keser.
9) Ürünleşme: 3D Kasa + Topluluk Standardı
Topluluk projesi yapacaksak standart şart:
- Kasa standardı: 2 vidalı kapak + silikon conta
- Pin standardı: I2C + motor + batarya hatları sabit
- UUID standardı: herkes aynı service/char kullanır
- Komut standardı: 0x01 titreşim, 0x02 rate, 0x03 mode…
10) Sonraki Aşama (BÖLÜM 3): “Bileklik v2 + Ekran + OTA + Log”
Eğer bu v1 çalıştıysa sonraki bölümde şunları ekliyoruz:
- OLED ekran dashboard
- OTA firmware update
- CSV export + grafik ekranı (app içinde)
- Crash log + reboot counter
- nRF52’ye geçiş (pil canavarı)
TurkMMO için mini görev:
Bu postu gören herkes şu 3 şeyi yazsın:
- ESP32 mi nRF52 mi kullanıyorsun?
- Form faktör: klips mi bileklik mi?
- Hedef: sessiz alarm mı hareket skoru mu?
```0
En Çok Reaksiyon Alan Mesajlar
PAYLAŞIM İÇİN TEŞEKKÜRLER,ELİNE SAĞLIK.
- Katılım
- 1 Tem 2019
- Konular
- 1,893
- Mesajlar
- 5,201
- Çözüm
- 134
- Online süresi
- 1mo 8d
- Reaksiyon Skoru
- 4,001
- Altın Konu
- 140
- Başarım Puanı
- 339
- MmoLira
- 39,500
- DevLira
- 150
PAYLAŞIM İÇİN TEŞEKKÜRLER,ELİNE SAĞLIK.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 2
- Görüntüleme
- 41
- Cevaplar
- 2
- Görüntüleme
- 58
- Cevaplar
- 2
- Görüntüleme
- 44















