There’s all sorts of problems out there to solve but you
have to be careful. Not everything can
be fixed with a microcontroller.
Sometimes it seems like it’d be nice but then you hit hurdles – oops,
now I need wireless. Oops, there isn’t a
battery big enough to make this work.
Oops, this is physically impossible.
The truth of the matter is that there are few problems that can be fixed
cleanly with a microcontroller – and I’m all about clean. I hate kludgy systems grafted on to other
systems grafted on to Twitter. Sometimes
you just need to wait for a problem that is begging to have code written to
solve it.
And I found that problem.
Here it is:
That wasn't like that before! |
Bad dog! Bad adorable dog! |
Naturally she only does it when we’re not in the house. And it doesn’t take long at all – this isn’t
a desperate gamble to get our attention, to force us to recognize that we are
abandoning her and she has to take measures to fend for herself. No, this is after perhaps a half hour of
being alone. That’s apparently all the
time it takes her to realize that there’s bacon grease in the trash. And boy does she love her bacon grease.
What to do? Hide the
trash when we leave? Not bloody likely –
that sounds like work. Get a different
trash can – one that closes tightly and allows no dog to access its
contents? That’s also work – I hate
going to Bed Bath and Beyond. Plus,
neither of those ideas trains our dog
to be better. Who knows where all that
energy will be directed if not the trash – perhaps to the kitty litter? I want to train her so she leaves things
alone, not accommodate her bad behavior.
But she’s crafty – she only gets into the trash when we’re not
present. So how persuade her to stay
away from the trash when you’re not there?
This is a solution that begs for an automated approach! What are our options?
Well, because I keep up on the latest in tools from Cool Tools I have the inside track on a neat
little device used to train cats: the
Innotek SSSCAT Cat Training Aid It’s
basically a can of compressed air with a motion sensor on it. You put it wherever you don’t want your cat
to be – usually up on counters or something like that. When the cat jumps up there and gets within
range of the motion sensor it releases a burst of compressed air that scares
the crap out of the cat. People say it
works rather well – it’s a consistent negative association for the cat. Best of all is that it’s automatic – it
doesn’t rely on a person being there and consistently disciplining the
cat. That sort of consistent training
helps the lessons stick. If I want to
train our dog to not get into the trash I need something like the SSSCAT. I could probably use the SSSCAT – it wouldn’t
be a bad idea for me to own one anyhow since we have two annoying cats. But damnit, it’s spring – when a young man’s
fancy turns to… engineering. Of
course. I want to make something and this is perfect for several reasons.
First, it’s not too complicated. I’ve thought it out and it will only need one
or two sensors as inputs and one noise maker as an output. There are no complicated communication
interfaces, no zany analog front ends, and no high frequencies. You could code the whole thing in assembly if
you wanted. Second, nothing exactly like what I need
currently exists. The SSSCAT might work
– perhaps I could place it behind the trash can or inside of it somehow, but
that might just as easily not at all work.
Third is that I can add features that aren’t in any product I can
find. Inventing something that doesn’t
exist but would make your life easier is the reason I got into this engineering
racket. Some people write to make the
world a better place, some enter politics.
I find new ways to be lazy. Someday I dream of a world where everyone
can be lazy.
So it’s decided – I’ll save the world by making something
that yells at my dog when she knocks over the trash. It’s a tall order, but I think I’m up for it.
Next time I’ll discuss high-level design: why it’s important, what sort of
documents you should produce as part of it and what kind of information they
should contain. We’ll also discuss
project organization and folder structure if you’re lucky.