#define soil_moisture_pin 14
#define TX_PIN 2 // TX pin for RS485 communication
#define RX_PIN 1 // RX pin for RS485 communication
#define CMD_PIN 3 // Direction control pin for RS485 (DE/RE)
void setup() {
Serial.begin(9600);
pinMode(soil_moisture_pin, INPUT);
// Initialize UART for RS485
Serial1.begin(9600, SERIAL_8N1, RX_PIN, TX_PIN);
// Set CMD_PIN as OUTPUT
pinMode(CMD_PIN, OUTPUT);
// Start in receive mode
digitalWrite(CMD_PIN, LOW);
}
void loop() {
int soilMoistureValue = analogRead(soil_moisture_pin);
Serial.print("Soil Moisture Value: ");
Serial.println(soilMoistureValue);
// Send soil moisture data via RS485
digitalWrite(CMD_PIN, HIGH);
Serial1.print("Soil Moisture Value: ");
Serial1.println(soilMoistureValue);
delay(500);
// Switch to receive mode
digitalWrite(CMD_PIN, LOW);
// Check for incoming data
if (Serial1.available()) {
String receivedData = Serial1.readString();
Serial.print("Received via RS485: ");
Serial.println(receivedData);
}
delay(1000);
}