Duda RS-232 a TTL lectura de trama.

Hola, tengo una duda sobre comunicación serie.

Tengo un arduino UNO con el puerto Serie (pines) a un conversor RS-232 a TTL. La intención es recibir y almacenar en una SD el registro de peso de una báscula digital con puerto RS232. La báscula envia continuamente por RS232 un byte a 8n1 con el peso seguido de byte un CR, a 9600 bauds.

[bitStart][peso_báscula][bitStop]+byte_CR+[bitStart][peso_báscula][bitStop]+byte_CR+[bitStart][peso_báscula][bitStop]+byte_CR+...

La parte de amacenar un dato en la SD ya está hecho. El problema que tengo es que no se como leer ese dato a través del puerto serie. Pero del RS232 al Arduino no hay manera de recibir ningún dato. Si espero a leer con un Serial.available() no entra nunca en la función. Si no lo hago y leo directamente lee 0.

Se os ocurre alguna manera con alguna instrucción de leer esos datos que no sea a pico y pala?
Gracias!

Lo tengo conectado así:

void loop()
{
     
 //if (Serial.available() > 0) {
     logFile = SD.open(name, FILE_WRITE);
     String str = Serial.readStringUntil('\r');
     float data = str.toFloat();
     logFile.println(data);
   
 //}

 logFile.close();
 delay(500);
}
1 Like

Para las primeras pruebas te recomiendo NO usar los pines 0 y 1 sino otros con la librería SoftwareSerial.

Luego mientras no estas seguro de lo que la balanza envia "exactamente" te recomiendo usar el método de capturar y mostrar todo asi:

String frase = "";
 
void setup(){
   Serial.begin(9600);
}
 
void loop(){
   while (Serial.available()){
      char caracter = Serial.read();
      frase.concat(caracter);
      delay(10);
   }
   if (frase != ""){
      Serial.println(frase);
      frase = "";
   }
}
1 Like

Gracias. Estoy usando Arduino UNO, si solo tiene un solo UART compartido con el usb, aunque con softwareserial haga que sean otros pines, podré capturar por ese puerto lo que recibo del rs232 y al mismo tiempo mostrarlo por el monitor del ide de Arduino?

MODERADOR: no repitas lo que se lee arriba

Lloyder:
Estoy usando Arduino UNO, si solo tiene un solo UART compartido con el usb, aunque con softwareserial haga que sean otros pines, podré capturar por ese puerto lo que recibo del rs232 y al mismo tiempo mostrarlo por el monitor del ide de Arduino ?

Exactamente mira este ejemplo:

#include <SoftwareSerial.h>
SoftwareSerial RS(2,3);    //Rx,Tx del RS-232
String frase = "";

void setup()   {
   Serial.begin(115200);
   RS.begin(9600);
   Serial.println("RS-232 listo para recibir...");
}

void loop(){
   while (RS.available()){
      char caracter = RS.read();
      frase.concat(caracter);
      delay(3);
   }
   if (frase != ""){
      Serial.println(frase);
      frase = "";
   }
}
1 Like