Gömülü IoT Geliştiricisinin Alet Çantasında Ustalaşmak
- Gömülü Geliştiriciler için Beceri Setleri
- 1 – C/C++
- 2 – ESP-IDF (native) veya Arduino-ESP32
- 3 – FreeRTOS Temelleri
- 4 – Git ve GitHub/GitLab
- 5 – VS Code
- 6 – PlatformIO
- 7 – Linux CLI / WSL
- 8 – Unit-Test Framework’ü (Unity / CppUTest)
- 9 – Continuous Integration (GitHub Actions / GitLab CI)
- 10 – Jira ve Confluence
- 11 – Dijital ve Analog Elektronik
- 12 – PCB Tasarımı (KiCad / Altium)
- 13 – Güç Bütçeleme ve Güneş–Li-ion Şarjı
- 14 – Batarya Yönetimi (18650)
- 15 – Hücresel Haberleşme (SIMCom AT, PPP, TCP/IP)
- 16 – IoT Protokolleri (MQTT / HTTPS)
- 17 – TLS / mbedTLS Güvenlik Temelleri
- 18 – Sensör Kalibrasyonu ve Kompanzasyon
- 19 – Veri Kaydı ve OTA Depolama
- 20 – Uzaktan OTA Güncelleme Akışı
- 21 – Kontrol ve Kestirim Teorisi
- 22 – Python / Bash Scripting
- 23 – Cloud ve Dashboard Temelleri
- 24 – Regülasyon ve Çevresel Uyumluluk
- 25 – Dokümantasyon Araçları (Markdown, Doxygen)
5’ten 1’e Ölçek
Günümüzün hiper bağlantılı dünyasında bir gömülü geliştirici firmware’i, donanımı, radyo bağlantılarını ve cloud iş akışlarını aynı anda çevirmek zorunda. Tek bir parçayı atlayın, o “hızlı” firmware dokunuşu haftalarca sürecek bir debug maratonuna dönüşebilir. Biz bunu zor yoldan öğrendik: ESP32, SIMCom hücresel bağlantı ve AWS IoT Core üzerine kurulu, güneş enerjili bir toprak izleme düğümünü sahaya çıkarırken. Bu deneyim bir gerçeği net biçimde ortaya koydu: öğrenme planınız, malzeme listenizi (BOM) birebir yansıtmak zorunda.
Planı odaklı tutmak için her yetkinliği 5’ten 1’e bir ölçekle derecelendiriyoruz — teknolojiden tamamen bağımsız bir çerçeve:
Seviye
Ne anlama geliyor
Neden önemli
5 = Olmazsa olmaz
Temel dil, vazgeçilmez araçlar, temel kavramlar
Bunlar olmadan ürün çıkaramazsınız
4 = Optimize ediciler
CI/CD, otomatik test, güvenlik sıkılaştırma, performans ayarı
Prototipi sağlam ürüne dönüştürür
3 = İş akışı hızlandırıcılar
Dashboard’lar, ileri debugging, cloud operasyonları
Günlük geliştirmeyi akıcılaştırır
2 = Olsa iyi olur
İleride isteyeceğiniz özelleşmiş yetenekler
Vakit buldukça cila katın
1 = Uzmanlıklar
Niş alanlar veya gelecekteki ölçekleme için derin dalışlar
Kullanım senaryosu gerektirdiğinde el atın
Bu ölçeği her yerde nasıl uygularsınız
- Nihai hedefi tanımlayın. “İşe hazır” ya da “üretime hazır” tam olarak neye benziyor?
- 5’leri listeleyin. Mutlak hayatta kalma kiti.
- 4’leri belirleyin. Çözümü sağlamlaştıran ve ölçekleyen pratikler.
- 3’leri doldurun. Hayat kalitesi araçları ve optimizasyonlar.
- 2’leri ve 1’leri ekleyin. Daha büyük ekipler veya ileri özellikler için özelleşmiş derinlik.
Her alana taşınabildiğinin kısa kanıtı
- Front-End Web Geliştirme → 5’ler: HTML/CSS, modern JS, Git… • 4’ler: React/Vue, TypeScript, Jest, CI/CD… • 3’ler: Storybook, e2e testleri… • 2’ler: PWA’lar, animasyonlar… • 1’ler: WebGL, veri görselleştirme.
- Veri Bilimi / MLOps → 5’ler: Python, NumPy/Pandas, istatistik… • 4’ler: TensorFlow/PyTorch, Docker, unit testler… • 3’ler: Feature store’lar, MLflow… • 2’ler: Edge inference… • 1’ler: Federated learning.
Her konuyu etkisine ve kullanım sıklığına göre puanladığınızda önünüze net bir yol çıkar, boğulma hissinden kurtulursunuz.
ESP32 + SIM + AWS yığınımızda 5’ler neye benziyor
- C/C++ akıcılığı – ESP-IDF’in ve FreeRTOS hook’larının dili.
- ESP-IDF (veya Arduino-ESP32) hakimiyeti – Wi-Fi, BLE, ADC, deep-sleep API’leri.
- Elektronik temelleri – SIM UART’larında level-shifting, NPK problarını okumak, EMI hijyeni.
- Güç bütçeleme ve Li-ion/güneş şarjı – 4 Ah’lik bir 18650’yi bulutlu haftalar boyunca hayatta tutmak.
- Sağlam bağlantı (Wi-Fi, SIM AT, MQTT/TLS) – sensör verisini AWS’e güvenli biçimde akıtmak.
Bu beşinde ustalaşın, çalışan bir prototip çıkarabilirsiniz. 4’lere tırmanın — CI pipeline’ları, ileri FreeRTOS, OTA, güvenlik — sahada ayakta kalan bir ürününüz olur. 3’ler, 2’ler ve 1’ler ise profesyonel alet çantasını dashboard’lar, uyumluluk ve alana özgü derinlikle tamamlar.
Devamındaki yazı bir kontrol listesi değil; gerçek donanım seçimlerine oturtulmuş sıralı bir yol haritası. 5’lerle başlayın, 4’lerden mezun olun; 3’ten 1’e uzanan bölgeye daldığınızda ise onları en çok işe yarayacakları yerde uygulayacak hem özgüvene hem bağlama sahip olacaksınız. Dalın ve bu alet çantası sizi breadboard’dan üretime — ve ötesine — taşısın.
Gömülü Geliştiriciler için Beceri Setleri
Gösterge – Önem
5 = Vazgeçilmez (günlük iş için olmazsa olmaz)
4 = Çok önemli (çoğu projede gerekli)
3 = Faydalı (sık sık işe yarar, yakında öğrenin)
2 = Olsa iyi olur (vakit buldukça öğrenin)
1 = Özelleşmiş / duruma bağlı
Beceri / Araç
ESP32 tabanlı bir toprak ölçüm ürünü için neden önemli
Önem
1
C / C++
ESP-IDF’in, Arduino core’un ve çevre birimi driver’larının ana dilleri.
5
2
ESP-IDF (native) veya Arduino-ESP32
Wi-Fi, BLE, GPIO, ADC, UART, I²C ve FreeRTOS API’lerine doğrudan erişim sağlar.
5
3
FreeRTOS temelleri
Task zamanlama, watchdog’lar, kuyruklar ve güç verimli uyku modları.
4
4
Git ve GitHub / GitLab
Versiyon kontrolü, kod incelemesi ve CI hook’ları.
5
5
VS Code
Güçlü ESP-IDF ve PlatformIO eklentilerine sahip, hafif ve çapraz platform bir IDE.
4
6
PlatformIO
Gömülü projeleri VS Code içinden derler, flash’lar, unit-test’ler ve statik analizden geçirir.
4
7
Linux CLI / WSL
Toolchain’ler, build script’leri, OpenOCD debugging ve container’lanmış CI runner’lar.
3
8
Unit-test framework’ü (Unity / CppUTest)
Sensör matematiği, haberleşme parser’ları ve batarya durumu mantığı için regresyon testleri.
3
9
Continuous Integration (GitHub Actions / GitLab CI)
Her push’ta build, test, lint ve firmware boyutu kontrollerini otomatikleştirir.
3
10
Jira (işler) ve Confluence (dokümanlar)
Ekip içinde görevleri, bug’ları, gereksinimleri ve tasarım notlarını takip eder.
3
11
Dijital ve Analog Elektronik
NPK sensör çıkışlarını okumak, SIM modül UART’ında level-shifting, EMI azaltma.
5
12
PCB tasarımı (KiCad / Altium)
ESP32, NPK arayüzü, Li-ion şarj devresi ve güneş MPPT’sini barındıran özel kart.
4
13
Güç bütçeleme ve Güneş–Li-ion şarjı
Panel, şarj IC’si ve dönüştürücülerin boyutlandırılması, düşük güçlü firmware durumları.
5
14
Batarya yönetimi (18650 güvenliği ve coulomb sayımı)
Aşırı/düşük gerilime karşı korur ve SoC tahmini sağlar.
4
15
Hücresel haberleşme (SIMCom AT komutları, PPP, TCP/IP)
Sahada Wi-Fi yokken cloud bağlantısını getirir.
5
16
IoT protokolleri (MQTT / HTTPS)
Sunucuya veya cloud’a hafif ve güvenli veri yükleme.
4
17
TLS / mbedTLS güvenlik temelleri
Veriyi şifreler ve cihazı cloud uç noktalarına doğrular.
4
18
Sensör kalibrasyonu ve kompanzasyon
NPK okumalarına etki eden sıcaklık / nem faktörleri; saha kalibrasyon eğrileri.
5
19
Veri kaydı ve OTA depolama (SPIFFS, LittleFS, SD)
Bağlantı kesildiğinde yerel yedek; firmware güncellemesi hazırlığı.
3
20
Uzaktan OTA güncelleme akışı
Sahadaki binlerce cihazı bakım yapılabilir tutar.
4
21
Kontrol ve Kestirim teorisi
Opsiyonel — ileri filtreleme (Kalman, PID) veya uyarlanabilir örnekleme için yardımcı olur.
2
22
Python / Bash scripting
Log ayrıştırma, üretim hattında flash’lama, test otomasyonu.
3
23
Cloud ve dashboard temelleri (AWS IoT Core, Azure IoT, InfluxDB + Grafana)
Toprak metriklerini depolar, görselleştirir ve alarm üretir.
3
24
Regülasyon ve çevresel uyumluluk (CE, FCC, IP sınıfı)
Yasal dağıtımı ve saha dayanıklılığını güvence altına alır.
3
25
Dokümantasyon araçları (Markdown, Doxygen)
Bakımı kolay API ve donanım tasarım dokümanları üretir.
3
Tabloyu nasıl okumalı
- 5’lerle başlayın: dil yetkinliği, mikrodenetleyici SDK’sı, donanım temelleri, güç sistemi tasarımı, sensör bilgisi ve hücresel haberleşme, güvenilir bir saha cihazı için ya hep ya hiç meselesidir.
- Ardından 4’lere geçin: geliştirme ortamı, güç optimizasyonu, OTA, RTOS ve güvenlik, çalışan bir prototipi üretime hazır bir ürüne dönüştürür.
- 3’ler profesyonel iş akışını tamamlar (CI, unit testler, cloud backend’leri, PCB CAD).
- 2’ler ve 1’ler daha büyük ekipler veya ileri özellikler için derinlik katar; takvim sıkışıksa ertelenebilir.
- Bunu bir beceri yol haritası olarak kullanın: proje olgunlaştıkça önem ölçeğinde soldan sağa ilerleyin.
1 – C/C++
Seviye: 1 – Sıfırdan Başlayan
– C sözdizimi ve yapısı: derleme modeli (kaynak → object → çalıştırılabilir), main() fonksiyonu
– Temel veri tipleri: int, char, float, double, bool
– Değişkenler ve sabitler: bildirim, ilklendirme, const niteleyicisi
– Operatörler: aritmetik (+, –, *, /, %), atama, artırma/azaltma
– Kontrol akışı: if/else, switch, for/while/do-while döngüleri
– Basit G/Ç: printf, temel konsol çıktısı
– Pointer’lara giriş: pointer bildirimi, dereference
– Derleme ve debug: gcc -o ile derleme, temel derleyici hatalarını yorumlama
Seviye: 2 – Başlangıç
– Bellek ve pointer’lar: pointer aritmetiği, pointer’lar ile diziler, malloc/free’ye giriş
– Yapılandırılmış tipler: struct, union, typedef
– Preprocessor temelleri: #define, #include, include guard’lar
– Storage class’lar: auto, static, extern, kapsam ve linkage kuralları
– String’ler ve diziler: char[], string fonksiyonları (strcpy, strlen vb.)
– Modüler kod: birden çok .c/.h dosyasına bölme, makefile temelleri (kurallar, hedefler)
– Temel debug araçları: gdb ile adımlama, breakpoint’ler, değişkenleri inceleme
Seviye: 3 – Orta Düzey
– Dinamik bellek yönetimi: heap ile stack, yaygın sızıntı desenleri, Valgrind gibi araçların kullanımı
– Dosya G/Ç: fopen/fread/fwrite/fclose, dosya pointer’ları, hata yönetimi
– Bitsel işlemler: mask’lar, kaydırmalar, bit set etme/temizleme, enum ve bit-field’lar
– Fonksiyon pointer’ları: callback’ler, dispatch tabloları
– Hata yönetimi: dönüş kodları, errno
– C++ temelleri: sınıflar ve nesneler, constructor/destructor’lar, erişim belirleyiciler
– STL temelleri: std::vector, std::string, std::map ve iterator’ların basit kullanımı
– Namespace’ler ve header organizasyonu
Seviye: 4 – İleri Düzey
– Gömülü C özellikleri: volatile, memory-mapped G/Ç, flash’ta ve RAM’de const
– Linker ve build sistemi: özel linker script’leri, section yerleşimi, optimizasyon bayrakları (-O2, -Os), cross-compilation toolchain’leri
– C++11/14/17 özellikleri: lambda’lar, auto, range-based for, constexpr, nullptr
– Smart pointer’lar ve RAII: unique_ptr, shared_ptr, kaynak yönetimi
– Template temelleri: fonksiyon ve sınıf template’leri, template specialization
– Multithreading: std::thread, mutex’ler, condition variable’lar, atomic tipler
– Gerçek zamanlı kavramlar: kesme servis rutinleri (ISR’ler), kritik bölgeler, priority inversion azaltma
Seviye: 5 – Uzman
– İleri template meta-programlama: variadic template’ler, SFINAE, type trait’ler
– Derin C++ nesne modeli: vtable’lar, nesne yerleşimi, ABI konuları
– Lock-free ve düşük gecikmeli eşzamanlılık: atomic’ler, memory ordering, wait-free algoritmalar
– Derleyici ve toolchain iç yapısı: GCC/Clang pass pipeline’ları, özel derleyici eklentileri yazma
– Performans ayarı: cache hizalama, branch prediction, derinlemesine profiling (örn. gprof, donanım sayaçları)
– Bare-metal port etme: newlib stub’ları yazma, minimal C runtime, bring-up kodu
– Standartlar ve güvenlik: MISRA-C/C++ uyumluluğu, statik analiz araçları (Coverity, Cppcheck)
– Framework katkısı: FreeRTOS veya ESP-IDF iç yapısı için driver yazma/optimize etme
2 – ESP-IDF (native) veya Arduino-ESP32
Seviye: 1 – Sıfırdan Başlayan
– ESP-IDF toolchain’ini (Python, Git, ESP-IDF script’leri) veya Arduino-ESP32 core’unu kurma
– ESP32 geliştirme için VS Code (veya Arduino IDE) kurulumu
– “Blink” örneğini derleyip flash’lama
– Proje düzenini keşfetme (CMakeLists.txt, sdkconfig veya platformio.ini)
– Temel idf.py (veya Arduino) komutlarını kullanma: build, clean, flash, monitor
Seviye: 2 – Başlangıç
– GPIO: pinleri yapılandırma, giriş okuma, LED sürme
– ADC: analog kanalları örnekleme, ham değerleri gerilime çevirme
– UART ve I²C: basit string veya byte gönderip alma
– Wi-Fi station modu: AP taraması, bağlanma, IP alma
– BLE peripheral: advertise etme, telefon uygulamasından bağlanma
– menuconfig ayarlarıyla (partition tablosu, log seviyesi) veya Arduino kart ayarlarıyla oynama
Seviye: 3 – Orta Düzey
– ESP-IDF framework’ü içinde FreeRTOS task’ları, kuyruklar ve timer’lar
– Wi-Fi events API’si: bağlanma/kopma olaylarını yönetme, yeniden bağlanma mantığı
– BLE client ve GATT: servisleri keşfetme, characteristic okuma/yazma
– SPI ve I²C: gerçek bir sensörü (örn. toprak nemi) entegre edip kalibre etme
– HTTP(S) OTA güncellemeleri: partition’ları kurma, güncellemeleri tetikleme
– esp_timer, ayrıntılı loglama (ESP_LOG*) ve hata kodlarının kullanımı
Seviye: 4 – İleri Düzey
– Yeniden kullanılabilir bileşenler (CMake Component API) veya özel Arduino kütüphaneleri oluşturma
– Özel partition tablosu oluşturma ve çalışma zamanında partition değiştirme
– Güvenli provisioning: SmartConfig, BLE tabanlı Wi-Fi kurulumu
– İleri BLE (L2CAP, mesh) örnekleri
– SPI DMA’yı ve I²C bus hız/timeout ayarlarını optimize etme
– MQTT over TLS için mbedTLS entegrasyonu
– Build/flash/test süreçlerini CI’da otomatikleştirme (GitHub Actions, ESP-IDF CI script’leri)
Seviye: 5 – Uzman
– ESP-IDF çekirdeğine yeni driver katkısı veya bug düzeltmesi (örn. ADC kalibrasyonu)
– Özel bootloader geliştirme veya ISR düzeyinde optimizasyonlar
– FreeRTOS heap bölgelerine ve zamanlayıcı parametrelerine ince ayar
– Secure boot ve flash şifrelemeyi uçtan uca uygulama
– Gerçek zamanlı izleme ve profiling (ESP-Trace, Perfcnt)
– Çok projeli CMake workspace’leri tasarlama
– Başkalarına mentorluk: ESP-IDF en iyi pratiklerini ve iç bileşen kütüphanelerini tanımlama
3 – FreeRTOS Temelleri
Seviye: 1 – Sıfırdan Başlayan
– RTOS’un ne olduğunu ve neden kullanıldığını anlama
– FreeRTOS’u kurma (ESP-IDF veya PlatformIO üzerinden) ve demo “hello world” task örneğini inceleme
– Tek bir task oluşturup başlatmanın temel API’sini öğrenme (xTaskCreate, vTaskStartScheduler)
– Sistem tick’ini ve zamanlayıcının task’lar arasında nasıl geçiş yaptığını keşfetme
– Bir task’ı sabit süre bloklamak için vTaskDelay kullanma
Seviye: 2 – Başlangıç
– Farklı önceliklerde ve stack boyutlarında birden çok task oluşturma
– Periyodik task zamanlaması için vTaskDelayUntil kullanma
– Kritik bölgeleri anlama ve uygulama (taskENTER_CRITICAL / taskEXIT_CRITICAL)
– Task durumlarını öğrenme (Running, Ready, Blocked, Suspended)
– Basit task kontrolü için vTaskSuspend / vTaskResume kullanma
Seviye: 3 – Orta Düzey
– Task’lar arasında kuyruklarla haberleşme (xQueueCreate, xQueueSend, xQueueReceive)
– Binary ve counting semaphore’larla task senkronizasyonu (xSemaphoreCreateBinary, xSemaphoreTake)
– Event Group’larla olay koordinasyonu (xEventGroupSetBits, xEventGroupWaitBits)
– Yazılım timer’ları kullanma (xTimerCreate, callback)
– Stack overflow’ları tespit edip yönetme
Seviye: 4 – İleri Düzey
– Bellek tahsisini optimize etme: heap şemalarını (heap_1…heap_5) seçip yapılandırma ve fragmantasyonu anlama
– Task notification’ları hafif binary semaphore veya doğrudan task’a veri mesajı olarak kullanma
– Düşük güçlü uygulamalar için tickless idle modunu yapılandırıp kullanma
– Çalışma zamanı istatistikleri üretip yorumlama (vTaskGetRunTimeStats)
– FreeRTOS+Trace veya Percepio Tracealyzer entegrasyonu
Seviye: 5 – Uzman
– FreeRTOS’u özel donanıma port etme veya ileri kullanım senaryoları için port katmanını değiştirme
– Özel zamanlayıcı politikaları veya hook fonksiyonları uygulayıp ayarlama (vApplicationIdleHook, vApplicationMallocFailedHook)
– İleri senkronizasyon primitifleriyle (priority inheritance’lı mutex’ler, recursive mutex’ler) karmaşık durum makineleri tasarlama
– Ekiplere en iyi pratikler, güvenlik (MISRA uyumlu kod) ve deterministik davranış ayarı konularında mentorluk
4 – Git ve GitHub/GitLab
Seviye: 1 – Sıfırdan Başlayan
– Git kurulumu; user.name ve user.email yapılandırması
– Repo başlatma (git init) ve mevcut repoları klonlama (git clone)
– Temel dosya takibi: git status, git add, git commit
– git log ile geçmişi görüntüleme, git diff ile değişiklikleri inceleme
– Dosyaları hariç tutmak için basit .gitignore
Seviye: 2 – Başlangıç
– Branch oluşturma ve geçiş yapma: git branch, git checkout/git switch
– Remote kurulumu: git remote add, git fetch, git pull, git push
– origin/main ile lokal branch’ler arasındaki farkı anlama
– Basit merge çakışmalarını editörle veya CLI ile çözme
– Commit’leri ve branch’leri GitHub/GitLab web arayüzünden gezme
Seviye: 3 – Orta Düzey
– Merge ile rebase: git merge, git rebase; hangisini ne zaman kullanacağını bilme
– Commit’leri temizlemek için interactive rebase (git rebase -i)
– Etiketleme: annotated ve lightweight tag oluşturma; git push –tags ile gönderme
– Pull request (GitHub) veya merge request (GitLab) ile çalışma: oluşturma, inceleme, birleştirme
– Temel CI iskeleti: basit bir GitHub Actions veya GitLab CI YAML dosyası ekleme
Seviye: 4 – İleri Düzey
– Submodule (git submodule) ve subtree yönetimi
– Client-side hook’lar (pre-commit, pre-push) ve basit server-side GitLab/GitHub hook’ları yazma
– Branch’leri koruma ve merge kontrollerini zorunlu kılma (status check’ler, onaylar)
– Cache ve artifact’larla çok aşamalı CI/CD pipeline’ları kurma
– Bug’ları bulmak için git bisect kullanma; belirli commit’leri cherry-pick etme
Seviye: 5 – Uzman
– GitLab/GitHub organizasyon ayarlarını yönetme: kullanıcı/grup izinleri, korumalı branch’ler
– Monorepo stratejileri tasarlama; büyük dosyaları Git LFS ile yönetme
– Özel Git araçları veya script’leri geliştirme (libgit2, hook’lar, otomasyon)
– Git iç yapısına derin dalış: nesne depolama, packfile’lar, ref’ler, index
– İş akışları tanımlayıp uygulatma (Gitflow, trunk-based, GitOps); ekibe en iyi pratikler konusunda mentorluk
5 – VS Code
Seviye: 1 – Sıfırdan Başlayan
Konular:
- VS Code’u Windows, macOS veya Linux’a kurma
- Arayüzü keşfetme: Activity Bar, Side Bar, Editor Pane’leri, Status Bar
- Klasör ve dosya açma; temel metin düzenleme (sekmeler, bölünmüş görünümler)
- Shell komutlarını çalıştırmak için entegre terminali kullanma
- Sık kullanılan işlemler için Command Palette’i (Ctrl+Shift+P) çağırma
- Basit Bul ve Değiştir yapma (Ctrl+F / Ctrl+H)
Seviye: 2 – Başlangıç
Konular:
- Eklentileri keşfedip kurma: C/C++ (ms-vscode.cpptools), ESP-IDF, Arduino-ESP32, PlatformIO IDE
- settings.json üzerinden User ve Workspace ayarlarını özelleştirme
- Yerleşik Source Control görünümünü kullanma: stage, commit, push/pull
- Bir ESP32 “Hello World” projesini derleyip flash’lamak için temel Task’lar (tasks.json) yapılandırma
- Outline ve Breadcrumbs görünümleriyle kodda gezinme
- Basit kod snippet’leri ekleyip kullanma
Seviye: 3 – Orta Düzey
Konular:
- IntelliSense yapılandırması: c_cpp_properties.json içinde include yollarını ve makroları ayarlama
- OpenOCD veya JTAG üzerinden GDB debugging için launch yapılandırmaları (launch.json) oluşturma
- Birleşik Task’lar tanımlama: build → flash → monitor → lint
- Multi-root workspace’lerde çalışma (kod + dokümanlar + testler)
- Linter ve formatter’ları (clang-format, cppcheck) kaydetme öncesi eylem olarak entegre etme
- Thread farkındalıklı debugging ve Debug görünümüyle FreeRTOS task’larını debug etme
- Unit testler için Problems panelini ve Test Explorer’ı kullanma
Seviye: 4 – İleri Düzey
Konular:
- Remote Development’tan yararlanma: SSH, WSL ve Docker container workspace’leri
- ESP-IDF/PlatformIO için özel kod snippet’leri ve dosya şablonları oluşturup paylaşma
- CI otomasyonu: VS Code Task’larını GitHub Actions veya GitLab CI pipeline’larına aktarma
- Klavye kısayollarını özelleştirme ve yapılandırmayı makineler arası paylaşmak için Settings Sync kullanma
- VS Code Tasks API’siyle yeniden kullanılabilir Task Provider’lar geliştirme
- Koşullu ve fonksiyon breakpoint’leri, logpoint’ler ve watch ifadeleri kullanma
Seviye: 5 – Uzman
Konular:
- ESP32 iş akışları için tam teşekküllü VS Code eklentileri geliştirip yayımlama (TypeScript ve Extension API)
- Paylaşılan, versiyonlanmış yapılandırmalarla büyük çok projeli workspace’ler tasarlama
- IDE performansını optimize etme: eklenti aktivasyonuna ince ayar, başlangıç süresini ve bellek kullanımını azaltma
- Kurum çapında ayar dağıtımı uygulama (Settings Cycler, GPO tabanlı dağıtım)
- Ekip arkadaşlarına VS Code en iyi pratikleri konusunda mentorluk yapma ve karmaşık iş akışlarındaki sorunları giderme
- VS Code topluluğuna katkı: rehberler ve örnek repolar yazma, meetup ya da workshop’larda konuşma
6 – PlatformIO
Seviye: 1 – Sıfırdan Başlayan
Konular:
- VS Code’a PlatformIO IDE eklentisini kurma (veya PIO Core CLI’ı kurma)
- Yeni bir PlatformIO projesi oluşturma (
pio init --board esp32dev) - Proje yapısını inceleme:
platformio.ini,src/,lib/klasörleri - Varsayılan “blink” örneğini derleme (
pio run) ve yükleme (pio run --target upload) - Çıktıyı görmek için seri monitörü açma (
pio device monitor)
Seviye: 2 – Başlangıç
Konular:
- Library Manager’ı kullanma:
pio lib install,pio lib list,platformio.iniiçine kütüphane ekleme - Farklı kartlar veya build modları için birden çok ortam (
env:bölümleri) yapılandırma platformio.iniiçindebuild_flags,monitor_speedveupload_speedayarlama- Temiz build’ler (
pio run --target clean) ve ayrıntılı build’ler (pio run --target verbose) çalıştırma - Breakpoint koyup kodda adım adım ilerlemek için Unified Debugger’ı (
pio debug) kullanma
Seviye: 3 – Orta Düzey
Konular:
- Tek bir
platformio.iniiçinde Debug/Release build’lerini ve OTA’lı ortamları yönetme - PlatformIO Test Runner ve Unity framework’üyle unit testleri entegre etme
- Statik analiz ekleme: ekstra script’ler veya
platformio.iniyapılandırmalarıylacppcheckya daclang-tidyetkinleştirme extra_scriptsile özel build öncesi/sonrası adımları otomatikleştirme- PlatformIO Registry üzerinden özel kütüphaneler yayımlama ve kullanma
Seviye: 4 – İleri Düzey
Konular:
- Kurum içi veya topluluk kullanımı için özel Platform ve Board paketleri oluşturup yayımlama
- İleri yükleme protokolleri uygulama (JTAG, OTA, özel upload script’leri)
- GitHub Actions, GitLab CI veya Jenkins için
pio ciscript’leriyle CI pipeline’ları kurma - Unit testler için kod kapsama raporları üretip otomatikleştirme
- PlatformIO IDE Dashboard’u üzerinden firmware boyutunu ve RAM kullanımını profilleme
Seviye: 5 – Uzman
Konular:
- PlatformIO Core’a ve resmi Community Platform’lara iyileştirme veya düzeltme katkısı
- CLI ve IDE özelliklerini genişletmek için özel PlatformIO eklentileri geliştirme
- PIO Projects ile büyük monorepo veya çok projeli workspace’ler tasarlayıp sürdürme
- Kurumsal toolchain’leri ve dağıtım iş akışlarını entegre eden ileri build hook’ları yazma
- Ekiplere PlatformIO en iyi pratikleri konusunda mentorluk ve karmaşık çapraz platform build/debug sorunlarını çözme
7 – Linux CLI / WSL
Seviye: 1 – Sıfırdan Başlayan
Konular:
- Linux’ta veya WSL’de bir terminal açma
- Dosya sisteminde gezinme:
ls,cd,pwd,mkdir - Dosyaları görüntüleyip inceleme:
cat,less,head,tail - Dosyalarla işlem yapma:
cp,mv,rm,touch - Basit bir editörle (
nanoveya temelvim) metin düzenleme
Seviye: 2 – Başlangıç
Konular:
- Dosya izinleri ve sahipliği:
chmod,chown,rwxbitlerini anlama - Wildcard’lar, globbing, pipe (
|) ve yönlendirme (>,>>,<) - Dosyalarda metin arama:
greptemelleri - Ortam değişkenlerini ve shell profilini yönetme (
.bashrc,.profile) - Dağıtımın paket yöneticisiyle (
apt,yum,pacman) paket kurup güncelleme sshile uzak makinelere bağlanma vescpile dosya aktarma
Seviye: 3 – Orta Düzey
Konular:
- Bash script’leri yazma: shebang, değişkenler, döngüler, koşullar, fonksiyonlar
find,xargs,awk,sedile metin işleme- Süreç ve iş kontrolü:
ps,top/htop,kill,jobs,bg/fg - ESP32 USB/JTAG adaptörleri için udev kuralları yapılandırma
- CLI’dan cross-compilation toolchain’lerini ve build sistemlerini (
make,cmake,idf.py) çağırma - JTAG/SWD ile flash’lamak ve debug etmek için OpenOCD’yi komut satırından çalıştırma
Seviye: 4 – İleri Düzey
Konular:
- Sağlam shell script’leri geliştirme: hata yönetimi, loglama, unit testler (ShellCheck)
- Tam build–flash–test pipeline’larını shell’de otomatikleştirip CI’a entegre etme (GitHub Actions, GitLab CI)
- Build ortamını Docker veya Podman ile container’lama; tekrarlanabilir build’ler için Dockerfile yazma
- Uzaktan debug ve dosya senkronizasyonu:
sshport yönlendirme,rsync, oturum kalıcılığı içintmux/screen - Native araçları profilleyip debug etme:
strace,ltrace,perf
Seviye: 5 – Uzman
Konular:
- Gömülü hedefler için özel Linux kernel’leri veya modülleri derleyip sürdürme
- Gömülü cross-compile’lar için optimize edilmiş özel CI runner’lar (bare-metal veya container’lı) tasarlayıp işletme
- İleri cache’leme ve dağıtık build teknikleri uygulama (ccache, distcc)
- Kendi CLI framework’lerinizi veya toolchain’lerinizi tasarlama, ekipler arası dotfile yönetimi (Git tabanlı)
- Shell kullanımı, terminal tabanlı iş akışları ve donanım test-dağıtım otomasyonu konularında başkalarına mentorluk
8 – Unit-Test Framework’ü (Unity / CppUTest)
Seviye: 1 – Sıfırdan Başlayan
Konular:
- Unit test’in amacını ve faydalarını anlama
- Unity veya CppUTest kurulumu (PlatformIO kütüphanesi, pip paketi veya kaynaktan)
- Minimal bir test dosyası oluşturup framework header’larını dahil etme
- TEST makrosuyla (Unity) veya TEST_GROUP/TEST ile (CppUTest) basit bir test fonksiyonu yazma
- Test runner’ı komut satırından çalıştırıp PASS/FAIL çıktısını yorumlama
- Temel assertion makrolarını kullanma (örn. TEST_ASSERT, CHECK_EQUAL)
Seviye: 2 – Başlangıç
Konular:
- Testleri suite’lere veya gruplara organize etme
- Test fixture’ları için setUp() ve tearDown() fonksiyonlarını uygulama
- Daha geniş assertion yelpazesi kullanma: float’lar, string’ler, bellek karşılaştırmaları
- Testleri parametrize etme veya test verisi üzerinde döngü kurma
- Test derleme ve çalıştırmayı PlatformIO veya CMake build’ine entegre etme
- Basit kod kapsama verisi üretme (örn. gcov ile) ve temel kapsama yüzdelerini görüntüleme
Seviye: 3 – Orta Düzey
Konular:
- Donanıma bağımlı fonksiyonlar (I²C okumaları, ADC dönüşümleri) için stub ve fake’ler oluşturma
- Bağımlılıkları simüle etmek için bir mock kütüphanesi (CppUMock veya Unity’nin CMock’u) kullanmaya başlama
- Asenkron kod için test yazma: callback’leri, kesmeleri veya FreeRTOS timer’larını simüle etme
- Test koşularını shell script’leri veya basit bir CI job’ıyla otomatikleştirme
- Ayrıntılı kapsama metriklerini toplama ve analiz etme (branch, fonksiyon kapsaması)
- Sınır ve hata koşullarını kapsamlı biçimde test etme
Seviye: 4 – İleri Düzey
Konular:
- Düşük seviyeli driver’lar ve çevre birimi soyutlamaları için özel mock implementasyonları geliştirme
- Bellek sızıntısı tespit eklentileri kullanma (CppUTest MemoryLeak detector)
- Cihaz üzerinde unit test için test runner’ı hedefe port etme
- Eşzamanlılık primitifleri için test yazma: FreeRTOS’ta semaphore’lar, kuyruklar, task notification’lar
- Kapsama ve test raporlarını bir CI dashboard’una entegre etme (JUnit/XUnit XML çıktısı)
- İleri assertion makrolarını ve test parametrizasyon özelliklerini kullanma
Seviye: 5 – Uzman
Konular:
- Test framework’ünü genişletme veya özelleştirme: eklentiler, özel reporter’lar veya yeni assertion makroları yazma
- Birden çok proje ve platformda ölçeklenebilir bir test altyapısı tasarlama
- Otomatik fixture kontrolüyle hardware-in-the-loop (HIL) veya firmware-in-the-loop (FIL) test düzenekleri kurma
- Ekiplere TDD ve test tasarım desenleri konusunda mentorluk, test politikalarını uygulatma
- Unity veya CppUTest açık kaynak projelerine katkı (bug düzeltmeleri, yeni özellikler)
- Paralel test çalıştırmayı ve container’lı test ortamlarını optimize etme, test süresi yükünü en aza indirme
9 – Continuous Integration (GitHub Actions / GitLab CI)
Seviye: 1 – Sıfırdan Başlayan
Konular:
- Continuous Integration’ın (CI) ne olduğunu ve neden önemli olduğunu öğrenme (otomatik build ve test)
- Popüler CI servislerini tanıma: GitHub Actions ile GitLab CI
- En basit CI yapılandırma dosyasını oluşturma (
.github/workflows/ci.ymlveya.gitlab-ci.yml) - Kodu checkout eden (
actions/checkoutveyagit clone) ve bir merhaba mesajı basan bir job ekleme - Workflow’u main branch’e her push’ta tetikleme ve temel logları web arayüzünden görüntüleme
Seviye: 2 – Başlangıç
Konular:
- CI job’ını bağımlılıkları kuracak şekilde genişletme (örn. Python/pip, PlatformIO, ESP-IDF)
- Build adımları ekleme: firmware’i derleme (
idf.py buildveyapio run) pio testveya özel test runner ile unit testleri çalıştırma ve pass/fail sonuçlarını yorumlama- Log çıktısını hatalar ve uyarılar için okuyup filtrelemeyi öğrenme
- CI’yı tetiklemek için commit’leyip push’lama; basit build hatalarını düzeltme
Seviye: 3 – Orta Düzey
Konular:
- Build, test, lint ve statik analizi ayrı job’lara veya stage’lere bölme
- Toolchain artifact’larını cache’lemek için yerleşik action’ları (veya GitLab şablonlarını) kullanma (
actions/cache) - Birden çok kartı veya toolchain sürümünü paralel test etmek için matrix build uygulama
- Build artifact’larını (firmware binary’leri, test raporları, kapsama verisi) indirilebilir şekilde arşivleme
- Job bağımlılıklarını ve koşullu çalıştırmayı yapılandırma (GitHub Actions’ta
needs:, GitLab CI’dastage:)
Seviye: 4 – İleri Düzey
Konular:
- Kod kapsama araçlarını (gcov, lcov) entegre etme ve kapsama rozetleri yayımlama
- Firmware boyutu ve bellek kullanımı kontrollerini otomatikleştirme; eşikler aşılırsa pipeline’ı düşürme
- OTA’ya hazır firmware’i SSH veya özel runner ile bir staging cihazına dağıtma
- Secret ve token’ları güvenle yönetme (GitHub Secrets, GitLab CI/CD değişkenleri)
- Özel build ortamları için self-hosted runner’lar veya Docker container’ları kullanma
Seviye: 5 – Uzman
Konular:
- ESP32 build’leri için optimize edilmiş, yeniden kullanılabilir özel CI action’ları veya Docker imajları geliştirme
- Çok projeli pipeline’lar tasarlama: paylaşılan kütüphaneler, submodule yönetimi, repolar arası tetikleyiciler
- İleri iş akışları uygulama: feature-branch önizlemeleri, canary dağıtımlar, otomatik geri almalar
- Korumalı branch politikaları, imzalı commit’ler ve denetim loglarıyla uyumluluğu zorunlu kılma
- Ekipler arasında CI/CD en iyi pratiklerine mentorluk ve dokümantasyon; karmaşık pipeline hatalarının çözümünde eğitim
10 – Jira ve Confluence
Seviye: 1 – Sıfırdan Başlayan
Konular:
- İş takibi ile dokümantasyonun amacını ayırt etme
- Jira Cloud’a kaydolma (veya mevcut kuruluma bağlanma)
- Jira arayüzünde gezinme: projeler, iş kayıtları, backlog, pano
- Temel bir iş kaydı oluşturma: proje, kayıt tipi, özet, açıklama seçme
- Bir kaydı basit bir iş akışında ilerletme (To Do → In Progress → Done)
- Kayda yorum ve ek dosya ekleme
- Confluence’a kaydolma (veya ekibinizin alanına erişme)
- Bir Confluence sayfası oluşturma: başlık, gövde metni, kaydetme ve düzenleme
Seviye: 2 – Başlangıç
Konular:
- Farklı kayıt tipleriyle (Task, Bug, Story, Epic) ve öncelik alanlarıyla çalışma
- Temel Jira panolarını kullanma: Scrum ve Kanban, kartları sütunlar arasında taşıma
- Basit JQL ile kayıtları filtreleme (örn. project = “XYZ” AND status = “Open”)
- Basit e-posta bildirimleri yapılandırma ve kayıtları izleme
- Confluence’ta sayfaları Space’lere ve üst-alt hiyerarşilerine organize etme
- Yaygın makroları kullanma: Code Block, Table, Panel, Image
- Confluence sayfalarına Jira kayıt linkleri ve kayıt listeleri ekleme
Seviye: 3 – Orta Düzey
Konular:
- Kayıt ekranlarını özelleştirme ve özel alanlar ekleme
- Basit iş akışları tanımlayıp değiştirme: durumlar, geçişler, validator’lar
- Gadget’larla dashboard’lar oluşturup paylaşma (Filter Results, Burndown Chart)
- Karmaşık filtreler ve panolar için ileri JQL sorguları yazma
- Pano swimlane’lerini sorgulara veya atanan kişilere göre yapılandırma
- Confluence’ta Template ve Blueprint oluşturup kullanma
- Sayfa izinlerini, etiketleri ve sayfa kısıtlamalarını yönetme
- Dinamik raporlar için Include Page, Excerpt ve Page Properties makrolarını kullanma
Seviye: 4 – İleri Düzey
Konular:
- Jira Automation kuralları kurma: tetikleyiciler, koşullar, eylemler (örn. otomatik atama, uyarı gönderme)
- SLA’lar ve service desk’ler kurma, Jira Service Management ile metrik takibi
- Çok projeli panolar ve projeler arası sürümler tasarlama
- Zaman çizelgelerini ve bağımlılıkları planlamak için Portfolio for Jira (Advanced Roadmaps) kullanma
- Confluence’ta özel Blueprint’ler ve tema override’ları oluşturma
- Dinamik içerik gömme: Jira grafikleri, Gliffy diyagramları, Live makrolar
- İçeriği optimize etmek için sayfa analitiğini ve kullanıcı etkinliğini analiz etme
Seviye: 5 – Uzman
Konular:
- Global Jira ayarlarını yönetme: izinler, kayıt tipi şemaları, iş akışı şemaları
- Dallanma, onaylar ve otomasyon içeren karmaşık, kurumsal düzeyde iş akışları tasarlama
- Jira’yı webhook’lar ve uygulamalar aracılığıyla harici araçlarla (CI/CD, Slack, GitHub) entegre etme
- ITSM uygulamasına liderlik: değişiklik yönetimi, olay/problem iş akışları
- Confluence’ta özel eklentiler geliştirme veya otomasyon için ScriptRunner kullanma
- Space şablonları, global görünüm ve ileri izin şemaları tanımlama
- Ekiplere Jira/Confluence en iyi pratikleri ve yönetişim politikaları konusunda mentorluk ve eğitim
11 – Dijital ve Analog Elektronik
Seviye: 1 – Sıfırdan Başlayan
Konular:
- Temel elektriksel birimleri anlama: gerilim (V), akım (A), direnç (Ω), güç (W)
- Ohm Yasası’nı (V = I∙R) ve temel seri/paralel hesaplamalarını öğrenme
- Pasif bileşenleri tanıma: dirençler, kondansatörler, bobinler
- Basit DC devrelerde gerilim, akım ve direnç ölçmek için multimetre kullanma
- Temel devre sembollerini ve şemaları okuyup yorumlama
Seviye: 2 – Başlangıç
Konular:
- Seri ve paralel direnç ağları ile gerilim bölücüleri kurup analiz etme
- Kondansatörlere giriş: şarj/deşarj eğrileri, RC zaman sabitleri, basit alçak/yüksek geçiren filtreler
- Dijital lojik seviyelerini (TTL ile CMOS) ve bunların ESP32 GPIO’suna nasıl yansıdığını anlama
- Level shifting teknikleri: direnç bölücüler, UART sinyalleri için MOSFET tabanlı level shifter’lar
- Sensör arayüz devrelerini prototiplemek için breadboard ve jumper kablolar kullanma
Seviye: 3 – Orta Düzey
Konular:
- Sensörler için analog ön uç tasarımı: op-amp seçimi ve yapılandırması (eviren, evirmeyen)
- Diferansiyel sensör sinyalleri için instrumentation amplifier uygulama (örn. NPK probları)
- ADC arayüzü: tam ölçek aralığı, çözünürlük, örnekleme hızı ve referans gerilimi seçimini anlama
- EMI/EMC temelleri: decoupling kondansatörleri, topraklama stratejileri, temel yerleşim kuralları
- Gürültüyü analiz edip azaltma: ekranlama, bükümlü çift kablolama, ferrit boncuklar
Seviye: 4 – İleri Düzey
Konular:
- Hassas ölçüm devreleri oluşturma: kalibrasyon yöntemleri, sıcaklık kayması kompanzasyonu
- İleri filtre tasarımı: aktif filtre topolojileri (ikinci derece Butterworth, Bessel)
- Güç kaynağı tasarımı: DC-DC dönüştürücü, LDO seçimi ve yerleşimi, bulk/seramik decoupling
- Karışık sinyal için PCB yerleşimi: ayrık analog/dijital topraklar, kontrollü empedanslı hatlar, yıldız topraklama
- Temel EMI uyumluluk kontrolleri yapma: yakın alan probu, spektrum analiz teknikleri
Seviye: 5 – Uzman
Konular:
- Düşük gürültülü analog ön uçlar tasarlama: özel diskre çözümler, gürültü bütçeleme ve bileşen seçimi
- Karışık sinyal IC’leri tasarlayıp entegre etme: yüksek çözünürlüklü ADC/DAC’ler, dijital izolasyon ve SPI/I²C zamanlama optimizasyonu
- Bataryalı cihazlar için özel güç yönetimi IC’leri veya PMIC yapılandırmaları geliştirip doğrulama
- EMI/EMC sertifikasyon çalışmalarına liderlik: test planları yazma, CE/FCC standartlarını yorumlama, ön uyumluluk testleri ve iyileştirme
- Ekibin analog ve karışık sinyal tasarımlarına mentorluk ve inceleme, üretilebilirlik, maliyet ve güvenilirlik için optimizasyon
12 – PCB Tasarımı (KiCad / Altium)
Seviye: 1 – Sıfırdan Başlayan
Konular:
- PCB’nin ne olduğunu ve neden kullanıldığını anlama (breadboard veya delikli plakete karşı)
- KiCad veya Altium Designer kurup arayüzü keşfetme
- Yeni bir şematik projesi oluşturup temel bileşenleri yerleştirme (direnç, LED, konnektör)
- Bariz netlist hatalarını yakalamak için Electrical Rules Check (ERC) çalıştırma
- Netlist üretip boş bir PCB yerleşimine aktarma
- Footprint’leri kart sınırına yerleştirip basit tek katmanlı hatlar çekme
- Temel Gerber ve delme dosyalarını dışa aktarma
Seviye: 2 – Başlangıç
Konular:
- Kişisel bir sembol ve footprint kütüphanesi kurup yönetme
- Tasarım kuralları tanımlayıp uygulama: hat genişlikleri, boşluklar, annular ring’ler
- Yönlendirmeyi basitleştirmek ve güvenilirliği artırmak için toprak ve güç plane’leri kullanma
- Silkscreen yazısı, bileşen tanımlayıcıları ve kart sınırı mekanik katmanları ekleme
- Pad ve solder mask ayarlarını anlayarak through-hole ve yüzey montaj footprint’leriyle çalışma
- Design Rule Check (DRC) çalıştırıp yaygın boşluk/çakışma hatalarını düzeltme
- Eksiksiz bir üretim paketi oluşturma: Gerber’lar, NC drill, BOM
Seviye: 3 – Orta Düzey
Konular:
- Çok sayfalı (hiyerarşik) şematikler oluşturma ve net bağlantısını yönetme
- 4 veya 6 katmanlı kartlar için dielektrik kalınlıkları dahil kontrollü bir stackup tanımlama
- Diferansiyel çiftleri ve boy eşlemeli sinyal çiftlerini yönlendirme (USB, SPI, yüksek hızlı hatlar)
- İleri plane yönetimi kullanma: bölünmüş plane’ler, thermal relief’ler, dolgu bölgeleri
- Muhafaza ve mekanik boşluk kontrolleri için 3D modelleri entegre etme
- BOM üretimini özel alanlarla otomatikleştirip CSV veya Excel’e aktarma
- PCB proje dosyalarında Git (veya SVN) ile işbirliği yapma ve sürüm geçmişini yönetme
Seviye: 4 – İleri Düzey
Konular:
- Üretilebilirlik için tasarım (DFM): panelizasyon, fiducial’lar, montaj çizimleri
- Yüksek hızlı sinyal bütünlüğü pratiklerini uygulama: empedans kontrolü, via stitching, dönüş yolları
- Şirket çapında tasarım kuralları ve katman stack’leriyle proje şablonları oluşturup yeniden kullanma
- ECAD aracı içinde temel termal ve güç dağıtımı analizleri yapma
- Tekrarlayan işleri otomatikleştirmek için script yazıp çalıştırma (KiCad’de Python veya Altium script’leri)
- Yaşam döngüsü durumları ve onaylı varyantlarla merkezi bileşen kütüphaneleri geliştirip yönetme
- Eşzamanlı mühendislik için ECAD verisini mekanik CAD ile entegre etme
Seviye: 5 – Uzman
Konular:
- Rigid-flex ve çok kartlı (backplane) sistemler tasarlama, flex bükülme alanlarını ve sertleştiricileri tanımlama
- DFM, DFA (montaj) ve DFT (test) odaklı tasarım incelemelerine liderlik ve junior tasarımcılara mentorluk
- IPC uyumlu özel footprint’ler geliştirme ve kurum içi tasarım standartları dokümantasyonu oluşturma
- Parça yaşam döngüsü yönetimi ve satın alma iş akışları için PLM/ERP entegrasyonuna rehberlik
- Gerekli tüm dokümantasyonla sertifikasyon paketlerini (UL, CE, FCC) planlayıp yürütme
- İleri özellikleri optimize etme: gömülü/kör via’lar, kontrollü empedans, microvia HDI tasarımları
- ECAD aracı eklentilerine katkı veya özelleştirme, üretici verisi doğrulaması için otomatik pipeline’lar kurma
13 – Güç Bütçeleme ve Güneş–Li-ion Şarjı
Seviye: 1 – Sıfırdan Başlayan
Konular:
- Gerilim, akım ve güç arasındaki ilişkiyi anlama (P = V × I)
- Temel Li-ion batarya özelliklerini öğrenme: nominal gerilim (~3,7 V), kapasite (mAh/Ah), güvenli gerilim aralıkları
- Basit bataryalı devrelerde gerilim ve akım ölçmek için multimetre kullanma
- Bir ESP32 kartındaki temel güç raylarını tanıma ve etiketlerini okuma (5 V, 3,3 V)
- Küçük bir güneş paneliyle tanışma: açık devre gerilimi (Voc) ve kısa devre akımı (Isc) değerleri
Seviye: 2 – Başlangıç
Konular:
- Basit bir güç bütçesi tablosu kurma: her alt sistemi (ESP32, sensör, radyo) çalışma akımı ve duty cycle’ıyla listeleme
- Ortalama ve tepe akım çekişlerini hesaplama; verilen batarya kapasitesinde çalışma süresini kestirme
- 3,3 V’a düşürmek için lineer regülatörleri (LDO’lar) basit anahtarlamalı regülatörlerle karşılaştırma
- Breadboard üzerinde temel bir Li-ion şarj IC’si (örn. MCP73831) bağlayıp şarj LED’i davranışını gözlemleme
- Farklı ışık seviyelerinde panel çıkışını ölçme ve datasheet eğrilerini okumayı öğrenme
Seviye: 3 – Orta Düzey
Konular:
- Maximum Power Point Tracking (MPPT) kavramlarına giriş: MPPT’nin pasif gölgelemeye kıyasla enerji hasadını neden iyileştirdiği
- Hazır bir güneş şarj kontrolcüsü seçip yapılandırma (örn. Adafruit Solar LiPo Charger)
- Hedef çalışma süresi ve en kötü hava koşullarına göre panel ile bataryayı boyutlandırma; güvenlik payları ekleme
- Çift güç girişli devre tasarlama: batarya artı güneş, ideal-diyot ORing veya Schottky diyotlarla
- Düşük güçlü firmware durumlarını (deep sleep, light sleep) uygulama ve boşta akımı ölçme
Seviye: 4 – İleri Düzey
Konular:
- Gömülü kullanım için farklı MPPT IC’lerini veya modüllerini değerlendirip seçme (örn. STSPIN, TI BQ serisi)
- Özel PCB güç ağacı tasarlama: buck/boost dönüştürücüler, load switch’ler, power-good göstergeleri
- Batarya şarj/deşarj eğrilerini ve termal etkileri modelleme; SPICE’ta veya tabloda simüle etme
- Firmware’de dinamik güç yönetimi uygulama: örnekleme hızını veya radyo duty cycle’ını batarya SoC’sine göre uyarlama
- Donanım korumaları ekleme: aşırı gerilim, düşük gerilim, aşırı akım ve sıcaklık izleme
Seviye: 5 – Uzman
Konular:
- Firmware’de veya FPGA’da tamamen özel bir MPPT algoritması tasarlama, yerel güneş profillerine göre ayarlama
- Güç yönetimi IC firmware’i geliştirme veya değiştirme (örn. özel bir BMS için) ve %98+ verimlilik için optimize etme
- Ekstrem ortam enerji hasadı tasarımına liderlik: düşük ışık, sıcaklık uçları, kısmi gölgeleme analizi
- İleri batarya sağlığı tanılamalarını entegre etme: coulomb sayımı, empedans takibi, öngörücü SoC/SoH algoritmaları
- Ekiplere güç sistemi ödünleşimleri konusunda mentorluk, UL/IEC güvenlik sertifikasyonları için dokümantasyon hazırlama, üretim verimi ve güvenilirlik için optimizasyon.
14 – Batarya Yönetimi (18650)
Seviye: 1 – Sıfırdan Başlayan
Konular:
- Temel 18650 Li-ion hücre özelliklerini öğrenme: nominal gerilim, kapasite, maksimum şarj/deşarj akımı
- Temel hücre güvenliğini anlama: kısa devre yok, doğru polarite, aşırı deşarjdan kaçınma
- Multimetreyle hücre gerilimini ölçme; dolu (4,2 V) ile boş (≈3,0 V) noktalarını tanıma
- Yaygın koruma IC’si özelliklerini tanıma: aşırı gerilim, düşük gerilim, aşırı akım kesmesi
- Güvenli kullanım pratiği: uygun yuva kullanma, hücreleri asla delmeme veya ezmeme
Seviye: 2 – Başlangıç
Konular:
- Basit bir tek hücreli şarj modülü (örn. TP4056) bağlayıp şarj durumu LED’lerini izleme
- CC-CV şarj profilini anlama: eşiğe kadar sabit akım, ardından sabit gerilimle azalan akım
- Hücreye koruma PCB’si ekleme: MOSFET tabanlı korumanın nasıl çalıştığını öğrenme
- Hücre datasheet’indeki şarj/deşarj eğrilerini ve derating yönergelerini okuma
- Gerilim–SoC eğrisinden State of Charge’ı (SoC) kabaca hesaplama
Seviye: 3 – Orta Düzey
Konular:
- Coulomb sayımı temellerine giriş: akım algılama direnci ve ADC üzerinden giren/çıkan yükü ölçme
- Bir akım algılama yükselteci (örn. INA219 veya özel coulomb sayacı IC’si) seçip entegre etme
- Coulomb sayım sisteminizi kalibre etme: offset, kazanç ve kayma kompanzasyonu
- Doğruluğu artırmak için gerilim tabanlı SoC ile coulomb sayımını birleştirme
- Temel batarya sağlık kontrolleri uygulama: çevrim sayısı, kapasite kaybı tahmini
Seviye: 4 – İleri Düzey
Konular:
- Hücre dengeleme dirençleri veya aktif dengeleyici IC ile çok hücreli (2–4 hücre) dengeli şarj devresi tasarlama
- Tam bir BMS IC’si entegre etme (örn. TI BQ769x0 serisi): aşırı gerilim, düşük gerilim, aşırı akım, sıcaklık izleme
- Firmware içi SoC ve SoH algoritmaları uygulama: Kalman filtresi veya uyarlanabilir coulomb sayacı
- Sıcaklık algılama (NTC veya dijital) ve şarj/deşarj eğrileri için kompanzasyon ekleme
- Arıza koşullarında güvenliği doğrulama: kısa devre, aşırı akım, aşırı sıcaklık simülasyonu ve arıza olaylarını loglama
Seviye: 5 – Uzman
Konular:
- Özel bir BMS firmware’i tasarlama: ileri hücre dengeleme algoritmaları, uyarlanabilir şarj profilleri
- Coulomb sayımı doğruluğunu uzun vadede optimize etme: kayma düzeltme, sıcaklık kompanzasyonu, kendi kendine öğrenen algoritmalar
- Sertifikasyon çalışmalarına liderlik: IEC 62133, UL 2054, UN 38.3 test dokümantasyonu ve test planı oluşturma
- Yedekli güvenlik özellikleri tasarlama: çift IC izleme, watchdog’lar, donanım failsafe durumları
- Batarya alt sistem tasarımlarına mentorluk ve inceleme: hata modu analizi, üretilebilirlik ve güvenilirlik test planları
15 – Hücresel Haberleşme (SIMCom AT, PPP, TCP/IP)
Seviye: 1 – Sıfırdan Başlayan
Konular:
- Temel hücresel kavramları öğrenme: GSM, LTE ve NB-IoT karşılaştırması
- SIM kart pinout’unu ve SIM’in nasıl takılıp çıkarılacağını tanıma
- Bir SIMCom modülünü mikrodenetleyiciye veya USB-UART adaptörüne besleyip kablolama
- Doğru baud hızında bir seri terminal açma (minicom, PuTTY)
- Basit AT komutları gönderme: AT, ATI, AT+CSQ
- Yanıtları yorumlama: OK, ERROR ve temel sinyal kalitesi kodları
Seviye: 2 – Başlangıç
Konular:
- Ağ kaydını kontrol etme: AT+CREG? ve AT+CGREG?
- PDP context yapılandırma: AT+CGDCONT=1,“IP”,""
- IP bağlantısını PPP ile ayağa kaldırma: chat script yazma ve pppd çağırma
- PPP üzerinden IP bağlantısını doğrulama: bilinen bir host’a ping veya socket test aracı kullanma
- SMS gönderip okuma: AT+CMGF=1, AT+CMGS="", AT+CMGR=
- Temel hata kodlarını yönetme: +CME ERROR: okuyup çözme
Seviye: 3 – Orta Düzey
Konular:
- TCP socket’ları açıp yönetme: AT+CIPSTART=“TCP”,“host”,“port”
- Socket üzerinden veri gönderip alma: AT+CIPSEND ve AT+CIPRXGET
- İstenmeden gelen sonuç kodlarını (URC’ler) izleme: +CIPSTATUS, +TCP_CLOSED
- Socket veya PPP düştüğünde firmware’de otomatik yeniden bağlanma mantığı uygulama
- Güç tasarrufu için modül uyku modlarını kullanma: AT+CFUN, AT+CSCLK
- Destekleniyorsa temel TLS komutlarıyla bağlantıyı güvenceye alma (örn. AT+SSLOPT)
Seviye: 4 – İleri Düzey
Konular:
- PPP başlatmayı bağlanma/kopma olay callback’leriyle RTOS task’larına entegre etme
- Roaming dayanıklılığı için birden çok APN ve yedek context yönetme
- AT tabanlı komutlarla hücresel socket üzerinden bir MQTT client çalıştırma
- Modül destekliyorsa GNSS/konum verisi sorgulama: AT+CGPS=1, AT+CGPSINFO
- Throughput ve gecikmeyi profilleme: veri hızlarını ölçme ve firmware buffer’lamasını optimize etme
- Genişletilmiş ağ bilgisi komutlarıyla (örn. AT+QENG) RF ve ağ sorunlarını teşhis etme
Seviye: 5 – Uzman
Konular:
- Durum makineleri ve sağlam buffer’lamayla bir AT komut parser kütüphanesi geliştirme veya optimize etme
- Derin gömülü sistemler için özel bir PPP daemon’ı veya hafif IP stack’i tasarlama
- Driver seviyesinde entegrasyon uygulama: DMA tabanlı UART aktarımları, donanımsal akış kontrolü
- İleri veri modlarını destekleme: raw socket’lar, UDP multicast/broadcast, SMS veri modu
- Flash’ta güvenli sertifika provisioning’i yönetme ve TLS oturumlarını uçtan uca yönetme
- Ekiplere hücresel IoT en iyi pratikleri konusunda mentorluk: maliyet optimizasyonu, regülasyon uyumluluğu ve anten/RF tasarım konuları
16 – IoT Protokolleri (MQTT / HTTPS)
Seviye: 1 – Sıfırdan Başlayan
Konular:
- IoT protokollerinin ne olduğunu ve kısıtlı cihazlar için neden önemli olduğunu anlama
- MQTT temellerini öğrenme: publish/subscribe modeli, broker rolü, topic’ler, QoS seviyeleri (0, 1, 2)
- HTTPS temellerini öğrenme: istemci–sunucu istek/yanıt, REST ilkeleri, URL’ler, metotlar (GET, POST)
- Masaüstü bir MQTT client’ı kurma (MQTT.fx, MQTT Explorer) ve halka açık bir broker’a bağlanma (örn. test.mosquitto.org )
- Halka açık API’lere basit HTTPS GET istekleri yapmak için
curlkullanma
Seviye: 2 – Başlangıç
Konular:
- Bir ESP32’yi basit bir kütüphaneyle (örn. Arduino için
PubSubClientveya ESP-IDF içinesp_mqtt_client) MQTT broker’a bağlayan firmware yazma - Sensör okumalarını bir test topic’ine yayımlama; başka bir topic’e abone olup mesajları loglama
- Firmware’de temel JSON payload’ları oluşturma ve gelen JSON’u ayrıştırma
- ESP32’den HTTPS istekleri yapma:
HTTPClient(Arduino) veyaesp_http_client(ESP-IDF) kurulumu - Sertifika doğrulamayı temel düzeyde yönetme (başlangıçta insecure moduyla başlayıp sonra doğru root CA’ya geçme)
Seviye: 3 – Orta Düzey
Konular:
- MQTT oturum kalıcılığı uygulama: retain mesajlar, clean session = false
- Beklenmedik kopmaları bildirmek için MQTT Last Will and Testament (LWT) kullanma
- Ölçeklenebilir cihaz mesajlaşması için topic hiyerarşilerini wildcard’larla (
+,#) organize etme - Flash’ta TLS sertifikalarını yönetme: PEM’i DER’e çevirme, partition’a gömme
- JSON gövdeli HTTPS POST yapma ve JSON yanıtlarını ayrıştırma; header’ları yönetme
Seviye: 4 – İleri Düzey
Konular:
- Güvenli bir MQTT mimarisi tasarlayıp uygulama: client sertifikaları, karşılıklı TLS kimlik doğrulaması
- MQTT performansını optimize etme: publish’leri gruplandırma, QoS’u yerinde kullanma, keepalive yükünü azaltma
- HTTPS karşılıklı kimlik doğrulaması (client sertifikaları) uygulama ve sertifika rotasyonunu yönetme
- Tarayıcı tabanlı dashboard’lar veya kısıtlı ağlar için MQTT over WebSockets entegrasyonu
- ESP32 üzerinde retry, backoff ve circuit breaker desenleriyle hafif, durumlu bir REST client kurma
Seviye: 5 – Uzman
Konular:
- Özel bir protokol köprüsü tasarlama: heterojen IoT ağları için CoAP, MQTT ve HTTPS arasında çeviri
- Özel yetkilendirme, filtreleme veya dönüştürme için kurum içi bir MQTT broker eklentisi veya uzantısı geliştirme
- Özel kullanım senaryoları için alternatif IoT protokollerini (örn. MQTT-SN, AMQP, LwM2M) prototipleyip değerlendirme
- Güvenlik denetimlerine liderlik: IoT haberleşme stack’lerinin tehdit modellemesi ve zafiyet değerlendirmeleri
- Ekiplere hibrit protokollerle büyük ölçekli, güvenli ve dayanıklı IoT mesajlaşma mimarileri tasarlama konusunda mentorluk
17 – TLS / mbedTLS Güvenlik Temelleri
Seviye: 1 – Sıfırdan Başlayan
Konular:
- Temel kriptografi kavramlarını öğrenme: plaintext ile ciphertext, simetrik ile asimetrik şifreleme, hashing
- TLS’in ne sağladığını anlama: gizlilik, bütünlük, doğrulanabilirlik
- Yüksek seviyede TLS handshake akışını inceleme: ClientHello, ServerHello, anahtar değişimi, record katmanı
- mbedTLS kurma ve
programs/sslörnek dizinini keşfetme ssl_client1vessl_server2örneklerini masaüstünde derleyip çalıştırma
Seviye: 2 – Başlangıç
Konular:
- mbedTLS’i
config.hüzerinden yapılandırma: yalnızca ihtiyaç duyduğunuz modülleri etkinleştirme (SSL/TLS, X.509, kripto primitifleri) - OpenSSL ile self-signed sertifika ve anahtar üretme; PEM ile DER formatları arasında dönüştürme
- Halka açık bir sunucuya HTTPS GET yapmak için
ssl_client2’yi değiştirip çalıştırma - SSL yapılandırmasında minimum TLS sürümünü belirleme ve temel cipher suite’leri seçme
- Handshake adımlarını ve hata kodlarını izlemek için mbedTLS debug loglamasını etkinleştirme
Seviye: 3 – Orta Düzey
Konular:
- Kısıtlı cihazlar için mbedTLS’te PSK (Pre-Shared Key) kimlik doğrulaması uygulama
- Sertifika ve anahtarları flash’a gömme veya çalışma zamanında bir dosya sistemi partition’ından okuma
- Sunucu sertifikalarını bir root CA paketine karşı doğrulamak için mbedTLS X.509 parser’ını kullanma
- Rastgele sayı üretecini donanımsal bir TRNG ile (örn. ESP32’nin
esp_hardware_poll’u)mbedtls_ctr_drbgüzerinden besleme - mbedTLS’i ESP-IDF’te bileşen olarak entegre etme ve TLS bağlantılarını bir FreeRTOS task’ından başlatma
Seviye: 4 – İleri Düzey
Konular:
- Gömülü ortamda karşılıklı TLS (client ve server sertifikaları) uygulama
- Firmware geri alma korumasıyla güvenli bir sertifika rotasyon mekanizması tasarlama
- Bellek ayak izini optimize etme: kullanılmayan modülleri kapatma,
mbedtls_platform_set_calloc_freeiçinde heap-stack kullanımını ayarlama - Donanımsal kripto hızlandırıcıya (RSA/ECC offload) bağlanma ve onu mbedTLS PK katmanına kaydetme
- Özel anahtarları güvenle saklama: flash şifreleme veya harici bir secure element (ATECC608A) kullanma
Seviye: 5 – Uzman
Konular:
- mbedTLS çekirdeğine düzeltme veya yeni özellik katkısı (örn. yeni bir cipher suite ekleme veya constant-time kodu iyileştirme)
- Handshake ve kripto primitifleri üzerinde güvenlik denetimleri ve fuzz testleri yapma
- FIPS 140-2 uyumlu bir mbedTLS yapılandırması kurma ve modül doğrulamasını belgeleme
- Yan kanal saldırılarına dirençli implementasyonlar geliştirme, zamanlama veya güç analizi saldırılarına karşı sıkılaştırma
- Kurumsal düzeyde güvenlik politikaları tanımlama ve mentorluk: tehdit modelleme, anahtar yaşam döngüsü yönetimi, zafiyet bildirim süreçleri
18 – Sensör Kalibrasyonu ve Kompanzasyon
Seviye: 1 – Sıfırdan Başlayan
Konular:
- “Sensör kalibrasyonu” ve “kompanzasyon” ne demek, neden önemli — bunları anlama
- Kodda bir sensörden ham ADC değerlerini okumayı öğrenme (örn.
adc1_get_raw) - Ortam koşullarında ham sensör çıkışlarını seri port veya basit bir veri kaydediciyle loglama
- Temel referans standartlarıyla tanışma: bilinen sabit dirençler, bilinen referans gerilimleri
- Doğrusallık veya offset hatalarını görmek için ham okumaları beklenen değerlere karşı tabloda çizme
Seviye: 2 – Başlangıç
Konular:
- İki noktalı (offset ve kazanç) kalibrasyon yapma: bilinen iki konsantrasyonda veya yükte okuma toplama
- Firmware’de basit bir doğrusal dönüşüm formülü hesaplayıp uygulama
- Kalibrasyon adımlarını ve sonuçlarını belgeleme: test koşullarını (sıcaklık, nem) dahil etme
- Hata metriklerine giriş: ortalama hata, standart sapma, maksimum hata
- Kalibrasyon verisi toplamayı script’lerle veya basit shell komutlarıyla otomatikleştirme
Seviye: 3 – Orta Düzey
Konular:
- Sensör yanıtını tüm aralığı boyunca çok noktalı veriyle (en az 5–10 nokta) karakterize etme
- Python veya Excel gibi bir araçta yüksek dereceli eğriler (polinom regresyonu) veya parçalı doğrusal segmentler uydurma
- Sıcaklık ve nem kompanzasyonu uygulama: ortam sensörlerini okuyup düzeltme formülleri uygulama
- Kompanzasyonu, düzeltilmiş okumaları farklı koşullarda referans cihazlarla karşılaştırarak doğrulama
- Kalibrasyon katsayılarını kalıcı bellekte saklama (RTC belleği, NVS partition’ı veya flash)
Seviye: 4 – İleri Düzey
Konular:
- Sağlam kalibrasyon protokolleri geliştirme: test sırasını rastgeleleştirme, ortam değişkenlerini kontrol etme, metadata loglama
- İstatistiksel teknikler kullanma: aykırı değer tespiti, güven aralıkları, tekrarlanabilirlik/yeniden üretilebilirlik çalışmaları
- Cihaz üzerinde kalibrasyon rutinlerini otomatikleştirme: kullanıcı yönlendirmeli etkileşimli kalibrasyon modu
- Uzun saha kurulumlarında kaymayı gidermek için self-calibration veya auto-zero rutinleri uygulama
- Kalibrasyon verisini bir backend sisteminde veya kalibrasyon veritabanında yönetip versiyonlama
Seviye: 5 – Uzman
Konular:
- Çok değişkenli kompanzasyon algoritmaları tasarlama (örn. karmaşık çapraz duyarlılıklar için sensör füzyonu veya makine öğrenmesi regresörleri)
- Yüksek hacimli üretim kalibrasyonu için otomatik kalibrasyon düzenekleri veya test fixture’ları tasarlayıp kurma
- Kalibrasyon standartlarını ve prosedürlerini tanımlayıp uygulatma (ISO 17025 tarzı dokümantasyon)
- Sahadaki kalibrasyon kaymasını izleme ve uzaktan yeniden kalibrasyon veya firmware güncellemesi tetikleme
- Ekibi ileri metroloji kavramlarında eğitip mentorluk yapma; kurum içi kalibrasyon rehberleri ve teknik raporlar yayımlama
19 – Veri Kaydı ve OTA Depolama
Seviye: 1 – Sıfırdan Başlayan
Konular:
- ESP32’de kalıcı depolamanın ne anlama geldiğini ve loglama ya da OTA hazırlığı için neden faydalı olduğunu öğrenme
- Dahili flash dosya sistemleri (SPIFFS, LittleFS) ile harici SD kartlar arasındaki farkı anlama
- SPIFFS’i Arduino’da (
SPIFFS.begin()) veya ESP-IDF’te (esp_vfs_spiffs_register) mount etme - Dosyaları listeleme, yazma modunda (
"w") bir dosya açma, bir satır yazma, kapatma, sonra okuma için açıp içeriği basma - SD kartı başlatıp mount etme (Arduino
SD.begin(), ESP-IDFesp_vfs_fat_sdspi_mount), bir dosya açıp temel okuma/yazma yapma
Seviye: 2 – Başlangıç
Konular:
- Mevcut veriyi ezmeden yeni log kayıtları eklemek için append modunu (
"a") kullanma - Dizinlerde gezinme: dizin açma, dosya adlarını okuma, uzantıya veya zaman damgasına göre filtreleme
platformio.iniveyasdkconfigiçinde SPIFFS/LittleFS partition boyutunu yapılandırma, yeniden flash’layıp doğrulama- LittleFS farklarını keşfetme: daha hızlı mount, yerleşik wear leveling, metadata işlemleri
- Mount hatalarını tespit edip yönetme, yazmadan önce boş alanı kontrol etme, bozulmuş bir dosya sistemini kurtarma
Seviye: 3 – Orta Düzey
Konular:
- Log rotasyonu uygulama: dosya boyut veya yaş eşiğini aşınca kapatıp yenisini başlatma; en eski logları silme
- Binary sensör verisini verimli loglama: struct’ları veya float’ları serileştirme, geri okuyup belleğe alma
- SD üzerinde uzun dosya adı destekli FAT mount edip kullanma; birden çok SD partition’ını yönetme
- Kodunuzun yapılandırmayla SPIFFS, LittleFS veya SD arasında geçiş yapabilmesi için bir soyutlama katmanı oluşturma
- Büyük veri veya firmware parçalarını raw flash yazmalarıyla özel bir “ota_data” partition’ında hazırlama
Seviye: 4 – İleri Düzey
Konular:
- ESP32 partition tablosunu anlama ve düzenleme: factory, ota_0, ota_1, data (spiffs/littlefs) girdileri
- ESP-IDF’in OTA API’lerini kullanma:
esp_ota_begin(),esp_ota_write(),esp_ota_end(),esp_ota_set_boot_partition() - Tam bir firmware imajını pasif OTA partition’ına indirip yazma, bütünlüğünü doğrulama, boot’u değiştirme
- Kesintiye uğrayan güncellemeleri yönetme: yarım yazmaları tespit etme, bilinen son sağlam firmware’e geri dönme
- Dosya sistemi dayanıklılığını optimize etme: atomik dosya işlemleri, journaling stratejileri veya double-buffering kullanma
Seviye: 5 – Uzman
Konular:
- Özel partition düzenleri tasarlama: birden çok data partition’ı, dinamik yeniden boyutlandırma, çip dışı flash entegrasyonu
- Veriyi durağan halde korumak ve aşınmayı azaltmak için şifreli ve/veya sıkıştırılmış dosya sistemleri uygulama
- İndirme boyutunu ve güncelleme süresini en aza indirmek için delta-OTA veya yama tabanlı güncellemeler geliştirme
- Dosya sistemi bozulmasını simüle eden ve OTA kurtarma akışlarını doğrulayan otomatik test düzenekleri kurma
- En iyi pratiklerde mentorluk: partition hizalama, flash aşınma yönetimi, secure-boot entegrasyonu ve saklanan veri ile firmware güncellemelerinin tam yaşam döngüsü yönetimi
20 – Uzaktan OTA Güncelleme Akışı
Seviye: 1 – Sıfırdan Başlayan
Konular:
- OTA (Over-The-Air) güncellemelerin ne olduğunu ve neden faydalı olduğunu anlama
- Arduino’da (
ArduinoOTA) veya ESP-IDF’te (ota_https_simple) basit bir OTA örneğini keşfetme - Geliştirme ortamını OTA için yapılandırma: OTA kütüphanesini/bileşenini dahil etme
- OTA etkin “blink” örneğini flash’layıp bir servis veya HTTP uç noktası yayınladığını doğrulama
- VS Code veya Arduino IDE’den manuel bir OTA güncellemesi tetikleyip firmware’in yeniden başlamasını izleme
Seviye: 2 – Başlangıç
Konular:
- Bir firmware binary’sini yerel bir HTTP(S) sunucusunda veya basit bir dosya sunucusunda barındırma
HTTPClientveyaesp_http_clientile HTTP üzerinden sürüm manifestini veya binary URL’ini çeken firmware kodu yazma- Güncellemeyi ESP-IDF OTA API’siyle (
esp_ota_begin,esp_ota_write,esp_ota_end) ikincil partition’a indirip uygulama - Yeni imajın bütünlüğünü yerleşik checksum’larla veya HTTP ETag header’larıyla doğrulama
- Temel geri alma uygulama: yeni firmware boot edemez veya hata bildirirse önceki partition’a dönme
Seviye: 3 – Orta Düzey
Konular:
- OTA tetikleyicilerini otomatikleştirme: boot’ta veya periyodik timer’larla güncelleme kontrolü, mevcut sürümü manifestle karşılaştırma
- Güncelleme kanalını güvenceye alma: HTTP’den HTTPS’e geçme, sunucu sertifikalarını doğrulama, CA’ları flash’a sabitleme
- İndirme boyutunu azaltmak için delta-OTA (binary diff) desteği: tam imaj yerine yamaları entegre edip uygulama
- Cihazlara mevcut güncellemeleri bildirmek ve dağıtımı cihaz veya grup bazında kontrol etmek için MQTT veya MQTT-SN kullanma
- Denetim için güncelleme metadata’sını (sürüm, zaman damgası, durum) kalıcı depolamada (NVS) saklama
Seviye: 4 – İleri Düzey
Konular:
- Cloud tabanlı bir OTA servisiyle (örn. AWS IoT Device Management, Azure IoT Hub) REST/MQTT API’leri üzerinden entegrasyon
- Kademeli dağıtımlar uygulama: önce cihazların küçük bir yüzdesine dağıtma, sağlığı izleme, sonra dağıtımı genişletme
- Golden imaj yedeği ve başlangıçta otomatik sağlık kontrolleriyle bir A/B partition şeması tasarlama
- CI/CD’de firmware derleme, imzalama ve yayımlama pipeline’larını otomatikleştirme; imzaları gömüp cihazda doğrulama
- Çok bileşenli güncellemeleri (bootloader, partition tablosu, uygulama, dosya sistemi) tek işlemde yönetme
Seviye: 5 – Uzman
Konular:
- Özel bir OTA yönetim backend’i tasarlama: sürümleme, cihaz grupları, diferansiyel güncellemeler, telemetri entegrasyonu
- Uçtan uca güvenlik uygulama: asimetrik anahtarlarla kod imzalama, secure boot entegrasyonu, replay koruması
- Düşük bant genişlikli veya kesintili ağlar için güncelleme mekanizmalarını optimize etme: parçalı teslim, devam desteği, uyarlanabilir hız kontrolü
- Yedekli güncelleme yolları kurma: birden çok sunucu, eşler arası paylaşım, yedek CDN stratejileri
- Ekiplere en iyi pratiklerde mentorluk: endüstri standartlarına (örn. IEC 62443) uyum, sağlam hata yönetimi ve firmware sürümlerinin tam yaşam döngüsü yönetimi
21 – Kontrol ve Kestirim Teorisi
Seviye: 1 – Sıfırdan Başlayan
Konular:
- Bir kontrol döngüsünün temel fikrini kavrama: setpoint, ölçüm ve hata
- Açık döngü ile kapalı döngü sistemlerini ayırt etme
- Pseudocode’da veya C’de basit bir aç/kapa (bang-bang) kontrolcü uygulama
- Sistem yanıtı kavramını anlama: yükselme süresi, aşma, oturma süresi (kavramsal)
- “Kestirim”in ne anlama geldiğini öğrenme: gürültülü ölçümlerden gerçek değeri çıkarsama
Seviye: 2 – Başlangıç
Konular:
- Oransal (P) kontrolcü türetip kodlama: çıkış = Kₚ·hata
- PID kontrolcü kurmak için integral (I) ve türev (D) terimleri ekleme; Kₚ, Kᵢ, K_d’yi deneyerek ayarlama
- Gürültülü sensör okumaları için birinci dereceden (ayrık) alçak geçiren filtre uygulama
- Basit sistemleri fark denklemleri olarak modelleme (örn. ayrık RC devresi)
- Firmware’de hareketli ortalama filtresi veya üstel yumuşatma yazma
Seviye: 3 – Orta Düzey
Konular:
- Sistemleri durum uzayı formunda (ẋ = Ax + Bu; y = Cx + Du) temsil etme ve firmware için ayrıklaştırma
- 1B sabit hızlı model için ayrık zamanlı bir Kalman filtresi tasarlayıp uygulama
- PID kontrollü bir sistemin kararlılığını root locus veya Bode diyagramlarıyla analiz etme (MATLAB/Python)
- PID algoritmasında I terimi için anti-windup ve türev filtreleme uygulama
- Kontrol ve kestirim kodunu deterministik zamanlamayla FreeRTOS task’larına gömme
Seviye: 4 – İleri Düzey
Konular:
- Optimal durum geri beslemeli kontrolcüler (LQR) ve ayrık Kalman gözlemcileri tasarlama
- Doğrusal olmayan sistemler için Extended Kalman Filter’lara (EKF) genişletme (örn. basit mobil robot kinematiği)
- Frekans alanında tasarım yapma: kazanç ve faz payı, notch filtreler, Ziegler–Nichols ve relay yöntemleriyle PID ayarı
- C veya C++‘ta küçük bir horizon’la model öngörülü kontrol (MPC) prototipi kodlama
- Kontrol döngülerinin çalışma süresini ve belleğini profilleme; gerçek zamanlı kısıtlar için optimize etme
Seviye: 5 – Uzman
Konular:
- Doğrusal olmayan kontrol şemaları tasarlama: sliding-mode, uyarlanabilir kontrol, gürbüz H∞ kontrolcüler
- Gömülü hedefler için özel EKF/UKF kütüphaneleri veya MPC çözücüleri geliştirmeye liderlik
- Ekibe ileri kestirim konusunda mentorluk: eşzamanlı konumlama ve haritalama (SLAM) teknikleriyle çoklu sensör füzyonu (IMU + GPS + toprak probları)
- Kontrol/kestirim en iyi pratikleri ve güvenlik doğrulaması üzerine kurum içi tasarım rehberleri yayımlama
- Açık kaynak kontrol/kestirim projelerine veya akademik makalelere özgün algoritmalar ya da iyileştirmeler katma
22 – Python / Bash Scripting
Seviye: 1 – Sıfırdan Başlayan
Konular:
- Python 3 ve pip kurulumu;
python3 --versionvepip3 --versionile doğrulama - Bir bash shell açma;
bash --versionçalıştırma - Bir “hello world” Python script’i (
hello.py) ve basit bir bash script’i (hello.sh) oluşturup çalıştırma - Shebang satırları ekleme (
#!/usr/bin/env python3ve#!/usr/bin/env bash) ve script’leri çalıştırılabilir yapma (chmod +x) - Temel bash komutlarını kullanma:
echo,ls,pwd,cd; ve Python’unprint()’i, basit değişken atamaları
Seviye: 2 – Başlangıç
Konular:
- Python veri tipleri (int, float, string, list, dict) ve kontrol akışı (
if,for,while); basit fonksiyonlar tanımlama - Bash değişkenleri, konumsal parametreler (
$1,$2), tırnaklama kuralları, temelif [ ]vefordöngüleri - Dosya G/Ç: Python’da açma/okuma/yazma; bash’te yönlendirme (
>,>>) ve satır okuma (while read) - Python’un yerleşik modüllerini (
os,sys) import edip kullanma; küçük bash yardımcı script’lerinisourceile dahil etme - Temel hata yönetimi: Python’da
try/except; bash’teset -evetrap '…' ERR
Seviye: 3 – Orta Düzey
Konular:
- Python sanal ortamları (
python3 -m venv),requirements.txt, pip ile üçüncü parti paket kurulumu getoptsveyagetoptile bash argüman ayrıştırma ve yeniden kullanılabilir bash fonksiyonları yazma- Build otomasyon script’leri:
make,idf.pyveyapio’yu Python’dan (subprocess) veya bash’ten çağırma - Sağlam CLI arayüzleri için Python’un
argparse’ını ve yapılandırılmış loglar içinloggingmodülünü kullanma - İleri shell G/Ç: pipe’lar (
|), process substitution (<(),>()), here-doc’lar (<<EOF) ve komut ikamesi
Seviye: 4 – İleri Düzey
Konular:
pytestveyaunittestile Python unit testleri yazma;flake8/pylintile stil uygulatma vemypyile tip ipuçları ekleme- Bash script’lerini sağlamlaştırma:
set -euxo pipefail, parametre doğrulama, trap temizlik fonksiyonları, debug modu (set -x) - Eşzamanlı görevler için Python kullanma:
threading,multiprocessingveconcurrent.futuresgibi üst düzey araçlar - Yeniden kullanılabilir Python modülleri kurma ve
setup.py/pyproject.tomlile yükleme; sürümleri ve bağımlılıkları yönetme - CI/CD adımlarını otomatikleştirme: GitHub Actions veya GitLab CI job’larını orkestre eden Python veya bash script’leri yazma
Seviye: 5 – Uzman
Konular:
- Click veya Typer gibi framework’lerle bağımsız Python CLI araçları geliştirip yayımlama; paketleri PyPI’a yükleme
- Büyük bash framework’leri tasarlama: modüler script’ler, plugin sistemleri, coprocess’ler, ileri G/Ç yönlendirme
- Python script’lerini profilleyip optimize etme (örn.
cProfile,line_profiler), yüksek verimli görevler içinasynciobenimseme - Script’leri sistem servisleriyle entegre etme: systemd unit dosyaları, container entry-point script’leri, Docker-Compose otomasyonu
- Ekibe script yazımında en iyi pratikleri tanımlayıp öğretme: güvenlik (girdi temizleme, injection’dan kaçınma), dokümantasyon ve bakımı kolay kod şablonları
23 – Cloud ve Dashboard Temelleri
Seviye: 1 – Sıfırdan Başlayan
Konular:
- Cloud tabanlı IoT platformları ile on-premise çözümler kavramını kavrama
- Ücretsiz bir AWS IoT Core veya Azure IoT Hub deneme hesabı açma
- AWS IoT veya Azure portalında gezinme: Things/Devices bölümünü keşfetme ve genel bakış dashboard’larını görüntüleme
- Bir masaüstü aracı (AWS IoT Explorer veya Azure IoT Explorer) kurup çalıştırarak bağlanma ve örnek bir telemetri mesajı gönderme
- InfluxDB’nin ne olduğunu anlama: Docker veya binary ile yerel bir InfluxDB 2.x kurulumu, yerleşik CLI’ı çalıştırma ve tek bir veri noktası yazma
Seviye: 2 – Başlangıç
Konular:
- AWS IoT Core’da bir cihaz (“Thing”) veya Azure IoT Hub’da bir cihaz kaydetme; üretilen sertifikaları veya SAS token’ları indirip inceleme
- AWS IoT SDK (C/Python) veya Azure Device SDK ile MQTT üzerinden basit JSON telemetri yayımlama
- Grafana kurma, InfluxDB’yi veri kaynağı olarak ekleme ve tek bir alanı gösteren temel bir zaman serisi paneli oluşturma
- Komut satırından (
curlveya Influx CLI ile) InfluxDB’ye veri yazma ve InfluxDB arayüzünde doğrulama - Grafana kavramlarını keşfetme: dashboard’lar, paneller, sorgular, zaman aralığı seçici
Seviye: 3 – Orta Düzey
Konular:
- Üretim tarzı cihaz kodu uygulama: kalıcı MQTT bağlantıları, yeniden bağlanma mantığı, yapılandırılmış JSON payload’lar, topic hiyerarşileri
- Gelen telemetriyi bir Lambda fonksiyonuna, DynamoDB tablosuna veya Kinesis stream’ine yönlendiren bir AWS IoT Rule tanımlama
- Gelen veri akışlarını otomatik almak ve dönüştürmek için InfluxDB task’larını veya Telegraf’ı yapılandırma
- Flux veya InfluxQL sorgularıyla çok panelli Grafana dashboard’ları kurma: gauge’lar, grafikler ve stat paneller ekleme
- Grafana’da eşiklere dayalı basit alarm kuralları kurma ve bir e-posta veya Slack bildirim kanalı yapılandırma
Seviye: 4 – İleri Düzey
Konular:
- Kimlik doğrulamayı sıkılaştırma: AWS’te IoT politikalarını kısıtlama, Azure IoT Hub RBAC’ine ince ayar, sertifika/SAS token’ları düzenli rotasyona sokma
- Cloud ile cihaz arasında istenen/raporlanan durumu senkronize etmek için AWS IoT Device Shadows veya Azure Digital Twins kullanma
- InfluxDB’yi retention policy’ler, continuous query’ler veya Task’lar ve uzun süreli depolama için shard gruplarıyla ölçekleme
- Dashboard ve alarmları Git’teki JSON/YAML dosyalarıyla yönetmek için Grafana provisioning (kod olarak) uygulama
- Grafana’yı harici alert manager’lar veya bildirim servisleriyle (PagerDuty, OpsGenie, Microsoft Teams) entegre etme
Seviye: 5 – Uzman
Konular:
- Küresel, dayanıklı bir IoT omurgası tasarlama: çok bölgeli AWS IoT Core veya Azure IoT Hub failover’ı, Greengrass veya Azure IoT Edge ile edge-gateway entegrasyonu
- Tüm altyapıyı otomatikleştirme: IoT kaynaklarını, InfluxDB cluster’larını, Grafana instance’larını ve IAM politikalarını dağıtan Terraform modülleri veya ARM/Bicep şablonları yazma
- Yüksek hacimli veri alımını optimize etme: toplu yazmalar, sıkıştırma teknikleri, backpressure stratejileri ve backfill prosedürleri
- Grafana’da ayrıntılı RBAC ve veri kaynağı filtrelemesiyle çok kiracılı dashboard’lar tasarlayıp uygulatma
- Ekiplere maliyet kontrolü, güvenlik uyumluluğu (GDPR, HIPAA), veri saklama politikaları ve IoT analitik yığınının operasyonel izlenmesi konularında en iyi pratik mentorluğu
24 – Regülasyon ve Çevresel Uyumluluk
Seviye: 1 – Sıfırdan Başlayan
Konular:
- Ticari bir cihaz için regülasyon onayının ve çevresel sınıflandırmaların neden önemli olduğunu öğrenme
- CE işareti (AB), FCC sertifikasyonu (ABD) ve temel IP kodlarının kapsamını anlama
- Hangi direktiflerin geçerli olduğunu belirleme (örn. CE için EMC, LVD; FCC için Part 15) ve IP67 sınıfının ne ifade ettiği
- Resmi kaynakları bulup yer imlerine ekleme: AB’nin NANDO veritabanı, FCC ekipman yetkilendirme portalı
Seviye: 2 – Başlangıç
Konular:
- Temel standartları inceleme: EMC bağışıklık/emisyon (EN 61326-1 / FCC Part 15 Subpart B), güvenlik (EN 61010-1)
- IP sınıflarının nasıl test edildiğini (su jeti, toz odası) ve her basamağın ne anlama geldiğini öğrenme
- Her modül veya bileşen için datasheet’leri ve tedarikçi uygunluk beyanlarını toplama
- Beklenen uyumluluk yolunu basit bir tablo veya kontrol listesinde belgeleme
Seviye: 3 – Orta Düzey
Konular:
- Bir Teknik Dosya (CE) veya FCC test planı taslağı hazırlama: blok diyagramları, şemalar, BOM, risk değerlendirmesi dahil
- Temel EMI/EMC azaltma uygulama: ferrit, common-mode choke, PCB toprak dolguları ekleme
- Kurum içi ön uyumluluk testleri yapma: yakın alan EMI probu, ESD tabancası testi, temel yalıtım kontrolleri
- Cihaz etiket görsellerini hazırlama: CE işareti, FCC ID, WEEE sembolleri, güvenli kullanım uyarıları
Seviye: 4 – İleri Düzey
Konular:
- Bir Notified Body (CE) veya FCC akrediteli laboratuvarla resmi sertifikasyon sürecini yönetme: numune gönderme, testlere tanıklık
- Test raporlarını analiz etme, başarısızlıkları çözmek için tasarım değişikliklerini yönlendirme (örn. yerleşim değişiklikleri, muhafaza contaları)
- Hedef IP sınıfına ulaşmak için çevresel ve mekanik testleri koordine etme: termal çevrim, titreşim, sızdırmazlık testi
- Uygunluk Beyanı’nı (CE) derleyip imzalama ve ekipman yetkilendirmesi için FCC Form 731 dosyalama
Seviye: 5 – Uzman
Konular:
- Gerektiğinde CE, FCC, UL/CSA, RoHS, REACH, WEEE ve diğerlerini kapsayan küresel bir uyumluluk stratejisi tanımlama
- Yeniden test ve bölgesel varyantları basitleştirmek için modüler donanım ve firmware tasarlama
- Tedarikçi uyumluluk programlarına liderlik: bileşen değişiklik kontrolünü uygulatma, üretici QMS denetimi
- Ürün revizyonları boyunca Teknik Dosyaları ve FCC ek belgelerini güncel tutma; periyodik gözetim denetimlerini yönetme
- Düzenleyici kurumlarla birincil temas noktası olma, uygunsuzluk bulgularını ve düzeltici eylemleri yönetme, ekibe sürekli regülasyon yönetimi en iyi pratikleri konusunda mentorluk.
25 – Dokümantasyon Araçları (Markdown, Doxygen)
Seviye: 1 – Sıfırdan Başlayan
Konular:
- Proje dokümantasyonunun amacını anlama: README’ler, API referansları, nasıl-yapılır rehberleri
- Bir Markdown editörü kurma veya VS Code’un yerleşik desteğini kullanma
- Temel Markdown sözdizimi yazma: başlıklar (
#–###), kalın/italik, madde ve numaralı listeler - Markdown ile link ve görsel ekleme (
[text](url),) - Bir
README.md’yi VS Code’da veya GitHub’da önizleme
Seviye: 2 – Başlangıç
Konular:
- Markdown’da tablo, blockquote ve çitli kod blokları oluşturma
- Çok sayfalı dokümanlar için göreli linkler ve anchor linkleri kullanma
- Doxygen kurma ve varsayılan bir
Doxyfileüretme - C/C++ kaynak kodunu fonksiyonlar ve tipler için Doxygen yorumlarıyla (
///,/** ... */) işaretleme - HTML çıktısı üretmek için Doxygen çalıştırma ve üretilen dokümanları gezme
Seviye: 3 – Orta Düzey
Konular:
Doxyfileayarlarını özelleştirme: girdi yolları,EXTRACT_ALL,EXTRACT_PRIVATE, diyagram desteği, çıktı formatları- Doxygen yorumlarına Markdown içeriği gömme ve
\includeile harici Markdown dosyaları dahil etme @defgroupve@addtogroupetiketleriyle dokümantasyonu modüllere ve gruplara organize etme- Doxygen çalıştırmasını CMake veya PlatformIO build’ine entegre ederek dokümanların her build’de güncellenmesini sağlama
- Markdown ile Doxygen yorumlarını birlikte satır içi önizlemek için VS Code eklentileri kullanma
Seviye: 4 – İleri Düzey
Konular:
- Doxygen’i özel etiket filtreleri veya girdi ön işleyicileriyle (örn. Python script’leri) genişletme
- Dokümantasyon build’lerini CI pipeline’larında otomatikleştirme ve GitHub Pages, GitLab Pages veya dönüştürücülerle Confluence’a yayımlama
- Kod işaretlemelerinden PlantUML veya Graphviz diyagramları üretip dokümanlara dahil etme
- Doküman kapsama metriklerini sürdürme: belgelenmemiş fonksiyon/tipleri tespit eden script’ler yazma ve eşiğin altındaysa CI’ı düşürme
- Ekip genelinde Markdown ve Doxygen kullanımı için bir stil rehberi tanımlayıp yayımlama
Seviye: 5 – Uzman
Konular:
- Kurumsal markaya uygun özel Doxygen düzenleri ve temaları geliştirme (XSLT, özel CSS/HTML şablonları)
- Doxygen’in yanında Sphinx veya MkDocs kullanan, versiyonlu çıktılara ve aramaya sahip hibrit bir dokümantasyon pipeline’ı tasarlama
- Repolar arası dokümantasyon dahil etmeyi Git submodule’leri, bileşik Doxyfile’lar veya etiket tabanlı linklemeyle otomatikleştirme
- Dokümantasyon incelemelerine liderlik, dokümanlar için CI kalite kapıları uygulatma ve ekibe en iyi pratiklerde mentorluk
- Açık kaynak dokümantasyon araçlarına katkı veya plugin/uzantı yazma (örn. ileri diyagram render’lama veya canlı kod örnekleri için)