This project is an Interactive Voice Response System based on a personal computer. The data of an institution or firm is stored in a computer as a MySQL database, the world’s most popular open source database.Parents or students can then access and retrieve data from this database just by making a call to a predetermined mobile number. The user should provide the student details like admission number, semester number, exam code etc. when requested by the computer. The computer will then speak back the data requested, using a speech synthesizer. The Block diagram is given below:


The hardwire side consists of an embedded system which interfaces a GSM mobile phone or modem to the USB port of the computer. This particular example, is designed for our college and uses the academic data of the students as the database.  PC side programming is done in python with MySQL  bindings  and the embedded system is programmed in C. The text to speech conversion is done using espeak- the open source speech synthesizer and the audio output of the sound-card is routed to the mobile phone.

Circuit Diagram

When there is an incoming call, the call detector detect the call and attend it automatically. Then the call detector will send a signal to enable the micro-controller. It will then signal the PC through the virtual serial port created by the USB to serial converter. On receiving the signal, the python program running in the PC  greets the user by saying a welcome message, and prompts the user to enter student details like admission number. When the user presses the keys on his phone, DTMF tones are generated ,which are received by the mobile phone and decoded using the popular DTMF decoder IC MT8870. The Decoder outputs BCD code of the key pressed. The AVR micro-controller will then read the BCD code and send it to the PC. The STD pin of MT8870 (Pin15) will go high only when the decoder receives a valid DTMF tone. It is used to signal the micro-controller to read the data.

The call detector is built around a general purpose Op amp LM324  wired as a comparator and a 555 wired as an a monostable.  During  an incoming call the voltage level of the headphone output goes high  and remains high for some time. Also during each key press, the voltage goes high and remains high for a few seconds. During that time, the output of Op amp will be low and it will  trigger the monostable. The time period of the monostable  is set to approximately 25 seconds. If the user does not presses any key within this time period, the monostable output will go low and it will trigger the micro-controller  to go signal to hang up the call.The circuit was wired on a veroboard and is shown below:

The first prototype

The first prototype

On the PC side, the program waits for data from the micro-controller. The python interface to MySQL database is through  MySQLdb API in python. The database is created in MySQL.  The hardware interfaces the computer through a USB to serial converter.

The main disadvantage of this system is that, it requires a computer to operate. Instead of a fully fledged computer, smaller boards based on processors like Atom or smaller boards like Beagleboard or Gumstix can be used.The documents (codes, schematics) can be downloaded from here.