Macademia'nın robotik ve mühendislik programı · ücretsiz seviye tespiti ve kişisel öğrenme yolu

Sensör Verisinden Makine Öğrenmesi Tahmini: tüm simülasyonlar

Her simülasyon tarayıcında, deterministik olarak, hesap ve donanım gerekmeden çalışır. Her biri bir üniteye bağlı; notlar, kod ve quiz için üniteyi aç.

Sensör kaydedici: seradan zaman serisi

DHT22, BME280, LDR ve HC-SR04'ü seranın içine koy ve kaydet. Örnekleme aralığını, gürültüyü, okunamayan örnek ve sıçrama oranını değiştir; kaydı CSV olarak indir. Aynı tohum her seferinde aynı veriyi verir.

DHT22 sıcaklık (ham, sıçramalar grafik kenarında kesilir), arıza penceresi gölgeli814.52127.53401.42.84.25.596.99gün°C
Nem ve ışık-8.0921.250.679.9109.301.42.84.25.596.99gün
dakikasaatsicakliknembasincisikmesafeariza
0020.1890.931017.362921.730
100.1719.7190.381017.45021.910
200.33NaNNaN1017.321021.870
300.519.8590.581017.59021.640
400.6719.3589.841017.311521.90
1008 satır · 16 okunamayan (NaN) · 7 sıçrama (85 / −40 °C) · arıza penceresinde 36 örnek Bu ayarlar tam olarak sera-sensorleri.csv'yi verir.

1. ünite: Sensörden zaman serisine: seradan veri toplamak

Temizleme tezgâhı: aykırı değer, eksik veri, yumuşatma

Ham sıcaklığa üç adım uygula: aykırı değerleri bul (z-skoru, IQR, Hampel), boşlukları doldur (ileri doldurma, doğrusal ara değer), yumuşat (hareketli ortalama, medyan, üstel). Simülatör gerçek sıcaklığı da bildiği için her adımın hatası ölçülür.

2. gün: ham (gri), temiz (renkli), gerçek (kesikli); halkalar işaretlenen aykırı değerler1015.52126.53204.779.5314.319.123.8saat°C
18 nokta işaretlendi, gerçek 7 sıçramanın 7 tanesi yakalandı · kalan boşluk 0 Gerçeğe göre RMSE (7 gün): doldurmadan sonra 0,250 °C · yumuşatmadan sonra 0,250 °C

2. ünite: Temizleme: aykırı değer, eksik veri ve yumuşatma

1B Kalman süzgeci: Q ve R ile oyna

Gürültülü bir ölçüm, bir model ve iki sayı: süreç gürültüsü Q (değer ne kadar hızlı değişebilir) ve ölçüm gürültüsü R (sensöre ne kadar güvenilir). Kazanç K'nın nasıl oturduğunu ve aynı kazançlı üstel ortalamayla farkı gör.

Ölçüm (gri), Kalman kestirimi, gerçek (kesikli)11.715.318.922.526.109.5719.128.738.347.8saat°C
İlk 60 örnekte Kalman kazancı K00.250.50.751011.823.635.447.259K∞
K∞ = 0,426 (aynı değerli EMA α'sı) Gerçeğe göre RMSE: ham 0,490 · Kalman 0,339 · EMA(α = K∞) 0,344 °C
Sensör σ ≈ 0,50 °C → uygun R = σ² ≈ 0,250

3. ünite: Kalman süzgecine giriş: modele mi ölçüme mi güvenmeli

Veri analizi panosu: seri, histogram, korelasyon

Temizlenmiş veriyi üç bakışla incele: zaman serisi ve günlük profil, histogram, değişkenler arası korelasyon ısı haritası. Altta Welford yöntemiyle cihaz üstünde, diziyi saklamadan hesaplanan ortalama, σ, en küçük ve en büyük değer.

sıcaklık (°C), 7 gün, temiz1216.821.626.431.201.42.84.25.596.99gün
Günlük profil (saate göre ortalama)02468101214161820228.410saat 0–23Histogram131517182022232527281660adet
rsıcaklıknembasınçışıksu mesafesi
sıcaklık1,00-0,98-0,110,71-0,05
nem-0,981,000,14-0,710,04
basınç-0,110,141,00-0,050,11
ışık0,71-0,71-0,051,00-0,15
su mesafesi-0,050,040,11-0,151,00
Welford (cihazda, O(1) bellek) n = 1008 ortalama = 21,1 °C σ = 3,79 min = 13,3 · max = 29,9
Sıcaklık ile nem r = -0,98: korelasyon nedensellik değildir, ikisi de güneşi izler.

4. ünite: Gömülü veri analizi ve görselleştirme

Özellik tablosu kurucu

Hangi gecikmeleri, kayan pencereyi ve saat bilgisini kullanacağını seç; hedef ufku (kaç adım sonrası) ayarla. Tablonun ilk satırlarını ve her özelliğin hedefle korelasyonunu gör. "Sızıntılı özellik"i açıp geleceği gören bir özelliğin sahte başarısını izle.

Her özelliğin hedefle korelasyonu (|r|)templag1lag2lag3lag6mean6std6hour_sinhour_coslight0.940
ttemptemp_lag1temp_lag2temp_lag3temp_lag6temp_mean6temp_std6hour_sinhour_coslighty (t+6)
619,8119,1419,3519,8520,1819,610,270,260,970,0019,23
719,3319,8119,1419,3519,7119,540,280,300,950,0219,25
819,7719,3319,8119,1419,7819,540,280,340,940,0019,20
919,2619,7719,3319,8119,8519,440,250,380,920,0018,93
1019,5219,2619,7719,3319,3519,470,250,420,910,0219,64
996 satır × 10 özellik (NaN'lı satırlar atıldı) · zamana göre bölmede test RMSE 0,681 °C, "değişmez" tabanı 1,239 °C
Gecikmeler (örnek, her biri 10 dk)

5. ünite: Özellik mühendisliği: zaman serisinden tablo

Eğit ve değerlendir: regresyon ve sınıflandırma

Sıcaklığı h adım sonrası için doğrusal (ridge) modelle tahmin et ya da "1 saat sonra 26 °C'yi aşacak mı?" sorusunu karar kütüğüyle sınıflandır. Rastgele bölme, zamana göre bölme ve kayan pencereli doğrulamayı karşılaştır; "değişmez" tabanını geçebiliyor musun?

Test örnekleri (zaman sırasıyla son 2 gün): gerçek ve tahmin15.719.623.527.431.35.235.575.926.266.616.95gün°C
1 kat, 249 test örneği · model: MAE 0,546, RMSE 0,681 °C, R² 0,959 "Değişmez" tabanı: RMSE 1,239 °C

6. ünite: Eğit ve değerlendir: ridge, karar kütüğü ve dürüst doğrulama

Modeli mikrodenetleyiciye taşı: C kodu üreteci

Eğitilmiş ağırlıklardan C fonksiyonu üret: ESP32 için float, FPU'su olmayan Uno için sabit noktalı tamsayı (Q-biçimi). Q bit sayısını değiştir; nicemleme hatasını, int32 taşma payını, bellek ve süre tahminini gör.

// 741 satırda eğitildi, ufuk 60 dk, Q12, girdiler ×100 #include <stdint.h> #define Q 12 static const int32_t W[10] = { 3633, 1424, 400, -689, -732, -482, 2906, 2577, 3169, 15184 }; static const int32_t B = 638926; int16_t predict_temp_c(int16_t temp, int16_t temp_lag1, int16_t temp_lag2, int16_t temp_lag3, int16_t temp_lag6, int16_t temp_mean6, int16_t temp_std6, int16_t hour_sin, int16_t hour_cos, int16_t light) { const int16_t x[10] = { temp, temp_lag1, temp_lag2, temp_lag3, temp_lag6, temp_mean6, temp_std6, hour_sin, hour_cos, light }; int32_t acc = B; for (uint8_t i = 0; i < 10; i++) acc += W[i] * (int32_t)x[i]; return (int16_t)(acc >> Q); }
Float'a göre nicemleme hatası: en çok 0,0368 °C, ortalama 0,0133 °C En kötü toplam 25.919.164 / 2 147 483 647 (%1,2) → int32'ye sığar
10 ağırlık: 44 B · Uno yazılım float ≈ 88 µs, Uno sabit nokta ≈ 25 µs, ESP32 FPU ≈ 0,17 µs / tahmin

7. ünite: Modeli mikrodenetleyiciye taşı: ağırlıklardan C koduna

Sıcaklık tahmini ve anomali uyarısı

Model ilk dört günde (arızasız) eğitilir, sonra her örnekte tahmin artığının z-skoru hesaplanır. Açma ve kapama eşiği (histerezis), ardışık örnek sayısı ve bekleme süresiyle uyarıyı ayarla: 5. gündeki ısıtıcı arızasını yakala, yanlış alarmı az tut.

Gerçek ve tahmin sıcaklık (1–4. günlerde eğitildi)1216.821.626.431.20.061.452.834.225.616.99gün°C
Artık z-skoru, eşikler ve uyarılar (halkalar)-8-327120.061.452.834.225.616.99açkapagün
Isıtıcı arızası 50 dk sonra YAKALANDI · 2 yanlış alarm · toplam 4 uyarı · eğitim artığı σ = 0,388 °C

8. ünite: Sıcaklık tahmini ve anomali uyarısı: bitirme projesine hazırlık

3B sera: ölçüm, tahmin ve anomali

Yedi günlük sera verisini 3B serada oynat. Yatakların rengi sıcaklığı, direkteki etiket gerçek ve tahmin değerini, öndeki sütunlar son iki saatin tahmin artığını gösterir. 5. günde ısıtıcı takılınca artık büyür, fener sarıdan kırmızıya döner.

3B sahne yükleniyor…

Sürükle: döndür · iki parmak / tekerlek: yakınlaş · sağ tuş: kaydır

5. gün 08:00 · gerçek 19,15 °C, tahmin (30 dk önce) 18,72 °C, z = 1,10 Durum: normal
7 günde uyarılar: 3. gün 08:30, 4. gün 08:30, 5. gün 13:50, 5. gün 19:10

1. ünite: Sensörden zaman serisine: seradan veri toplamak

Esc
  • PanelAna sayfaSayfa
  • ModüllerTüm modüllerSayfa
  • ParçalarParça ansiklopedisiSayfa
  • Mühendislik yoluBüyükler için robotik: 128 parça, 7 seviyeSayfa
  • Robotik dersi (ESOF 323)Üniversite robotik dersi, 14 haftaSayfa
  • Drone dersiBüyükler için: parça, simülasyon, yazılım; 10 üniteSayfa
  • Blok atölyesiSerbest blok programlamaAraç
  • Devre laboratuvarıSanal Arduino ve devreAraç
  • Robot arenasıSanal robot sürüşüAraç
  • OyunlarBloklarla 8 öğretici oyunAraç
  • Mikro Kart atölyesiSanal LED kartı bloklarla programlaAraç
  • Robot atölyesiMikro Kart'ı robota tak, bloklarla görev yapAraç