A couple of years ago when they were on sale for half price I bought a TI Chronos. I wasn’t sure what I was going to do with it but I needed a new watch anyway and it was only a few bucks more expensive than a cheapo street watch. However when it arrived and because for some weird reason that I only recently worked out although I am mostly right-handed I am left-handed when it comes wearing a watch and it was too clunky to wear all the time as my main watch so it sat on a shelf not being used. Then last year Pimoroni had a competition on twitter & one of the tasks they set was to take a photo of a real or fake device using a Raspberry Pi and my entry was a time/motion activated reward system. Using a TI Chronos accelerometer to control when the Raspberry Pi would unlock the container that the reward was stored in. At the time the device was fake but I decided that i would try to build it for real some day. So when I was looking for a procrastination project a couple of months ago I decided that this would be a good one.
As the Pibrella had been released and from a quick scan of the docs it looked like it would be a good way to give the project some extras like sound & blinking leds as well as controlling a solenoid with no additional hardware, I’m really not that good with hardware. i used to be but that was 25+ years ago when I was building things all the time & could actually see what I was doing. I actually did a couple of semesters of EE at college when i was in my “can’t decide what I want to do with my life” mode and swapped courses every week but i’ve forgotten more than I ever knew so whenever possible I try to keep the hardware that I use where I have to do the putting together to a bare minimum at the moment although i’m slowly getting back into the swing of things as long as all the components are through hole & large.
When the solenoid I ordered arrived it had been destroyed in transit but as it’d only been a couple of bucks with free shipping it didn’t seem worth complaining about and I put the project on hold while I decided what to use instead. I thought that a servo would do just as well instead so went an bought the cheapest servo they had in my local radioshack however, although the Pibrella is a great piece of kit it looks like the ONE!! thing it can’t do, at least not easily is control a servo, at least not that i’ve found and as I really wanted to use the Pibrella I went with my final option for a locking mechanism, A stepper motor.
After porting a wiringPi pibrella example to python pibrella library I ended up
import pibrella MAX_STEPS=8 pulse =  pulse = range(0, MAX_STEPS*4) pulse=[ 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1 ] pulseStep=0 def stepCW(steps): global pulseStep for i in range(0,steps): pulseStep -= 4 if (pulseStep < 0): pulseStep = MAX_STEPS * 4 - 4 pibrella.output.e.write(pulse [pulseStep+0]) pibrella.output.f.write(pulse [pulseStep+1]) pibrella.output.g.write(pulse [pulseStep+2]) pibrella.output.h.write(pulse [pulseStep+3]) def stepACW (steps): global pulseStep for i in range(0,steps): pulseStep += 4 if (pulseStep >= (MAX_STEPS * 4)): pulseStep = 0 pibrella.output.e.write(pulse [pulseStep+0]) pibrella.output.f.write(pulse [pulseStep+1]) pibrella.output.g.write(pulse [pulseStep+2]) pibrella.output.h.write(pulse [pulseStep+3]) def stop(): pibrella.output.e.write(0) pibrella.output.f.write(0) pibrella.output.g.write(0) pibrella.output.h.write(0) while 1: stepCW(256) stop() stepACW(256)
So using a stepper motor as a locking mechanism would work and although i’d still prefer to use a solenoid I think using a stepper motor might actually give me more options and flexibility in the long run.
Part 2 of the project will document getting accelerometer data from the Chronos to the Raspberry Pi.