Digital Room to Room Intercom

Author admin    Category All projects, Audio     Tags ,


This project was inspired by my girlfriend, who asked me to build an intercom for our house. There are many ways to build an intercom; an example is batteries in series with 2 telephones, a key switch and an amplifier. I felt this was far too simple. I decided to build an intercom with an MCU which digitalizes a voice and then sends it serially and then regenerates the analog signal.

I equipped the microphone with an ACG to ensure that anyone in between 1 inch and 10 feet from the microphone will sound good. After that I send the analog signal to the A/D of my MCU which digitalizes the voice and sends it serially to the other intercom that you have previously set the "address" for. The digital signal is sent to an RS422 interface, which sends it to a RS422 hub, which then broadcasts the data to the other intercoms. The addressed intercom takes the data and regenerates the analog signal via a PWM and a simple analog filter. I found a really cool 3 Watt Amplifier which works at 12 volts with a pin to control the output volume.


  • LCD
  • AGC
  • Simple power amplifier with volume control
  • PWM generated D/A
  • Sine wave generator for key sound and pre-tone



Intercom Schematic

Hum Schematic

Source Code

26 Comments to “Digital Room to Room Intercom”

  • stefan May 21, 2010 at 5:40 pm

    All you're projects are made with AVR microncontrolers!!??Can you make a project with PIC microcontrolers!!!?

  • admin May 21, 2010 at 5:43 pm

    I work with AVR I know them very well, I have all the hardware for, I don’t know why I need to change for PIC, I don’t what to start at zero, the learning cure is long

  • Mathias December 5, 2010 at 4:42 pm

    Thank god its AVR. I used PIC for many years and one year ago I changed to AVR. Its so much better that I always ask me how could I ever have used PIC…
    Thanks for staying with AVR!!!

  • Benny Lee December 7, 2010 at 12:59 pm

    Amazing project you are briliant.. I'm from indonesian

  • Andreas February 4, 2011 at 7:18 pm

    excellent project

  • sam May 30, 2011 at 8:44 pm

    the best!…

  • Anant June 4, 2011 at 10:51 am

    Avr is best microcontroller.

  • Olusola July 1, 2011 at 11:57 am

    Thanks for displaying this on the web. I have a project in school to construct a 5 point intercom. (A prototype). Please can you be of help? I will be grateful for your prompt reply and help.

  • admin July 1, 2011 at 2:28 pm

    I’m too busy, but I want to let you know that this intercom is not easy to build and not easy to understand how it work. It’s a advance project


  • julian castello July 13, 2011 at 8:32 am

    Hello, I try to compile your source code using ICCAVR ver.6.31A but there was error the include header file not found shortnametype.h, where can I find the file? Thanks in advance.

  • julian castello July 14, 2011 at 3:57 am

    Hello Sylvain,
    Never mind my last comment, I read all of your article and found the replacement for shortnametype.h, but I have a few of warning message, I hope it doesn't matter.
    since I used ICCAVR several times before and found out that warning message sometimes is not a problem, or is it?
    By the way the warning message is something like this:
    "result of unsigned comparison is constant"
    "expression with no effect elided"
    the warning message regarding the if else syntax with value.

  • admin July 17, 2011 at 1:14 pm

    Post me the line where those error are

  • Brindusoiu Mihai May 4, 2012 at 9:31 pm

    Hello Sylvain,
    I solve the problem with "shortnametype.h", but i still have problem with compilations.
    The errors are:
    !W C:\Intercomm\InterComm.c(357):[warning] [MISRA 2712]old-style function definition for `main'
    !E C:\Intercomm\InterComm.c(438): type error in argument 2 to `csprintf'; found `pointer to char' expected `pointer to __flash char'
    !E C:\Intercomm\InterComm.c(577): type error in argument 2 to `csprintf'; found `pointer to char' expected `pointer to __flash char'
    !E C:\Intercomm\InterComm.c(602): type error in argument 2 to `csprintf'; found `pointer to char' expected `pointer to __flash char'
    !E C:\Intercomm\InterComm.c(670): type error in argument 2 to `csprintf'; found `pointer to char' expected `pointer to __flash char'
    !E C:\Intercomm\InterComm.c(738): type error in argument 2 to `csprintf'; found `pointer to char' expected `pointer to __flash char'
    !E C:\Intercomm\InterComm.c(895): type error in argument 2 to `csprintf'; found `pointer to char' expected `pointer to __flash char'
    !E C:\Intercomm\InterComm.c(962): type error in argument 2 to `csprintf'; found `pointer to char' expected `pointer to __flash char'
    !W C:\Intercomm\InterComm.c(2070):[warning] overflow in converting constant expression from `int' to `unsigned int'
    !W C:\Intercomm\InterComm.c(2070):[warning] overflow in converting constant expression from `unsigned int' to `unsigned char'
    Thank you!

  • admin May 4, 2012 at 10:05 pm

    Check the project option and select “string in flash”

  • yui fan May 5, 2012 at 2:28 pm

    How do you control the communication between units?  IS it one way at a time or can be both direction at the same time?  I do not see any "TALK" button on the keypad. Thanks.

  • admin May 5, 2012 at 2:49 pm

    Talk button is the # on the keypad and end communication is *

  • yui fan May 5, 2012 at 2:56 pm

    Thanks for a quick response…Any thoughts on doing this for hands free?

  • admin May 5, 2012 at 3:05 pm

    it's possible but when there is noise in your room, the communication is latch juste one way… 

  • Richard November 11, 2012 at 8:05 pm

    Hi Sylvain – thanks for posting the schematics and source.  Will any N channel JFET work for Q1 or can you suggest one?  Thx.

  • admin November 12, 2012 at 2:08 am

    I think so, but I can’t confirm

  • Richard November 12, 2012 at 4:54 pm

    What value of JFET did you use in the original project?

  • admin November 13, 2012 at 4:38 am

    I don't know it's make to long time I had done this project,……………

  • Zaur May 25, 2013 at 5:00 am

    please explain the purpose of IC 4068. Describe briefly how the device is connected to the other device

  • admin May 25, 2013 at 9:22 pm

    if any rs485 send a byte to the hum it will be repeat on each other nodes

  • viswesh January 5, 2014 at 12:05 pm

    hello sir,
    please upload a audio project uses AVR and i2c audio processor(tda7313) please ,
    thanks for sharing all your projects.  

  • choi January 1, 2015 at 6:53 am

    Dear sir.
    when  your source code  compiled , then  displyed as belows
    Would you tech me  and  send  "shortnametype.h"  ?
    \iccv8avr\include  "D:\\InterComm.c" -o InterComm\InterComm.o
    !E D:\\InterComm.c(78): cannot include source file "shortnametype.h"; file not found
    Process terminated with status 1 (0 minutes, 0 seconds)
    1 errors, 0 warnings (0 minutes, 0 seconds)

Post comment

Please note

All my source codes were taken from my personal projects.

Everything is for your information only. The C/C++ codes have been written
with ICCAVR. You can find the header and source CRT files by downloading their compiler.

All is for your information and everything is AS IS without any warranty of any kind. No other files are available and I don't make any modification for any body.



Electronic Links


AGC Anemometer AVR AVR Bootloader Bootloader Capacitence Capacitor Clock Color Control DCC Debugger Devices Digital driver Function Generator High Gain Microphone Humidity Inductance Inductor Laser LCD LED 3W Library Lightning Detector MegaLoad Meter Moodlight Mood Light MS5534 Nixie OscilloScope projector Rain Fall Sensor rgb RGB LED Scop Sensor SHT75 Temperature Terminal Tipping Bucket Train Modeling Vintage Water Detector