#include <DHT.h>
#include <SPI.h> // SPI is kept in case you want to add a LoRa module later
#define DHTPIN 4 // DHT22 data pin
#define DHTTYPE DHT22 // Define the DHT type
DHT dht(DHTPIN, DHTTYPE); // Initialize DHT sensor
#define GAS_SENSOR_PIN 34 // MQ gas sensor pin
#define PIR_SENSOR_PIN 27 // PIR motion sensor pin
#define RX_PIN 16 // Define RX pin for Receiver ESP32 (GPIO16)
#define TX_PIN 17 // Define TX pin for Receiver ESP32 (GPIO17)
void setup() {
Serial.begin(115200); // Start Serial Monitor at 115200 baud rate
Serial2.begin(115200, SERIAL_8N1, RX_PIN, TX_PIN); // Start Serial2 for communication
// Initialize sensor
dht.begin();
pinMode(GAS_SENSOR_PIN, INPUT);
pinMode(PIR_SENSOR_PIN, INPUT);
Serial.println("Ready for Transmitting and Receiving...");
}
void loop() {
// Transmitting Data (Send data from this ESP32 to itself)
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
int gasValue = analogRead(GAS_SENSOR_PIN);
int pirState = digitalRead(PIR_SENSOR_PIN);
String motionStatus = (pirState == HIGH) ? "Motion Detected!" : "No Motion";
// Send data over Serial2 (Simulate LoRa Transmission)
String sendData = "Temp: " + String(temperature) + "C, Humidity: " + String(humidity) + "%, Gas: " + String(gasValue) + ", Motion: " + motionStatus;
Serial2.println(sendData); // Send data over Serial2 to the Receiver (same ESP32)
Serial.println("Data Sent: " + sendData); // Print data in Serial Monitor for sender
// Receiver Logic (Check if data is being received from the same ESP32)
if (Serial2.available()) {
String receivedData = Serial2.readString(); // Receive data from Serial2
Serial.print("Received: ");
Serial.println(receivedData); // Print received data in Serial Monitor
}
delay(5000); // Wait 5 seconds before the next transmission
}