It's a simple doorbell that can play melodies and audiorecords from I2C flash-memory chip. The device has two parts - digital and analog. The digital part used the microcontroller AT89C2051 and flash-memory AT24C256.
The device has 3 sockets for I2C chips: IC1-IC3 but the firmware really used only IC1, others socket are reserved. The pin POW controls the transistor VT1 and relay that closes the contacts for bell-button. The pin HL is connected to the cathode of the LED, and the anode of this LED is connected to +5V through a current limiting resistor ~300 Ohm. This LED blinks when playing. The device has R-2R DAC based on resistors R14-R30. The frequence of the resonator Q1 is 12MHz. Pull-up resistors R6-R13 are missing on the PCB and they are soldered on top.
Analog part - the amplifier and power regulator:
The device can be connected to PC with RS-232 serial adapter (based on MAX232 chip etc.) I wrote two utilities to create ringtones: The first is WavExtractor - extracts audio-data from uncompressed mono wav file. The second is BellDownloader - simple terminal application that allows to control device: read and write flash data, play ringtones and notes and compile melodies. This utility is written in Java and requires the library javacom2.0 for serial port access. This library is included in archive (Win32 only), to install it do the following:
On the links below you can download the circuit and PCB-layout for Eagle, utilities with the source code (Microsoft Visual Studio and NetBeans) and firmware with sources.
Files:Firmware (hex, for 12 MHz resonator)