This project has evolved from a classic MCU design using an STR912 ARM9 based micro controller to an mbed design. The primary reason for the migration to mbed was a ready to go local file system which allowed for easier uploading of new audio files to the robot. The upgrading of firmware was also easier as the both the audio files and the firmware can now both be upgraded via the USB interface.
The male mannequin was a German produced mannequin made by Loutoff and available to purchase from Ebay. The mannequin cost about £70 and was chosen as it looked like there was a degree of freedom in the shoulder which could be motorized with a little redesigning. The plan was to produce a motorized arm that could be raised and lowered at will. The hand at the end of the arm could be used to hold a variety of object including walking sticks, radar guns and water pistols.
Whilst not many of of you have a use for a motorized mannequin the technology inside the mannequin can be used for other projects. The technology includes the following key areas:
- Motorized ARM. This is based on a windscreen wiper motor, gearbox and cam assembly from an old Ford Fiesta and acquired from a local scrap yard for £30. It is controlled with a proportional speed control using a single PWM channel from the mbed. The motor speed can be altered throughout the raise and lower cycle to provide a smooth, natural motion of the arm. The motor drive power stage uses a fault protected MOSFET from ST Microelectronics, which is capable of surviving short circuit and a stalled arm, and over voltage stresses from the motor. The circuitry can also monitor the current flowing in the motor during the raise and lower cycles by providing an analogue current feedback signal to the mbed. This means the mbed can detect a stall condition (due to obstruction) and can safely turn off the motor drive to prevent damage to the motor and the mannequin
- Voice/wav player. The mbed is equipped with a DAC-OUT analogue output signal and this signal is used to drive an audio power amplifier TDA2050 from ST Microelectronics. The power amplifier is capable of delivering enough audio power for it to be too loud to stand next to. This is ideal for outside use. The audio signals are .wav files which are downloaded from the USB interface on to the local file system on the mbed module. The .wav files are copied from the local file system into M25P64 serial flash memory, where they can be replayed at full speed when required by the mbed.
- Local file system for uploading new audio. The local file system is too slow for replaying .wav files at full speed so the mbed will copy across any .wav files into an external M25P64 serial flash memory. A naming convention for the files is used to identify which audio tracks you want synchronized with the arm movement and which ones you want to be played periodically but without any arm movement. For example a gun shot sound can be played in sync with the arm movement whilst a burping noise can be played independently of any arm movement.
- An external switch input for Passive Infra Red Detection. A PIR movement detector can be connected to the robot so the voice and arm movements can be synchronized with the detection of an intruder for example, or the motion of a passing car.
- In external I2C Interface for connection to a shock sensor. Provision has been made in this circuit to allow for an external I2C shock sensor such as the devices from ST Microelectronics motion sensors. The I2C devices provide an x,y and z signal for acceleration and hence make an ideal shock sensor. The shock sensor can be mounted inside or outside the robot depending upon the application in mind. The external I2C bus can be used for other I2C peripherals as well, not just shock sensors.
- CAN bus expansion. A CAN transceiver is included to facilitate connection to a larger network of CAN peripherals. Note: It is not wise to network too many robots together. (See Terminator 2 - Skynet became self aware on August 29, 1997 and that was a pretty bad day for everyone)
The software, after boot up, can be controlled via an external virtual RS232 connection via the USB interface. By plugging in the USB into the mbed module a virtual comm port is created. By using a terminal emulator such as windows hyper terminal or MTTTY and by setting the correct baud rate, the user can effectively communicate with the robot. The user can play specific sound samples, copy across sound samples from the virtual file system to the serial flash and can activate the motorized arm. The virtual com port allows the user to exercise all the features of the robot before the USB port is disconnected and the robot becomes autonomous.
When autonomous the robot periodically with play a tune from its selection of sound samples and sometimes move the arm. It is up to the user to control the behavior of the robot with his own software. For example you might want it to do something when the external PIR sensor detects an event or perform in a certain way after a specified length of time. I have dressed mannequin in various outfits and changed the software accordingly to get the correct response.
For example a traffic officer would want to raise his arm (with a speed camera in his hand) in response to an external event detected on the PIR detector. You might want him to say 'Please drive closely through the village' as he raises his arm.
A classical school master may want to raise his arm, with a cane in it, if he detects some one has thrown an object at him. He might want to say 'Who threw that, hands on heads everyone... it's your own time you're wasting' etc.
In your own application for a motorized parking post (for example), you could have a wireless key fob input trigger (instead of a PIR) which could announce 'please be careful of the moving post'. Other application include door entry systems, door chimes, motorized locks, motorized valve and sun tracking devices to name a few.
The circuit diagrams for all project are available here: /media/uploads/DavidGilesHitex/mbed_robot.pdf
The wave file needs to be named as follows: AUD100.wav to AUD199.wav for audio files only and AUD200.wav to AUD299.wav for audio and motion combined.
The wave files need to be 8 or 16 bit but can be mono or stereo. The sample rate can be different for each .wav file as the mbed software adapts to the sample rate dynamically.
Some example wav files are as follows: For the traffic cop we have:/media/uploads/DavidGilesHitex/aud206.wav and for the teacher detention master we have /media/uploads/DavidGilesHitex/aud207.wav. For a teacher the Pink Floyd classic 'Hey Teacher, leave those kids alone' is also a good one.