So I was sitting there, staring at a screen when I realised that I hadn’t posted this month and then I realised there was no such thing as no-post-january…..
Clickers
Part of my time has been taken up doing physiotherapy for a bone spur. And that in turn leads to timing and repetition and its hard to keep track when there’s two sets of twenty repetitions of a ten second hold. So I wondered about making something to track that. This has led to Clicker, a SwiftUI prototype to test out various ideas around minimising the buttons and interaction surfaces so we can have as simple a self-contained device as possible without compromising on functionality. Here’s a look in it’s current state:
What we have here is:
- a countdown clock
- a countdown adjuster
- an overall count
- a reset button
- a Go button (which shows Reps when counting down)
The only buttons are on the countdown adjuster, reset button and go button.
The time setting hides another control. At non-zero settings, hitting the Go button means the timer will count down from the set value till it hits zero and then bump up the counter and give a little (very little at the moment) haptic buzz.
Taking the timer down to zero lets it function as a simple counter with no haptic buzz, just bumping up the count as you do simple repetitions.
Keep repeating till you hit your count and you are done. Press reset and the count clears and you can move on.
This first pass is simply trying to minimise buttons with an eye to a handheld device which rests in your hand.
So far so good. I’ve been using it on my exercises on my phone and it seems to work. But there’s definately more refining to do. It could be prettier, it could be more hapticy and it could be a lot smarter.
With that in mind, I’ve aso started to think about completely different ways of implementing this, including a rich phone UI which could hold a script for a session and a watch Sidekick which timed and signalled the user on their completion of sections.
It’s a start though, and prototyping a gadget in software is an interesting experiment that could lead to a whole load of Clickers.
You can find the Clicker repo on GitHub.
Doorbells
I’m back on the Doorbell path. No, not ringing them and running away because thats [DING DONG] ach childish… No, I have been taking my 433Mhz doorbell interceptor and reworking it for more reliability and easier programmability. I’ve reworked the whole thing on PlatformIO which is basically a screaming-free answer to how weird and underfeatured the Arduino IDE is. That meant also working out a new way to recognise doorbell signals - I eventually ended up using RF433Any as its partner app, RF433Recv didn’t want to make interrupts happen on the M5 Atom Matrix I am using. Then it was a matter of cleaning the old app out and working out cleaner ways to handle preferences.
In the end, it was the ESP32 Preference API that I used. After implementing the whole thing in the older and now depreacted EEPROM “API” and then finding out it was older and deprecated. MARK YOUR DEPRECATED FEATURES PEOPLE.
Anyway, holding down the matrix button and powering up resets the entire device. While powered up, press down the matrix button, hold it down and then press a doorbell button and the m5doorbell learns that doorbell. Next time it seens the signal, it’ll send off a pushsafer notification and my watch will tell me someone’s at the door (and now it includes the number, as registered, for the doorbell button).
The baseline rebuild has now lead me to the conclusion that ESP32’s aren’t built to hold a WiFi connection open all day. I’m going to switch to a WiFi on demand strategy as the connection time is now quick enough - previous builds of the ESP32 SDK were achingly slow - that I can contemplate it.
Again, plenty more to do on this. Returning the flashing matrix locally which provided a bonus alert for a particular headphone wearing nerd. Trying out the design with the newer Atom S3. And with multiple button support comes the possibility of multiple alerts and notifications.
Still, best to get something out there and you can check out the m5doorbell2024 repo on GitHub.