Development during internship

During my internship at OnFarm Data, I worked on integrating the Swarm satellite communication module into the existing data-logger. This was to provide a method of communication in areas where there was no cell coverage, or internet available.

In order to integrate the swarm module, I had to modify the software interface which selected the communication method, from this point, I would have to create the standard interface functions such as ‘send’, in addition to swarm specific communication functions.

Due to the small packet size and message quotas, I also developed a packing function where the packet could contain multiple logs. This had to be flexible as the log size was dynamic based on the sensors attached.

Challenges

The hardest part about developing this software was dealing with debugging brownouts and not being able to trigger satellite transmissions whilst working in the office. This was resolved with hardware modifications.

It was also challenging working within a large project for the first time where features required changes to multiple systems within the code and having to understand the logic flow.

After my internship

Whilst embedded development duties slowed after my internship, I still had the opportunity to occasionally work on embedded software. One of the features I implemented was the SD card logger. This code essentially hooked into the console output code and wrote the console message to an SD card. It also included the timestamp into the folder structure, filename, and prepended to the new text. This allowed for console output to be pinpointed and allowed for additional debug information for instances where a console couldn’t be used.

Challenges

The SD card filename wasn’t long enough to include the entire length of the timestamp, so I had to remove the least significant digits in the file name. Additionally, I had to solve how to figure out the current time, and roll over the file when a new day occured.

Creating drivers for hardware projects

Later in my tenure I used embedded development for creating drivers for the hardware I was developing.

In the exclusion project I coded the ability to set and receive states of the IO expander. Additionally, I created similar software to collect data from a Davis weather station which used a mix of I2C, ADC, and pulses to capture weather data.

In the case of the exclusion project, the a custom version of the code was made to set the STM32 to output a sequence of output states to the exclusion hardware which could be used to test devices during manufacture.

Challenges

When working with the exclusion project, a pin of the I2C connector was dedicated for indicating when a state change had occurred. However, writing to the device would induct into this wire, triggering the interrupt to cause another read event.

This information was used to inform my senior to implement a RC filter onto the main control board to prevent communication based induction from falsely triggering the interrupt pin.

Pick a resume

The generalist resume covers a broad range of topics but doesn’t detail a particular field or my comprehensive skill set as it may not be relevant to the listing.

The Mechanical resume details my ability to work with CAD software in a variety of settings, as well as covering my skills with tools and in manufacturing.

The Software resume details my work software in embedded, and the automation space.