There is a very peculiar character in Sesame Street called “The Count”, he is a Vampire with an Eastern European accent that always introduces himself like this: “Greetings I am the Count… do you know why they call me the Count? Because I love to count things”.
Well, I love counting things too. I have implemented a counting system with my daughters based on a whiteboard. Every time they finish a chore or a task they get one point. They love it because that usually translates to some amount of money they can spend in whatever they want.
But I don’t want to be the police of points. I rather automate that. Also, I’d love to provide them with some sort of feedback in a leaderboard for them to know their progress.
There are 2 ways I want to count things: a. By them reporting them via a voice recognition interface, b. By them be auto detected when they happen.
The count via voice has an extra requirement. I don’t want my daughter’s voices to go out to the internet so the whole solution needs to run offline.
Implementation Details for the Voice Recognition counter.
Somebody in the house presses button connected to B. When that happens, A starts listening for 5 seconds. Just enough to grab the voice blip : “I washed the Dishes” that is placed in variable X . X is passed to a voice to text converter (1) running in a Raspberry Pi that puts the result in Y. The RPi also runs a voice classifier to determine who’s voice it is, puts the results in W. Then a text classifier determines what chore has been reported and puts it in Z. The author of the chore ( W) and the chore type (Z) are used to increase the total count for that person on that particular task (T). At the end the Total, the author and the chore are put together to be shown in the display M.
Implementation Details for the Automatic Counter
This is a much simpler version of the Voice Recognition counter. When C passes by D there is a match. There is a small tag in the dog’s collar that is detected by D. By doing so, D already knows who passed by. This is used to determine the total count (T). Then it is displayed in M.
The second option is to do the opposite, let’s assume that the bike has a small Near Field tag (E) that F is aware of. When E no longer detects E, that a means that I took my bike for a ride. That increases the count (T). That it is displayed in M.
Some design considerations:
⁃ The voice recognition requires a separate process to train the model to be able to classify voices.
⁃ You only need one display M, it could just rotate the count it is displaying every 10 seconds.
⁃ The counts need to be reset periodically to avoid error drift. Once a month seems to be a good compromise. The historic can still stay in memory and later we can figure out a better way to display it.
⁃ If there is a new thing to be counted, you just need to start sending it to the increaseCount function. If it is new, it will just create a new register for it.
⁃ The whole system should be intentionally designed to be off-the grid. No internet connection or wi-fi communication should be needed.
So, what do you want to count now? What you think about Push Up/ Pull ups, burpee repetitions? That wouldn’t be that complicated to implement using a cheap microcontroller with an accelerometer tied to an armband. I still can’t believe my Apple Watch can’t do that…