Skip to content
View sourabhpatyal's full-sized avatar
🎯
Focusing
🎯
Focusing

Block or report sourabhpatyal

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
sourabhpatyal/README.md

πŸ”Œ Sourabh Patiyal

Embedded Engineer β€’ Mentor β€’ Microcontroller Whisperer

β€œI don’t just blink LEDs β€” I light up understanding.”

Email LinkedIn GitHub


πŸ‘‹ About Me

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.


βš™οΈ Core Strengths

  • πŸ› οΈ 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

🧰 Tech Stack (quick view)

skills

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


🧡 Hardware I Work With

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

πŸ”„ Protocols & Buses

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

πŸš€ Selected Projects (Problem ➜ System)

  • πŸš— 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).


πŸŽ“ Teaching & Mentoring

  • 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.


πŸ§ͺ Signature Snippet

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()); }
}

Popular repositories Loading

  1. ARDUINO-ISP-FOR-ATMEGA-8 ARDUINO-ISP-FOR-ATMEGA-8 Public

  2. sourabhpatyal sourabhpatyal Public