This project started out as a build monitor for a CI development environment. Continuous Integration is a software development practices involving continuously building software to determine if changes have broken the code. This tools heavy approach produces data that can be displayed on LCDs for the team. The tools used often have APIs. This device is intended to be a portable build monitor capable of warning of build failures through various visual and audio queues.
The more I got into it, the more I liked the creepy angle. I have loaded the voice module with 2001 A Space Odessy quotes. He can be controlled over the internet to do the following:
- Talk preset phrases. The mouth moves as long as it is speaking
- Turn the eyes on and off individually
- Conrol a BlinkM that shings into the skull full og glass balls. The preset programs in the BlinkM can also be triggered
The youtube video does not pick up the sound well as it is a rear mounted speaker and the servo behind the mouth is closer to the mic.
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.
Charlie the Chimp through the agesSquirrel Code for the ChaosMonkey
Demo Reel - Monkey in Action