Hola a todos,
es la primera vez que escribo en el foro y espero hacerlo todo bien. No se si esta sección es la más indicada para la duda que voy a plantear. Se me presenta un problema al intentar conectar un sensor de humedad de suelo con salida rs485 (os dejo enlace a continuación) con un Arduino MKR1300. https://es.aliexpress.com/item/1005001411485735.html?spm=a2g0s.9042311.0.0.274263c0MqRZko
El sensor tiene una alimentación 5-30 V y una salida RS485. La idea final es conseguir las lecturas y de dicho sensor y enviarlo a una base de datos a través de LoRaWAN. El problema es que no consigo recibir ninguna información del sensor de humedad. He realizado una búsqueda exhaustiva (dentro de mis posibilidades) pero no encuentro la solución. Os dejo a continuación el código que he usado por si alguien puede hacer alguna aportación.
#define RE 7
#define DE 6
const byte hum[] = {0x01,0x03, 0x00, 0x00, 0x00, 0x02, 0xC4, 0x0B};
byte values[9];
void setup() {
Serial.begin(9600);
// Ajuste de los puertos(Serial1:pin 13 y 14)
Serial1.begin(9600);
pinMode(RE, OUTPUT);
pinMode(DE, OUTPUT);
}
void loop() {
digitalWrite(DE,HIGH);
digitalWrite(RE,HIGH);
delay(10);
if(Serial1.write(hum,sizeof(hum))==8){
digitalWrite(DE,LOW);
digitalWrite(RE,LOW);
for(byte i=0;i<9;i++){
values[i] = Serial1.read();
Serial.print(values[i],HEX);
Serial.println();
}
//Se coge el valor de humedad (bytes 4 y 5) y se imprime:
Serial.println();
float humedad_1 = float(values[3]);
float humedad_2 = float(values[4]);
float humedad = ((humedad_1*256+humedad_2)/10);
Serial.println(humedad_1);
Serial.println(humedad_2);
Serial.print("Humidity: ");
Serial.print(humedad);
Serial.println("%");
Serial.println();
}
delay(2000);
}
No veo mucha información sobre la conexión en el enlace de aliexpress que has puesto. De todas formas, viendo algún dispositivo similar en el mismo sitio podemos revisar las conexiones:
Primero revisa que no hayas comprado otro tipo de sensor. En la carcasa debería estar marcado la salida RS485 y tener cuatro cables.
Los cables deberían estar conectados así:
Cable marrón a 5V.
Cable azul a GND.
Cable negro a A.
Cable gris a B.
No parece que tenga un consumo elevado, pero si optas por alimentarlo aparte debes unir los GND de las dos fuentes.
En cuanto al software, no se ve que forma tienen las tramas: si es modbus u otro protocolo.
Adjunto el manual. Lo conseguí preguntándole al vendedor de Aliexpress. El sensor tiene comunicación rs485 y alimentación 5-30V según pone en la etiqueta del mismo. Tiene cuatro cables:
Amarillo: A
Azul: B
Negro: negativo
Rojo: positivo
He conseguido que el sensor funcione, con un Arduino Nano y sacando los datos por el monitor serie con el siguiente código