TWO ARDUINO UNO’S TO COMMUNICATE
FULL DUPLEX MODE USING UART
ABSTRACT:
This project presents the design and simulation of a dual-Arduino
communication system for light intensity monitoring and control using
LDR sensors and serial data exchange. The system consists of two
Arduino Uno microcontrollers; each connected to an LDR sensor and a
16×2 LCD display through an I2C interface (PCF8574). One Arduino
functions as the transmitter (master), while the other operates as the
receiver (slave). The LDR senses the surrounding light intensity,
converts it into an analog voltage, and sends the value to the Arduino for
processing. The measured data, along with button status, is displayed on
the LCD and transmitted serially to the second Arduino. The receiver
board displays the same information on its LCD, ensuring synchronized
data communication between both units. This setup demonstrates
reliable serial communication, efficient use of I2C interface for LCD
control, and real-time monitoring of environmental light. The system can
be extended for applications such as automatic street lighting, remote
sensor networks, and smart home lighting control. Overall, the project
provides a simple, low-cost, and effective solution to study inter-
Arduino communication and sensor-based automation in embedded
systems.
CHAPTER 1
PROPOSED SYSETEM:
The proposed system is designed to monitor and control light
intensity using two Arduino Uno boards that communicate with each
other through serial communication. Each Arduino board is connected to
an LDR (Light Dependent Resistor) sensor, a push button, and a 16×2
LCD display via an I2C module (PCF8574). The LDR senses the
surrounding light level and provides an analog signal to the Arduino,
which converts it into a digital value using its inbuilt ADC (Analog to
Digital Converter). This value represents the light intensity in the
environment. One Arduino acts as the master unit, while the other
functions as the slave unit. The master Arduino reads the light intensity
and button status, displays them on its LCD, and then transmits the same
information to the slave Arduino via serial (TX–RX) communication.
The slave Arduino receives this data and displays the same readings on
its own LCD. This allows both units to remain synchronized and display
real-time light information. The system demonstrates the concept of
inter-Arduino communication, sensor-based monitoring, and data
synchronization between two microcontrollers. It can be used as a
foundation for larger applications such as remote light sensing, home
automation, and IoT-based smart lighting systems. The use of I2C and
serial communication makes the circuit simple, efficient, and easy to
expand for future developments.
CHAPTER 2
BLOCK DIGRAM EXPLANITION:
2.1. Arduino Uno (Master Controller)
The first Arduino Uno acts as the master unit of the system. It
reads the LDR sensor value and button status, processes this
information, and transmits it through its TX (transmit) pin using UART
communication. The Arduino Uno’s built-in UART port (pins 0 and 1)
allows easy serial data transmission. The master also displays the light
intensity and button condition on its LCD screen.
2.2. Arduino Uno (Slave Controller)
The second Arduino Uno acts as the slave device. It receives data
through its RX (receive) pin and displays the received information on its
LCD. The slave continuously monitors the serial buffer to read any new
data from the master.
Functions:
Receives sensor data from master
Displays same values on LCD
Ensures synchronized operation between both units
2.3. LDR Sensor (Light Dependent Resistor)
The LDR detects light intensity in the surrounding environment. It
forms a voltage divider circuit with a fixed resistor. As the light
increases, the LDR resistance decreases, causing a change in voltage.
This analog voltage is read by the Arduino’s A0 pin. The master Arduino
converts this signal into a digital value representing brightness.
2.4. Push Button
A push button is connected to the master Arduino to provide a
manual input or trigger signal. When pressed, it sends a HIGH logic
signal to the microcontroller. This can be used to start data transmission
or perform a specific function, such as toggling display modes or
refreshing values.
2.5. LCD Display (16×2 with I2C Module)
Both Arduinos use 16×2 LCDs connected via I2C (Inter-Integrated
Circuit) modules (PCF8574). This communication method reduces
wiring complexity by using only two wires — SDA (Serial Data) and
SCL (Serial Clock). The LCDs display LDR values, button states, and
received data clearly, making the system user-friendly.
2.6. UART Communication (TX and RX Lines)
UART (Universal Asynchronous Receiver and Transmitter) is the
key communication link between the two Arduinos.
Master TX → Slave RX
Master RX → Slave TX
This cross connection allows two-way data exchange. The master
transmits sensor readings, while the slave receives and displays
them. A common GND connection ensures proper voltage
reference and stable communication.
2.7. Output Display / Monitoring
The output of the system is shown on both LCDs. The master
displays locally measured light intensity, and the slave shows the same
value received through UART. This confirms that the serial
communication works correctly and the data synchronization is accurate.
CHAPTER 3
PROTEUS SIMULATION DIAGRAM
CHAPTER 4
CONCLUSION
The project successfully implements a dual-Arduino light
monitoring and control system using UART communication, LDR
sensors, push buttons, and 16×2 LCDs with I2C modules. The system
demonstrates how two microcontrollers can share sensor data in real
time, ensuring synchronized operation between a master and a slave
Arduino. The master Arduino reads analog signals from the LDR sensor,
which varies according to ambient light intensity, and converts it into
digital data. This data, along with the push button status, is transmitted
via UART serial communication to the slave Arduino, which displays
the same information on its LCD.
The integration of I2C modules for the LCDs reduces wiring
complexity and simplifies display management, making the system
compact and user-friendly. The push button adds interactive control,
allowing manual triggering of data transmission or other functions. By
establishing reliable UART communication and synchronized data
display, the system highlights essential concepts of inter-Arduino
communication, sensor-based automation, and embedded system
design.This design is cost-effective, scalable, and easy to implement,
providing a practical solution for real-time monitoring applications.
Potential applications include smart home lighting systems, remote
sensor networks, and IoT-based environmental monitoring, where
multiple microcontrollers need to share data efficiently. Moreover, the
project serves as a strong foundation for further enhancements, such as
wireless communication, integration of multiple sensor nodes, or
advanced control algorithms.
In conclusion, this project successfully combines sensor
interfacing, serial communication, and real-time display, offering both
educational value and practical utility in microcontroller-based
automation systems. It demonstrates how simple components can be
used to build reliable, synchronized, and interactive embedded systems
for real-world applications.