Work

Projects, with the decisions left in.

Case studies below are written from public repositories, my Upwork portfolio, and completed contracts. Private client names stay off the page. Where a GitHub link is shown, the repository was public when this site was built.

Case studies

01

Sayapatri contactless payment terminal

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.

  • ESP32
  • NFC
  • BLE
  • GSM

02

Addify 3D printer

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.

  • STM32
  • TouchGFX
  • PID

03

Remote hive monitor

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.

  • ESP32
  • HX711
  • GPS
  • ThingsBoard

04

Touchscreen data logger

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.

  • ESP32-S3
  • LVGL
  • SquareLine
  • LovyanGFX

05

Clinical cart kiosk

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.

  • Raspberry Pi
  • ESP32-S3
  • UART
  • LCD

06

Perfume dispenser

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.

  • Raspberry Pi
  • Python
  • Nayax
  • MDB

07

Stock tools scale

HX711 + MCP9700 → BLE setup → MQTT → ThingsBoard

An ESP32 scale that reports weight and temperature to ThingsBoard. A phone sets Wi-Fi and the server over BLE, so the unit does not need a laptop after the first flash.

  • ESP32
  • BLE
  • MQTT
  • ThingsBoard

08

Medication reminder

DS3231 + PIR + DHT22 → ESP32 → HTTP → ThingsBoard

An ESP32 medicine box that alarms on a schedule, treats nearby motion as a taken dose, and posts temperature, dose, and help events to ThingsBoard.

  • ESP32
  • ThingsBoard
  • WiFiManager
  • I2C

09

SMS relay to Azure IoT Hub

SMS → A7670 → FreeRTOS queue → HTTPS → Azure IoT Hub

LilyGo T-Call A7670 firmware that takes incoming SMS off the modem and posts each message to Azure IoT Hub, with a queue so a burst does not drop on the floor.

  • A7670
  • ESP32
  • Azure IoT Hub
  • FreeRTOS

10

ESP32 production flasher

Host ESP32 → UART bootloader → target flash → OTAdrive on the host

One ESP32 flashes another: bootloader, partition table, application, and SPIFFS over UART, with status on an OLED. The flasher itself updates from OTAdrive.

  • ESP-IDF
  • OTA
  • UART
  • SSD1306

11

ESP32 4G hotspot

4G modem → PPP → ESP32 softAP → phones and nodes

ESP-IDF firmware for a LilyGo A7670 board that brings up a cellular data session and shares it as a Wi-Fi access point for nearby devices.

  • ESP-IDF
  • A7670
  • PPP
  • Wi-Fi

12

Wireless ESP32 game prototype

LED remote → ESP-NOW → central unit → DFPlayer

LED button remotes and a central sound unit. The radios talk with ESP-NOW. The central unit plays clips from a DFPlayer.

  • ESP32
  • ESP-NOW
  • DFPlayer

13

UWB distance tracking

MaUWB ESP32-S3 → ranging

Firmware on the Makerfabs MaUWB ESP32-S3 module for distance tracking.

  • UWB
  • ESP32-S3

14

Vending machine controller

Pulse sense → controller → 3.5 inch SPI display → A7670

A vending controller with pulse sensing, a 3.5 inch SPI display, and a LilyGo A7670 for the link.

  • A7670
  • SPI display
  • Pulse

15

E-paper weather nodes

Weather data → ESP32 → e-paper → deep sleep

Private weather firmware for LilyGo T5 e-paper boards, including a 4.7 inch panel and a T5-ePaper-S3, with deep sleep between updates.

  • E-paper
  • ESP32
  • Deep sleep

16

Low-power float tracker

ULP wake → GPS → GSM SMS

A compact ESP32 tracker for a remote float: the ULP coprocessor wakes the board, a GPS gives position, and a GSM modem sends the update by SMS.

  • ESP32
  • ULP
  • GPS
  • GSM

Completed Upwork contracts

These finished with a 5.0 rating. Each page stays with the job title and the client’s words.

Smaller public repositories