Product firmware
ESP32 (Arduino, PlatformIO, and ESP-IDF), AVR/Arduino, STM32/GD32, and RP2040. The goal is behaviour that still works after a reboot, a bad network, and a firmware update.
Electrical engineer
I write the software inside ESP32, STM32, and Raspberry Pi products: sensors, radios, displays, and the path from the board to a dashboard. Nearly seven years of that work, for teams that need a field unit.
01 / Selected work
01
Card tap → ESP32 → Wi-Fi or GSM → payment flow
Two ESP32 payment terminals. One takes the amount from a phone over BLE and joins shop Wi-Fi. The other uses a keypad, a battery, and a cellular modem.
02
Touch panel → STM32 TouchGFX → PID thermal control
The Addify printer’s thermal UI on STM32: TouchGFX screens from the supplied designs, PNG assets, PID on the heater, and a developer mode for the display and touch.
03
Weight, climate, GPS, solar → ESP32 → MQTT → ThingsBoard
A field node for a hive: weight, temperature and humidity, GPS, and battery or solar voltage, reported to ThingsBoard. A cellular modem is part of the unit.
04
Sensors → ESP32-S3 → LVGL panel → log
ESP32-S3 logger for 4.3 inch and 7 inch panels. It takes temperature and pressure over serial and BLE, stores the log, and can print or plot it.
05
QR on Pi → UART → ESP32-S3 → ST7701 vitals UI
A Raspberry Pi reads a QR code and passes the identifier over UART to an ESP32-S3, which shows patient vitals on an RGB LCD.
06
Button → Nayax MDB → Raspberry Pi → relay
A Raspberry Pi perfume dispenser. A Nayax reader takes a card over MDB, and the Pi pulses one of five relays only after the payment is approved.
02 / Teams
03 / Services
ESP32 (Arduino, PlatformIO, and ESP-IDF), AVR/Arduino, STM32/GD32, and RP2040. The goal is behaviour that still works after a reboot, a bad network, and a firmware update.
BLE provisioning (including Nordic UART-style command protocols), Wi-Fi captive portals, ESP-NOW, and cellular: SIMCom A7670 / LilyGo T-Call, SMS, PPP, and a 4G hotspot.
MQTT and HTTPS into ThingsBoard, Azure IoT Hub, and HiveMQ. Credentials in NVS, a queue when the link drops, and a way back into setup mode when the network is wrong.
04 / Clients
“Working with Roshan was an absolute pleasure from start to finish. He exceeded every expectation — not only delivering exceptional programming and design work,…”
“Roshan did the work very quickly, was great and easy to communicate with, and performed great work. I will definitely contract with him again.”
“Roshan did an incredible job with our quick project. We needed it quick due to a deadline and they completed it in time and worked perfectly. Would recommend.”
“Roshan is very knowledgeable and understanding of our needs. He has stayed close to his midnights for testing and worked with our team. Highly recommend!!!!”
“I worked with Roshan on coding my custom PCB, and his expertise was exceptional. He created a virtual setup for testing, configured buttons and lights with…”
“Great working with Roshan, exceptionally talented on Arduino and IoT projects.”
“Was very helpful in the coding of the project. Very fast at finishing a code prototype and then furthering into the final code. Clear communications so I knew…”
“Roshan simply is on another level. His professionalism and willingness to help have no comparison. He is extremely knowledgeable in coding and electrical…”
“Very hard working and skilled esp32 firmware/software developer”
“Roshan was very helpful. He immediately jumped into the project and met ALL the requirements. He is very smart and went above and beyond. He is also…”