Estoy en un proyecto donde necesito solo Humedad y Temperatura de la tierra, ocupo 3 sensores con comunicaciónRS485, el problema me surge cuando necesito leer un sensor con dirección diferente a 1, cabe señal que he realiza pruebas dejando solo 1 sensor y no me muestra registros si cambio la dirección del sensor. Probe los 3 y estos estan buenos, muestra valores reales si lo concecto con la dirección. Estoy ocupando un Arduino UNO adjunto imagenes relacionada y codigo que uso, para la lectura.
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 5); // RX, TX (2 al RXD de la placa conversora / 5 al TXD de la placa conversora)
int DE =3;
int RE= 4;
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
pinMode(DE, OUTPUT);
pinMode(RE, OUTPUT);
digitalWrite(DE, LOW);
digitalWrite(RE, LOW);
}
void loop() {
byte queryData []{ 0x01, 0x03, 0x00, 0x00, 0x00, 0x07, 0x04, 0x08};
byte receivedData[19];
digitalWrite(DE, HIGH);
digitalWrite(RE, HIGH);
mySerial.write(queryData, sizeof(queryData)); // send query data to NPK
digitalWrite(DE, LOW);
digitalWrite(RE, LOW);
delay(500);
if (mySerial.available() >= sizeof(receivedData)) { // Check if there are enough bytes available to read
mySerial.readBytes(receivedData, sizeof(receivedData)); // Read the received data into the receivedData array
// Parse and print the received data in decimal format
unsigned int soilHumidity = (receivedData[3] << 8) | receivedData[4];
unsigned int soilTemperature = (receivedData[5] << 8) | receivedData[6];
Serial.print("Soil Humidity: ");
Serial.println((float)soilHumidity / 10.0);
Serial.print("Soil Temperature: ");
Serial.println((float)soilTemperature / 10.0);
}
}