Comunicação serial com TTGO LoRa32

Boa tarde, estou usando um TTGO LoRa32 para capturar peso de uma balança eletronica pela saida rs232

meu codigo esta assim:

int p = 6; //canada
byte ler [6];
//Serial.read();
Serial.begin(9600);
Serial.readBytes(ler, 6);

int i = 1;
int t = p - 1;
while (i < p)
{
peso += char(ler[t]);
i += 1;
t -= 1;
}
display.print(peso + " kg");
display.display();
delay(1000);

onde eu leio da serial os 6 caracteres que minha balança manda e dentro do while eu converto esse byte para char, porem não esta retornando resultados, ja usei read, readbytes, peek e nada

alguem tem alguma ideia do que pode estar errado?

Antes de mais, esse "código" nem sequer compila. Onde está esse código? Dentro da setup()? Dentro da loop()? Se está dentro da loop(), porque é que estás sempre a reiniciar a porta série?

Coloca o código todo para percebermos isto melhor.

O módulo que usas apenas tem uma porta e tem o chip USB ligado a ela, logo não me parece que vás ter sorte a ligar a balança e não teres interferência.
Eu nunca utilizei, mas talvez a softserial funciona com esse chip?

Depois, como ligaste tudo? A balança é RS-232, mas o módulo que tens não tem um chip que comunique em RS-232. Logo terias de colocar um chip para fazer a conversão de TTL para RS232. Que chip usaste? Não terás cruzado as portas aí?

O teu código de conversão assume que não vem um ponto no valor enviado pela balança... ainda assim, seria talvez mais apropriado usares o método String.toInt ou toFloat para converteres o que recebeste.

Eu aconselharia também a verificares se já recebeste os 6 bytes antes de os tentares ler.

Coloca aqui a informação que pedi e será possível dar uma ajuda melhor.

segue codigo abaixo, ele esta dentro do loop()
minha placa tem um max232 que manda o sinal a cada 1 segundo

//Libraries for LoRa
#include <SPI.h>
#include <LoRa.h>

//Libraries for OLED Display
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

//define the pins used by the LoRa transceiver module
#define SCK 5
#define MISO 19
#define MOSI 27
#define SS 18
#define RST 14
#define DIO0 26

//433E6 for Asia
//866E6 for Europe
//915E6 for North America
#define BAND 866E6

//OLED pins
#define OLED_SDA 4
#define OLED_SCL 15
#define OLED_RST 16
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

//packet counter
String peso = “0”;

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RST);

void setup() {

//reset OLED display via software
pinMode(OLED_RST, OUTPUT);
digitalWrite(OLED_RST, LOW);
delay(20);
digitalWrite(OLED_RST, HIGH);

//initialize OLED
Wire.begin(OLED_SDA, OLED_SCL);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c, false, false)) { // Address 0x3C for 128x32
Serial.println(F(“SSD1306 allocation failed”));
for(;;); // Don’t proceed, loop forever
}

display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(0,0);
display.print(“BALANÇAS CANADA”);
display.display();

//initialize Serial Monitor
Serial.begin(115200);

Serial.println(“LoRa Sender Test”);

//SPI LoRa pins
SPI.begin(SCK, MISO, MOSI, SS);
//setup LoRa transceiver module
LoRa.setPins(SS, RST, DIO0);

if (!LoRa.begin(BAND)) {
Serial.println(“Starting LoRa failed!”);
while (1);
}
Serial.println(“LoRa Initializing OK!”);
display.setCursor(0,10);
display.print(“LoRa Initializing OK!”);
display.display();
delay(2000);
}

void loop() {

/Serial.print("Sending packet: ");
Serial.println(counter);
/

//Send LoRa packet to receiver
LoRa.beginPacket();
LoRa.print("hello ");
LoRa.print(peso);
LoRa.endPacket();

display.clearDisplay();
display.setCursor(0,0);
display.println(“BALANCAS CANADA”);
display.setCursor(0,20);
display.setTextSize(1);
display.print(“TESTE DE PESO”);
display.setCursor(0,30);
display.print(“PESO:”);
display.setCursor(50,30);
//display.print(counter);

int p = 6; //canada
byte ler [6];
//Serial.read();
Serial.begin(9600);
Serial.readBytes(ler, 6);

int i = 1;
int t = p - 1;
while (i < p)
{
peso += char(ler[t]);
i += 1;
t -= 1;
}
display.print(peso + " kg");
display.display();
delay(1000);
//peso = “0”;
}

Já testaste as ligações do RS-232 a entrar no teu módulo TTGo? Esquece este código todo e coloca algo simples como:

if (Serial.available()>0 ) digitalWrite(LED, HIGH);

Experimenta também confirmar que a balança envia continuamente…

Os meus comentários anteriores ainda se aplicam… A porta série do TTGo estáligada a um chip para falar USB com o teu computador. Isso pode interferir com a ligação com a balança. E deves usar o código String com toInt ou toFloat. Mas tens de confirmar o que é que a balança está a enviar. No que toca a comunicações série, regra geral, as ligações estão trocadas.

minha balança manda o sinal do peso a cada 1 segundo, ja tenho codigo em c# que faz a leitura pela rs232 da balança

a placa esta ligada somente na balança, não ligo ela na usb

Qual é a parte de “Já testaste as ligações do RS-232 a entrar no teu módulo TTGo?” que não percebeste?

Eu não estava a perguntar se a balança estava a enviar algo… estava a perguntar se já tinhas recebido algo dentro do Arduino sem teres todo o código feito. Isto é algo que eu não percebo… mais pessoas chegam aqui com o código “feito”, mas nunca testaram as ligações todas antes de começarem o projecto. O primeiro passo é sempre testar as ligações e fazer código de teste individual para os diferentes módulos ou periféricos que vais usar.

O pino TX do módulo RS232 está ligado ao pino RX do Arduino? Como ligaste esse módulo e qual é o módulo?