Users today expect equipment to come with a hi-resolution display and touch screen controls powered by an embedded computer. Embedded software is written using modern tools and languages allowing for rapid development and runs on top of an operating system such as Linux. An embedded computer will typically communicate with the low-level electronics using an RS232 connection.
The DEP Cell Separator from Deparator uses an oscillating electric field to sort T cells for use in cancer treatment. Here I wrote both the firmware and embedded software. The firmware was written in C for an Atmel Atmega328p using the avr-gcc compiler. The software was written in Java and Kotlin using Android Studio, using the Android Things OS running on a Raspberry Pi 3.
The SMP50 is an advanced laboratory apparatus that uses a camera and image processing to determining the melting point of a chemical sample. The embedded app controls the camera, processes images, records the images as video and communicates to the low-level heater electronics. The code was written in Java using Android Studio and runs on an Android embedded computer. Due to the real time image processing requirements, I had to write a C++ image driver, using the NDK to interface with the low level Video4Linux driver.
As well as writing the back end code for the camera driver, image processing, image recording and serial port comms to the heater electronics, Cole Parmer also required me to develop a production application for the SMP50 for testing, calibration and servicing
This product used the same embedded computer as the SMP50 above but here controlled a spectrophotometer. I was required to write an Android Service and library for handling the serial communications to the spectro electronics and also a production app for testing and calibrating the device.
For complex products a PC application is the best way to interface with your equipment or data. Desktop Windows applications allow for rich user interfaces and can process large amounts of information. Even if your product has a touch screen display, a PC application is usually necessary for setting up, servicing, testing and calibrating the device.
Here I was required to add new features to an existing application for the Cole Palmer 7200 Diode Array Spectrophotometer. The desktop application is written in C++ using Qt Creator and using the Qt framework.
Cole Parmer required PC software for their new range of life science laboratory equipment. The software needed to accurately calibrate the temperature measurement of the equipment, automate a lengthy verification procedure and produce a printable calibration certificate.
The software was written in C# using Visual Studio, the user interface was created using WPF to provide a stylish and professional look. MSI installers were created to distribute the software.
Mobile platforms now have the largest user base, reaching out to your users today will require either a website designed for mobile devices or a native app. You may need an app to compliment your product, your website or to drive your business. I have published many apps over the years, below are several successful apps I have published.
Anagram Solver is a popular app both for iOS and Android. The iOS version is written in Swift using Xcode and the Android version version is written in Java using Android Studio. You can download the app from the App Store and Play Store
Food Hygiene Ratings app queries the FSA database for food hygiene ratings of nearby businesses and is available for both Android and iOS. The app uses location services, geocaching, mapping and the FSA's web API. You can download the app from the App Store and Play Store
Firmware is the software that runs on the electronics inside your product. The firmware performs functions such as displaying information on a LCD, handling button presses, controlling motors, measuring temperature and processing communications such as RS232 or USB. I have written firmware for many different architectures over the years including, PIC. Atmel, H8 and Arm.
A spectrophotometer uses a motor to move a grating to select a narrow wavelength of light which then passes through a sample and finally measures the amount of light hitting a diode sensor. To read a whole spectrum of wavelengths, from 185nm to 800nm can take 10 minutes or more.
The Jenway 7205 UV Diode Array from Cole Parmer is a spectrophotometer that can measure a whole spectrum of wavelengths in one go, by using an array 1024 diode sensors. All the light from the xenon lamp is passed through the sample and then refracted on to the sensor array. High speed electronics is then needed to quickly read off the ADC values from the 1024 diode sensors' analogue video signal.
I was origianally hired to help complete the firmare for 7200 model which used an LED and halogen lamp. For the 7205 I had to rewrite a lot of the firmware to work with a xenon flash lamp, as the lamp output is very low at the lower and higher ends of the spectrum. The 7205 uses the actual output of the xeonon lamp to self calibrate its diode to wavelength mapping, the 7200 required a didymium sample measurement. The code was written in C for a STM32 ARM chip using Eclipse and tools from OpenSTM.
Note that the touch screen display is controlled by a PIC MCU and the firmware for this was written by another engineer. The two control boards used an UART to communicate, the ARM control board also communicated to a PC application (see above) via USB