Amir Abkhoshk
I ship production IoT devices and autonomous UAV systems in C/C++ and Python — full-stack embedded development from bare-metal drivers and real-time firmware (FreeRTOS, ESP32, ARM) to wireless connectivity stacks (BLE, Wi-Fi, GNSS, cellular) and cloud-connected data pipelines.
Seven years of firmware, from prototype to field deployment
I'm an embedded software developer based in Malmö with 7+ years shipping production IoT devices and autonomous UAV systems in C/C++ and Python — full-stack across bare-metal drivers, real-time firmware (FreeRTOS, ESP32, ARM), wireless connectivity (BLE, Wi‑Fi, GNSS, cellular), and cloud-connected data pipelines. 4+ years of that on Embedded Linux.
At NIKX Technologies, a WBSO-backed R&D startup, I'm the sole firmware engineer delivering two concurrent embedded products — owning architecture decisions that cut hardware cost, standby power, and manual workload across an agile R&D team. I also contribute numx, a hardware-validated numeric library used in production, open-sourced from that work. I'm equally comfortable on the hardware side — designing PCBs in Altium Designer across three independent builds, and debugging with JTAG, oscilloscopes, and logic analyzers when firmware meets silicon.
Register map
The stack I build with day to day, grouped the way a datasheet would group it.
Where I've shipped firmware
- Migrated the hardware platform from Raspberry Pi to ESP32, cutting BOM cost by 60% and standby power by 75% through careful power-state management — including deep-sleep cycling between sampling windows — and optimized task scheduling.
- Built ESP32 firmware in C on esp-idf with FreeRTOS-based multitasking, fetching NPK soil-nutrient sensor data alongside the device's other field sensors.
- Built BLE and Wi-Fi dual-mode connectivity with REST and WebSocket APIs secured with JWT-based authentication; integrated a SIM800 cellular modem for remote field connectivity and GNSS for positioning, with robust reconnection logic and an OTA update mechanism for reliable operation in the field.
- Used BLE for the companion mobile app's data transfer and first-time device configuration.
- Drove sprint planning and architecture discussions in an agile team (Jira/Scrum); designed the end-to-end data pipeline from field device through cloud backend for real-time remote monitoring.
- Introduced n8n as the core automation platform, automating 6+ manual business processes and cutting team workload by 60%; built API-driven file-generation and server-monitoring workflows with automated alerting.
- Used n8n and LLM-based automation to handle GitHub operations and customer billing-related workflows, with the Sentor backend generating output reports as PDF and HTML.
- Applied structured code review and unit testing practices to ensure firmware reliability across diverse deployment environments.
- Managed multi-server Linux hosting infrastructure (DirectAdmin, HAProxy, Nginx), implementing load balancing, SSL termination, and caching layers — maintaining high-availability service across the platform.
- Built Python and Bash automation for monitoring, alerting, and scheduled maintenance, reducing mean time to detection and enabling proactive incident response without manual intervention.
- Led the hardware and software team for an agricultural spraying drone, owning architecture decisions and field testing end to end.
- Designed and implemented autonomous flight control algorithms integrating IMU + GNSS/GPS sensor fusion for stable positioning, accurate trajectory tracking, and reliable mission execution; flight behavior was managed through a Pixhawk flight controller onboard the drone.
- Built a single Raspberry Pi-based ground controller — a PyQt application using multitasking techniques — that unified mission logic, drone control, and spray management (spray speed, particle diameter, activation timing) in one interface, communicating with the drone over radio and Wi-Fi via MAVLink.
- Equipped the controller with a touch LCD for real-time telemetry and status display, plus joysticks for manual drone control alongside the autonomous mission mode.
- Designed the controller's PCB in Altium Designer; completed autonomous spraying missions during live field trials with zero critical failures.
- Built a Python-based monitoring system on Raspberry Pi spanning several sensor channels — UV, soil moisture, temperature, and canopy temperature — plus a camera feed for image processing.
- Built a lightweight API layer and analytics pipeline for structured sensor data processing, engineered for offline reliability with all sensor data stored locally.
- Ran the device as a standalone backend over Wi-Fi, with the GUI fetching live and historical data directly from the device as XML — no internet connectivity required.
- Designed the sensor node's PCB in Altium Designer.
Loaded modules
Independent builds outside the day job — open source, competition, and exploration.
My focus on numx was validation and benchmarking — confirming a C/C++ math library performs correctly and efficiently across every target before it ships. numx lets MCUs run numerical calculations directly on-device, removing the need to offload math to a backend; built with CMake and a unit-test suite, hardware-validated across x86-64, ARM64, and ESP32-S3 with 300+ passing tests, float32/float64 precision switching, fully reentrant functions, and typed status codes designed for safety-critical use.
An Arduino/C++ controller that reads heat sensors and balances greenhouse temperature by switching relay-driven fans on and off, while running a lighting schedule that turns grow lights on and off at set times. Connects over MQTT to a mobile app for remote monitoring and control, with a REST API and cloud dashboard for browser-based monitoring, plus an on-device touch LCD for viewing live environment data and adjusting settings directly.
Owned the hardware side end to end on a competition-grade autonomous hexacopter (C++11, ROS, MAVLink, ArduPilot/Pixhawk) — building everything the drone needed on the hardware front, including custom RC radio and telemetry hardware based on the RFM23Bp transceiver and ATmega328, with the PCB design. Competed in the Iran Open Robotics Competition (outdoor category) — ranked 4th in 2013 and 5th in 2017, with the team awarded Best Technical Team.
An LLM-powered chatbot built with LangChain, prompt engineering, and retrieval-augmented generation (RAG) — exploring vector-store integration and context management for domain-specific Q&A.
Notes from the field
I write on LinkedIn about the embedded and Edge AI topics I'm actually working through — grounded in real hardware, not hype.
Mesh Networking Protocols ↗
Practical comparisons of Thread, Zigbee, BLE Mesh, CAN Bus, and LoRaWAN against MQTT — where each one actually fits in a connected-device architecture.
MQTT Security ↗
Deep dives into broker hardening, TLS configuration, and authentication patterns for production IoT deployments.
Edge AI & TinyML ↗
Running models on microcontrollers and Raspberry Pi, with a focus on capability-accurate framing for smart agriculture applications.
Education
Let's build something that ships.
Open to embedded software & IoT engineering roles in Sweden. I hold a valid Swedish work permit and I'm based in Malmö.