Wireless Temperature Monitoring System Arduino Receiver and Transmitter code
Wireless Temperature Monitoring System Arduino Receiver and Transmitter code
Arduino Code for Transmitter Circuit
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <RH_ASK.h>
// Pin definitions
#define ONE_WIRE_BUS 3 // DS18B20 data pin connected to D3
#define TRANSMIT_PIN 2 // RF transmitter connected to D2
// Create objects for OneWire and DallasTemperature
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// Create LCD object
LiquidCrystal_I2C lcd(0x27, 16, 2); // LCD address 0x27, 16 columns, 2 rows
// Create RF Transmitter object
RH_ASK rf_driver;
void setup() {
// Start Serial Monitor for debugging
Serial.begin(9600);
// Initialize LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Initializing...");
// Initialize OneWire and DallasTemperature libraries
sensors.begin();
// Initialize RF Transmitter
rf_driver.init();
delay(2000); // Delay for 2 seconds to show initial message
lcd.clear();
}
void loop() {
// Request temperature from DS18B20 sensor
sensors.requestTemperatures();
float temperature = sensors.getTempCByIndex(0);
// Display temperature on the LCD
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
// Prepare data to send via RF
char tempData[10];
dtostrf(temperature, 6, 2, tempData); // Convert float to string
// Send data via RF
rf_driver.send((uint8_t *)tempData, strlen(tempData));
rf_driver.waitPacketSent(); // Wait for transmission to complete
// Print temperature to Serial Monitor (for debugging)
Serial.print("Temperature: ");
Serial.println(temperature);
delay(1000); // Update every 1 second
}
Testing the temperature in a cup of water using the DS18B20 temperature sensor in the transmitter circuit
Arduino Code For Receiver Circuit
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <RH_ASK.h>
// Pin definitions
#define RECEIVE_PIN 3 // RF Receiver data pin connected to D3
// Create LCD object
LiquidCrystal_I2C lcd(0x27, 16, 2); // LCD address 0x27, 16 columns, 2 rows
// Create RF Receiver object
RH_ASK rf_driver;
void setup() {
// Start Serial Monitor for debugging
Serial.begin(9600);
// Initialize LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Receiver Ready");
// Initialize RF Receiver
rf_driver.init();
delay(2000); // Delay for 2 seconds to show initial message
lcd.clear();
}
void loop() {
uint8_t len = 10; // Length of the data buffer
char receive_data[len]; // Declare the receive_data buffer
// Check if there is data available to read
if (rf_driver.recv((uint8_t *)receive_data, &len)) {
// Display received data on LCD
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(receive_data);
lcd.print(" C");
// Print received data to Serial Monitor (for debugging)
Serial.print("Received Temperature: ");
Serial.println(receive_data);
}
delay(1000); // Wait for the next packet
}