تسلط بر Toolkit توسعهدهنده Embedded IoT
مقیاس 5-to-1
برنامه یادگیری یک توسعهدهنده embedded باید بازتاب bill of materials باشد. ما این درس را به سختی آموختیم در حالی که یک node مانیتورینگ خاک خورشیدی بر پایه ESP32، back-haul cellular SIMCom و AWS IoT Core را راهاندازی میکردیم: firmware، سختافزار، لینکهای رادیویی و workflowهای cloud همگی باید همزمان سر جایشان میآمدند، و ردکردن حتی یک قسمت، آن «tweak firmware سریع» را به هفتهها debugging تبدیل میکرد.
برای متمرکز نگه داشتن آن برنامه، هر شایستگی را در یک مقیاس 5-to-1 رتبهبندی میکنیم—یک چارچوب کاملاً مستقل از فناوری:
| سطح | معنی | چرا مهم است |
|---|---|---|
| 5 = Must-have | زبان اصلی، ابزارهای ضروری، مفاهیم بنیادین | بدون اینها نمیتوانید ship کنید |
| 4 = Optimizers | CI/CD، تست خودکار، سختسازی امنیت، tuning عملکرد | prototypeها را به محصولات robust تبدیل میکنند |
| 3 = Workflow boosters | داشبوردها، debugging پیشرفته، cloud ops | توسعه روزمره را سادهتر میکنند |
| 2 = Nice-to-haves | ویژگیهای تخصصی که بعداً میخواهید | وقتی زمان اجازه دهد polish اضافه میکنند |
| 1 = Specialties | deep dive برای دامنههای niche یا scaling آینده | وقتی use case آن را ایجاب کند |
نحوه کاربرد در هر جا
- هدف نهایی را تعریف کنید. «job-ready» یا «production-ready» به چه معناست؟
- 5sها را فهرست کنید. کیت بقای مطلق.
- 4sها را شناسایی کنید. practiceهایی که راهحل را مستحکم و مقیاسپذیر میکنند.
- 3sها را پر کنید. ابزارهای quality-of-life و بهینهسازی.
- 2sها و 1sها را اضافه کنید. عمق تخصصی برای تیمهای بزرگتر یا ویژگیهای پیشرفته.
اثبات سریع که خوب جابهجا میشود
- Front-End Web Dev → 5s: HTML/CSS، JS مدرن، Git… • 4s: React/Vue، TypeScript، Jest، CI/CD… • 3s: Storybook، e2e tests… • 2s: PWAs، animations… • 1s: WebGL، data-viz.
- Data Science / MLOps → 5s: Python، NumPy/Pandas، stats… • 4s: TensorFlow/PyTorch، Docker، unit tests… • 3s: Feature stores، MLflow… • 2s: Edge inference… • 1s: Federated learning.
با رتبهبندی impact و frequency هر موضوع، یک مسیر روشن ترسیم میکنید و از احساس غرق شدن اجتناب میکنید.
5sها برای stack ESP32 + SIM + AWS ما چگونه به نظر میرسند
- تسلط C/C++ – زبان ESP-IDF و hookهای FreeRTOS.
- تسلط ESP-IDF (یا Arduino-ESP32) – Wi-Fi، BLE، ADC، APIهای deep-sleep.
- مبانی الکترونیک – level-shifting UARTهای SIM، خواندن probeهای NPK، hygiene EMI.
- Power-budgeting و شارژ Li-ion/خورشیدی – زنده نگه داشتن یک 18650 4 Ah در طول هفتههای ابری.
- اتصال robust (Wi-Fi، SIM AT، MQTT/TLS) – ارسال امن داده سنسور به AWS.
این پنج مورد را master کنید و میتوانید یک prototype عملکردی ship کنید. به 4s بروید—CI pipelines، FreeRTOS پیشرفته، OTA، امنیت—و محصولی دارید که در میدان دوام میآورد. 3s، 2s و 1s toolkit حرفهای را با داشبوردها، compliance و عمق دامنهای کامل میکنند.
مقالهای که در ادامه میآید یک چکلیست نیست؛ یک roadmap ترتیبی است که با انتخابهای سختافزاری واقعی نگاشت شده است. با 5s شروع کنید، از 4sها فارغالتحصیل شوید، و تا زمانی که به سرزمین 3-to-1 وارد میشوید، هم اعتماد و هم context برای کاربرد آنها در جایی که بیشترین اهمیت را دارند خواهید داشت، از breadboard تا تولید.
Skillsetهای توسعهدهندگان Embedded
راهنما – اهمیت
5 = ضروری (must-have برای کار روزمره)
4 = بسیار مهم (در اکثر پروژهها لازم است)
3 = مفید (اغلب مفید است، به زودی یاد بگیرید)
2 = Nice-to-have (وقت اجازه داد یاد بگیرید)
1 = تخصصی / موقعیتی
| # | مهارت / ابزار | چرا برای یک محصول اندازهگیری خاک مبتنی بر ESP32 مهم است | اهمیت |
|---|---|---|---|
| 1 | C / C++ | زبانهای اصلی ESP-IDF، Arduino core و درایورهای پریفرال. | 5 |
| 2 | ESP-IDF (native) یا Arduino-ESP32 | دسترسی مستقیم به Wi-Fi، BLE، GPIO، ADC، UART، I²C و APIهای FreeRTOS. | 5 |
| 3 | مبانی FreeRTOS | زمانبندی task، watchdogها، queueها و حالتهای خواب کممصرف. | 4 |
| 4 | Git & GitHub / GitLab | کنترل نسخه، code review و hookهای CI. | 5 |
| 5 | VS Code | IDE سبک cross-platform با extensionهای قوی ESP-IDF و PlatformIO. | 4 |
| 6 | PlatformIO | Build، flash، unit-test و static-analysis پروژههای embedded از VS Code. | 4 |
| 7 | Linux CLI / WSL | Toolchainها، build scriptها، debugging OpenOCD و runnerهای CI containerized. | 3 |
| 8 | Unit-testing framework (Unity / CppUTest) | تستهای regression برای math سنسور، parserهای comms، منطق battery-state. | 3 |
| 9 | Continuous Integration (GitHub Actions / GitLab CI) | اتوماسیون build، test، lint و بررسی اندازه firmware در هر push. | 3 |
| 10 | Jira (issues) & Confluence (docs) | ردیابی taskها، باگها، نیازمندیها و یادداشتهای طراحی در تیم. | 3 |
| 11 | الکترونیک Digital & Analog | خواندن خروجیهای سنسور NPK، level-shifting UART ماژول SIM، کاهش EMI. | 5 |
| 12 | طراحی PCB (KiCad / Altium) | برد سفارشی برای ESP32، رابط NPK، شارژر Li-ion و solar MPPT. | 4 |
| 13 | Power-budgeting و شارژ Solar-Li-ion | اندازهگیری پنل، IC شارژ، مبدلها و حالتهای کممصرف firmware. | 5 |
| 14 | Battery management (ایمنی و coulomb counting 18650) | محافظت در برابر over-/under-voltage و تخمین SoC. | 4 |
| 15 | Cellular comms (دستورات SIMCom AT، PPP، TCP/IP) | آوردن اتصال cloud وقتی Wi-Fi در میدان وجود ندارد. | 5 |
| 16 | IoT protocols (MQTT / HTTPS) | لینک داده سبک و امن به سرور یا cloud. | 4 |
| 17 | TLS / mbedTLS security basics | رمزنگاری داده و authenticate دستگاه به endpointهای cloud. | 4 |
| 18 | Sensor calibration & compensation | تأثیرات دما / رطوبت روی خوانشهای NPK؛ منحنیهای کالیبراسیون میدانی. | 5 |
| 19 | Data logging & OTA storage (SPIFFS، LittleFS، SD) | Backup محلی در زمان از دست دادن اتصال؛ staging firmware update. | 3 |
| 20 | Remote OTA update flow | قابلیت نگهداری هزاران واحد deployed. | 4 |
| 21 | Control & Estimation theory | اختیاری—به filtering پیشرفته (Kalman، PID) یا sampling تطبیقی کمک میکند. | 2 |
| 22 | Python / Bash scripting | Pars کردن log، فلش کردن خط تولید، اتوماسیون تست. | 3 |
| 23 | Cloud & dashboard basics (AWS IoT Core، Azure IoT، InfluxDB + Grafana) | ذخیره، visualization و alerting روی معیارهای خاک. | 3 |
| 24 | Regulatory & environmental compliance (CE، FCC، IP-rating) | تضمین deployment قانونی و robustness میدانی. | 3 |
| 25 | Documentation tooling (Markdown، Doxygen) | تولید API و docs طراحی HW قابل نگهداری. | 3 |
نحوه خواندن جدول
- با 5s شروع کنید: تسلط به زبان، SDK میکروکنترلر، مبانی سختافزار، طراحی سیستم توان، دانش سنسور و ارتباطات cellular برای یک دستگاه میدانی قابل اعتماد make-or-break هستند.
- سپس 4sها را بگیرید: محیط توسعه، بهینهسازی توان، OTA، RTOS و امنیت یک prototype عملکردی را به محصول production-ready تبدیل میکنند.
- 3sها workflow حرفهای را کامل میکنند (CI، unit testها، backendهای cloud، PCB CAD).
- 2s و 1s عمق برای تیمهای بزرگتر یا ویژگیهای پیشرفته اضافه میکنند و در صورت tight schedule میتوانند به تأخیر بیفتند.
- از این به عنوان roadmap مهارتی استفاده کنید: با بلوغ پروژه از چپ به راست در مقیاس اهمیت پیش بروید.
1 – C/C++
سطح: 1 – Absolute Beginner
– syntax و ساختار C: مدل کامپایل (source → object → executable)، تابع main()
– انواع داده پایه: int، char، float، double، bool
– متغیرها و ثوابت: declaration، initialization، qualifier const
– عملگرها: حسابی (+، −، *، /، %)، assignment، increment/decrement
– جریان کنترل: if/else، switch، حلقه for/while/do-while
– I/O ساده: printf، خروجی کنسول پایه
– مقدمهای بر pointerها: declaration pointer، dereference
– ساخت و debugging: کامپایل با gcc -o، تفسیر خطاهای پایه کامپایلر
سطح: 2 – Beginner
– حافظه و pointerها: pointer arithmetic، pointer در مقابل array، مقدمه malloc/free
– انواع ساختیافته: struct، union، typedef
– مبانی preprocessor: #define، #include، include guards
– کلاسهای storage: auto، static، extern، scope و linkage rules
– رشتهها و آرایهها: char[]، توابع رشتهای (strcpy، strlen و غیره)
– کد ماژولار: تقسیم به فایلهای multiple .c/.h، اصول makefile (rules، targets)
– ابزارهای debugging پایه: gdb stepping، breakpoints، بررسی متغیرها
سطح: 3 – Intermediate
– مدیریت حافظه پویا: heap در مقابل stack، الگوهای leak رایج، استفاده از ابزارهایی مانند Valgrind
– File I/O: fopen/fread/fwrite/fclose، file pointerها، مدیریت خطا
– عملیات بیتی: maskها، shiftها، set/clear bitها، enum و bit-fields
– Function pointerها: callbackها، dispatch tableها
– مدیریت خطا: return-codeها، errno
– مبانی C++: classes & objects، constructor/destructor، access specifiers
– مبانی STL: std::vector، std::string، استفاده ساده از std::map و iteratorها
– Namespaces و سازماندهی header
سطح: 4 – Advanced
– C embedded خاص: volatile، memory-mapped I/O، const در flash در مقابل RAM
– Linker و build system: linker scriptهای سفارشی، placement section، پرچمهای بهینهسازی (-O2، -Os)، toolchainهای cross-compilation
– ویژگیهای C++11/14/17: lambdaها، auto، range-based for، constexpr، nullptr
– Smart pointerها و RAII: unique_ptr، shared_ptr، مدیریت resource
– مبانی Templates: function & class templates، template specialization
– Multithreading: std::thread، mutexها، condition variableها، atomic types
– مفاهیم real-time: interrupt service routineها (ISRs)، critical sectionها، mitigation priority inversion
سطح: 5 – Expert
– meta-programming template پیشرفته: variadic templates، SFINAE، type traits
– مدل object C++ عمیق: vtableها، layout object، ملاحظات ABI
– همروندی lock-free & low-latency: atomics، memory orderingها، الگوریتمهای wait-free
– درونیات کامپایلر و toolchain: pipelineهای pass GCC/Clang، نوشتن pluginهای کامپایلر سفارشی
– tuning عملکرد: cache alignment، branch prediction، profiling عمیق (مثلاً gprof، hardware counterها)
– porting bare-metal: پیادهسازی stubهای newlib، runtime C حداقل، کد bring-up
– استانداردها و ایمنی: compliance MISRA-C/C++، ابزارهای static analysis (Coverity، Cppcheck)
– مشارکت در framework: نوشتن/بهینهسازی درایورها برای درونیات FreeRTOS یا ESP-IDF
2 – ESP-IDF (native) یا Arduino-ESP32
سطح: 1 – Absolute Beginner
– نصب toolchain ESP-IDF (Python، Git، scriptهای ESP-IDF) یا core Arduino-ESP32
– راهاندازی VS Code (یا Arduino IDE) برای توسعه ESP32
– build و flash مثال «blink»
– بررسی layout پروژه (CMakeLists.txt، sdkconfig یا platformio.ini)
– استفاده از دستورات پایه idf.py (یا Arduino): build، clean، flash، monitor
سطح: 2 – Beginner
– GPIO: پیکربندی پینها، خواندن ورودیها، راهاندازی LED
– ADC: نمونهبرداری از کانالهای آنالوگ، تبدیل مقادیر raw به ولتاژ
– UART & I²C: ارسال/دریافت رشتهها یا بایتهای ساده
– حالت station Wi-Fi: scan APها، اتصال، دریافت IP
– BLE peripheral: advertise، اتصال از یک اپ گوشی
– Tweak menuconfig (partition table، log level) یا تنظیمات برد Arduino
سطح: 3 – Intermediate
– taskها، queueها و timerهای FreeRTOS در چارچوب ESP-IDF
– Wi-Fi events API: مدیریت connect/disconnect، منطق reconnection
– BLE client & GATT: کشف سرویسها، خواندن/نوشتن characteristicها
– SPI & I²C: یکپارچهسازی و کالیبراسیون یک سنسور واقعی (مثلاً رطوبت خاک)
– HTTP(S) OTA updates: راهاندازی partitionها، trigger کردن updateها
– استفاده از esp_timer، logging دقیق (ESP_LOG*) و کدهای خطا
سطح: 4 – Advanced
– ایجاد کامپوننتهای reusable (CMake Component API) یا کتابخانههای سفارشی Arduino
– ساخت یک partition table سفارشی و جابجایی partitionها در runtime
– Provisioning امن: SmartConfig، راهاندازی Wi-Fi مبتنی بر BLE
– مثالهای BLE پیشرفته (L2CAP، mesh)
– بهینهسازی SPI DMA و تنظیمات سرعت/timeout bus I²C
– یکپارچهسازی mbedTLS برای MQTT over TLS
– اتوماسیون build/flash/test در CI (GitHub Actions، scriptهای ESP-IDF CI)
سطح: 5 – Expert
– مشارکت درایورهای جدید یا رفع باگ در core ESP-IDF (مثلاً کالیبراسیون ADC)
– توسعه bootloader سفارشی یا بهینهسازی سطح ISR
– tuning دقیق heap regionها و پارامترهای scheduler FreeRTOS
– پیادهسازی end-to-end secure boot و flash encryption
– tracing و profiling real-time (ESP-Trace، Perfcnt)
– architect کردن workspaceهای CMake multi-project
– mentoring دیگران: تعریف best practices ESP-IDF و کتابخانههای کامپوننت داخلی
3 – FreeRTOS Fundamentals
سطح: 1 – Absolute Beginner
– درک اینکه RTOS چیست و چرا از آن استفاده میکنید
– نصب FreeRTOS (از طریق ESP-IDF یا PlatformIO) و بررسی مثال demo task «hello world»
– یادگیری API پایه برای ایجاد و شروع یک task واحد (xTaskCreate، vTaskStartScheduler)
– بررسی system tick و نحوه جابجایی scheduler بین taskها
– استفاده از vTaskDelay برای مسدود کردن یک task برای زمان ثابت
سطح: 2 – Beginner
– ایجاد taskهای multiple با اولویتها و stack sizeهای مختلف
– استفاده از vTaskDelayUntil برای زمانبندی task دورهای
– درک و اعمال critical sectionها (taskENTER_CRITICAL / taskEXIT_CRITICAL)
– آشنایی با حالتهای task (Running، Ready، Blocked، Suspended)
– استفاده از vTaskSuspend / vTaskResume برای کنترل ساده task
سطح: 3 – Intermediate
– ارتباط بین taskها با queueها (xQueueCreate، xQueueSend، xQueueReceive)
– همگامسازی taskها با binary و counting semaphoreها (xSemaphoreCreateBinary، xSemaphoreTake)
– هماهنگسازی رویدادها با Event Groups (xEventGroupSetBits، xEventGroupWaitBits)
– استفاده از timerهای نرمافزاری (xTimerCreate، callback)
– تشخیص و مدیریت stack overflow
سطح: 4 – Advanced
– بهینهسازی allocation حافظه: انتخاب و پیکربندی schemeهای heap (heap_1…heap_5) و درک fragmentation
– استفاده از task notificationها به عنوان binary semaphoreهای سبکوزن یا پیامهای داده direct-to-task
– پیکربندی و استفاده از tickless idle mode برای کاربردهای کممصرف
– تولید و تفسیر run-time statistics (vTaskGetRunTimeStats)
– یکپارچهسازی FreeRTOS+Trace یا Percepio Tracealyzer
سطح: 5 – Expert
– porting FreeRTOS به سختافزار سفارشی یا اصلاح port layer برای use caseهای پیشرفته
– پیادهسازی و tuning policyهای scheduler سفارشی یا hook functionها (vApplicationIdleHook، vApplicationMallocFailedHook)
– طراحی state machineهای پیچیده با استفاده از primitiveهای همگامسازی پیشرفته (mutexها با priority inheritance، recursive mutexها)
– mentoring تیمها درباره best practices، ایمنی (کد MISRA-compliant) و tuning رفتار deterministic
4 – Git & GitHub/GitLab
سطح: 1 – Absolute Beginner
– نصب Git؛ پیکربندی user.name و user.email
– مقداردهی اولیه repo (git init) و clone کردن repoهای موجود (git clone)
– tracking فایل پایه: git status، git add، git commit
– مشاهده تاریخچه با git log، بررسی تغییرات با git diff
– .gitignore ساده برای exclude کردن فایلها
سطح: 2 – Beginner
– ایجاد و جابجایی branchها: git branch، git checkout/git switch
– راهاندازی remote: git remote add، git fetch، git pull، git push
– درک origin/main در مقابل branchهای local
– رفع conflictهای merge ساده از طریق editor یا CLI
– استفاده از رابط وب GitHub/GitLab برای مرور commitها و branchها
سطح: 3 – Intermediate
– Merge در مقابل rebase: git merge، git rebase؛ دانستن زمان استفاده از هر کدام
– Interactive rebase (git rebase -i) برای تمیز کردن commitها
– Tagging: ایجاد tagهای annotated و lightweight؛ push با git push –tags
– کار با pull requestها (GitHub) یا merge requestها (GitLab): ایجاد، بازبینی، merge
– CI stub پایه: افزودن یک YAML ساده GitHub Actions یا GitLab CI
سطح: 4 – Advanced
– مدیریت submoduleها (git submodule) و subtreeها
– نوشتن hookهای client-side (pre-commit، pre-push) و hookهای ساده server-side GitLab/GitHub
– محافظت از branchها و اجرای merge checks (status checks، approvals)
– ساخت pipelineهای CI/CD multi-stage با caching و artifactها
– استفاده از git bisect برای پیدا کردن باگها؛ cherry-pick کردن commitهای خاص
سطح: 5 – Expert
– مدیریت تنظیمات org GitLab/GitHub: permissionهای user/group، branchهای محافظتشده
– architect کردن استراتژیهای monorepo؛ مدیریت فایلهای بزرگ با Git LFS
– توسعه ابزارها یا scriptهای Git سفارشی (libgit2، hookها، اتوماسیون)
– deep-dive به درونیات Git: object storage، packfileها، refs، index
– تعریف و اجرای workflowها (Gitflow، trunk-based، GitOps);mentoring تیم درباره best practices
5 – VS Code
سطح: 1 – Absolute Beginner
موضوعات:
- نصب VS Code روی Windows، macOS یا Linux
- بررسی UI: Activity Bar، Side Bar، Editor Panes، Status Bar
- باز کردن پوشهها و فایلها؛ ویرایش متن پایه (tabs، split views)
- استفاده از terminal یکپارچه برای اجرای دستورات shell
- فراخوانی Command Palette (Ctrl+Shift+P) برای actionهای رایج
- انجام Find & Replace ساده (Ctrl+F / Ctrl+H)
سطح: 2 – Beginner
موضوعات:
- کشف و نصب extensionها: C/C++ (ms-vscode.cpptools)، ESP-IDF، Arduino-ESP32، PlatformIO IDE
- سفارشیسازی تنظیمات User در مقابل Workspace از طریق settings.json
- استفاده از نمای Source Control داخلی: stage، commit، push/pull
- پیکربندی Tasks پایه (tasks.json) برای build و flash یک «Hello World» ESP32
- Navigation کد با نماهای Outline و Breadcrumbs
- درج و استفاده از snippetهای کد ساده
سطح: 3 – Intermediate
موضوعات:
- پیکربندی IntelliSense: تنظیم include pathها و macroها در c_cpp_properties.json
- ایجاد launch configurationها (launch.json) برای debugging GDB از طریق OpenOCD یا JTAG
- تعریف Tasks composite: build → flash → monitor → lint
- کار در workspaceهای multi-root (code + docs + tests)
- یکپارچهسازی linterها و formatterها (clang-format، cppcheck) به عنوان actionهای pre-save
- Debug taskهای FreeRTOS با debugging آگاه از thread و نمای Debug
- استفاده از پنل Problems و Test Explorer برای unit testها
سطح: 4 – Advanced
موضوعات:
- استفاده از Remote Development: SSH، WSL و workspaceهای Docker container
- ایجاد و به اشتراکگذاری snippetهای کد سفارشی و templateهای فایل برای ESP-IDF/PlatformIO
- اتوماسیون CI: export کردن Tasks VS Code به pipelineهای GitHub Actions یا GitLab CI
- سفارشیسازی keybindingها و استفاده از Settings Sync برای به اشتراکگذاری پیکربندی بین دستگاهها
- توسعه Task Providers reusable از طریق VS Code Tasks API
- استفاده از breakpointهای شرطی و تابعی، logpointها و watch expressionها
سطح: 5 – Expert
موضوعات:
- توسعه و انتشار extensionهای VS Code کامل (TypeScript & Extension API) برای workflowهای ESP32
- architect کردن workspaceهای بزرگ multi-project با پیکربندیهای shared و versioned
- بهینهسازی عملکرد IDE: tuning activation extension، کاهش زمان startup و مصرف حافظه
- پیادهسازی توزیع تنظیمات سازمانی (Settings Cycler، deployment مبتنی بر GPO)
- mentoring teammates درباره best practices VS Code و عیبیابی workflowهای پیچیده
- مشارکت در community VS Code: نوشتن راهنماها، repoهای نمونه و ارائه در meetupها یا workshopها
6 – PlatformIO
سطح: 1 – Absolute Beginner
موضوعات:
- نصب PlatformIO IDE extension در VS Code (یا نصب PIO Core CLI)
- ایجاد یک پروژه PlatformIO جدید (
pio init --board esp32dev) - بررسی ساختار پروژه:
platformio.ini، پوشههایsrc/،lib/ - Build (
pio run) و upload (pio run --target upload) مثال پیشفرض «blink» - باز کردن serial monitor (
pio device monitor) برای مشاهده خروجی
سطح: 2 – Beginner
موضوعات:
- استفاده از Library Manager:
pio lib install،pio lib list، افزودن کتابخانهها درplatformio.ini - پیکربندی environmentهای multiple (
env:sections) برای بردها یا حالتهای build مختلف - تنظیم
build_flags،monitor_speedوupload_speedدرplatformio.ini - اجرای buildهای clean (
pio run --target clean) و verbose (pio run --target verbose) - استفاده از Unified Debugger (
pio debug) برای تنظیم breakpointها و step کردن در کد
سطح: 3 – Intermediate
موضوعات:
- مدیریت buildهای Debug در مقابل Release و environmentهای OTA-enabled در یک
platformio.ini - یکپارچهسازی unit testها با PlatformIO Test Runner و framework Unity
- افزودن static analysis: فعال کردن
cppcheckیاclang-tidyاز طریق extra scriptها یا تنظیماتplatformio.ini - اتوماسیون stepهای pre یا post-build سفارشی با استفاده از
extra_scripts - انتشار و مصرف کتابخانههای خصوصی از طریق PlatformIO Registry
سطح: 4 – Advanced
موضوعات:
- ایجاد و انتشار پکیجهای Platforms و Boards سفارشی برای استفاده داخلی یا community
- پیادهسازی پروتکلهای upload پیشرفته (JTAG، OTA، scriptهای upload سفارشی)
- ساخت pipelineهای CI با استفاده از scriptهای
pio ciبرای GitHub Actions، GitLab CI یا Jenkins - تولید و اتوماسیون گزارشهای coverage برای unit testها
- profiling اندازه firmware و مصرف RAM از طریق PlatformIO IDE Dashboard
سطح: 5 – Expert
موضوعات:
- مشارکت enhancementها یا رفعها در PlatformIO Core و Community Platforms رسمی
- توسعه pluginهای سفارشی PlatformIO برای گسترش قابلیتهای CLI و IDE
- architect کردن و نگهداری workspaceهای monorepo یا multi-project بزرگ با استفاده از PIO Projects
- نوشتن hookهای build پیشرفته برای یکپارچهسازی toolchainهای سازمانی و workflowهای deployment
- mentoring تیمها درباره best practices PlatformIO و عیبیابی issueهای پیچیده cross-platform build/debug
7 – Linux CLI / WSL
سطح: 1 – Absolute Beginner
موضوعات:
- باز کردن یک terminal روی Linux یا WSL
- Navigation در filesystem:
ls،cd،pwd،mkdir - مشاهده و بررسی فایلها:
cat،less،head،tail - دستکاری فایلها:
cp،mv،rm،touch - ویرایش متن با یک ویرایشگر ساده (
nanoیا vim پایه)
سطح: 2 – Beginner
موضوعات:
- permissionها و ownership فایل:
chmod،chown، درک بیتهایrwx - Wildcardها، globbing، piping (
|) و redirection (>،>>،<) - جستجوی متن در فایلها: مبانی
grep - مدیریت متغیرهای محیطی و shell profile شما (
.bashrc،.profile) - نصب و بهروزرسانی بستهها با package manager توزیع خود (
apt،yum،pacman) - اتصال به hostهای remote از طریق
sshو انتقال فایل باscp
سطح: 3 – Intermediate
موضوعات:
- نوشتن scriptهای Bash: shebang، متغیرها، حلقهها، شرطها، توابع
- پردازش متن با
find،xargs،awk،sed - کنترل process و job:
ps،top/htop،kill،jobs،bg/fg - پیکربندی ruleهای udev برای آداپتورهای USB/JTAG ESP32
- فراخوانی toolchainهای cross-compilation و build systemها (
make،cmake،idf.py) از CLI - اجرای OpenOCD از خط فرمان برای فلش و debug از طریق JTAG/SWD
سطح: 4 – Advanced
موضوعات:
- توسعه scriptهای shell robust: مدیریت خطا، logging، unit testها (ShellCheck)
- اتوماسیون pipelineهای کامل build–flash–test در shell و یکپارچهسازی در CI (GitHub Actions، GitLab CI)
- containerize کردن محیط build با Docker یا Podman؛ نوشتن Dockerfile برای buildهای reproducible
- debugging remote و sync فایل:
sshport forwarding،rsync،tmux/screenبرای persistence session - profiling و debugging ابزارهای native:
strace،ltrace،perf
سطح: 5 – Expert
موضوعات:
- ساخت و نگهداری kernelها یا ماژولهای Linux سفارشی برای targetهای embedded
- architect کردن و عملیات کردن runnerهای CI اختصاصی (bare-metal یا containerized) بهینهشده برای cross-compileهای embedded
- پیادهسازی caching پیشرفته و تکنیکهای build توزیعشده (ccache، distcc)
- طراحی frameworkهای CLI یا toolchainهای خود، مدیریت dotfileها در تیمها (Git-driven)
- mentoring دیگران درباره best practices استفاده از shell، workflowهای terminal-based و اتوماسیون taskهای test و deployment سختافزار
8 – Unit-Testing Framework (Unity / CppUTest)
سطح: 1 – Absolute Beginner
موضوعات:
- درک هدف و مزایای unit testing
- نصب Unity یا CppUTest (از طریق کتابخانه PlatformIO، pip package یا از source)
- ایجاد یک فایل تست حداقلی و include کردن headerهای framework
- نوشتن یک تابع تست ساده با استفاده از macro TEST (Unity) یا TEST_GROUP/TEST (CppUTest)
- اجرای test runner از خط فرمان و تفسیر خروجی PASS/FAIL
- استفاده از macroهای assertion پایه (مثلاً TEST_ASSERT، CHECK_EQUAL)
سطح: 2 – Beginner
موضوعات:
- سازماندهی تستها در suites یا گروهها
- پیادهسازی توابع setUp() و tearDown() برای fixtures تست
- استفاده از محدوده گستردهتری از assertionها: floatها، رشتهها، مقایسه حافظه
- پارامتrizه کردن تستها یا حلقه زدن روی دادههای تست
- یکپارچهسازی compilation و اجرای تست در build PlatformIO یا CMake شما
- تولید دادههای ساده code-coverage (مثلاً از طریق gcov) و مشاهده درصد coverage پایه
سطح: 3 – Intermediate
موضوعات:
- ایجاد stubها و fakeها برای توابع وابسته به سختافزار (خوانشهای I²C، تبدیلهای ADC)
- معرفی یک کتابخانه mocking (CppUMock یا CMock Unity) برای شبیهسازی وابستگیها
- نوشتن تست برای کد asynchronous: شبیهسازی callbackها، interruptها یا timerهای FreeRTOS
- اتوماسیون اجرای تستها با scriptهای shell یا یک job CI پایه
- جمعآوری و تحلیل metricهای coverage دقیق (branch، function coverage)
- تست گسترده شرایط مرزی و خطا
سطح: 4 – Advanced
موضوعات:
- توسعه پیادهسازیهای mock سفارشی برای درایورهای سطح پایین و abstractionهای پریفرال
- استفاده از pluginهای تشخیص leak حافظه (CppUTest MemoryLeak detector)
- port کردن test runner روی دستگاه برای on-target unit testها
- نوشتن تست برای primitiveهای همروندی: semaphoreها، queueها، task notificationها در FreeRTOS
- یکپارچهسازی گزارشهای coverage و تست در یک dashboard CI (خروجی XML JUnit/XUnit)
- استفاده از macroهای assertion پیشرفته و قابلیتهای پارامتrization تست
سطح: 5 – Expert
موضوعات:
- گسترش یا سفارشیسازی framework تست: نوشتن pluginها، reporterهای سفارشی یا macroهای assertion جدید
- architect کردن یک زیرساخت تست scalable در چندین پروژه و پلتفرم
- پیادهسازی harnessهای test hardware-in-the-loop (HIL) یا firmware-in-the-loop (FIL) با کنترل خودکار fixture
- mentoring تیمها درباره TDD، الگوهای طراحی تست و اعمال policyهای تست
- مشارکت در پروژههای open-source Unity یا CppUTest (رفع باگها، ویژگیهای جدید)
- بهینهسازی اجرای parallel تست، محیطهای تست containerized و کاهش overhead runtime تست
9 – Continuous Integration (GitHub Actions / GitLab CI)
سطح: 1 – Absolute Beginner
موضوعات:
- یادگیری اینکه Continuous Integration (CI) چیست و چرا مهم است (build و تست خودکار)
- شناسایی سرویسهای CI محبوب: GitHub Actions در مقابل GitLab CI
- ایجاد سادهترین فایل پیکربندی CI (
.github/workflows/ci.ymlیا.gitlab-ci.yml) - افزودن یک job که کد را checkout میکند (
actions/checkoutیاgit clone) و یک پیام hello چاپ میکند - trigger کردن workflow در هر push به branch main و مشاهده لاگهای پایه در رابط وب
سطح: 2 – Beginner
موضوعات:
- گسترش job CI برای نصب وابستگیها (مثلاً Python/pip، PlatformIO، ESP-IDF)
- افزودن stepهای build: compile firmware (
idf.py buildیاpio run) - اجرای unit testها از طریق
pio testیا test runner سفارشی و تفسیر pass/fail - یادگیری خواندن و فیلتر کردن خروجی لاگ برای خطاها و warningها
- commit و push تغییرات برای trigger کردن CI؛ رفع build failureهای ساده
سطح: 3 – Intermediate
موضوعات:
- تقسیم build، test، lint و static-analysis به jobها یا stageهای جداگانه
- استفاده از actionهای built-in (یا templateهای GitLab) برای caching artifactهای toolchain (
actions/cache) - پیادهسازی matrix build برای تست بردها یا نسخههای toolchain multiple به صورت parallel
- آرشیو artifactهای build (باینریهای firmware، گزارشهای تست، دادههای coverage) برای دانلود
- پیکربندی وابستگیهای job و اجرای شرطی (
needs:در GitHub Actions،stage:در GitLab CI)
سطح: 4 – Advanced
موضوعات:
- یکپارچهسازی ابزارهای code-coverage (gcov، lcov) و انتشار badgeهای coverage
- اتوماسیون بررسی اندازه firmware و مصرف حافظه؛ fail کردن اگر thresholdها رد شوند
- deploy کردن firmware آماده OTA به یک دستگاه staging از طریق SSH یا runner سفارشی
- مدیریت امن secretها و توکنها (GitHub Secrets، GitLab CI/CD variables)
- استفاده از runnerهای self-hosted یا containerهای Docker برای محیطهای build سفارشی
سطح: 5 – Expert
موضوعات:
- توسعه actionهای CI reusable سفارشی یا تصاویر Docker بهینهشده برای buildهای ESP32
- architect کردن pipelineهای multi-project: کتابخانههای shared، مدیریت submodule، triggerهای cross-repo
- پیادهسازی workflowهای پیشرفته: previewهای feature-branch، deploymentهای canary، rollbackهای خودکار
- اجرای compliance با policyهای branch محافظتشده، commitهای signed و audit logها
- mentoring و مستندسازی best practices CI/CD در تیمها؛ آموزش عیبیابی failureهای pipeline پیچیده
10 – Jira & Confluence
سطح: 1 – Absolute Beginner
موضوعات:
- درک هدف tracking issue در مقابل documentation
- ثبتنام در Jira Cloud (یا اتصال به instance موجود)
- Navigation در UI Jira: پروژهها، issueها، backlog، بورد
- ایجاد یک issue پایه: انتخاب پروژه، نوع issue، summary، description
- جابجایی یک issue از طریق یک workflow ساده (To Do → In Progress → Done)
- افزودن comment و attachment به یک issue
- ثبتنام در Confluence (یا دسترسی به space تیم)
- ایجاد یک صفحه Confluence: title، body text، save و edit
سطح: 2 – Beginner
موضوعات:
- کار با انواع issue مختلف (Task، Bug، Story، Epic) و فیلدهای priority
- استفاده از بوردهای پایه Jira: Scrum و Kanban، جابجایی کارتها در ستونها
- فیلتر کردن issueها با JQL ساده (مثلاً project = “XYZ” AND status = “Open”)
- پیکربندی notificationهای ایمیل ساده و watch کردن issueها
- در Confluence، سازماندهی صفحات در Spaces و سلسلهمراتب parent-child
- استفاده از macroهای رایج: Code Block، Table، Panel، Image
- درج لینکهای issue Jira و لیستهای issue در صفحات Confluence
سطح: 3 – Intermediate
موضوعات:
- سفارشیسازی issue screenها و افزودن فیلدهای سفارشی
- تعریف و تغییر workflowهای ساده: statusها، transitionها، validatorها
- ایجاد و به اشتراکگذاری dashboardها با gadgetها (Filter Results، Burndown Chart)
- نوشتن queryهای JQL پیشرفته برای فیلترها و بوردهای پیچیده
- پیکربندی swimlaneهای بورد بر اساس query یا assignee
- در Confluence، ایجاد و استفاده از Templates و Blueprints
- مدیریت permissionهای صفحه، labelها و محدودیتهای صفحه
- استفاده از macroهای Include Page، Excerpt و Page Properties برای گزارشهای پویا
سطح: 4 – Advanced
موضوعات:
- ساخت ruleهای Jira Automation: triggerها، شرطها، actionها (مثلاً auto-assign، ارسال alert)
- راهاندازی SLAها، service deskها و ردیابی metricها با Jira Service Management
- architect کردن بوردهای multi-project و releaseهای cross-project
- استفاده از Portfolio for Jira (Advanced Roadmaps) برای برنامهریزی timelineها و وابستگیها
- در Confluence، ایجاد Blueprints سفارشی و Theme overrides
- embed کردن محتوای پویا: نمودارهای Jira، diagramهای Gliffy، macroهای Live
- تحلیل analytics صفحه و فعالیت کاربر برای بهینهسازی محتوا
سطح: 5 – Expert
موضوعات:
- مدیریت تنظیمات global Jira: permissionها، schemeهای نوع issue، schemeهای workflow
- طراحی workflowهای پیچیده درجه سازمانی با branching، approvals و اتوماسیون
- یکپارچهسازی Jira با ابزارهای خارجی (CI/CD، Slack، GitHub) از طریق webhookها و appها
- هدایت پیادهسازی ITSM: change management، workflowهای incident/problem
- در Confluence، توسعه pluginهای سفارشی یا استفاده از ScriptRunner برای اتوماسیون
- تعریف templateهای space، global look-and-feel و schemeهای permission پیشرفته
- mentoring و آموزش تیمها درباره best practices و policyهای governance Jira/Confluence
11 – Digital & Analog Electronics
سطح: 1 – Absolute Beginner
موضوعات:
- درک واحدهای الکتریکی پایه: ولتاژ (V)، جریان (A)، مقاومت (Ω)، توان (W)
- یادگیری قانون Ohm (V = I∙R) و محاسبات سری/موازی پایه
- شناسایی کامپوننتهای passive: مقاومتها، خازنها، سلفها
- استفاده از multimeter برای اندازهگیری ولتاژ، جریان و مقاومت در مدارهای DC ساده
- خواندن و تفسیر symbolها و schematicهای مدار پایه
سطح: 2 – Beginner
موضوعات:
- ساخت و تحلیل شبکههای مقاومتی سری و موازی و تقسیمکنندههای ولتاژ
- معرفی خازنها: منحنیهای شارژ/دشارژ، ثابتهای زمانی RC، فیلترهای low-pass/high-pass ساده
- درک سطوح منطق دیجیتال (TTL در مقابل CMOS) و نحوه ترجمه آنها به GPIO ESP32
- تکنیکهای level shifting: تقسیمکنندههای مقاومتی، level shifterهای MOSFET-based برای سیگنالهای UART
- استفاده از breadboardها و سیمهای jumper برای prototype کردن مدارهای رابط سنسور
سطح: 3 – Intermediate
موضوعات:
- طراحی analog front-end برای سنسورها: انتخاب و پیکربندی op-ampها (inverting، non-inverting)
- پیادهسازی amplifierهای instrumentation برای سیگنالهای سنسور differential (مثلاً probeهای NPK)
- رابط ADC: درک محدوده full-scale، resolution، نرخ نمونهبرداری و انتخاب ولتاژ مرجع
- مبانی EMI/EMC: خازنهای decoupling، استراتژیهای grounding، قوانین layout پایه
- تحلیل و کاهش نویز: shielding، سیمکشی twisted-pair، ferrite beadها
سطح: 4 – Advanced
موضوعات:
- ایجاد مدارهای اندازهگیری دقیق: روشهای کالیبراسیون، compensation drift دما
- طراحی فیلتر پیشرفته: توپولوژیهای فیلتر active (Butterworth مرتبه دوم، Bessel)
- طراحی منبع تغذیه: انتخاب و layout مبدلهای DC-DC، LDOها و decoupling سرامیکی/bulk
- layout PCB برای mixed-signal: groundهای analog/digital جدا، traceهای controlled impedance، grounding ستارهای
- انجام بررسیهای compliance EMI پایه: near-field probing، تکنیکهای spectrum analysis
سطح: 5 – Expert
موضوعات:
- architect کردن analog front-endهای low-noise: راهحلهای discrete سفارشی، budgeting نویز و انتخاب کامپوننت
- طراحی و یکپارچهسازی ICهای mixed-signal: ADC/DACهای high-resolution، isolation دیجیتال و optimization timing SPI/I²C
- توسعه و validate کردن پیکربندیهای IC یا PMIC مدیریت توان سفارشی برای دستگاههای باتریدار
- هدایت تلاشهای certification EMI/EMC: نوشتن planهای تست، تفسیر استانداردهای CE/FCC، تست pre-compliance و remediation
- mentoring و بازبینی طراحیهای analog & mixed-signal تیم، بهینهسازی برای manufacturability، cost و reliability
12 – PCB Design (KiCad / Altium)
سطح: 1 – Absolute Beginner
موضوعات:
- درک اینکه PCB چیست و چرا استفاده میشود (در مقابل breadboard یا perfboard)
- نصب KiCad یا Altium Designer و بررسی UI
- ایجاد یک پروژه schematic جدید و قرار دادن کامپوننتهای پایه (مقاومت، LED، کانکتور)
- اجرای Electrical Rules Check (ERC) برای catch کردن خطاهای آشکار netlist
- تولید netlist و import آن به یک layout PCB خالی
- قرار دادن footprintها روی outline برد و روت کردن traceهای ساده تکلایه
- export کردن Gerber و drill fileهای پایه
سطح: 2 – Beginner
موضوعات:
- ساخت و مدیریت یک کتابخانه شخصی symbolها و footprintها
- تعریف و اعمال design ruleها: عرض trace، clearanceها، annular ringها
- استفاده از ground و power planeها برای سادهسازی routing و بهبود reliability
- افزودن text silkscreen، designatorهای کامپوننت و layerهای mechanical outline برد
- کار با footprintهای through-hole و surface-mount، درک تنظیمات pad و solder mask
- اجرای Design Rule Check (DRC) و رفع خطاهای رایج clearance/overlap
- تولید یک پکیج fabrication کامل: Gerberها، NC drill، BOM
سطح: 3 – Intermediate
موضوعات:
- ایجاد schematicهای multi-sheet (hierarchical) و مدیریت net connectivity
- تعریف stackup کنترلشده برای بردهای 4 یا 6 لایه، شامل ضخامتهای dielectric
- روت کردن differential pairها و جفتهای matched-length (USB، SPI، خطوط high-speed)
- استفاده از management plane پیشرفته: split planeها، thermal reliefها، pour zoneها
- یکپارچهسازی مدلهای 3D برای بررسیهای clearance مکانیکی و enclosure
- اتوماسیون تولید BOM با فیلدهای سفارشی و export به CSV یا Excel
- همکاری از طریق Git (یا SVN) روی فایلهای پروژه PCB و مدیریت تاریخچه نسخه
سطح: 4 – Advanced
موضوعات:
- طراحی برای manufacturability (DFM): panelization، fiducialها، نقشههای مونتاژ
- پیادهسازی practiceهای integrity سیگنال high-speed: کنترل impedance، via stitching، return pathها
- ایجاد و reuse templateهای پروژه با design ruleها و stackهای لایه company-wide
- انجام تحلیلهای thermal و power-distribution پایه درون ابزار ECAD
- نوشتن و اجرای scriptها (Python در KiCad یا scriptهای Altium) برای اتوماسیون taskهای تکراری
- توسعه و مدیریت کتابخانههای کامپوننت متمرکز با lifecycle stateها و variantهای approved
- یکپارچهسازی داده ECAD با CAD مکانیکی برای concurrent engineering
سطح: 5 – Expert
موضوعات:
- architect کردن سیستمهای rigid-flex و multi-board (backplane)، تعریف نواحی خم flex و stiffenerها
- هدایت design reviewها با تمرکز بر DFM، DFA (مونتاژ) و DFT (تست)، و mentoring طراحان junior
- توسعه footprintهای custom-compliant IPC و ایجاد documentation استانداردهای design داخلی
- هدایت یکپارچهسازی PLM/ERP برای مدیریت lifecycle قطعه و workflowهای procurement
- برنامهریزی و اجرای پکیجهای certification (UL، CE، FCC) با تمام documentation لازم
- بهینهسازی ویژگیهای پیشرفته: buried/blind viaها، controlled impedance، طراحیهای microvia HDI
- مشارکت یا سفارشیسازی pluginهای ابزار ECAD و ساخت pipelineهای خودکار برای validate کردن داده fabricator
13 – Power-Budgeting & Solar-Li-ion Charging
سطح: 1 – Absolute Beginner
موضوعات:
- درک رابطه بین ولتاژ، جریان و توان (P = V × I)
- یادگیری مشخصات پایه باتری Li-ion: ولتاژ nominal (~3.7 V)، ظرفیت (mAh/Ah)، محدوده ولتاژ ایمن
- استفاده از multimeter برای اندازهگیری ولتاژ و جریان در مدارهای ساده باتریدار
- شناسایی railهای توان پایه روی یک برد ESP32 و خواندن labelهای آنها (5 V، 3.3 V)
- آشنایی با یک پنل خورشیدی کوچک: مشخصات open-circuit voltage (Voc) و short-circuit current (Isc)
سطح: 2 – Beginner
موضوعات:
- ساخت یک spreadsheet power-budget ساده: فهرست کردن هر زیرسیستم (ESP32، سنسور، رادیو) با جریان کاری و duty cycle آن
- محاسبه میانگین و peak جریان مصرفی؛ تخمین runtime روی یک ظرفیت باتری دادهشده
- مقایسه رگولاتورهای خطی (LDOها) در مقابل رگولاتورهای switching ساده برای step down به 3.3 V
- سیمکشی یک IC شارژ Li-ion پایه (مثلاً MCP73831) روی breadboard و مشاهده رفتار LED شارژ
- اندازهگیری خروجی پنل در سطوح نور مختلف و یادگیری خواندن منحنیهای datasheet آن
سطح: 3 – Intermediate
موضوعات:
- معرفی مفاهیم Maximum Power Point Tracking (MPPT): چرا MPPT برداشت انرژی را در مقابل shading passive بهبود میبخشد
- انتخاب و پیکربندی یک کنترلکننده شارژ خورشیدی off-the-shelf (مثلاً Adafruit Solar LiPo Charger)
- اندازهگیری پنل خورشیدی و باتری برای target runtime و بدترین شرایط آبوهوایی؛ شامل حاشیههای ایمنی
- طراحی یک مدار dual-power-input: باتری به علاوه خورشیدی، با ORing دیود ایدهآل یا دیودهای Schottky
- پیادهسازی حالتهای کممصرف firmware (deep sleep، light sleep) و اندازهگیری جریان quiescent
سطح: 4 – Advanced
موضوعات:
- ارزیابی و انتخاب بین ICها یا ماژولهای MPPT مختلف برای استفاده embedded (مثلاً STSPIN، سری TI BQ)
- طراحی درخت توان PCB سفارشی: مبدلهای buck/boost، load switchها، indicatorهای power-good
- مدلسازی منحنیهای شارژ/دشارژ باتری و اثرات حرارتی؛ شبیهسازی در SPICE یا spreadsheet
- پیادهسازی مدیریت توان پویا در firmware: تطبیق نرخ نمونهبرداری یا duty cycle رادیو بر اساس SoC باتری
- افزودن محافظتهای سختافزاری: over-voltage، under-voltage، over-current و monitoring دما
سطح: 5 – Expert
موضوعات:
- architect کردن یک الگوریتم MPPT کاملاً سفارشی در firmware یا FPGA، tuning برای profileهای خورشیدی محلی
- توسعه یا اصلاح firmware IC مدیریت توان (مثلاً برای یک BMS سفارشی) و بهینهسازی برای بازده 98%+
- هدایت طراحی برداشت انرژی در محیطهای افراطی: نور کم، دماهای افراطی، تحلیل shading جزئی
- یکپارچهسازی diagnostics پیشرفته سلامت باتری: coulomb counting، impedance tracking، الگوریتمهای پیشبینی SoC/SoH
- mentoring تیمها در trade-offهای سیستم توان، آمادهسازی documentation برای certifications ایمنی UL/IEC و بهینهسازی برای yield و reliability تولید.
14 – Battery Management (18650)
سطح: 1 – Absolute Beginner
موضوعات:
- یادگیری مشخصات پایه سلول Li-ion 18650: ولتاژ nominal، ظرفیت، حداکثر جریان شارژ/دشارژ
- درک ایمنی پایه سلول: بدون short circuit، قطبیت صحیح، اجتناب از over-discharge
- اندازهگیری ولتاژ سلول با multimeter؛ تشخیص نقاط full (4.2 V) در مقابل empty (≈3.0 V)
- شناسایی featureهای رایج IC محافظ: cut-off over-voltage، under-voltage، over-current
- تمرین handling ایمن: استفاده از holder مناسب، هرگز سوراخ یا له کردن سلولها
سطح: 2 – Beginner
موضوعات:
- سیمکشی یک ماژول شارژر single-cell ساده (مثلاً TP4056) و monitor کردن LEDهای وضعیت شارژ
- درک profile شارژ CC-CV: constant-current تا threshold، سپس taper constant-voltage
- افزودن یک PCB محافظ به سلول: یادگیری نحوه عملکرد protection MOSFET-based
- خواندن منحنیهای شارژ/دشارژ datasheet سلول و رهنمودهای derating
- محاسبه تقریبی State of Charge (SoC) از منحنی ولتاژ در مقابل SoC
سطح: 3 – Intermediate
موضوعات:
- معرفی مبانی coulomb-counting: اندازهگیری شارژ ورودی/خروجی از طریق مقاومت current sense و ADC
- انتخاب و یکپارچهسازی یک amplifier current-sense (مثلاً INA219 یا IC coulomb-counter اختصاصی)
- کالیبراسیون سیستم coulomb-counting خود: offset، gain و compensation drift
- ترکیب SoC مبتنی بر ولتاژ و coulomb-counting برای بهبود دقت
- پیادهسازی بررسیهای پایه سلامت باتری: cycle count، تخمین fade ظرفیت
سطح: 4 – Advanced
موضوعات:
- طراحی یک مدار balance-charge multi-cell (2–4 سلول) با مقاومتهای cell-balancing یا IC balancer active
- یکپارچهسازی یک BMS IC کامل (مثلاً سری TI BQ769x0): over-voltage، under-voltage، over-current، monitoring دما
- پیادهسازی الگوریتمهای in-firmware SoC و SoH: Kalman filter یا Coulomb counter تطبیقی
- افزودن sensing دما (NTC یا دیجیتال) و compensation برای منحنیهای شارژ/دشارژ
- validate کردن ایمنی در شرایط fault: شبیهسازی short، over-current، over-temperature و لاگ کردن رویدادهای fault
سطح: 5 – Expert
موضوعات:
- architect کردن یک firmware BMS سفارشی: الگوریتمهای cell balancing پیشرفته، profileهای شارژ تطبیقی
- بهینهسازی دقت Coulomb-counting در بلندمدت: correction drift، compensation دما، الگوریتمهای self-learning
- هدایت تلاشهای certification: IEC 62133، UL 2054، UN 38.3 testing documentation و ایجاد test plan
- طراحی featureهای ایمنی redundant: monitoring dual-IC، watchdogها، حالتهای failsafe سختافزاری
- mentoring و بازبینی طراحیهای زیرسیستم باتری: failure-mode analysis، manufacturability و planهای reliability testing
15 – Cellular Comms (SIMCom AT, PPP, TCP/IP)
سطح: 1 – Absolute Beginner
موضوعات:
- یادگیری مفاهیم cellular پایه: GSM در مقابل LTE در مقابل NB-IoT
- شناسایی pinout سیمکارت و نحوه insert/eject کردن آن
- تغذیه و سیمکشی یک ماژول SIMCom به یک میکروکنترلر یا آداپتور USB-to-UART
- باز کردن یک terminal سریال (minicom، PuTTY) در baud rate صحیح
- ارسال دستورات AT ساده: AT، ATI، AT+CSQ
- تفسیر پاسخها: OK، ERROR و کدهای پایه کیفیت سیگنال
سطح: 2 – Beginner
موضوعات:
- بررسی ثبتنام شبکه: AT+CREG? و AT+CGREG?
- پیکربندی PDP context: AT+CGDCONT=1,”IP”,””
- استفاده از PPP برای برقراری لینک IP: نوشتن یک chat script و فراخوانی pppd
- تأیید اتصال IP روی PPP: ping یک host شناختهشده یا استفاده از ابزار تست socket
- ارسال و خواندن SMS: AT+CMGF=1، AT+CMGS=””، AT+CMGR=
- مدیریت کدهای خطای پایه: خواندن و decoding +CME ERROR:
سطح: 3 – Intermediate
موضوعات:
- باز کردن و مدیریت socketهای TCP: AT+CIPSTART=”TCP”,”host”,”port”
- ارسال و دریافت داده روی socket: AT+CIPSEND و AT+CIPRXGET
- monitoring کدهای نتیجه unsolicited (URC): +CIPSTATUS، +TCP_CLOSED
- پیادهسازی منطق reconnect خودکار در firmware وقتی socket یا PPP drop میشود
- استفاده از حالتهای خواب ماژول برای صرفهجویی توان: AT+CFUN، AT+CSCLK
- امن کردن لینک با دستورات TLS پایه در صورت پشتیبانی (مثلاً AT+SSLOPT)
سطح: 4 – Advanced
موضوعات:
- یکپارچهسازی bring-up PPP در taskهای RTOS با callbackهای رویداد روی connect/disconnect
- مدیریت APNهای multiple و contextهای fallback برای resilience roaming
- اجرای یک MQTT client روی socket cellular با استفاده از دستورات مبتنی بر AT
- query کردن داده GNSS/location در صورت پشتیبانی ماژول: AT+CGPS=1، AT+CGPSINFO
- profiling throughput و latency: اندازهگیری نرخ داده و بهینهسازی buffering firmware
- diagnosis issueهای RF و شبکه با استفاده از دستورات info شبکه extended (مثلاً AT+QENG)
سطح: 5 – Expert
موضوعات:
- توسعه یا بهینهسازی یک کتابخانه parser دستورات AT با state machineها و buffering robust
- طراحی یک PPP daemon سفارشی یا stack IP سبکوزن برای سیستمهای deeply embedded
- پیادهسازی یکپارچهسازی سطح درایور: انتقالهای UART مبتنی بر DMA، کنترل جریان سختافزاری
- پشتیبانی از حالتهای داده پیشرفته: raw socketها، UDP multicast/broadcast، SMS data mode
- مدیریت provisioning certificate امن در flash و مدیریت end-to-end sessionهای TLS
- mentoring تیمها درباره best practices cellular IoT: optimization هزینه، compliance نظارتی و ملاحظات طراحی آنتن/RF
16 – IoT Protocols (MQTT / HTTPS)
سطح: 1 – Absolute Beginner
موضوعات:
- درک اینکه پروتکلهای IoT چیستند و چرا برای دستگاههای constrained مهم هستند
- یادگیری مبانی MQTT: مدل publish/subscribe، نقش broker، topicها، سطوح QoS (0، 1، 2)
- یادگیری مبانی HTTPS: درخواست/پاسخ client–server، اصول REST، URLها، متدها (GET، POST)
- نصب یک MQTT client دسکتاپ (MQTT.fx، MQTT Explorer) و اتصال به یک broker public (مثلاً test.mosquitto.org)
- استفاده از
curlبرای ارسال درخواستهای HTTPS GET ساده به APIهای public
سطح: 2 – Beginner
موضوعات:
- نوشتن firmware برای اتصال ESP32 به یک MQTT broker با استفاده از یک کتابخانه ساده (مثلاً
PubSubClientبرای Arduino یاesp_mqtt_clientبرای ESP-IDF) - publish کردن خوانشهای سنسور به یک topic تست؛ subscribe و log کردن پیامها از topic دیگر
- ساخت payloadهای JSON پایه و parse کردن JSON ورودی در firmware
- انجام درخواستهای HTTPS از ESP32: راهاندازی
HTTPClient(Arduino) یاesp_http_client(ESP-IDF) - مدیریت اعتبارسنجی certificate در سطح پایه (شروع با mode insecure، سپس switch به root CA درست)
سطح: 3 – Intermediate
موضوعات:
- پیادهسازی persistence session MQTT: retain messages، clean session = false
- استفاده از MQTT Last Will and Testament (LWT) برای سیگنال دادن disconnectهای غیرمنتظره
- سازماندهی سلسلهمراتب topic با wildcardها (
+،#) برای messaging scalable دستگاه - مدیریت certificateهای TLS در flash: تبدیل PEM به DER، embed در partition
- مدیریت HTTPS POST با بدنه JSON و parse کردن پاسخهای JSON؛ مدیریت headerها
سطح: 4 – Advanced
موضوعات:
- طراحی و پیادهسازی یک معماری MQTT امن: client certificateها، احراز هویت متقابل TLS
- بهینهسازی عملکرد MQTT: batch publishes، استفاده مناسب از QoS، به حداقل رساندن overhead keepalive
- پیادهسازی HTTPS mutual authentication (client certs) و مدیریت rotation certificate
- یکپارچهسازی MQTT over WebSockets برای داشبوردهای مبتنی بر مرورگر یا شبکههای constrained
- ساخت یک REST client stateful سبکوزن روی ESP32 با الگوهای retry، backoff و circuit breaker
سطح: 5 – Expert
موضوعات:
- architect کردن یک پل پروتکل سفارشی: ترجمه بین CoAP، MQTT و HTTPS برای شبکههای IoT ناهمگن
- توسعه یک plugin یا extension broker MQTT در-house برای authorization، filtering یا transformation سفارشی
- prototype و ارزیابی پروتکلهای جایگزین IoT (مثلاً MQTT-SN، AMQP، LwM2M) برای use caseهای تخصصی
- هدایت auditهای امنیت: threat modeling، ارزیابی آسیبپذیری stackهای ارتباطی IoT
- mentoring تیمها درباره طراحی معماریهای messaging IoT بزرگمقیاس، امن و resilient با پروتکلهای hybrid
17 – TLS / mbedTLS Security Basics
سطح: 1 – Absolute Beginner
موضوعات:
- یادگیری مفاهیم پایه رمزنگاری: plaintext در مقابل ciphertext، رمزنگاری symmetric در مقابل asymmetric، hashing
- درک اینکه TLS چه چیزی ارائه میدهد: confidentiality، integrity، authenticity
- مطالعه جریان high-level handshake TLS: ClientHello، ServerHello، تبادل کلید، record layer
- نصب mbedTLS و بررسی دایرکتوری مثال
programs/ssl - build و اجرای مثالهای
ssl_client1وssl_server2روی دسکتاپ
سطح: 2 – Beginner
موضوعات:
- پیکربندی mbedTLS از طریق
config.h: فعال کردن فقط moduleهای مورد نیاز (SSL/TLS، X.509، primitiveهای crypto) - تولید یک certificate و کلید self-signed با OpenSSL؛ تبدیل بین فرمتهای PEM و DER
- اصلاح و اجرای
ssl_client2برای انجام یک HTTPS GET به یک سرور public - تنظیم حداقل نسخه TLS و انتخاب cipher suiteهای پایه در پیکربندی SSL
- فعال کردن debug logging mbedTLS برای trace کردن stepهای handshake و کدهای خطا
سطح: 3 – Intermediate
موضوعات:
- پیادهسازی احراز هویت PSK (Pre-Shared Key) در mbedTLS برای دستگاههای constrained
- embed کردن certificateها و کلیدها در flash یا خواندن آنها از یک partition filesystem در runtime
- استفاده از parser X.509 mbedTLS برای validate کردن certificateهای سرور در برابر یک bundle root CA
- seed کردن generator اعداد تصادفی با یک TRNG سختافزاری (مثلاً
esp_hardware_pollESP32) از طریقmbedtls_ctr_drbg - یکپارچهسازی mbedTLS به عنوان یک کامپوننت در ESP-IDF و فراخوانی TLS connectها از یک task FreeRTOS
سطح: 4 – Advanced
موضوعات:
- پیادهسازی mutual TLS (certificateهای client و server) در یک محیط embedded
- طراحی یک مکانیزم rotation certificate امن با محافظت rollback firmware
- بهینهسازی footprint حافظه: غیرفعال کردن moduleهای استفادهنشده، tuning heap در مقابل stack usage در
mbedtls_platform_set_calloc_free - اتصال به یک accelerator crypto سختافزاری (offload RSA/ECC) و ثبت آن در لایه PK mbedTLS
- ذخیره امن کلیدهای خصوصی: استفاده از flash encryption یا یک secure element خارجی (ATECC608A)
سطح: 5 – Expert
موضوعات:
- مشارکت رفعها یا ویژگیهای جدید در core mbedTLS (مثلاً افزودن cipher suite جدید یا بهبود کد constant-time)
- انجام auditهای امنیت و fuzz testing روی handshake و primitiveهای crypto
- ساخت یک پیکربندی mbedTLS compliant با FIPS 140-2 و مستندسازی validation module
- توسعه پیادهسازیهای مقاوم در برابر side-channel و سختسازی در برابر حملات timing یا power analysis
- تعریف و mentoring policyهای امنیتی درجه سازمانی: threat modeling، مدیریت key-lifecycle، فرآیندهای افشای آسیبپذیری
18 – Sensor Calibration & Compensation
سطح: 1 – Absolute Beginner
موضوعات:
- درک معنای «sensor calibration» و «compensation» و چرا مهم هستند
- یادگیری نحوه خواندن مقادیر ADC raw از یک سنسور در کد (مثلاً
adc1_get_raw) - log کردن خروجیهای سنسور raw در شرایط ambient با استفاده از serial print یا یک data logger ساده
- آشنایی با استانداردهای مرجع پایه: مقاومتهای fixed شناختهشده، ولتاژهای مرجع شناختهشده
- رسم مقادیر raw در مقابل مقادیر مورد انتظار در یک spreadsheet برای دیدن خطیبودن یا خطاهای offset
سطح: 2 – Beginner
موضوعات:
- انجام یک کالیبراسیون دو نقطهای (offset & gain): جمعآوری خوانشها در دو غلظت یا load شناختهشده
- محاسبه و پیادهسازی یک فرمول mapping خطی ساده در firmware
- مستندسازی مراحل و نتایج کالیبراسیون: شامل شرایط تست (دما، رطوبت)
- معرفی metricهای خطا: mean error، standard deviation، max error
- اتوماسیون جمعآوری داده کالیبراسیون با scriptها یا دستورات shell ساده
سطح: 3 – Intermediate
موضوعات:
- Characterize کردن پاسخ سنسور در کل محدوده با داده چندنقطهای (حداقل 5–10 نقطه)
- Fitting منحنیهای higher-order (regression polynomial) یا segmentهای piecewise linear در ابزاری مانند Python یا Excel
- پیادهسازی compensation دما و رطوبت: خواندن سنسورهای محیطی و اعمال فرمولهای correction
- validate کردن compensation با مقایسه خوانشهای compensated در برابر instrumentهای مرجع در شرایط مختلف
- ذخیره ضرایب کالیبراسیون در حافظه non-volatile (RTC memory، partition NVS یا flash)
سطح: 4 – Advanced
موضوعات:
- توسعه protocolهای کالیبراسیون robust: تصادفی کردن ترتیب تست، کنترل متغیرهای محیطی، لاگ کردن metadata
- استفاده از تکنیکهای آماری: تشخیص outlier، confidence intervalها، مطالعات repeatability/reproducibility
- اتوماسیون routineهای کالیبراسیون روی دستگاه: حالت کالیبراسیون interactive با promptهای کاربر
- پیادهسازی self-calibration یا routineهای auto-zero برای حذف drift در طول deploymentهای طولانی
- مدیریت و versioning داده کالیبراسیون در یک backend system یا پایگاه داده کالیبراسیون
سطح: 5 – Expert
موضوعات:
- architect کردن الگوریتمهای compensation multivariate (مثلاً با استفاده از sensor fusion یا regressorهای machine-learning برای cross-sensitivityهای پیچیده)
- طراحی و ساخت rigها یا fixtureهای کالیبراسیون خودکار برای کالیبراسیون حجم بالا در تولید
- تعریف و اجرای استانداردها و procedureهای کالیبراسیون (مستندسازی به سبک ISO 17025)
- monitoring drift کالیبراسیون در میدان و trigger کردن از راه دور re-calibration یا firmware update
- mentoring و آموزش تیم درباره مفاهیم metrology پیشرفته؛ انتشار guidelineها و white paperهای کالیبراسیون داخلی
19 – Data Logging & OTA Storage
سطح: 1 – Absolute Beginner
موضوعات:
- یادگیری معنای storage پایدار روی ESP32 و چرا برای logging یا staging OTA مفید است
- درک تفاوت بین filesystemهای internal flash (SPIFFS، LittleFS) و SD cardهای خارجی
- mount کردن SPIFFS در Arduino (
SPIFFS.begin()) یا ESP-IDF (esp_vfs_spiffs_register) - لیست کردن فایلها، باز کردن یک فایل برای نوشتن (
"w")، نوشتن یک خط، بستن، سپس باز کردن برای خواندن و چاپ محتوا - راهاندازی و mount کردن یک SD card (Arduino
SD.begin()، ESP-IDFesp_vfs_fat_sdspi_mount)، باز کردن یک فایل و خواندن/نوشتن پایه
سطح: 2 – Beginner
موضوعات:
- استفاده از حالت append (
"a") برای افزودن entryهای log جدید بدون overwrite کردن داده موجود - پیمایش دایرکتوریها: باز کردن دایرکتوریها، خواندن نام فایلها، فیلتر بر اساس extension یا timestamp
- پیکربندی اندازه partition SPIFFS/LittleFS در
platformio.iniیاsdkconfig، reflash و verify - بررسی تفاوتهای LittleFS: mount سریعتر، wear leveling built-in، عملیات metadata
- تشخیص و مدیریت خطاهای mount، بررسی فضای آزاد قبل از نوشتن، recovery یک filesystem corrupted
سطح: 3 – Intermediate
موضوعات:
- پیادهسازی log rotation: وقتی یک فایل از حد اندازه یا سن میگذرد، بستن آن و شروع یک فایل جدید؛ حذف قدیمیترین logها
- log کردن کارآمد داده باینری سنسور: serialize کردن structها یا floatها، نوشتن/خواندن به حافظه
- mount و استفاده از FAT روی SD با پشتیبانی long-filename؛ مدیریت چند partition SD
- ایجاد یک لایه abstraction تا کد شما بتواند با پیکربندی بین SPIFFS، LittleFS یا SD جابجا شود
- stage کردن chunkهای بزرگ داده یا firmware در یک partition اختصاصی
ota_dataبا استفاده از raw flash writes
سطح: 4 – Advanced
موضوعات:
- درک و ویرایش partition table ESP32: entryهای factory، ota_0، ota_1، data (spiffs/littlefs)
- استفاده از APIهای OTA ESP-IDF:
esp_ota_begin()،esp_ota_write()،esp_ota_end()،esp_ota_set_boot_partition() - دانلود و نوشتن یک image firmware کامل به partition OTA inactive، تأیید integrity آن، جابجایی boot
- مدیریت updateهای interrupted: تشخیص writes جزئی، rollback به آخرین firmware known-good
- بهینهسازی resilience filesystem: استفاده از عملیات atomic file، استراتژیهای journaling یا double-buffering
سطح: 5 – Expert
موضوعات:
- طراحی layoutهای partition سفارشی: partitionهای داده multiple، resizing پویا، یکپارچهسازی flash off-chip
- پیادهسازی filesystemهای رمزنگاریشده و/یا فشرده برای امن کردن داده در حالت استراحت و کاهش wear
- توسعه delta-OTA یا updateهای مبتنی بر patch برای به حداقل رساندن اندازه دانلود و زمان update
- ساخت harnessهای تست خودکار برای شبیهسازی corruption filesystem و validate کردن flowهای recovery OTA
- mentoring درباره best practices: alignment partition، مدیریت flash-wear، یکپارچهسازی secure-boot و مدیریت lifecycle کامل دادههای ذخیرهشده و firmware updateها
20 – Remote OTA Update Flow
سطح: 1 – Absolute Beginner
موضوعات:
- درک اینکه OTA (Over-The-Air) updates چیستند و چرا مفید هستند
- بررسی یک مثال OTA ساده در Arduino (
ArduinoOTA) یا ESP-IDF (ota_https_simple) - پیکربندی محیط توسعه برای فعال کردن OTA: include کردن کتابخانه/کامپوننت OTA
- فلش کردن مثال «blink» با OTA فعال و تأیید advertise کردن یک سرویس یا HTTP endpoint
- trigger کردن یک update OTA دستی از VS Code یا Arduino IDE و تماشای restart firmware
سطح: 2 – Beginner
موضوعات:
- میزبانی یک باینری firmware روی یک HTTP(S) server محلی یا file server ساده
- نوشتن کد firmware برای fetch کردن manifest نسخه یا URL باینری روی HTTP با استفاده از
HTTPClientیاesp_http_client - دانلود و اعمال update به partition ثانویه با استفاده از API OTA ESP-IDF (
esp_ota_begin،esp_ota_write،esp_ota_end) - تأیید integrity image جدید با استفاده از checksumهای built-in یا headerهای HTTP ETag
- پیادهسازی rollback پایه: اگر firmware جدید boot نمیشود یا خطا سیگنال میدهد، برگشت به partition قبلی
سطح: 3 – Intermediate
موضوعات:
- اتوماسیون triggerهای OTA: بررسی updateها در boot یا روی timerهای دورهای، مقایسه نسخه فعلی با manifest
- امن کردن کانال update: جابجایی از HTTP به HTTPS، validate کردن certificateهای سرور، pin کردن CAها در flash
- پشتیبانی از delta-OTA (diffهای باینری) برای کاهش اندازه دانلود: یکپارچهسازی و اعمال patchها به جای imageهای کامل
- استفاده از MQTT یا MQTT-SN برای اطلاعرسانی دستگاهها از updateهای موجود و کنترل rollout per device یا group
- ذخیره metadata update (نسخه، timestamp، وضعیت) در NVS برای audit
سطح: 4 – Advanced
موضوعات:
- یکپارچهسازی با یک سرویس OTA مبتنی بر cloud (مثلاً AWS IoT Device Management، Azure IoT Hub) از طریق APIهای REST/MQTT آنها
- پیادهسازی staged rollouts: rollout به یک درصد کوچک از دستگاهها ابتدا، monitoring سلامت، سپس گسترش rollout
- طراحی یک scheme A/B partition با fallback به golden image و health checkهای خودکار در startup
- اتوماسیون pipelineهای build، sign و publish firmware در CI/CD؛ embed کردن signatureها و verify درون دستگاه
- مدیریت updateهای multi-component (bootloader، partition table، application، filesystem) در یک transaction واحد
سطح: 5 – Expert
موضوعات:
- architect کردن یک backend مدیریت OTA سفارشی: versioning، گروههای دستگاه، updateهای differential، یکپارچهسازی telemetry
- پیادهسازی امنیت end-to-end: code signing با کلیدهای asymmetric، یکپارچهسازی secure boot، محافظت replay
- بهینهسازی مکانیزمهای update برای شبکههای کمپهنا یا intermittent: تحویل chunked، پشتیبانی resume، کنترل نرخ تطبیقی
- ساخت مسیرهای update redundant: چندین سرور، sharing peer-to-peer، استراتژیهای fallback CDN
- mentoring تیمها درباره best practices: compliance با استانداردهای صنعت (مثلاً IEC 62443)، مدیریت خطای robust و مدیریت lifecycle کامل نسخههای firmware
21 – Control & Estimation Theory
سطح: 1 – Absolute Beginner
موضوعات:
- درک ایده پایه یک control loop: setpoint، measurement و error
- تمایز بین سیستمهای open-loop و closed-loop
- پیادهسازی یک controller ساده on/off (bang-bang) در pseudocode یا C
- درک مفهوم پاسخ سیستم: rise time، overshoot، settling time (مفهومی)
- یادگیری معنای «estimation»: استفاده از measurementهای noisy برای استنباط یک مقدار واقعی
سطح: 2 – Beginner
موضوعات:
- استخراج و کدنویسی یک controller proportional (P): output = Kₚ·error
- افزودن termهای integral (I) و derivative (D) برای ساخت یک controller PID؛ tuning Kₚ، Kᵢ، K_d به صورت آزمون و خطا
- پیادهسازی یک فیلتر low-pass مرتبه اول (discrete) برای خوانشهای noisy سنسور
- مدلسازی سیستمهای ساده به عنوان difference equationها (مثلاً مدار RC discrete)
- نوشتن یک فیلتر moving-average یا exponential smoothing در firmware
سطح: 3 – Intermediate
موضوعات:
- نمایش سیستمها در فرم state-space (ẋ = Ax + Bu؛ y = Cx + Du) و discretize کردن برای firmware
- طراحی و پیادهسازی یک Kalman filter discrete-time برای یک مدل constant-velocity 1D
- تحلیل stability یک سیستم PID-controlled با root locus یا Bode plot (MATLAB/Python)
- پیادهسازی anti-windup برای term I و derivative filtering در یک الگوریتم PID
- embed کردن کد control & estimation در taskهای FreeRTOS با timing deterministic
سطح: 4 – Advanced
موضوعات:
- طراحی controllerهای optimal state-feedback (LQR) و observerهای discrete Kalman
- گسترش به Extended Kalman Filters (EKF) برای سیستمهای nonlinear (مثلاً سینماتیک robot سیار ساده)
- طراحی در حوزه فرکانس: gain & phase margin، notch filterها، tuning PID از طریق روشهای Ziegler–Nichols و relay
- کدنویسی یک prototype Model Predictive Control (MPC) در C یا C++ با افق کوچک
- profiling زمان اجرا و حافظه loopهای control؛ بهینهسازی برای constraintهای real-time
سطح: 5 – Expert
موضوعات:
- architect کردن schemeهای control nonlinear: sliding-mode، adaptive control، controllerهای robust H∞
- هدایت توسعه کتابخانههای EKF/UKF یا MPC solverهای سفارشی برای targetهای embedded
- mentoring تیم درباره estimation پیشرفته: multi-sensor fusion (IMU + GPS + probeهای خاک) با استفاده از تکنیکهای Simultaneous Localization and Mapping (SLAM)
- انتشار guidelineهای طراحی داخلی درباره best practices و verification ایمنی control/estimation
- مشارکت algorithmهای جدید یا بهبودها در پروژههای open-source control/estimation یا مقالات آکادمیک
22 – Python / Bash Scripting
سطح: 1 – Absolute Beginner
موضوعات:
- نصب Python 3 و pip؛ verify با
python3 --versionوpip3 --version - باز کردن یک shell bash؛ اجرای
bash --version - ایجاد و اجرای یک script Python «hello world» (
hello.py) و یک script bash ساده (hello.sh) - افزودن خطوط shebang (
#!/usr/bin/env python3و#!/usr/bin/env bash) و executable کردن scriptها (chmod +x) - استفاده از دستورات bash پایه:
echo،ls،pwd،cd؛ وprint()، assignment متغیر ساده Python
سطح: 2 – Beginner
موضوعات:
- انواع داده Python (int، float، string، list، dict) و جریان کنترل (
if،for،while); تعریف توابع ساده - متغیرهای bash، پارامترهای موقعیتی (
$1،$2)، قوانین quoting،if [ ]و حلقههایforپایه - File I/O: باز کردن/خواندن/نوشتن در Python؛ redirect (
>،>>) و خواندن خطوط در bash (while read) - import و استفاده از ماژولهای built-in Python (
os،sys); source کردن scriptهای helper کوچک bash باsource - مدیریت خطای پایه:
try/exceptPython؛set -eوtrap '…' ERRدر bash
سطح: 3 – Intermediate
موضوعات:
- virtual environmentهای Python (
python3 -m venv)،requirements.txt، نصب بستههای third-party از طریق pip - parse کردن آرگومان bash با استفاده از
getoptsیاgetoptو نوشتن توابع bash reusable - scriptهای اتوماسیون build: فراخوانی
make،idf.pyیاpioاز Python (subprocess) یا bash - استفاده از
argparsePython برای رابطهای CLI robust و ماژولloggingبرای logهای ساختاریافته - I/O shell پیشرفته: pipeها (
|)، process substitution (<()،>())، here-docها (<<EOF) و command substitution
سطح: 4 – Advanced
موضوعات:
- نوشتن unit testهای Python با
pytestیاunittest؛ اجرای سبک باflake8/pylintو type hintها باmypy - سختسازی scriptهای bash:
set -euxo pipefail، validation پارامتر، توابع trap cleanup، حالت debug (set -x) - استفاده از Python برای taskهای concurrent:
threading،multiprocessingو ابزارهای سطح بالا مانندconcurrent.futures - ساخت ماژولهای Python reusable و نصب آنها از طریق
setup.py/pyproject.toml؛ مدیریت نسخهها و وابستگیها - اتوماسیون stepهای CI/CD: نوشتن scriptهای Python یا bash که jobهای GitHub Actions یا GitLab CI را orchestrate میکنند
سطح: 5 – Expert
موضوعات:
- توسعه و انتشار ابزارهای CLI مستقل Python با استفاده از frameworkهایی مانند Click یا Typer؛ انتشار بستهها به PyPI
- architect کردن frameworkهای bash بزرگ: scriptهای ماژولار، سیستمهای plugin، coprocessها، redirection I/O پیشرفته
- profiling و بهینهسازی scriptهای Python (مثلاً
cProfile،line_profiler)، adopt کردنasyncioبرای taskهای high-throughput - یکپارچهسازی scriptها با سرویسهای سیستم: نوشتن فایلهای systemd unit، scriptهای entry-point container، اتوماسیون Docker-Compose
- تعریف و آموزش best practices تیمی برای scripting: امنیت (sanitization ورودی، اجتناب از injection)، documentation و templateهای کد قابل نگهداری
23 – Cloud & Dashboard Basics
سطح: 1 – Absolute Beginner
موضوعات:
- درک مفهوم پلتفرمهای IoT مبتنی بر cloud در مقابل راهحلهای on-premise
- ثبتنام برای یک حساب آزمایشی رایگان AWS IoT Core یا Azure IoT Hub
- Navigation در پورتال AWS IoT یا Azure: بررسی بخش Things/Devices و داشبوردهای overview
- نصب و اجرای یک ابزار دسکتاپ (AWS IoT Explorer یا Azure IoT Explorer) برای اتصال و ارسال یک پیام telemetry نمونه
- درک اینکه InfluxDB چیست: نصب یک instance InfluxDB 2.x محلی از طریق Docker یا binary، اجرای CLI built-in و نوشتن یک نقطه داده
سطح: 2 – Beginner
موضوعات:
- ثبت یک دستگاه («Thing») در AWS IoT Core یا یک device در Azure IoT Hub؛ دانلود و بررسی certificateهای تولیدشده یا توکنهای SAS
- استفاده از AWS IoT SDK (C/Python) یا Azure Device SDK برای publish کردن telemetry JSON ساده روی MQTT
- نصب Grafana، افزودن InfluxDB به عنوان data source و ایجاد یک پنل time-series پایه برای نمایش یک فیلد
- نوشتن داده در InfluxDB از خط فرمان (با استفاده از
curlیا Influx CLI) و تأیید آن در UI InfluxDB - بررسی مفاهیم Grafana: داشبوردها، پنلها، queryها، time-range picker
سطح: 3 – Intermediate
موضوعات:
- پیادهسازی کد device سبک production: اتصالات MQTT persistent، منطق reconnect، payloadهای JSON ساختاریافته، سلسلهمراتب topicها
- تعریف یک AWS IoT Rule برای هدایت telemetry ورودی به یک Lambda function، جدول DynamoDB یا stream Kinesis
- پیکربندی InfluxDB tasks یا Telegraf برای ingestion و transform خودکار streamهای ورودی
- ساخت داشبوردهای Grafana multi-panel با استفاده از queryهای Flux یا InfluxQL: افزودن gaugeها، نمودارها و پنلهای stat
- راهاندازی ruleهای alert ساده در Grafana بر اساس thresholdها و پیکربندی کانال notification ایمیل یا Slack
سطح: 4 – Advanced
موضوعات:
- سختسازی authentication: قفل کردن policyهای IoT در AWS، تنظیم دقیق RBAC Azure IoT Hub، rotation منظم certificateها/SAS tokenها
- استفاده از AWS IoT Device Shadows یا Azure Digital Twins برای همگامسازی state desired/reported بین cloud و دستگاه
- scaling InfluxDB با retention policyها، continuous queryها یا Tasks و shard groupها برای storage بلندمدت
- پیادهسازی Grafana provisioning (as code) برای مدیریت داشبوردها و alertها از طریق فایلهای JSON/YAML در Git
- یکپارچهسازی Grafana با external alert managerها یا سرویسهای notification (PagerDuty، OpsGenie، Microsoft Teams)
سطح: 5 – Expert
موضوعات:
- architect کردن یک backbone IoT global و resilient: failover multi-region AWS IoT Core یا Azure IoT Hub، oneپارچهسازی edge-gateway با Greengrass یا Azure IoT Edge
- اتوماسیون کل زیرساخت: نوشتن ماژولهای Terraform یا templateهای ARM/Bicep برای deploy منابع IoT، clusterهای InfluxDB، instanceهای Grafana و policyهای IAM
- بهینهسازی ingestion حجم بالای داده: batch writes، تکنیکهای compression، استراتژیهای backpressure و procedureهای backfill
- طراحی و اجرای داشبوردهای multi-tenant در Grafana با RBAC دانهریز و filtering data-source
- mentoring تیمها درباره best practices کنترل هزینه، compliance امنیتی (GDPR، HIPAA)، policyهای retention داده و monitoring عملیاتی stack analytics IoT
24 – Regulatory & Environmental Compliance
سطح: 1 – Absolute Beginner
موضوعات:
- یادگیری اینکه چرا تأییدیه نظارتی و رتبهبندیهای محیطزیستی برای یک دستگاه تجاری مهم هستند
- درک محدوده علامتگذاری CE (اتحادیه اروپا) در مقابل certification FCC (ایالات متحده) در مقابل کدهای IP پایه
- شناسایی directives اعمالی (مثلاً EMC، LVD برای CE؛ Part 15 برای FCC) و معنای IP67 rating
- یافتن و bookmark کردن منابع رسمی: پایگاه داده NANDO اتحادیه اروپا، پورتال authorization تجهیزات FCC
سطح: 2 – Beginner
موضوعات:
- مطالعه استانداردهای ضروری: immunity/emissions EMC (EN 61326-1 / FCC Part 15 Subpart B)، ایمنی (EN 61010-1)
- یادگیری نحوه تست IP ratingها (water jet، dust chamber) و معنای هر رقم
- جمعآوری datasheetها و supplier declarations of conformity برای هر ماژول یا کامپوننت
- مستندسازی مسیر compliance مورد انتظار در یک spreadsheet یا چکلیست ساده
سطح: 3 – Intermediate
موضوعات:
- تهیه یک Technical File (CE) یا FCC test plan: شامل block diagramها، schematicها، BOM، ارزیابی risk
- پیادهسازی mitigation EMI/EMC پایه: افزودن ferriteها، common-mode chokeها، ground pourهای PCB
- انجام تستهای pre-compliance در-house: near-field EMI probing، تست با ESD gun، بررسیهای پایه insulation
- آمادهسازی artwork برچسبگذاری دستگاه: علامت CE، FCC ID، نمادهای WEEE، هشدارهای استفاده ایمن
سطح: 4 – Advanced
موضوعات:
- مدیریت فرآیند certification رسمی با یک Notified Body (CE) یا آزمایشگاه accredited FCC: ارسال نمونهها، شاهد تست
- تحلیل گزارشهای تست، هدایت تغییرات طراحی برای رفع failureها (مثلاً تغییرات layout، sealهای enclosure)
- هماهنگی تستهای محیطی و مکانیکی: thermal cycling، ارتعاش، تست ingress برای دستیابی به IP rating target
- تهیه و امضای Declaration of Conformity (CE) و پر کردن FCC Form 731 برای authorization تجهیزات
سطح: 5 – Expert
موضوعات:
- تعریف یک استراتژی compliance global شامل CE، FCC، UL/CSA، RoHS، REACH، WEEE و موارد دیگر در صورت نیاز
- architect کردن سختافزار و firmware ماژولار برای سادهسازی re-testing و variantهای منطقهای
- هدایت برنامههای compliance supplier: اجرای change-control کامپوننت، audit کردن QMS سازنده
- نگهداری و بهروزرسانی Technical Fileها و FCC exhibits در طول revisionهای محصول؛ مدیریت auditهای surveillance دورهای
- ساختن نقش اصلی liaison با نهادهای نظارتی، رسیدگی به یافتههای non-compliance و corrective actionها، mentoring تیم درباره best practices برای stewardship نظارتی مداوم.
25 – Documentation Tooling (Markdown, Doxygen)
سطح: 1 – Absolute Beginner
موضوعات:
- درک هدف documentation پروژه: READMEها، API referenceها، how-toها
- نصب یک ویرایشگر Markdown یا استفاده از پشتیبانی built-in VS Code
- نوشتن syntax پایه Markdown: headerها (
#–###)، bold/italic، لیستهای گلولهای و شمارهای - درج لینکها و تصاویر از طریق Markdown (
[text](url)،) - preview کردن یک
README.mdدر VS Code یا روی GitHub
سطح: 2 – Beginner
موضوعات:
- ایجاد جداول، blockquoteها و fenced code blockها در Markdown
- استفاده از لینکهای نسبی و anchor لینکها برای docs چندصفحهای
- نصب Doxygen و تولید یک
Doxyfileپیشفرض - annotate کردن سورس C/C++ با commentهای Doxygen (
///،/** ... */) برای توابع و انواع - اجرای Doxygen برای تولید خروجی HTML و مرور docs تولیدشده
سطح: 3 – Intermediate
موضوعات:
- سفارشیسازی تنظیمات
Doxyfile: input pathها،EXTRACT_ALL،EXTRACT_PRIVATE، پشتیبانی diagram، فرمتهای خروجی - embed کردن محتوای Markdown در commentهای Doxygen و include کردن فایلهای Markdown خارجی از طریق
\include - سازماندهی documentation در moduleها و گروهها با استفاده از tagهای
@defgroupو@addtogroup - یکپارچهسازی اجرای Doxygen در build CMake یا PlatformIO تا docs با هر build بهروز شوند
- استفاده از extensionهای VS Code برای preview ترکیبی Markdown و commentهای Doxygen inline
سطح: 4 – Advanced
موضوعات:
- گسترش Doxygen با tag filterهای سفارشی یا pre-processorهای input (مثلاً scriptهای Python)
- اتوماسیون buildهای documentation در pipelineهای CI و انتشار به GitHub Pages، GitLab Pages یا Confluence از طریق converterها
- تولید diagramهای PlantUML یا Graphviz از annotationهای کد و include کردن آنها در docs
- نگهداری metricهای doc-coverage: نوشتن scriptها برای تشخیص توابع/انواع undocumented و fail کردن CI اگر زیر threshold باشد
- تعریف و انتشار یک style guide برای استفاده از Markdown و Doxygen در تیم
سطح: 5 – Expert
موضوعات:
- توسعه layoutها و themeهای Doxygen سفارشی (XSLT، templateهای CSS/HTML سفارشی) برای مطابقت با برند شرکتی
- architect کردن یک pipeline documentation hybrid با استفاده از Sphinx یا MkDocs همراه با Doxygen، با خروجیهای versioned و search
- اتوماسیون include documentation cross-repository از طریق Git submodules، Doxyfileهای composite یا linking tag-based
- هدایت reviewهای documentation، اجرای quality gates docs در CI و mentoring تیم در best practices
- مشارکت در ابزارهای documentation open-source یا نوشتن plugin/extension (مثلاً برای rendering diagram پیشرفته یا مثالهای کد زنده)