Embedded Software Engineering

I have been writing embedded software for over 6 years.  I have written firmware for PIC and AVR micro-controllers as well as the ARM cortex based controllers.  As a single source stop for electrical and firmware design and given the usual restricted timeline for design, I tend to build upon existing frameworks, such as MBED, Arduino and Particle development systems.  However, I have used C at the bare metal level in projects that require strict timing or tightly managed code space. I routinely apply use of common embedded functions and peripherals like:

  • SPI/I2C/Serial
  • PWM
  • Debouncing
  • PID control algorithms
  • State Machines
  • Analog to Digital conversion
  • Software filtering

Some of my latest firmware designs include:

  • The CocoJet chocolate 3D print-head driver.  This system simultaneously manages multiple heaters, pumps, valves, fans, a cooling unit and LED indication.  It has a USB communication system allowing lab technicians to update control and tuning variables and log serial data from the system during a print. Using over-sampling, and software filtering techniques, it provides high precision temperature and pressure readings
  • The Cave system is a food fermentation controller.  As a consumer product it records and controls temperature, humidity and air circulation as well as LED lighting within a controlled environment. This system is cloud enabled using the powerful Particle development framework and provides a full color, feature rich, touchscreen for direct user input.
  • Configurable Manifold, life-cycle, test jig and controller.  This system records pressure readings on 10 transducers simultaneously through the use of multiple off-chip analog to digital converters communicating over SPI and logs the data to an SD card, also over SPI.  This system manages multiple SPI connections as well as polling user interface buttons and controlling motor movements through the life-cycle testing.  If a failure or error is detected during it’s live processing, it alerts the lab technician via WiFi and an RGB indication LED.