Okullar için Robotik ve Mühendislik · anaokulundan liseye

ESP32 ile Nesnelerin İnterneti: 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ç.

ESP32 pin planlayıcı

Bir projenin her bağlantısı için pin ve görev seç (çıkış, giriş, ADC, PWM, I²C, DAC, dokunma). Planlayıcı flash pinlerini, yalnız-giriş pinlerini, açılış (strapping) pinlerini ve Wi-Fi açıkken çalışmayan ADC2'yi işaretler.

BağlantıGörevGPIODenetim
DHT22 veriUygun
LDR (ışık)Uygun
Toprak nemiÇalışmaz
ADC2 kanalı: Wi-Fi açıkken analogRead çalışmaz. ADC1 (32–39) kullan.
Pompa rölesiUygun
Pencere servosuDikkat
GPIO 12 açılışta HIGH ise flash gerilimi 1,8 V seçilir, kart açılmayabilir.
BME280 / OLED SDAUygun
BME280 / OLED SCLUygun
1 hata, 1 uyarı
analogRead = 2048 ≈ 1,55 V (11 dB) Uno: 317 / 1023 (5 V)

1. ünite: ESP32'ye giriş: Uno'dan bağlı karta

Wi-Fi bağlantı durumları ve yeniden bağlanma

Erişim noktası bir süre kapanır, sinyal zayıflar. Sabit beklemeyle ve üstel geri çekilmeyle yeniden bağlanmayı karşılaştır: deneme sayısı, kopuk kalınan süre ve AP geri gelince toparlanma süresi.

  • bağlı WL_CONNECTED
  • bağlanıyor WL_IDLE_STATUS
  • bekliyor WL_DISCONNECTED
  • AP yok WL_NO_SSID_AVAIL
Bağlı (1) ya da değil (0), AP kesintisi gölgeli-0.10.230.550.881.2023.947.871.795.6119.5s
Üstel geri çekilme: 6 deneme, 1 kopma, kopuk 43,2 s, AP dönünce 16,3 s'de toparlandı Sabit bekleme: 10 deneme, 1 kopma, kopuk 29,8 s, AP dönünce 2,9 s'de toparlandı
t = 30 s WiFi.status() → WL_DISCONNECTED (bekliyor)

2. ünite: Wi-Fi: bağlanmak, kopmak, yeniden bağlanmak

REST oyun alanı: ESP32 web sunucusu

Seradaki ESP32'nin küçük REST API'sine istek gönder: GET /api/sensor, PUT /api/led, POST /api/schedules. Ham HTTP isteğini ve yanıtını, durum kodlarını (200, 201, 400, 401, 404, 405, 422) ve JSON gövdeyi gör.

Ham HTTP isteği burada görünür.
Ham HTTP yanıtı burada görünür.
Cihaz durumu: LED kapalı · zamanlamalar: –
  1. –Henüz istek yok

3. ünite: HTTP, REST ve JSON: ESP32 bir web sunucusu

Tarayıcıda MQTT broker'ı

Üç simüle cihaz ve bir pano aynı broker'a bağlı. Joker karakterli (+ ve #) abonelikler kur, mesaj yayımla, kalıcı (retained) mesajı ve bir cihazın kablosunu çekince yayımlanan son vasiyeti (LWT) izle.

sera-01
sera/01/led/set Q1
sera-02
sera/02/fan/set Q1
sera-03
abonelik yok
pano
abonelik yok
  1. –Bir şey yayımla ya da cihazlara telemetri gönderttir.
Broker'da kalıcı: sera/01/durum = online · sera/02/durum = online · sera/03/durum = online
Süzgeç sınaması: "sera/#" × "sera/02/nem" → EŞLEŞİR

4. ünite: MQTT temelleri: broker, konular ve jokerler

QoS 0, 1, 2: kayıplı bağlantıda teslim

Paket kaybı oranını artır ve aynı 20 mesajı üç QoS düzeyiyle gönder. Kaybolan, yinelenen ve teslim edilen mesajları, toplam paket sayısını ve her mesajın el sıkışma dizisini gör.

QoSTeslimKayıpYinelenenPaket
0 at most once16/204020
1 at least once20/200459
2 exactly once20/2000106
QoS başına hattaki paketQoS 0QoS 1QoS 21060
  1. #1gönderen → broker PUBLISH kayboldu
  2. #1gönderen → broker PUBLISH DUP kayboldu
  3. #1gönderen → broker PUBLISH DUP
  4. #1broker → gönderen PUBACK
  5. #2gönderen → broker PUBLISH
  6. #2broker → gönderen PUBACK
  7. #3gönderen → broker PUBLISH
  8. #3broker → gönderen PUBACK
  9. #4gönderen → broker PUBLISH
  10. #4broker → gönderen PUBACK
  11. #5gönderen → broker PUBLISH
  12. #5broker → gönderen PUBACK kayboldu
  13. #5gönderen → broker PUBLISH DUP
  14. #5broker → gönderen PUBACK
  15. #6gönderen → broker PUBLISH kayboldu
  16. #6gönderen → broker PUBLISH DUP
  17. #6broker → gönderen PUBACK
QoS 1 PUBACK gelene kadar yeniden yollar: PUBACK kaybolursa alıcı aynı mesajı iki kez alır. QoS 2 paket kimliğini saklar, uygulamaya bir kez verir.

5. ünite: MQTT güvenilirliği: QoS, kalıcı mesaj, son vasiyet

Sensörden buluta: yük ve trafik hesabı

DHT22/BME280 okumasını JSON, CSV ya da 8 baytlık ikili yük olarak gönder. Yayın aralığı, QoS, TLS ve "değişince bildir" ölü bandıyla paket boyutunu, günlük mesaj ve veri miktarını hesapla.

PUBLISH sera/01/olcum QoS 0 {"id":"sera-01","t":24.6,"h":48.7,"p":1015,"l":888} yük 51 B · MQTT paketi 68 B
Bir günlük sıcaklık; noktalar gerçekten yayımlanan örnekler14.617.921.124.327.604.89.5914.419.224saat°C
Her örnek: günde 1440 mesaj, 192,7 KB/gün, ayda 5,6 MB Değişince bildir: günde 615 mesaj (%43), 82,3 KB/gün

6. ünite: Sensörden buluta: okuma, yük biçimi ve trafik

Uzaktan eyleyici: idempotent komut ve cihaz gölgesi

Kayıplı bir bağlantıda röleye 20 komut gönder. "Çevir" (toggle) komutu yinelenen teslimde durumu bozar; "ayarla" (set) ve komut kimliği bozmaz. Altta istenen/bildirilen gölge farkını gör.

KomutSon röleBeklenenUygulananSonuç
toggle ("çevir")KAPALIKAPALI24doğru
set {"on": true/false}KAPALIKAPALI24doğru
set + komut kimliğiKAPALIKAPALI20doğru
Bağlantı: 20 komutta 4 yinelenen, 0 kayıp teslim.

Cihaz gölgesi

{ "desired": { "role": 1, "servo": 90 }, "reported": { "role": 0, "servo": 0 }, "delta": { "role": 1, "servo": 90 } }

7. ünite: Uzaktan eyleyiciler ve canlı pano

Canlı pano: halka tampon, seyreltme, uyarı

Üç cihazdan gelen telemetriyi canlı çiz. Halka tampon boyutunu ve ekrana çizilecek nokta sayısını değiştir; min/max seyreltmenin tepeleri koruduğunu ve histerezisli eşik uyarısını izle.

sera-01: 17,1 °C17,1°Csera-01sera-02: 16,3 °C16,3°Csera-02sera-03: 15,9 °C15,9°Csera-03
Seyreltilmiş canlı sıcaklık, uyarı eşiği kesikli15.217.820.523.125.700.20.40.60.81açkapa°C
Tampon 1/360 örnek (her biri 2 dk) → seri başına 1 nokta çiziliyor sera-01 uyarısı: kapalı, tamponda 0 kez açıldı
Bellek: 3 × 360 × 4 B = 4,2 KB

7. ünite: Uzaktan eyleyiciler ve canlı pano

Güç bütçesi: derin uyku ve pil ömrü

Sürekli açık, modem uykusu, hafif uyku ve derin uyku kiplerini karşılaştır. Uyanma aralığı, uyanık kalma süresi, pil kapasitesi ve kartın uyku akımıyla ortalama akımı ve pil ömrünü hesapla.

Kip başına pil ömrü (gün, aynı aralık ve pil)açıkmodemhafifderinDevKit176.90
Derin uyku (yalın modül) Ortalama akım 0,490 mA → pil ömrü ≈ 177 gün (%80 kullanılabilir kapasite)
I = (Iawake · tawake + Isleep · tsleep) / T
Uyanık 120 mA, uyku 10 µA

8. ünite: Güç, derin uyku ve kablosuz güncelleme (OTA)

OTA güncelleme: A/B bölümleri ve geri dönüş

Yeni yazılımı çalışmayan bölüme indir, doğrula, yeniden başlat. Kendi sınamasını geçemeyen sürümün eski bölüme geri döndüğünü ve geçersiz olayların durumu değiştirmediğini adım adım izle.

ota_0 (A)
v1.4.0
çalışıyorönyükleme
ota_1 (B)
v1.3.2
Aşama: boşta · gelen v1.5.0
  1. –"Güncellemeyi başlat"a bas.

8. ünite: Güç, derin uyku ve kablosuz güncelleme (OTA)

IoT güvenlik denetimi ve MQTT ACL

Bir cihaz kurulumunu denetle (TLS, sertifika doğrulama, anonim erişim, ortak parola, depodaki sırlar, imzalı OTA) ve risk puanını düşür. Altta Mosquitto tarzı ACL yaz ve hangi kullanıcının hangi konuya yazabildiğini sına.

risk: 100 /100100/100risk
  • Trafik düz metin: parola ve veriler ağda okunur.
  • Broker herkese açık: herkes abone olup komut yayımlayabilir.
  • Tek cihaz ele geçerse hepsi ele geçer; tek cihazı iptal edemezsin.
  • Sır git geçmişinde: silmek yetmez, parolayı değiştir.
  • ACL yok: bir cihaz başka cihazın komut konusuna yazabilir.
  • İmzasız OTA: ağdaki herkes cihaza yazılım yükleyebilir.
  • Hata ayıklama kapısı açık: fiziksel ya da ağ erişimiyle sırlar okunur.
  • Sertifika doğrulanmıyor: araya giren saldırgan broker gibi davranabilir.
kullanıcı / istemcikonuişlemkarar
sera-01 / sera-01sera/01/sicaklikwriteizin (satır 4)
sera-01 / sera-01sera/02/fan/setwriteret
pano / pano-websera/02/fan/setreadizin (satır 8)
pano / pano-websera/02/fan/setwriteizin (satır 9)
admin / clisera/03/kapi/acwriteret (satır 12)
sera-03 / sera-03clients/sera-03/durumwriteizin (satır 2)
REDDEDİLDİ · eşleşen kural yok

9. ünite: IoT güvenliği ve Bluetooth Low Energy

BLE: GATT hizmetleri ve reklam aralığı

Çevresel algılama, pil ve özel LED hizmetinin özelliklerini oku ve yaz; değerin küçük-endian baytlarını gör. Reklam aralığı ve verici gücüyle ortalama akımı, keşif süresini ve düğme pil ömrünü karşılaştır.

Hizmet / özellikUUIDÖzellikler
Çevresel algılama0x181A
↳ Sıcaklık0x2A6Eread, notify
↳ Bağıl nem0x2A6Fread, notify
Pil0x180F
↳ Pil düzeyi0x2A19read, notify
LED (özel hizmet)19b10000…
↳ LED durumu19b10001…read, write
Sıcaklık = 23.45 havada (küçük-endian): 29 09 çözülen: 23.45
Reklam aralığına göre düğme pil (CR2032) ömrü, gün201002505001s2s5s10.24s1.5k0
500 ms'de bir, 0 dBm reklam: ortalama ≈ 35,0 µA, telefon ≈ 385 ms'de bulur, CR2032 ≈ 268 gün

9. ünite: IoT güvenliği ve Bluetooth Low Energy

Akıllı sera: kural motoru

EĞER … İSE … kurallarıyla pencere, fan, ısıtıcı, sulama ve alarmı yönet. 24 saatlik sera gününü dış hava ve bulutlulukla benzet; konfor yüzdesi, aşırı sıcak/soğuk dakika, röle anahtarlama sayısı ve enerjiyle kurallarını puanla.

Sera günü: sıcaklık, nem, toprak nemi; seçilen eyleyicinin açık olduğu yer gölgeli1.2825.65074.498.704.789.5714.319.123.9saat
Konfor (18–30 °C): %62,6 · aşırı sıcak 0 dk · aşırı soğuk 0 dk · kuru toprak 0 dk Anahtarlama: pencere 2, fan 0, isitici 4, sulama 4, alarm 0 · enerji 6,31 kWh Puan: 47
10 kural geçerli

10. ünite: Akıllı ev ve akıllı sera: kural motoru ve sistem mimarisi

3B akıllı sera: cihazlar, broker ve MQTT paketleri

Seranın 24 saatini kural motoruyla oynat. Sensör düğümü her 10 dakikada sıcaklık yayımlar, eyleyici düğümü durum değiştirince kalıcı durum mesajı yollar; her paket broker'dan geçerek abonelerine uçar. Panodan elle komut gönder, pencere, fan, ısıtıcı ve sulamanın sahnede değiştiğini izle.

3B sahne yükleniyor…

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

  • telemetri
  • komut
  • durum (retained)
11:00 · içeride 26,8 °C, dışarıda 22,0 °C, toprak %54 pencere kapalı · fan kapalı · ısıtıcı kapalı · sulama kapalı · havada 2 paket
  1. 11:00sera/01/sicaklik 26.8 sensor → broker → actuator, dashboard
  2. 10:50sera/01/sicaklik 26.2 sensor → broker → actuator, dashboard
  3. 10:40sera/01/sicaklik 25.7 sensor → broker → actuator, dashboard
  4. 10:30sera/01/sicaklik 25.1 sensor → broker → actuator, dashboard
Panodan elle komut
Komut paketi pano → broker → eyleyici yolunu izler. Cihazdaki kurallar bir sonraki değişimde yeniden karar verir: hangisi kazanmalı, düşün (10. ünite).

4. ünite: MQTT temelleri: broker, konular ve jokerler

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ç