This project builds a practical wireless temperature monitoring system using two Arduino UNO boards. One Arduino reads temperature from a DS18B20 sensor and sends it wirelessly through a 433 MHz RF transmitter, while the second Arduino receives the data and shows the live temperature on a 16x2 I2C LCD.
The system is divided into two sections:
- Transmitter unit: Arduino UNO + DS18B20 + 433 MHz RF transmitter.
- Receiver unit: Arduino UNO + 433 MHz RF receiver + 16x2 LCD with I2C module.
The DS18B20 sensor works with the OneWire and DallasTemperature libraries in Arduino projects. The 433 MHz RF modules can be used with the VirtualWire library, and the data pin can be connected to an Arduino digital pin. A common 16x2 I2C LCD on Arduino UNO typically uses SDA on A4 and SCL on A5.
| Component | Quantity | Purpose |
|---|---|---|
| Arduino UNO | 2 | One for transmitter, one for receiver |
| DS18B20 temperature sensor | 1 | Measures temperature |
| 4.7 kOhm resistor | 1 | Pull-up resistor for DS18B20 data line |
| 433 MHz RF transmitter module | 1 | Sends temperature data wirelessly |
| 433 MHz RF receiver module | 1 | Receives transmitted data |
| 16x2 LCD with I2C backpack | 1 | Displays received temperature |
| Breadboard | 2 | Circuit prototyping |
| Jumper wires | As needed | Electrical connections |
| USB cable / 5V supply | 2 | Power for both Arduinos |
Install these libraries from the Arduino IDE Library Manager before uploading the code:
- OneWire
- DallasTemperature for DS18B20 support.
- VirtualWire for 433 MHz RF communication.
- Wire for I2C communication with the LCD.
- LiquidCrystal_I2C for the 16x2 I2C LCD.
| Arduino UNO pin | Connected to | Notes |
|---|---|---|
| 5V | DS18B20 VCC | Sensor power |
| GND | DS18B20 GND | Common ground |
| D2 | DS18B20 DATA | OneWire data pin |
| 5V | 433 MHz TX VCC | RF transmitter power |
| GND | 433 MHz TX GND | RF transmitter ground |
| D12 | 433 MHz TX DATA | RF transmit data pin |
| D13 | Onboard LED | Status blink during transmission |
Important: Connect a 4.7 kOhm resistor between DS18B20 DATA and 5V as a pull-up resistor. The DS18B20 requires OneWire communication support and is commonly used this way in Arduino examples.
| Arduino UNO pin | Connected to | Notes |
|---|---|---|
| 5V | 433 MHz RX VCC | RF receiver power |
| GND | 433 MHz RX GND | RF receiver ground |
| D11 | 433 MHz RX DATA | RF receive data pin |
| 5V | LCD VCC | LCD power |
| GND | LCD GND | LCD ground |
| A4 | LCD SDA | I2C data line on UNO. |
| A5 | LCD SCL | I2C clock line on UNO. |
| D13 | Onboard LED | Status blink on packet receive |
- The DS18B20 sensor measures temperature and sends the reading to the transmitter Arduino using the OneWire protocol.
- The transmitter Arduino converts the temperature value into text format and sends it through the 433 MHz RF transmitter using VirtualWire.
- The RF receiver module captures the wireless data and passes it to the receiver Arduino through a digital input pin.
- The receiver Arduino decodes the received text and displays it on the 16x2 I2C LCD.
- The loop repeats continuously, so the displayed temperature keeps updating in real time.
- Reads temperature from DS18B20 every 1 second.
- Detects sensor disconnection and sends
ERRif the sensor fails. - Sends temperature as ASCII text over 433 MHz RF.
- Toggles the onboard LED on every successful transmission.
- Listens continuously for incoming RF packets.
- Shows
Waiting...during startup. - Displays temperature in Celsius on the LCD when data arrives.
- Shows
Sensor Errorif transmitter reports a fault. - Shows
No Signalif no packet is received for 3 seconds.
transmitter.ino— code for the temperature sensing and RF transmission unit.receiver.ino— code for the RF receiving and LCD display unit.
- Open
transmitter.inoin Arduino IDE and select Arduino UNO board. - Install all required libraries.
- Upload transmitter code to the first Arduino UNO.
- Open
receiver.inoand upload it to the second Arduino UNO. - Power both boards.
- Adjust the LCD I2C address if your display does not use
0x27; many modules use0x27or0x3F.
- Check LCD power and GND.
- Verify SDA is connected to A4 and SCL to A5 on Arduino UNO.
- Confirm the I2C address; scan for
0x27or0x3Fif needed. - Make sure the contrast potentiometer on the LCD backpack is adjusted correctly.
- Check RF module wiring carefully.
- Confirm transmitter DATA pin matches
vw_set_tx_pin()and receiver DATA pin matchesvw_set_rx_pin(). - Verify both sketches use the same VirtualWire bit rate, here
2000bps. - Keep both modules powered properly; some hobby examples note shared ground and stable supply are important for reliable operation.
-
Check the DS18B20 pin order.
-
Verify the 4.7 kOhm pull-up resistor between DATA and 5V.
-
Make sure the sensor data wire is connected to pin D2 in the sketch.
-
Recheck OneWire and DallasTemperature library installation.### 4. Code compilation errors
-
Install missing libraries from Sketch > Include Library > Manage Libraries.
-
Make sure the included library names match the code exactly.
-
If
LiquidCrystal_I2C.his missing, install a compatible LiquidCrystal_I2C library.
- These simple 433 MHz RF modules are low-cost and easy to use, but they are not highly robust in noisy environments.
- Keep antenna wires attached for better range.
- Avoid placing the RF modules too close to switching power supplies.
- Start by testing the DS18B20 and LCD separately before combining the full system.
This project was partially simulated using Wokwi.
- Arduino UNO
- DS18B20 Temperature Sensor
- 16x2 I2C LCD Display
Wokwi currently does not support 433 MHz RF transmitter and receiver modules directly, so only the sensor and LCD section were simulated.
- Add checksum or packet framing for stronger communication reliability.
- Send both Celsius and Fahrenheit values.
- Add min/max temperature logging.
- Use an ESP32 receiver and upload readings to Wi-Fi or cloud dashboards.
- Replace 433 MHz ASK modules with LoRa for longer range and better reliability.
- Add buzzer or relay output for over-temperature alarm.
- Add battery supply and low-power mode for remote sensing nodes.
Wireless Temperature Monitoring System using Arduino and RF Communication
Designed and developed a wireless temperature monitoring system using two Arduino UNO boards, a DS18B20 digital temperature sensor, 433 MHz RF transmitter/receiver modules, and a 16x2 I2C LCD. Implemented real-time wireless data transmission, live temperature display, sensor fault handling, and signal-loss indication using Embedded C / Arduino programming.
Built a real-time wireless temperature monitoring system using Arduino UNO, DS18B20 sensor, RF modules, and I2C LCD for wireless data transmission and live temperature display.

