Arduino Mega connesione Serial1 senza TX

Ciao a tutti,
vorrei connettere un Mega a due sensori identici che comunicano in RS232 inviando ad intervalli costanti una stringa di 44 caratteri.
Il problema è che questi sensori sono provvisti di un solo terminale (TX).
Al momento sto ragionando solo con un solo sensore connesso, appena risolto il problema di seguito mi occuperò di collegare e realizzare lo script per leggere entrambi i sensori.
Lo sketch di Arduino e basato su quello di Robin2 :

const byte numChars = 32;
char receivedChars[numChars];

boolean newData = false;

void setup() {
    Serial.begin(9600);
    
    Serial2.begin(9600);
    Serial.println("<Arduino is ready>");
}

void loop() {
    recvWithStartEndMarkers();
    showNewData();
}

void recvWithStartEndMarkers() {
    static boolean recvInProgress = false;
    static byte ndx = 0;
    char startMarker = '<';
    char endMarker = '>';
    char rc;
 
 // if (Serial2.available() > 0) {
    while (Serial2.available() > 0 && newData == false) {
        rc = Serial2.read();

        if (recvInProgress == true) {
            if (rc != endMarker) {
                receivedChars[ndx] = rc;
                ndx++;
                if (ndx >= numChars) {
                    ndx = numChars - 1;
                }
            }
            else {
                receivedChars[ndx] = '\0'; // terminate the string
                recvInProgress = false;
                ndx = 0;
                newData = true;
            }
        }

        else if (rc == startMarker) {
            recvInProgress = true;
        }
    }
}

void showNewData() {
    if (newData == true) {
        double V=analogRead(A0)*5/1023;
        Serial.print("/t");
        Serial.print(V);
        Serial.print("/t");
        Serial.print(receivedChars);
        Serial.println();
        newData = false;
    }
}

Con l’aggiunta che devo misurare una tensione 0-5 V da A0, proveniente sempre dal sensore stesso.
E’ possibile utilizzare solamente il pin RX della Serial2? Al momento non riesco ad inizializzarla, per cui lo script non parte. Se scollego il gnd della misura tensione e connetto il TX a GND lo script (sinceramente non so perchè) funziona e la stringa di dati viene correttamente acquisita e inviata a monitor, se però ricollego il GND per la misura di tensione la comunicazione si interrompe.
Potreste aiutarmi?
Grazie,
Paolo

Lo standard RS232 NON è compatibile con i livelli di Arduino, quindi ... immagino e spero bene, che tu NON colleghi delle RS232 ma delle seriali TTL ... ::slight_smile:

Sopra un segnale RS232, sotto il segnale TTL equivalente ...

Detto questo, tutti i GND devono essere in comune e non c'è alcun problema ad utilizzare solo il RX di una seriale ... TX ed RX sono due canali diversi, ciascuno con il suo buffer, con i sui interrupt e con le sue routines di gestione, quindi ... totalmente indipendenti uno dall'altro.

Guglielmo

Interessante :o (effettivamente sto provando da circa una settimana...)..avevo riportato sul forum internationale un problema (risolto poi in un mio errore di compilazione) relativo alla comunicazione con modulo RS232, ed effettivamente nessuno mi aveva avvisato di ciò
(https://forum.arduino.cc/index.php?topic=694315.0).
Forse adesso mi è un pò tutto più chiaro perchè facendo dei tentativo ho notato che il segnale è ricevuto se il pin RX dell'Arduino lo collego al gnd del sensore. Credevo che data la qualità non sublime del sensore stesso ci fosse una errata piedinatura... :smiley:

Quindi in sostanza dovrei dotarmi di n convertitori seriali/ttl.
Grazie per la dritta, sinceramente questa importante informazione mi era sfuggita..

Detto questo che converter consiglieresti?
Grazie

Intanto ti consiglio di verificare bene le specifiche di ciò che connetti per essere sicuro che sia veramente una RS232 (... termine spesso usato a sproposito per parlare genericamente di una seriale), dopo di che, una volta che sei sicuro che sia una vera RS232 di convertitori da seriale livelli RS232 a seriale livelli TTL, basati sul max232, ne trovi un'infinità ... l'importante che li prendi da un venditore affidabile :slight_smile:

Guglielmo