Smart OBD Vehicle Monitor
Connected cars are becoming a thing of reality, but unless you purchase a modern vehicle, that technology is still out of reach. One of our clients set out to change that by making a plug and play, always connected, device for your vehicle. The ideas was to give drivers or owners the information they needed in their personal or business fleet.
The device is an OBD reader that plugs into the vehicle and is used to measure vehicle metrics as well as engine diagnostics. At the heart of the device is an ARM microcontroller where all the firmware is loaded. The device has a cellular modem for talking back to a central server. It contains a number of sensors for monitoring motion such as an accelerometer and Bluetooth for use in a smartphone app.
We came on-board to help develop all the firmware for this device as well as the hardware design. We created all the firmware to interact with the sensors and cars diagnostics. We wrote all the communication code to read from the diagnostics chip and steam the data over the 3G cellular connection. We created a custom bootloader, which was needed to allow the device’s firmware to be updated remotely. We built in smart coding elements to ensure data integrity. We 3D printed a custom case for early case design prototypes. We designed a custom GUI for the device to test and show device operation to their investors.
RFID Tag Reader
RFID is a radio-frequency identification technology that is used to record the presence of an object, usually some type of tag, using radio signals. It has a variety of interesting applications. One of our clients had an RFID reader that they were using to scan for nearby tags and send that information over a cellular connection to a server. They had one device already out in the market but needed some help fixing their firmware. They were looking to achieve three main goals: first, the original development of the software had some minor bugs and they needed someone with experience to rework all the source code. Second, they wanted to add some new features to the device. Third, they wanted to start thinking about simplifying manufacturing and how they could automate device programming either by the assembler or a non-technical staff person.
We worked with then to rewrite and document their code base. We developed tests around this code to prove functionality and minimize the time needed to start field testing. Because of this and the better organization of the firmware, we were able to add their new features easily and also make the software flexible for changes in the future. With the code documented appropriately, another programmer would have a more straightforward time interacting with their software. We set up an automated script and GUI to allow any member of staff to update and manage current and new devices going out to customers.