Sunday, September 28, 2008

A Voice Calling Bell

This one was a group project of mine. The goal was to make a bangla voice calling bell, i.e. when a switch is pressed, the calling bell would actually play back some pre recorded voice. The project was done about 3 months back. It was quite childish, but was assigned to us, we didn't quite choose it.



My group consisted of Sabih Omar (omar-sabih.blogspot.com), Mohammad Asif Zaman, and Atif Iqbal.

The concept of the project is quite simple. The Voice is first recorded into a PC. Then a matlab code is used to generate 8-bit PCM wave. This code is converted by MATLAB to some C-compatible code that can be readily pasted into the main coding part as a data array. When an interrupt occurs, the PCM is output via a port at a certain interval based on sampling rate (we did on 8kHz). This output is passed to an 8-bit DAC (Digital to Analogue Converter) and filtering and amplification is applied to the signal.

We didn't have to submit any formal reports in the project, just a CD containing videos. So I don't have it well documented.

• Sleep Mode in main routine to save power
• A pulled down switch as the bell’s push button used to drive interrupt and thus playback voice.
• Intelligently chosen response based on recurrent key presses.

If switch is pressed successively, the response changed automatically.

The responses were (remember this was a door-bell)
•অনুগ্রহ পূর্বক দরজা খুলুন (Please open the door)
•দয়া করে দরজাটা খুলুন (Kindly open the door)
•দোহাই আপনার দরজাটা খুলুন (I just beg you to open the door)
•আরে এতোবার টিপেন কেন? ভাগেন! (Why are you pressing so many times? Just get lost!)

This nice but utterly useless diagram was presented by me in my presentation:


Unfortunately, the project cannot be run by the Proteus VSM. The DAC there can synthesize a sine wave, but cannot synthesize human voice.

Another thing to note is that AVR microcontrollers keep variables in RAM and code in ROM like any Harvard Architecture device. The voice data are large (typically 8kb for 2 secs) so it is wise to keep them in Program memory.

Please remember to use the command pgm_read_byte to read from flash. We forgot this, and thought our microcontroller has gone crazy.

This is the report that we submitted to our teacher. Unfortunately it is not dubbed and is in Bengali Language.




Finally I have decided to host all project files in EDA Board and AVR Freaks, (unless they decide to unhost them.) Please download if you must, and donate me some points there if you like my projects or find them useful.

http://www.edaboard.com/viewtopic.php?p=1084268

http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_id=1630&item_type=project
This one was a group project of mine. The goal was to make a bangla voice calling bell, i.e. when a switch is pressed, the calling bell would actually play back some pre recorded voice. The project was done about 3 months back. It was quite childish, but was assigned to us, we didn't quite choose it.



My group consisted of Sabih Omar (omar-sabih.blogspot.com), Mohammad Asif Zaman, and Atif Iqbal.

The concept of the project is quite simple. The Voice is first recorded into a PC. Then a matlab code is used to generate 8-bit PCM wave. This code is converted by MATLAB to some C-compatible code that can be readily pasted into the main coding part as a data array. When an interrupt occurs, the PCM is output via a port at a certain interval based on sampling rate (we did on 8kHz). This output is passed to an 8-bit DAC (Digital to Analogue Converter) and filtering and amplification is applied to the signal.

We didn't have to submit any formal reports in the project, just a CD containing videos. So I don't have it well documented.

• Sleep Mode in main routine to save power
• A pulled down switch as the bell’s push button used to drive interrupt and thus playback voice.
• Intelligently chosen response based on recurrent key presses.

If switch is pressed successively, the response changed automatically.

The responses were (remember this was a door-bell)
•অনুগ্রহ পূর্বক দরজা খুলুন (Please open the door)
•দয়া করে দরজাটা খুলুন (Kindly open the door)
•দোহাই আপনার দরজাটা খুলুন (I just beg you to open the door)
•আরে এতোবার টিপেন কেন? ভাগেন! (Why are you pressing so many times? Just get lost!)

This nice but utterly useless diagram was presented by me in my presentation:


Unfortunately, the project cannot be run by the Proteus VSM. The DAC there can synthesize a sine wave, but cannot synthesize human voice.

Another thing to note is that AVR microcontrollers keep variables in RAM and code in ROM like any Harvard Architecture device. The voice data are large (typically 8kb for 2 secs) so it is wise to keep them in Program memory.

Please remember to use the command pgm_read_byte to read from flash. We forgot this, and thought our microcontroller has gone crazy.

This is the report that we submitted to our teacher. Unfortunately it is not dubbed and is in Bengali Language.



Finally I have decided to host all project files in EDA Board and AVR Freaks, (unless they decide to unhost them.) Please download if you must, and donate me some points there if you like my projects or find them useful.

http://www.edaboard.com/viewtopic.php?p=1084268

http://www.avrfreaks.net/index.php?module=Freaks%20Academy&func=viewItem&item_id=1630&item_type=project