Next in my project of wrapping up a bunch of earlier projects into a shareable form is the "Doggler." This is an Arduino-compatible datalogger like many makers have made for one reason or another. When you realize you have some SDRAM card interface, random temperature sensors and lots of Arduinos about, the project almost builds itself.
The project began with some old seven-segment LEDs, has become a proper processor-on-board, Arduino compatible device, and will finish with a small OLED screen and a 3D-printed case, and a listing on Tindie to share with others who may want to play with the results.
With the first functioning prototype, a test seemed to be in order. Being winter, it seemed like a few days of monitoring the cool unfinished basement in this old house seemed like a good idea.
I turned on the Doggler and set up my sampling to every 30seconds - more resolution than necessary for typical temperature fluctuations in a house, but I was interested in getting lots of data.
After four days (well, three and a half) I accumulated a bunch of data on my SD Card, and I pulled it into the LibreOffice spreadsheet and cobbled together a plot.
The result was nicely illustrative of the furnace fluctuations, and different periods in the house during the day when I'd bump up the thermostat, and then the long slow drop in the morning until the furnace came on for the first warm up.
As well, the shifting of that same early morning event shows that the time keeping was drifting a bit over multiple days. This makes sense as the ATMEGA processor was sleeping for multiples of eight seconds and trying to accumulate these and other processing interruptions to preserve battery life.
For this application - general trends are the main interest, and precision time-keeping didn't seem like a high value, so no Real-Time Clock circuitry is included. This keeps the costs down, and simplifies the code too - although there's overhead for managing an internal rough clock function, so that part is probably a wash.
Next was some work on a 3D printable case, with easy access to SD card and batteries.
The catalyst for this was some almost 40year old seven-segment displays sitting in my parts cabinet. I swear these have almost certainly been there since the early/mid 1980s, and I've not done anything permanent with them. They'd get used for a few minutes or days for something, then tossed back into the cabinet when the exploration was finished.
I started with an Arduino Nano (5V) as I had a handful of them around, and the old LSI stuff I had around was 5v compatible.
The first effort was to find some suitable shift-register logic, and work out a segment illumination pattern for the characters I wanted. I had some 'HC164 (non-latching) devices which were just as old as the 7seg LEDs so i used those. I'd have probably used the '595 latching version had I any around, but in the end I was happy with the non-latching as my user interface isn't very highly dynamic and the display driving happens too fast to see any artifacts anyway, and it simplifies the code & interconnect a tiny bit.
With that quickly working on a breadboard, I started a perf board prototype with three digits, and three '164s.
I came up with a simpler state-machine based firmware structure, and a handful of abbreviations for a 7-seg user interface. I started with the idea of three buttons up, down, and enter for navigation. As I was beginning to wire that up, however, I came across a spare rotary encoder I'd bought when I replaced a broken one in our microwave oven. It's a simple rotary without detents and with a push-in normally-open button incorporated. It too was a surplus part with nothing slated for its use, so I opted for that instead.
All that together and I had a UI. It wasn't hard to incorporate a temperature sensor and an SDRAM interface daughter card and I had these little monster which was able to do what I wanted. Doggler was born.