sto facendo un apriporta , che aprirà cancello elettrico con tag rfid e con bluetooth da cellulare!
vorrei utilizzare un ARDUINO NANO (328 -5 v) , la domanda è questa... siccome devo collegare
2 seriali ( una del RFID e l'altra del BT ) ad arduino ... vorrei utilizzare la libreria SOFTWARE SERIAL , ma
non funziona!
si possono utilizzare 2 seriali con la software serial oppure una sola!!
softwareserial RFID (2,3);
softwareserial BT (4,5) ;
Se ti studi bene la documentazione ed i metodi della SoftwareSerial scoprirai che, mentre puoi sempre trasmettere da entrambe, puoi ricevere (alternativamente) solo da una delle due ... a te selezionare di volta in volta quale è attiva in ricezione.
In pratica, con il metodo listen() dici quale delle sue seriali è in ricezione.
Dovrai avere quindi un qualche cosa che non trasmette di sua iniziativa, ma solo su tua richiesta, perché, se tu sei impegnato a ricevere su una seriale, quello che arriva sull'altra va perso.
Come ti dicevo NON puoi usare le due seriali se i devices trasmettono di loro iniziativa visto che, mentre tu sei su una, i dati sull'altra vanno persi.
In quel loop() tu non sai mai chi deve trasmettere e il loop è talmente veloce che come sai quando andare a leggere da BT e quando da RFID ?
Si possono usare le due SoftwareSerial solo con devices che TU interroghi ...
... selezioni device 1
... gli chiedi se ha qualche cosa da darti, se SI, gli dici di trasmettere e tu ricevi
... selezioni device 2
... gli chiedi se ha qualche cosa da darti, se SI, gli dici di trasmettere e tu ricevi
e ricominci da capo.
Non è invece utilizzabile con devices che trasmettono quando vogliono visto che tu NON sai su quale seriale devi stare in ascolto o verificare se c'è qualche cosa.
Nel tuo caso ti serve una MCU che ha almeno 2 vere seriali HW dove collegare il BT e il RFID e che devono lavorare in contemporanea.
Si possono collegare anche più di due devices seriali, ma ... devono essere devices che NON trasmettono quando pare a loro, ma quando lo vuoi tu ... tutto li è il problema.
Se invece a te serve di ricevere da qualche cosa che non sai quando può trasmettere ... beh, ti servono per forza delle potre seriali HW. Arduino MEGA, con le sue 4 porte seriali e sicuramente una validissima soluzione.
Certo, metti un LED rosso e uno verde ... accendi il rosso e abiliti la porta BT per X secondi e tu puoi trasmettere dal BT SOLO ED ESCLUSIVAMENTE in quel tempo, poi spegni il led rosso e accendi il led verde ... acceso il verde abiliti il RFID per Y secondi e tu puoi passare carte sul RFID SOLO ED ESCLUSIVAMNETE in quel tempo, dopo di che ricominci da capo.
Ho detto LED rosso e LED verde per dare un indicazione luminosa di cosa è attivo così da non sbagliare ... ma ovviamente puoi scegliere altri tipi di indicazione che ti dicano COSA è attivo e cosa quindi tu puoi usare ...
Detto fra noi mi sembra una soluzione "farraginosa" e estremamente poco pratica ...
... pigliati 'sta MEGA e fai una cosa fatta come si deve
Guglielmo
P.S.: Ma non potevi prendere un lettore RFID con collegamento SPI come sono normalmente quelli per Arduino ?
massibal:
ma se usassi il RFID RC522 , dovrei usare una sola Softwareserial per il bluetooth e basta ?
Se è un RFID su SPI ... ovviamente SI ... il BT sulla seriale ed il modulo RFID sulla SPI. Occhio però alla lunghezza dei fili, il bus SPI è molto permaloso e già andare oltre i 10 cm. può essere problematico.