Meason Firmware Development

I have been quiet on the blog as I focused on becoming an P.E. in Electrical Engineering.   Now that  I am an Professional Engineer I have more time to focus on the measons project (STM32 Sensor Nodes project).

Since my last post I received the PCB’s and they checked out well.  The only issue is a button which has the wrong pins going to the footprint (something that is fairly easy to fix electrically). My primary focus has been on firmware development for the Measons.

As a recap, the project that I have named Measons is a primarily embedded project with the aim to detect common household failures and to send a text message/email when a failure is detected.  Common household failures could be a leaking toilet, water heater, AC drip tray, AC/Heater failure, washing machine leak and stove monitoring.  There are two types of measons, a measuring meason and a listening meason, which saves the messages from the network and reports it to a PC. A key feature of this project is that all measons have exactly the same firmware, the only difference between measons is the eeprom that is read on startup.

During these few months I have implemented reading eeprom configuration on startup, and having one meason report temperature measurements to another, which then is saved into a CSV using a small python program.  Looking at the data I can clearly tell when the AC turns on and off, and the temperature of my router and cable modem throughout the day.  I ran this temperature gathering experiment for over a month with excellent reliability.

A key problem I discovered was that license that AC6 tools provides on their example code forbids the distribution of the AC6 generated files.  Based on this license restriction and the frustration of not being in control of ones own development environment, I switched to using makefiles to generate source code in Eclipse Mars.  The linker file was generated from scratch and OpenOCD is behaving as it did in the AC6 System Workbench.  This change forced me to learn how makefiles and linker scripts work to a greater level of detail, which is great for my line of work.

Currently I am working on a bootloader for the measons which will allow the main application to be updated wirelessly, and for updates to be sent to the entire network.  Currently that bootloader works for a direct serial connection, but it needs added support for reading packets over the RF connection.  I expect for this to be competed within a weeks time (it sure can take a while to do firmware development when you have a full time job!).

Happy Holidays,