|
|
|
watchdog for a watchdog Saturday, October 18 2025
location: 940 feet west of Woodworth Lake, Fulton County, NY
After I'd drunk my coffee, eaten my toast, and played a fair amount of my version of Spelling Bee, I fired up a soldering iron and put pin headers on a pair of Arduino Nanos. I wanted these to serve as I2C slaves for the hard-working ESP8266s that monitor environmental data and turn devices on and off. These new slaves include my code to serve as watchdogs when the master loses focus and stops petting it, which will cause the slaves to exercise the reset line going to the master. I've been noticing that the Hotspot Watchdog (which is actually a different kind of watchdog, one to monitor and reset the Moxee Hotspot) occasionally sends bogus environmental data, and I was wondering if another device on the I2C would keep it from doing that. A side benefit would be that the Hotspot Watchdog would in turn have its own watchdog, making it even more reliable.
But when I installed the new slave on the Hotspot Watchdog's I2C bus, I was dismayed to see it was spontaneously rebooting every four or five minutes, which meant it was not up long enough to serve as a watchdog (since that only checks for one "pet" every 1000 seconds, or 16 minutes and 40.2 seconds). I thought maybe the problem was that I was running the Nano at 3.3v but driving it at 16MHz; supposedly the Atmega328 at its heart can only be counted on to run reliably at 8MHz when powered at 3.3v. So then I had to figure out how to make it run more slowly. I didn't want to change the 16MHz crystal, since that would be difficult given how tiny it was (and I probably didn't have an 8MHz replacement). According to ChatGPT, though, it was possible to change the "fuses" inside the Atmega328 so that it would ignore its crystal and use a built-in 8MHz oscillator. But to change those fuses I needed a device to take command of the Atmega328 at a hardware level, something its boot-loader could not do. I had an AVRISP, but when I tried using it, it did not work. So I was forced to manufacture my own AVRISP using another Arduino Nano. (The great thing about Arduinos is that they can shape-shift to be a wide variety of different devices, and the code to make them do these things are widely available.) Eventually I was able to change the fuses and get the Arduino Nano to run at 8MHz. But even after I'd done that, it was still spontaneously rebooting when running my I2C slave firmware. I couldn't figure out why and ChatGPT was being no help (I even had it look over the complete source of the firmware). So I shelved working on that for the time being to take the dogs for a walk.
This time decided to hike down the steep gulch that continues a channel cut in the landscape that includes the Backwards Cliff Gorge and a wide trench running north of the cabin. Towards the northwest, the gulch continues as cove in the cliffs. It's a steep cove to walk down, but more gentle than a cliff! I found some interesting rocks along the way, including some with places for creatures to shelter.
At the bottom of the slope, I headed north along the bottom of the slope, paying attention to the cliffs above. At some point once I'd crossed back onto our parcel, I found a dramatic jumble of boulders that I'd been vaguely aware of but had never systematically investigated. The jumble included a number of sizable voids. These weren't big enough for a bear or a human to get into, but at least one was full of the characteristic pellets of porcupine droppings.
I continued around the hill until the cliffs petered out above the west end of Woodworth Lake. While briefly sitting on the dock, I saw a couple people over at the public dock and one of them was actually wading in the water. Temperatures at the time were well down in the 50s, so it didn't look fun to me. At some point I continued home via the Mossy Rock Trail.
Just north of the middle of the Mossy Rock Trail is a large boulder in the lowlands of that gulch I was previously describing. Yesterday I'd looked at it up close and saw it sheltered a substantial void, one I realized I could enlarge if I removed some rocks. So today I used a pry bar to dislodge those pieces and then used them to build a little wall along the bottom of the boulder to make it resemble an Anasazi ruin. Unfortunately the bottom of the void is now too damp for a sheltering mammal or bird to be happy, but perhaps amphibians will have a use for it.
Later this afternoon, I used a kind of asphalt squeezed from a caulk-like tube to waterproof all the cuts I'd recently made to the beams I have been working on out on the upstairs deck. I figure the more such tar I use, the longer those beams can last out in the weather.
Later I ate some cannabis and took a bath in the upstairs tub. When the water started coming a little cold from the tap, I was able to remotely turn on the boiler from the laptop I was bathing with, and the tap water heated right back up again. That's an amazing thing to be able to do, and I built the entire system to make it possible, from server-side scripts, to client-side scripts, to the code running on microcontrollers.
I should mention that the second No Kings protest happened today, though none were close enough for me to drive to from the cabin. (And my car wasn't charging very quickly, so I wouldn't've gone anyway.) Back in Kingston, though, Gretchen participated in an event that was attended by roughly 2000 people. News reports said today's protest was the biggest ever in the United States. Hopefully it's difficult to go full fascist when you're dealing with such anti-fascist headwinds.
The lake today. Click to enlarge.
My mini Anasazi ruin at the base of a large boulder. Click to enlarge.
A jumble of large stony blocks below the cliffs northwest of our cabin. Click to enlarge.
A void in the jumble where porcupines have sheltered; note their pellet-shaped droppings. My Yeti cup is for scale (it had contained a cocktail of gin and apple cider). Click to enlarge.
Charlotte's paw peeking out from under a blanket on the great room couch in the cabin. Click to enlarge.
For linking purposes this article's URL is: http://asecular.com/blog.php?251018 feedback previous | next |