The project is one in a series of build monitors I have built over the years. This one I am trying to make portable so that when someone breaks the build I can move the monkey on their desk and have it irritate the crap out of them as punishment.
I don't plan my projects. I let them grow organically so I don't have good specs and pretty wiring diagrams. Instead I start with an idea and make a few choices that act as constraints. I work the piece out from those constraints making up the design as I go along. I defer making decisions as to what goes where until I have to to maintain flexibility.
For this project I started with a modern version of a the classic Charlie the Chimp toy. He has two modes of operation: Banging his cymbals and making a nasty grinding sound. The nasty sound is made by grating a piece of springing steel against a gear attached to the same motor used to drive the clapping.
As I started inserting controls into the existing wiring it became pretty clear the current suck from the nasty sound was going to be too much. I also thought it would be fun to replace the sound with a sound card and try to control the mouth using a servo.
I also needed the device to connect to the internet and was interested in playing with the Electric Imp. So that became another early choice. At the time there were not as many form factors for the Imp. I wish now I had not gone with the SD card version as it only has a few I/O and is physically bigger.
I used an LCD panel controller to give me more I/I via I2C. Not a bad move but it required mounting and more space. I also decided to gut the battery compartment and use it to contain the electronics. This meant using another power sound which led to a lithium battery and charger.
Most idea worked out but the servo for the mouth was a pain. I kept on cutting bit s of original plastic linkages out until I gave up and tried connecting a servo with a home made concoction of plastic servo arms, directly to the bar which acted like an actuator. He currently looks like he is mumbling. I hope to adjust the servo to get more motion before I complete the project.
Going with I2C worked well for another feature I wanted which was a controllable light that I could program to change colors according to the state of a build. The Blink M turned out to have preprogrammed modes which were handy in reducing the Imp programming.
I have all but completed the monkey. Integration with the CI software will take some time but the controllable elements are there. I think the Imp will be able to catch Webhooks from the Jenkins server. I can use those to trigger the Monkey.
I have not gotten the power usage on the monkey to where it needs to be. Because the deep sleep mode on the Imp does not reconnect automatically, I'll need to develop an async message queue on the Agent end. Until then, a full charge on the LiPo lasts at max 10hrs as long as I don't run the motor s too often.
1
I have a larger stationary one that has a pirate voice to abuse those close by, a synth voice to speak the names. It also abuses them over IM and Tweets their failures. It also runs a CI game that scores check ins and code quality. It has a screen with a scoreboard.
This one I hope to make portable. It has sound playback via a small soundboard but not voice synth. I'm going for low power.