comunicazione seriale tra arduino uno e arduino mega 2650

Buon giorno, vi chiedo aiuto perchè ho qualche problema con il mio proggetto.. sto costruendo un piccolo allarme che si disattiva o riattiva tramite 2 lettori rfid da fissare accanto alle porte.

Da quanto ho capito è impossibile far funzionare i miei lettori rfid (RFID-RC522)a più di 10 cm dalla scheda di arduino, perchè non funzionerebbero.. io ne devo mettere 2, uno per porta, uno a 3 metri di distanza e uno a 17 metri di distanza dall'arduino mega che fa da master.

Tutto l'allarme viene gestito dall'arduino mega e per leggere i 2 rfid pensavo a 2 arduino uno che inviano all'arduino mega un segnale via seriale per disattivare l'allarme.

Non volendo più toccare i 2 arduino uno pensavo di usare i pin 0 e 1 e collegarli ai pin 14 - 15 e 16 - 17 del mega, collegando anche i relativi gnd.

Secondo voi la distanza tra gli arduino uno e il mega sarà troppa o si può tentare in questo modo?

Grazie Davide

Sei sicuro che il tuo lettore sia il modello seriale?

Detto questo, dovresti considerare l'uso di convertitori RS485 poiché la distanza di 17m potrebbe essere un problema.

Ne monti uno su una delle porte seriali della MEGA (master) ed uno per ogni UNO (slave), sempre sulla porta seriale, ma potresti anche usare una porta seriale virtuale (libreria SoftwareSerial).

Il bus RS485 richiede solo due fili per funzionare e quattro resistori (due a monte e due a valle delle linea), mentre la distanza supera tranquillamente i 100m.

Poiché il convertitore funziona o in ricezione o in trasmissione (half duplex), quello sulla MEGA sarà sempre in ricezione, mentre quello degli UNO sarà sempre in trasmissione.

Nel tuo caso non penso ci siano problemi di collisione, poiché gli UNO è improbabile che trasmettano nello stesso momento.

http://www.ebay.it/itm/Modulo-convertitore-TTL-a-RS485-interfaccia-integrato-MAX485-compatibile-Arduino-/161365534283

Ciao cyberhs, grazie per la risposta.

Praticamente il mio lettore rfid è questo:

http://www.ebay.it/itm/Mifare-RFID-RC522-RF-Lettore-Schede-Antenna-Card-Prossimita-Modulo-Portachiavi-/321559875289?pt=LH_DefaultDomain_101&hash=item4ade764ed9

Secondo te si posono collegare al mega direttamente con i convertitori RS485?

davideweb: Praticamente il mio lettore rfid è questo:

Secondo te si posono collegare al mega direttamente con i convertitori RS485?

Ha una interfaccia SPI, non puoi collegarlo direttamente alla 485, in mezzo ci devi mettere una mcu che fa da convertitore di protocollo.

cyberhs: Detto questo, dovresti considerare l'uso di convertitori RS485 poiché la distanza di 17m potrebbe essere un problema.

Ne monti uno su una delle porte seriali della MEGA (master) ed uno per ogni UNO (slave), sempre sulla porta seriale, ma potresti anche usare una porta seriale virtuale (libreria SoftwareSerial).

Il bus RS485 richiede solo due fili per funzionare e quattro resistori (due a monte e due a valle delle linea), mentre la distanza supera tranquillamente i 100m.

Poiché il convertitore funziona o in ricezione o in trasmissione (half duplex), quello sulla MEGA sarà sempre in ricezione, mentre quello degli UNO sarà sempre in trasmissione.

http://www.ebay.it/itm/Modulo-convertitore-TTL-a-RS485-interfaccia-integrato-MAX485-compatibile-Arduino-/161365534283

quindi dovrei acquistare 3 convertitori, uno per ogni scheda, e due resistenze per scheda

sui due arduino uno potrei usare una seriale virtuale con i pin 2 e 3 (libreria SoftwareSerial) e seriale1 hardware di arduino mega pin 14 e 15.

Ho capito giusto?

Come ha detto il buon Astro, l'interfaccia del lettore RFID è SPI e non seriale: all'inizio te lo avevo chiesto, perché esiste anche un modello seriale.

A questo punto ti propongo un'alternativa.

Gli UNO devono ricevere il codice del tag attraverso l'interfaccia SPI, riconoscere il tag tra quelli autorizzati ed inviare un semplice segnale digitale alla MEGA (letto tag valido).

In questo modo eviti i convertitori ed anche la seriale: bastano solo due pin digitali sulla MEGA, uno per ciascuna UNO.

Credo sia un'ottima alternativa per quello che devo fare ed è ancora tutto più semplice. :D :D

Cioè io imposto gli uno con un pin in output

e li attacco al mega impostando quel pin come input, il mio dubbio è se servono resistenze o se posso semplicemente attaccare il pin dell'arduino uno sul mega e poi leggerne lo stato?

Per rinforzare il segnale, puoi inserire un resistore da 250 ohm come pullup a +5V sulla uscita digitale di ciascun UNO.

Se l'ambiente è elettricamente rumoroso, usa del cavo schermato anche di piccola sezione.

Ciao, purtroppo ho già passato un cavo di rete utp (non schermato) cat5e in una nuova canalina apposita, non essendoci altri fili all'interno e nelle vicinanze spero di non avere problemi di disturbi. Posso provare inizialmente senza resistenze di pullup?

Provare non costa.

Ok ti ringrazio moltissimo per il tuo aiuto, ora mi metto subito all'opera.. Speriamo bene! :D