RainGrid
Distributed rainwater management
Project Details
This project was two-stage for me. The first was via my employer, a previous team had designed a board for their cistern controller some years previous, and I signed on to the project to do the next revision of it, adding LoRaWAN support for soil moisture sensor input, an LTE module, battery power (in addition to the existing power-over-Ethernet system) and making other improvements. This was a fairly straightforward project in that respect. The existing board was simple and well-designed by a former mentor of mine, and we kept scope controlled, in some ways deliberately unambitious.
The second stage was more complex. The client found themselves without their previous core developer team, and in need of someone to do firmware bringup on the revised board, and integrate the new features of the revised board into their existing aging but functional web services. I offered my services as an independent contractor. A three-month bringup project became a 6-month saga, as the existing systems proved much harder to work with than anticipated, and updates turned into rewrites. This project has perhaps the greatest breadth of domains involved all at once under my remit of any single project I've worked on. From PCB design to microcontroller firmware development, embedded Linux systems work, web backend services, web frontend work, and even a touch of data science. In retrospect, I would have made further changes to the board, if I had known I would be writing the firmware, in order to make it easier to work with, but one cannot go backward in time.