Go Down

Topic: Arduino"A" invia temperatura a Arduino"B" tramite pin Tx-Rx (Read 2622 times) previous topic - next topic

pietro78

Ho appena finito di realizzare una centralina per il controllo delle temperature di una caldaia con bollitore per acqua calda sanitaria utilizzando praticamente tutti i pin di un ARDUINO1 con tanto di display LCD e uscite relè di allarme e elettrovalvole....

Ora per completare il mio progetto avrei bisogno di remotizzare i dati di temperatura su internet e non ho più i pin disponibili per la shield Ethernet...
Gli unici PIN disponibili a me sono i PIN 0,1 ( tx e rx) e il PIN A5 quindi mi chiedevo come fosse possibile far inviare i dati dall Arduino A già funzionante a un'altro Arduino B con ethernet shield a bordo tramite  i piedini TX-RX incrociati tra loro e gnd in comune...Come devo impostare gli sketck tra Arduino A e Arduino B ???

Sò bene che se utilizzo i pin 0 e 1  stronco la porta usb ma una volta assicurato che il tutto funziona posso benissimo farne a meno...oppure avete altre soluzioni semplici ???

Grazie per favore ....

leo72

#1
Sep 16, 2012, 11:47 am Last Edit: Sep 16, 2012, 11:49 am by leo72 Reason: 1
Basta che incroci i fili RX/TX tra i 2 Arduino, ossia TX1->RX2 e RX1<-TX2.
Per l'invio dei dati si ne parla continuamente, si tratta di dover ricomporre dei dati che arrivano in forma binaria. Basta cercare sul forum e trovi tutte le soluzioni.

EDIT:
di che distanze parliamo?
Se sono qualche decina di centrimetri va bene, se si parla di decine di metri ti consiglio l'uso del bus RS485, è una semplice seriale "estesa" che puoi usare con 2 semplici integrati, una coppia di 75176 o di MAX485 (consiglio i primi).

Brunello

Personalmente collegherei il display in I2C  http://ardugonic.blogspot.it/2010/07/controlling-lcd-display-via-i2c-bus.html  in modo da risparmiare pin per inserisci una Shield ethernet.


leo72


Personalmente collegherei il display in I2C  http://ardugonic.blogspot.it/2010/07/controlling-lcd-display-via-i2c-bus.html  in modo da risparmiare pin per inserisci una Shield ethernet.



Ma gli manca A4.

Gli unici PIN disponibili a me sono i PIN 0,1 ( tx e rx) e il PIN A5

m_ri

@leo72:uso la seriale a quasi 20 metri senza problemi..ho provato anche a raddoppiare le distanze,e funge....anzi,la prima volta m'ero dimenticato di connettere la gnd comune,e funzionava tranquillamente,poi mentre stavo chiudendo la scatola vedo un filo e dico: "cos'è questo?"...
PS:non ho mai provato a velocità superiori dei 38000..

leo72


@leo72:uso la seriale a quasi 20 metri senza problemi..ho provato anche a raddoppiare le distanze,e funge....anzi,la prima volta m'ero dimenticato di connettere la gnd comune,e funzionava tranquillamente,poi mentre stavo chiudendo la scatola vedo un filo e dico: "cos'è questo?"...

ROTFL  :smiley-yell:

Se è un ambiente domestico potrebbe anche usare la seriale nuda e cruda. Ma visto che quei 2 chip non costano niente e che alla fine li gestisce sempre come fosse una seriale normale, perché non aggiungerli?

Brunello

Quote
Ma gli manca A4.


l'LCd si porta via 6 pin.
4 sono quelli usati dallo Shield Ethernet
quello che collega al Pin A4 lo connette a uno dei due pin che avanzano e cosi' a l'I2C libera



pietro78

Ragazzi grazie dei consigli ma la mia richiesta specifica era un'altra....  :

Quote
l'LCd si porta via 6 pin.
4 sono quelli usati dallo Shield Ethernet
quello che collega al Pin A4 lo connette a uno dei due pin che avanzano e cosi' a l'I2C libera


Quote
Personalmente collegherei il display in I2C  http://ardugonic.blogspot.it/2010/07/controlling-lcd-display-via-i2c-bus.html  in modo da risparmiare pin per inserisci una Shield ethernet.


Si ma io ho bisogno di 5 ingressi analogici e per tale motivo mi avanza solamente il pin A5 quindi è da escludere il bus I2c e anche il display...

Ora sono riuscito a liberare 2 pin DIGITALI ( pin 6 e pin 7) e vorrei provare ad usare la libreria soft serial per trasmettere i dati di temperatura dei 5 ingressi Analogici e avere così libera la seriale arduino sui pin 0-1 ma arrivo al dunque come posso fare a trasmettere i dati dalla'Arduino A all'Arduino B ???

E poi se uso i 2 pin digitali  6 e 7 sull'Arduino A come porta seriale "virtuale" come devo collegarli sull'Arduino B ???
...immagino che debba usare comunque altri 2 pin digitali anche sull'altro Arduino B ??!!!

Mi date qualche esempio FACILE di qualche sketch semplice per la comunicazione seriale con la libreria giusta per i 2 Arduini ???
Grazie... =(   =(  :~

leo72


Mi date qualche esempio FACILE di qualche sketch semplice per la comunicazione seriale con la libreria giusta per i 2 Arduini ???
Grazie... =(   =(  :~


http://arduino.cc/en/Reference/Serial
Un Arduino spedisce i byte con
http://arduino.cc/en/Serial/Print
Sull'altro guardi se ci sono byte disponibili
http://arduino.cc/en/Serial/Available
e poi li leggi con
http://arduino.cc/en/Serial/Read

Come ti ho già detto, sul forum esistono centinaia di discussioni in merito. Facendo una ricerca con ad esempio "comunicazione seriale" vengono fuori un sacco di risultati, ad esempio questa:
http://arduino.cc/forum/index.php/topic,115283.0.html

Testato

pietro le strade restano due, o ti leggi i topic che dice leo, anche cercando sul forum e trovi roba,
oppure cambia i sensori, presuppondo che i 5 pin analogici li tieni occupati da sensori temperatura ? passa a sensori digitali onewire, e con un solo pin ne metti quanti vuoi, costano meno degli lm35.
in compenso hai pin libero per l'ethernet o il wi-fi shield. il rpogetto sarebbe migliore secondo me.
se vuoi invece restare sul doppio arduino (che onestamente sembra sprecato), con la seriale confermo che non sono pochi centimetri, ci vai lontano, potresti arrivare anche a 100m con cavi schermati, lo standard non definisce un limite
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

pietro78

Scusate ma forse non ho bene in chiaro quello che é la comunicazione con la ethernet shield ma da quello che ho imparato infilando la shield sull'arduino1 essa usa dei pin predefiniti dall'hardware stesso della scheda e quindi non mi pare che liberando i pin analogici a0...a5 io riesca ad usare la ethernet shield per tale motivo ho preferito usare sensori di temperatura NTC a mio avviso piú affidabili e non potendo comprare un arduino mega ho scelto l'Arduino1 per eleborare  e poi per spedire i dati in remoto ed avere modo di pilotare delle uscite volevo utilizzare un altro arduino con scheda di rete...e comunque sarei sempre grato a qualcuno che in qualche modo mi sappia aiutare su come riuscire a far spedire i dati (come stringhe,byte,...) dall'Arduino A all'Arduino B...vorrei qualche esempio pratico di sketch dei due arduini...da modificare per le mie esigenze specifiche...grazie menti geniali...confido in voi...

Testato

si, la ethernet shield usa dei pin predefiniti, mentre il tuo progetto no, cioe' tu ti vai a guardare quali pin necessita lo shield, e li liberi, soostando su altri pin il resto del progetto.
A te non interessa se un led lo fai accendere su pin 11 o su pin A3, e' indifferente.
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Go Up