Estacion meteorologica sensores rs485 y esp32

saludos, no e podido poner a leer los sensores con salida rs485 con mi esp 32 ya tiene un convertidor rs485 con protocolo modbus

#include <ModbusMaster.h>

#define MAX485_DE  5  // Driver Enable Pin (Transmit mode)
#define MAX485_RE  4  // Receiver Enable Pin (Receive mode)

// Create an instance of ModbusMaster
ModbusMaster node;

// Define the slave IDs for each of your sensors
#define TEMP_HUMIDITY_ID 1     // Slave ID for Temperature and Humidity sensor
#define PRESSURE_ID    2      // Slave ID for Atmospheric Pressure sensor
#define ANEMOMETER_ID 3       // Slave ID for Anemometer
#define WIND_VANE_ID 4         // Slave ID for Wind Vane
#define RAIN_GAUGE_ID 5        // Slave ID for Rain Gauge

// Control the direction of the MAX485 transceiver
void preTransmission() {
  digitalWrite(MAX485_RE, HIGH);  // Enable transmit mode
  digitalWrite(MAX485_DE, HIGH);  // Enable transmit mode
}

void postTransmission() {
  digitalWrite(MAX485_RE, LOW);   // Enable receive mode
  digitalWrite(MAX485_DE, LOW);   // Enable receive mode
}

void setup() {
  Serial.begin(4800);  // Initialize serial communication for debugging

  pinMode(MAX485_DE, OUTPUT);
  pinMode(MAX485_RE, OUTPUT);

  // Initialize Modbus communication for all sensors
  node.begin(ANEMOMETER_ID, Serial);  // Slave ID 3 for anemometer
  node.preTransmission(preTransmission);
  node.postTransmission(postTransmission);

    
  delay(1000);  // Give time for initialization
}

void loop() {
  uint8_t result;

  // Example: Read data from Anemometer (SENSOR3)
  node.begin(ANEMOMETER_ID, Serial);  // Set Modbus address to Anemometer
  result = node.readHoldingRegisters(0x03, 2);  // Example: Read 2 registers for Anemometer data
  if (result == node.ku8MBSuccess) {
    int anemometerData = node.getResponseBuffer(0); // Read data
    Serial.print("Anemometer data: ");
    Serial.println(anemometerData);
  }

  // Example: Read data from Wind Vane (SENSOR4)
  node.begin(WIND_VANE_ID, Serial);  // Set Modbus address to Wind Vane
  result = node.readHoldingRegisters(0x03, 2);  // Example: Read 2 registers for Wind Vane data
  if (result == node.ku8MBSuccess) {
    int windVaneData = node.getResponseBuffer(0); // Read data
    Serial.print("Wind Vane data: ");
    Serial.println(windVaneData);
  }

  // Example: Read data from Rain Gauge (SENSOR5)
  node.begin(RAIN_GAUGE_ID, Serial);  // Set Modbus address to Rain Gauge
  result = node.readHoldingRegisters(0x03, 2);  // Example: Read 2 registers for Rain Gauge data
  if (result == node.ku8MBSuccess) {
    int rainGaugeData = node.getResponseBuffer(0); // Read data
    Serial.print("Rain Gauge data: ");
    Serial.println(rainGaugeData);
  }

  // Example: Read data from Temperature & Humidity (SENSOR1)
  node.begin(TEMP_HUMIDITY_ID, Serial);  // Set Modbus address to Temperature & Humidity sensor
  result = node.readHoldingRegisters(0x03, 2);  // Example: Read 2 registers for Temp/Humidity data
  if (result == node.ku8MBSuccess) {
    int tempHumidityData = node.getResponseBuffer(0); // Read data
    Serial.print("Temperature & Humidity data: ");
    Serial.println(tempHumidityData);
  }

  // Example: Read data from Atmospheric Pressure (SENSOR2)
  node.begin(PRESSURE_ID, Serial);  // Set Modbus address to Atmospheric Pressure sensor
  result = node.readHoldingRegisters(0x03, 2);  // Example: Read 2 registers for Pressure data
  if (result == node.ku8MBSuccess) {
    int pressureData = node.getResponseBuffer(0); // Read data
    Serial.print("Atmospheric Pressure data: ");
    Serial.println(pressureData);
  }

  delay(2000);  // Delay between readings to avoid spamming the bus
}

He trasladado su tema de una categoría de idioma inglés del foro a la categoría International > Español @randyalexan.

En adelante por favor usar la categoría apropiada a la lengua en que queráis publicar. Esto es importante para el uso responsable del foro, y esta explicado aquí la guía "How to get the best out of this forum".
Este guía contiene mucha información útil. Por favor leer.

De antemano, muchas gracias por cooperar.

Indica de qué sensor hablas, link, hoja de datos, manual, lo que sirva para entenderlo.

Revisa conexiones, a veces hace falta terminal resistivo de 120 ohms

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.