Ciao ragazzi, premetto che non sono particolarmente ferrato in elettronica: sono un informatico.
Vado dritto al problema: ho acquistato una bilancia con una porta seriale RS232 la quale, andando ad impostare determinate opzioni, dovrebbe dare in output continuo il valore pesato per poterlo utilizzare da sistemi esterni.
Infatti, ho necessità di leggere il valore da Arduino per poi sviluppare un programma più complesso. Parto dalla base: riuscire a leggere il valore grezzo sul Serial Monitor.
Sono consapevole che le porte RS232 usano voltaggi di 12v o comunque non compatibili con Arduino; quindi ho creato lo schema seguente, andando di logica e guardando le poche informazioni recuperate online.
dove:
- cavo con uscita RS232 DB9 (a 9 pin) FEMALE fornito dai produttori della bilancia
- RS232 MALE to MALE adapter
- RS232 FEMALE to TTL adapter
- Arduino (connettendo i 4 pin del precedente modulo: VCC, GND, Tx, Rx)
monto tutto, eseguo il codice e non ricevo nulla. Ho provato per ore a capire se il problema era il codice, la disposizione dei pin o un falso contatto, per poi scoprire, bypassando il componente 2) e collegando le due porte femmine direttamente con dei cavi jumper un fatto curioso: anzichè collegare Rx della prima porta seriale a Rx della seconda porta seriale e stessa cosa per Tx (come avrebbe fatto l'adattatore.. che riporta ogni pin di A ad ogni pin di B), ho collegato Tx a Rx e Rx a Tx e gualà.. dati ricevuti.
Conosco la logica del collegamento incrociato poichè Tx trasmette e Rx riceve, ma non mi capacito del perchè in questa situazione; in particolare, questa affermazione dovrebbe sostenere che qualsiasi collegamento RS232 (da un MALE a FEMALE o viceversa) non dovrebbe funzionare in quanto abbiamo due Tx e due Rx accoppiati linearmente anzichè incrociati.. cosa ovviamente assurda.
Quindi le opzioni sono:
A) il cavo seriale fornito dai produttori della bilancia ha Tx e Rx montati al contrario (di fatti ricevo i dati della bilancia dalla porta Rx -> ricezione, ma magari è dovuto al fatto che la bilancia è un dispositivo "passivo", infatti ha porta femmina e la comunicazione è al contrario dal suo "punto di vista" ?!)
B) l'adattatore RS232 MALE to MALE è inutile in commercio in quanto non convoglia Tx a Rx e Rx a Tx, ma porta Tx a Tx e Rx a Rx (e di conseguenza è come dire che sarebbe inutile qualsiasi collegamento di due RS232 poichè anche quelle sono collegate Tx <-> Tx e Rx <-> Rx)
C) l'adattatore RS232 FEMALE to TTL comprato, doveva essere di tipo MALE, senza passare per l'adattatore 2). Motivo per cui non ho fatto questa scelta: se l'adattatore FEMALE è difficile da recuperare, quello MALE è pressochè introvabile.. ero tranquillo che bastasse l'adattatore 2)
Tradotto in modo concreto. Son riuscito a farlo funzionare.. in una situazione assolutamente provvisoria, bucando i pin delle porte con dei cavi jumper. Devo creare un collegamento solido.. ma a quanto pare non posso usare l'adattatore 2) perchè dovrebbe connettere Tx a Rx e Rx a Tx (e non, come ora, Tx a Tx e Rx a Rx); mi sembra pure assurdo che mi abbiano dato un cavo montato al contrario; l'unica cosa che mi viene da pensare è riuscire a recuperare un adattatore 3) direttamente MALE, bypassando l'adattatore 2) : ma questo risolverebbe il problema? o sarei punto a capo con le connessioni dirette anzichè invertite di Tx e Rx?
non so più dove stia il problema..
sperando che qualche esperto mi riesca a delucidare
vi ringrazio anticipatamente, Nicholas