tohum
← Volver al blog

Este contenido aún no está disponible en español y se muestra en inglés.

Mastering the Embedded IoT Developer’s Toolkit

5-to-1 Scale

In today’s hyper‑connected world, an embedded developer must juggle firmware, hardware, radio links, and cloud workflows—all at once. Skip even one piece and that “quick” firmware tweak can snowball into weeks of debugging. We learned this the hard way while rolling out a solar‑powered soil‑monitoring node built on ESP32, SIMCom cellular back‑haul, and AWS IoT Core. The experience made one truth crystal‑clear: your learning plan has to mirror your bill of materials.

To keep that plan focused, we grade every competency on a 5‑to‑1 scale—a framework that is completely technology‑agnostic:

Level

What it means

Why it matters

5 = Must‑have

Core language, essential tooling, fundamental concepts

You can’t ship without these

4 = Optimizers

CI/CD, automated testing, security hardening, performance tuning

Turn prototypes into robust products

3 = Workflow boosters

Dashboards, advanced debugging, cloud ops

Streamline day‑to‑day development

2 = Nice‑to‑haves

Specialized features you’ll want later

Add polish when time allows

1 = Specialties

Deep dives for niche domains or future scaling

Tackle when the use‑case demands it

How to apply it anywhere

  1. Define the end goal. What does “job‑ready” or “production‑ready” look like?
  2. List the 5s. Absolute survival kit.
  3. Identify the 4s. Practices that harden and scale the solution.
  4. Fill in the 3s. Quality‑of‑life tools and optimizations.
  5. Add the 2s and 1s. Specialized depth for bigger teams or advanced features.

Quick proof that it travels well

By rating each topic’s impact and frequency, you carve out a clear path and avoid overwhelm.


What the 5s look like for our ESP32 + SIM + AWS stack

  1. C/C++ fluency – the language of ESP‑IDF and FreeRTOS hooks.
  2. ESP‑IDF (or Arduino‑ESP32) mastery – Wi‑Fi, BLE, ADC, deep‑sleep APIs.
  3. Electronics fundamentals – level‑shifting SIM UARTs, reading NPK probes, EMI hygiene.
  4. Power‑budgeting & Li‑ion/solar charging – keeping a 4 Ah 18650 alive through cloudy weeks.
  5. Robust connectivity (Wi‑Fi, SIM AT, MQTT/TLS) – piping sensor data securely into AWS.

Master these five and you can ship a functional prototype. Climb into the 4s—CI pipelines, advanced FreeRTOS, OTA, security—and you’ll have a product that survives the field. The 3s, 2s, and 1s complete the professional toolkit with dashboards, compliance, and domain‑specific depth.

The article that follows is not a checklist; it’s a sequential roadmap mapped to real hardware choices. Start with the 5s, graduate through the 4s, and by the time you dip into 3‑to‑1 territory you’ll have both the confidence and the context to apply them where they matter most. Dive in and let the toolkit carry you from breadboard to production—and beyond.

Skillsets for Embedded Developers

Legend – Importance
5 = Indispensable (must‑have for day‑to‑day work)
4 = Very important (needed on most projects)
3 = Useful (frequently helpful, learn soon)
2 = Nice‑to‑have (learn when time allows)
1 = Specialised / situational

Skill / Tool

Why it matters for an ESP32‑based soil‑measurement product

Importance

1

C / C++

Primary languages for ESP‑IDF, Arduino core and peripheral drivers.

5

2

ESP‑IDF (native) or Arduino‑ESP32

Gives direct access to Wi‑Fi, BLE, GPIO, ADC, UART, I²C and FreeRTOS APIs.

5

3

FreeRTOS fundamentals

Task scheduling, watchdogs, queues and power‑efficient sleep modes.

4

4

Git & GitHub / GitLab

Version control, code review and CI hooks.

5

5

VS Code

Lightweight cross‑platform IDE with strong ESP‑IDF & PlatformIO extensions.

4

6

PlatformIO

Builds, flashes, unit‑tests and static‑analyses embedded projects from VS Code.

4

7

Linux CLI / WSL

Toolchains, build scripts, OpenOCD debugging and containerised CI runners.

3

8

Unit‑testing framework (Unity / CppUTest)

Regression tests for sensor math, comms parsers, battery‑state logic.

3

9

Continuous Integration (GitHub Actions / GitLab CI)

Automates build, test, lint and firmware‑size checks on every push.

3

10

Jira (issues) & Confluence (docs)

Tracks tasks, bugs, requirements and design notes in a team.

3

11

Digital & Analog Electronics

Reading NPK sensor outputs, level‑shifting SIM module UART, EMI mitigation.

5

12

PCB design (KiCad / Altium)

Custom board to host ESP32, NPK interface, Li‑ion charger and solar MPPT.

4

13

Power‑budgeting & Solar‑Li‑ion charging

Sizing panel, charge IC, converters and low‑power firmware states.

5

14

Battery management (18650 safety & coulomb counting)

Protects against over‑/under‑voltage and provides SoC estimate.

4

15

Cellular comms (SIMCom AT commands, PPP, TCP/IP)

Brings cloud connectivity when Wi‑Fi is absent in the field.

5

16

IoT protocols (MQTT / HTTPS)

Lightweight, secure data uplink to server or cloud.

4

17

TLS / mbedTLS security basics

Encrypts data and authenticates device to cloud endpoints.

4

18

Sensor calibration & compensation

Temperature / humidity influencers on NPK readings; field calibration curves.

5

19

Data logging & OTA storage (SPIFFS, LittleFS, SD)

Local backup during connectivity loss; firmware update staging.

3

20

Remote OTA update flow

Keeps thousands of deployed units maintainable.

4

21

Control‑ & Estimation theory

Optional—helps with advanced filtering (Kalman, PID) or adaptive sampling.

2

22

Python / Bash scripting

Log parsing, production‑line flashing, test automation.

3

23

Cloud & dashboard basics (AWS IoT Core, Azure IoT, InfluxDB + Grafana)

Stores, visualises and alerts on soil metrics.

3

24

Regulatory & environmental compliance (CE, FCC, IP‑rating)

Ensures legal deployment and field robustness.

3

25

Documentation tooling (Markdown, Doxygen)

Generates maintainable API and HW design docs.

3

How to read the table

1 – C/C++

Level: 1 – Absolute Beginner
– C syntax & structure: compilation model (source → object → executable), main() function
– Basic data types: int, char, float, double, bool
– Variables & constants: declaration, initialization, const qualifier
– Operators: arithmetic (+, –, *, /, %), assignment, increment/decrement
– Control flow: if/else, switch, for/while/do-while loops
– Simple I/O: printf, basic console output
– Introduction to pointers: pointer declaration, dereference
– Building & debugging: compile with gcc -o, interpret basic compiler errors

Level: 2 – Beginner
– Memory & pointers: pointer arithmetic, pointers vs. arrays, introduction to malloc/free
– Structured types: struct, union, typedef
– Preprocessor basics: #define, #include, include guards
– Storage classes: auto, static, extern, scope & linkage rules
– Strings & arrays: char[], string functions (strcpy, strlen, etc.)
– Modular code: splitting into multiple .c/.h files, makefile fundamentals (rules, targets)
– Basic debugging tools: gdb stepping, breakpoints, inspecting variables

Level: 3 – Intermediate
– Dynamic memory management: heap vs. stack, common leak patterns, using tools like Valgrind
– File I/O: fopen/fread/fwrite/fclose, file pointers, error handling
– Bitwise operations: masks, shifts, setting/clearing bits, enum and bit-fields
– Function pointers: callbacks, dispatch tables
– Error handling: return-codes, errno
– C++ fundamentals: classes & objects, constructors/destructors, access specifiers
– STL basics: std::vector, std::string, simple use of std::map and iterators
– Namespaces & header organization

Level: 4 – Advanced
– Embedded C specifics: volatile, memory-mapped I/O, const in flash vs. RAM
– Linker & build system: custom linker scripts, section placement, optimization flags (-O2, -Os), cross-compilation toolchains
– C++11/14/17 features: lambdas, auto, range-based for, constexpr, nullptr
– Smart pointers & RAII: unique_ptr, shared_ptr, resource management
– Templates basics: function & class templates, template specialization
– Multithreading: std::thread, mutexes, condition variables, atomic types
– Real-time concepts: interrupt service routines (ISRs), critical sections, priority inversion mitigation

Level: 5 – Expert
– Advanced template meta-programming: variadic templates, SFINAE, type traits
– Deep C++ object model: vtables, object layout, ABI considerations
– Lock-free & low-latency concurrency: atomics, memory orderings, wait-free algorithms
– Compiler & toolchain internals: GCC/Clang pass pipelines, writing custom compiler plugins
– Performance tuning: cache alignment, branch prediction, in-depth profiling (e.g. gprof, hardware counters)
– Bare-metal porting: implementing newlib stubs, minimal C runtime, bring-up code
– Standards & safety: MISRA-C/C++ compliance, static analysis tools (Coverity, Cppcheck)
– Framework contribution: writing/optimizing drivers for FreeRTOS or ESP-IDF internals

2 – ESP-IDF (native) or Arduino-ESP32

Level: 1 – Absolute Beginner
– Install ESP-IDF toolchain (Python, Git, ESP-IDF scripts) or Arduino-ESP32 core
– Set up VS Code (or Arduino IDE) for ESP32 development
– Build & flash the “blink” example
– Explore project layout (CMakeLists.txt, sdkconfig or platformio.ini)
– Use basic idf.py (or Arduino) commands: build, clean, flash, monitor

Level: 2 – Beginner
– GPIO: configure pins, read inputs, drive LEDs
– ADC: sample analog channels, convert raw values to voltage
– UART & I²C: send/receive simple strings or bytes
– Wi-Fi station mode: scan APs, connect, retrieve IP
– BLE peripheral: advertise, connect from a phone app
– Tweak menuconfig (partition table, log level) or Arduino board settings

Level: 3 – Intermediate
– FreeRTOS tasks, queues & timers within ESP-IDF framework
– Wi-Fi events API: handle connect/disconnect, reconnection logic
– BLE client & GATT: discover services, read/write characteristics
– SPI & I²C: integrate and calibrate a real sensor (e.g. soil-moisture)
– HTTP(S) OTA updates: set up partitions, trigger updates
– Use esp_timer, detailed logging (ESP_LOG*) and error codes

Level: 4 – Advanced
– Create reusable components (CMake Component API) or custom Arduino libraries
– Build a custom partition table & switch partitions at runtime
– Secure provisioning: SmartConfig, BLE-based Wi-Fi setup
– Advanced BLE (L2CAP, mesh) examples
– Optimize SPI DMA & I²C bus speed/timeout settings
– Integrate mbedTLS for MQTT over TLS
– Automate build/flash/tests in CI (GitHub Actions, ESP-IDF CI scripts)

Level: 5 – Expert
– Contribute new drivers or fix bugs in ESP-IDF core (e.g. ADC calibration)
– Develop custom bootloader or ISR-level optimizations
– Fine-tune FreeRTOS heap regions & scheduler parameters
– Implement secure boot & flash encryption end-to-end
– Perform real-time tracing and profiling (ESP-Trace, Perfcnt)
– Architect multi-project CMake workspaces
– Mentor others: define ESP-IDF best practices and internal component libraries

3  –  FreeRTOS Fundamentals

Level: 1 – Absolute Beginner
– Understand what an RTOS is and why you’d use one
– Install FreeRTOS (via ESP-IDF or PlatformIO) and inspect the demo “hello world” task example
– Learn the basic API for creating and starting a single task (xTaskCreate, vTaskStartScheduler)
– Explore the system tick and how the scheduler switches between tasks
– Use vTaskDelay to block a task for a fixed time

Level: 2 – Beginner
– Create multiple tasks with different priorities and stack sizes
– Use vTaskDelayUntil for periodic task timing
– Understand and apply critical sections (taskENTER_CRITICAL / taskEXIT_CRITICAL)
– Learn about task states (Running, Ready, Blocked, Suspended)
– Use vTaskSuspend / vTaskResume for simple task control

Level: 3 – Intermediate
– Communicate between tasks with queues (xQueueCreate, xQueueSend, xQueueReceive)
– Synchronize tasks using binary and counting semaphores (xSemaphoreCreateBinary, xSemaphoreTake)
– Coordinate events with Event Groups (xEventGroupSetBits, xEventGroupWaitBits)
– Use software timers (xTimerCreate, callback)
– Detect and handle stack overflows

Level: 4 – Advanced
– Optimize memory allocation: choose and configure heap schemes (heap_1…heap_5) and understand fragmentation
– Employ task notifications as lightweight binary semaphores or direct-to-task data messages
– Configure and use tickless idle mode for low-power applications
– Generate and interpret run-time statistics (vTaskGetRunTimeStats)
– Integrate FreeRTOS+Trace or Percepio Tracealyzer

Level: 5 – Expert
– Port FreeRTOS to custom hardware or modify the port layer for advanced use cases
– Implement and tune custom scheduler policies or hook functions (vApplicationIdleHook, vApplicationMallocFailedHook)
– Design complex state machines using advanced synchronization primitives (mutexes with priority inheritance, recursive mutexes)
– Mentor teams on best practices, safety (MISRA-compliant code), and deterministic behavior tuning

4 – Git & GitHub/GitLab

Level: 1 – Absolute Beginner
– Install Git; configure user.name and user.email
– Initialize a repo (git init) and clone existing repos (git clone)
– Basic file tracking: git status, git add, git commit
– View history with git log, inspect changes with git diff
– Simple .gitignore to exclude files

Level: 2 – Beginner
– Create and switch branches: git branch, git checkout/git switch
– Remote setup: git remote add, git fetch, git pull, git push
– Understand origin/main vs local branches
– Resolve simple merge conflicts via editor or CLI
– Use GitHub/GitLab web UI to browse commits and branches

Level: 3 – Intermediate
– Merge vs rebase: git merge, git rebase; know when to use each
– Interactive rebase (git rebase -i) for cleaning up commits
– Tagging: create annotated and lightweight tags; push with git push –tags
– Work with pull requests (GitHub) or merge requests (GitLab): create, review, merge
– Basic CI stub: add a simple GitHub Actions or GitLab CI YAML

Level: 4 – Advanced
– Manage submodules (git submodule) and subtrees
– Write client-side hooks (pre-commit, pre-push) and simple server-side GitLab/GitHub hooks
– Protect branches and enforce merge checks (status checks, approvals)
– Build multi-stage CI/CD pipelines with caching and artifacts
– Use git bisect to locate bugs; cherry-pick specific commits

Level: 5 – Expert
– Administer GitLab/GitHub org settings: user/group permissions, protected branches
– Architect monorepo strategies; manage large files with Git LFS
– Develop custom Git tooling or scripts (libgit2, hooks, automation)
– Deep-dive into Git internals: object storage, packfiles, refs, index
– Define and enforce workflows (Gitflow, trunk-based, GitOps); mentor team on best practices

5 – VS Code

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

6 – PlatformIO

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

7 – Linux CLI / WSL

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

8 – Unit‑Testing Framework (Unity / CppUTest)

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

9 – Continuous Integration (GitHub Actions / GitLab CI)

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

10 – Jira & Confluence

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

11 – Digital & Analog Electronics

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

12 – PCB Design (KiCad / Altium)

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

13 – Power‑Budgeting & Solar‑Li‑ion Charging

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

14 – Battery Management (18650)

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

15 – Cellular Comms (SIMCom AT, PPP, TCP/IP)

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

16 – IoT Protocols (MQTT / HTTPS)

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

17 – TLS / mbedTLS Security Basics

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

18 – Sensor Calibration & Compensation

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

19 – Data Logging & OTA Storage

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

20 – Remote OTA Update Flow

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

21 – Control & Estimation Theory

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

22 – Python / Bash Scripting

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

23 – Cloud & Dashboard Basics

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

24 – Regulatory & Environmental Compliance

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics:

25 – Documentation Tooling (Markdown, Doxygen)

Level: 1 – Absolute Beginner
Topics:

Level: 2 – Beginner
Topics:

Level: 3 – Intermediate
Topics:

Level: 4 – Advanced
Topics:

Level: 5 – Expert
Topics: