Embedded Engineer β’ Mentor β’ Microcontroller Whisperer
βI donβt just blink LEDs β I light up understanding.β
Iβm an Embedded Systems Engineer and ** Robotics ** based in India.
I work close to the siliconβbare-metal C, registers, timing, and protocolsβand mentor engineers to think like firmware architects, not just coders.
- π οΈ Bare-metal C (no HAL when not needed) β’ CMSIS β’ MISRA-C mindset
- π§Ύ Datasheet-first design β registers drive architecture & ISR boundaries
- π§΅ Precision ISRs β latency budgets, lockless queues, finite state machines
- π Bootloaders & OTA β DFU patterns, versioning, rollback strategy
- π‘ Protocol stacks β UART/SPI/IΒ²C/CAN, RS-485/Modbus RTU (master & slave)
- π¬ Debugging discipline β binary search, trace, instrumentation hooks
Languages: C, Embedded C, basic C++
Build: Make/CMake β’ MCU: AVR, PIC, STM32, ESP32
Tools: Keil uVision, STM32CubeIDE, AVR-GCC, MPLAB X, OpenOCD
PCB: Altium, KiCad
Infra: Node-RED, Mosquitto MQTT, Grafana
Standards: CMSIS, MISRA-C mindset
MCU / SoC | What I Build On It |
---|---|
AVR ATmega8 / 328P | UART/ADC, Modbus RTU (MAX485), LED logic trainers, command parsers |
PIC 16F / 18F | EEPROM cfg, LCD/7-segment, timer frameworks |
STM32F1 / F4 | FATFS + SD, BLE/GPS, lightweight web server, ring buffers, DMA basics |
8051 / AT89C52 | Timing labs, ISR hygiene, classic peripheral bring-up |
ESP32 / ESP8266 | Wi-Fi MQTT, Node-RED integrations, BLE Mesh experiments |
Raspberry Pi 4 | Python GPIO automation, service daemons, ROS/Makefile workflows |
Stack / Bus | Notes |
---|---|
UART | CLI + framed packets + CRC; RX ring buffers + ISR-driven TX |
SPI | Sensors, SD; full-duplex DMA patterns |
IΒ²C | RTC/EEPROM; bit-bang fallbacks |
RS-485 / Modbus RTU | Master/Slave, register map design, timeout strategy |
MQTT | IIoT pipelines (Node-RED β Grafana) |
CAN (basic) | ID planning, filter masks, mailbox hygiene |
- π Vehicle Tracker β GNSS + LCD + DGUS
Event-driven firmware, buffered IO, NMEA parsing, fault-safe state machine. - π Energy Logger β STM32 + BLE + mini Web UI
Persistent ring-buffer logging, config channel, versioned settings. - π‘ Modbus RTU Stack β ATmega8 + MAX485
Register model, CLI tools, deterministic timing under bus contention. - πΆ BLE Mesh + Android Sync
Resilient config transport, failure semantics, OTA flow draft. - π IIoT Dashboard β MQTT β Node-RED β Grafana
Topic taxonomy, alert rules, retention windows. - π€ Obstacle-Avoid Bot β IR + Ultrasonic
Sensor fusion β PWM drive; watchdog + brown-out handling. - π‘ Pattern LED Trainer β 500+ logic drills
Teaches timing, debouncing, state transitions.
Tip: Pin your best repos so they appear on your profile (Settings β Customize your pins).
- AVR & PIC in C (bare-metal mindset, not Arduino)
- Peripherals: GPIO, ADC, Timers, PWM, Interrupts, DMA basics
- Protocols: UART, SPI, IΒ²C, Modbus RTU (Master/Slave)
- Linux GPIO on Raspberry Pi with Python
- Altium PCB for practical projects
- Debugging Mindset: instrumentation hooks, traces, and fault isolation
Looking to run a cohort or 1:1 deep-dive? β Email me.
Minimal ISR-safe ring buffer (RX)
typedef struct { volatile uint8_t q[128]; volatile uint8_t h, t; } rb_t;
static inline void rb_put(rb_t* r, uint8_t b){
uint8_t n = (r->h + 1) & 127;
if (n != r->t) { r->q[r->h] = b; r->h = n; }
}
static inline int rb_get(rb_t* r){
if (r->t == r->h) return -1;
uint8_t b = r->q[r->t];
r->t = (r->t + 1) & 127;
return b;
}
// ISR (UART RX):
void USARTx_IRQHandler(void){
if (UART_RXNE()) { rb_put(&rxbuf, UART_READ()); }
}