GROSSI PROBLEMI CON LA PROGRAMMAZIONE

Salve ragazzi, sono alle prime armi e dovrei fare uno sketch e con le mie competenze non sono in grado. C'è qualcuno che sa darmi delle linee guida di sketch per poterlo fare? Con i senori Analogici ci sono riuscito ma con questo no. L'arduino che sto utilizzando è un Arduino YUN REV2.
Il sensore ha le 4 porte UART, un'alimentazione di 3.3V , ground, RDX e TDX. Il Baudrate è 57600 Baud e Framing 8N1. Dovrei seguire lo schema nella foto, che a parole mi è chiaro ma in fase di stesura dello sketch non riesco a farlo. Grazie a tutti

Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, fino a quando non sarà fatta la presentazione, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

mi sono presentato (è ho anche riletto con più calma il regolamento! :wink: )! Scusate ma con gli impegni del lavoro sono riuscito a farlo solo ora!

GABRIELE11:
L'arduino che sto utilizzando è un Arduino YUN REV2.
Il sensore ha le 4 porte UART, un'alimentazione di 3.3V , ground, RDX e TDX. Il Baudrate è 57600 Baud e Framing 8N1. Dovrei seguire lo schema nella foto, che a parole mi è chiaro ma in fase di stesura dello sketch non riesco a farlo.

Di quale sensore esattamente parli?
E soprattutto mi sfugge cosa siano le 4 porte UART: un sensore generalmente ha UNA porta UART, con quei pin RX, TX e GND, più eventualmente Vcc (che poi è una uscita o un ingresso per alimentare il sensore?).

Una volta capito questo, si può anche iniziare a ragionare sul protocollo.

Poi dato che qui non scriviamo codice "per contro terzi", anche se il tuo programma non ti funziona, posta intanto quello che hai fatto, dicendo cosa fa o non fa rispetto a quanto atteso.

E' uno Stato3, della Stratofligt è un datalogger per registrare i dati nei voli ad alta quota. Registra le coordinate GPS, l'altitudine, la temperatura interna del processore, la temperatura esterna, la pressione e umidità e salva questi dati su una SD. Lo voglio utilizzare a bordo di un pallone vincolato che effettua misurazioni a 30m d'altezza. Il mio intento è prendere, tramite l'utilizzo di un arduino YUN, le stringhe di dati e successivamente inviarle a terra.

Fino ad ora ho scritto poco e niente, e credo anche che sia tutto sbagliato, in ogni caso ve lo linko.

stringa.ino (730 Bytes)

GABRIELE11:
E' uno Stato3, della Stratofligt è un datalogger per registrare i dati nei voli ad alta quota.

... se vuoi aiuto, devi mettere un link al datasheet del prodotto in modo che chi vuole aiutarti possa leggere esattamente di cosa si tratta e come funziona.

Guglielmo

Forse aiuterebbe tanto se Tu scrivessi corretto il modello del datalogger.

Ciao Uwe

ciao...dal documento che hai allegato, se non ho capito male, tu dovresti inviare due char...un "T" ed un "i" per stabilire la connessione...subito dopo devi mettere arduino in "ascolto" e verificare se ricevi un byte del valore "0x01"....se lo ricevi sai che subito dopo inizierai a ricevere una stringa composta come da esempio dome viene usato il "$" come inizio stringa...un ";" come divisorio tra i dati e due char finali "\r" e "\n" come fine messaggio...
poi che formato ha la comunicazione seriale e se c'è altro...a noi...non è dato sapere.

ORSO2001:
ciao...dal documento che hai allegato, se non ho capito male, tu dovresti inviare due char...un "T" ed un "i" per stabilire la connessione...subito dopo devi mettere arduino in "ascolto" e verificare se ricevi un byte del valore "0x01"....se lo ricevi sai che subito dopo inizierai a ricevere una stringa composta come da esempio dome viene usato il "$" come inizio stringa...un ";" come divisorio tra i dati e due char finali "\r" e "\n" come fine messaggio...
poi che formato ha la comunicazione seriale e se c'è altro...a noi...non è dato sapere.

Esattamente come hai detto, tuttavia non capisco cosa intendi per " formato della comunicazione seriale". La stringa che lo Strato3 manda è di tipo char, è collegato tramite il suo pin TX all'ingresso RX dell'arduino yun.

uwefed:
Forse aiuterebbe tanto se Tu scrivessi corretto il modello del datalogger.

Il nome del sensore è Strato3 la casa produttrice non mi ha voluto fornire nessuna specifica dei moduli che lo compongono.

GABRIELE11:
Il nome del sensore è Strato3 la casa produttrice non mi ha voluto fornire nessuna specifica dei moduli che lo compongono.

Te l'ho già chiesto ... metti il LINK al prodotto ... avranno pur bene un sito dove vederlo no ?

Guglielmo

GABRIELE11:
E' uno Stato3, della Stratofligt è un datalogger per registrare i dati nei voli ad alta quota.

Ok, ora è già meglio. Il tuo primo problema però non è dialogare con QUEL datalogger via seriale, è proprio sapere come si gestisce una connessione seriale con Arduino (e come si programma in Arduino in generale)!

Nel tuo codice ad esempio definisci un oggetto mySerial che è una SoftwareSerial sui pin 2 e 3, ma poi non la inizializzi (begin) non la usi da nessuna parte, non inserisci gli Include delle librerie Wire e SoftwareSerial, e così via...

Come sempre, quando si affronta qualcosa di "nuovo" in un ambito del quale non si conoscono neanche le basi, non si deve MAI partire pensando di realizzare subito un programma. Tu, a parte cercare di prendere più pratica col linguaggio C/C++ di Arduino (a che livello sei?) PRIMA devi imparare come funziona ad esempio la Serial (quella "fisica", rimappata sulla tua porta USB del PC), simulando tu uno dei due ossia da Arduino mandi dei caratteri (non necessariamente quelli di quel protocollo, usa caratteri semplici come "AB") e poi aspetti una risposta, che invierai tu a mano (sempre caratteri "stampabili" per prova). Di esercizi di questo tipo ce ne sono parecchi in rete, googla un pochino.

Quando questa cosa ti funziona, allora passi al livello successivo usando la SoftwareSerial ad esempio per far dialogare tra di loro due Arduino, ad esempio Arduino A manda su mySerial (o come la vorrai chiamare) il carattere "X" ad Arduino B il quale quando lo riceve risponde "Y", ed Arduino A quando lo riceve scrive sulla seriale (quella dove hai il monitor seriale, quindi Serial)

Tutto questo PRIMA di iniziare a parlare di implementare QUEL protocollo seriale di dialogo col datalogger (che continuo a non capire perché debba avere 4 seriali, o trovi le specifiche al tuo datalogger o la vedo difficile aiutarti oltre questo punto!).

EDIT: per dire, dopo 30 secondi di google ho trovato QUESTO documento, che immagino sia da questo che hai ricavato le infomrazioni del protocollo. Ma si legge:

UART-Interface
Hardware:
To use the measurements for further developments in your own projects the datalogger
provides a UART port. The connectors are:
 3,3 V: Supply Voltage (optional)
 GND: Ground
 RDX: Receive Port
 TDX: Transmit Port
All signal levels of the UART are 3,3 Volt

Quindi non so dove tu abbia avuto l'informazione delle 4 UART. Poi si legge anche:

Software:
Configuration / Specification:
 Baudrate: 57600 Baud
 Framing: 8N1

Quindi a quella velocità scordati la SoftwareSerial devi usarne una fisica. Se usi un Arduino UNO devi usare i pin 0 e 1 ma poi non hai alcun modo di monitorare il funzionamento del programma (generalmente si usa per fare "debugging" scrivendo su seriale cosa sta facendo e cosa riceve o manda). Altrimenti devi passare ad una MEGA che ha 3 UART in più quindi userai Serial per dialogare col PC e con te, e la Serial1 al datalogger.