Atmega328p has unexpected moo capability !
Thanks to David Mellis who has made all the work for us: https://www.arduino.cc/reference/en/libraries/pcm/
I have to warn that sound has very poor quality and only two moo audio samples already takes all program memory. So you may not build your DIY MP3 player with this but it is surprisingly suitable for this project.
The S9014 NPN transistor as shown on schematic (see project gallery) enable to increase the volume a bit. This transistor has higher gain than classical S8050 or 2N2222.
Vibrating drive is made considering the vibrating motor as a small motor, which it is as far as I know. It is possible to modulate vibration intensity using pwm. For this project, we have a better surprising effect on the player with a simple all-or-none drive.
The device is battery powered. So the autonomy is optimized using LowPower library from LowPowerLab. The hook is connected to pin 2 (through a transitor), on which we attach a wake up interrupt before powering down the device. So basically, the device is always sleeping. It wakes only when the wire is touched, plays the sound, vibrates and go back to sleep.
Code is available here : https://github.com/iodeo/don-t-moo-the-cow