Ciao a tutti,
ho realizzato una piccola stazione meteo composta, per il momento da due unità, una "interna" e una "esterna", ma ho alcuni problemi di conflitto tra la scheda SD e il modulo radio installati sull'unità interna.
Descrizione del progetto
Sull'unità esterna (arduino nano) sono presenti alcuni sensori (temperatura, umidità, e pressione), un RTC e un modulo nRF24L01. I sensori e l'RTC sono collegati tramite I2C, mentre il modulo radio tramite SPI.
L'unità funziona nel seguente modo:
- ogni 40 secondi i dati dei sensori vengono memorizzati in un array che si comporta da buffer;
- ogni quarto d'ora (in questo caso intendo 15:00:00, 15:15:00, 15:30:00 ecc.) viene fatta la media delle misurazioni ottenute, il buffer viene resettato, e i dati ottenuti vengono salvati in una stringa e inviati tramite nRF24L01 all'unità interna.
Sull'unità interna (arduino uno) sono presenti un display LCD con interfaccia I2C, una scheda SD e un modulo radio nRF24L01. Questi ultimi moduli sono entrambi interfacciati all'arduino tramite SPI.
L'unità dovrebbe funzionare nel seguente modo:
- l'unità controlla se sono disponibili dei dati (una stringa) da ricevere tramite il modulo RF;
- la stringa viene ricevuta tramite nRF24L01, viene decodificata e i dati ottenuti vengono visualizzati sul display LCD e salvati in formato CSV in un file di testo contenuto nella scheda SD.
Descrizione del problema
Il problema che ho riscontrato è che i dati vengono ricevuti dall'unità, la stringa viene decodificata e le varie informazioni vengono mostrate sul display, ma non vengono salvate sulla scheda SD.
Vorrei sottolineare che senza modulo RF e utilizzando lo stesso codice sorgente (opportunamente modificato eliminando le parti relative al modulo RF non presente) la scheda SD funziona, quindi si tratta di un problema di conflitto dei due dispositivi.
I collegamenti che ho effettuato sono:
SD CARD
VCC = 5V
GND = GND
MOSI = D11
MISO = D12
CLK = D13
CS = D4
nRF24L01
VCC = 3V3
GND = GND
MOSI = D11
MISO = D12
CLK = D13
CS = D8
CE = D7
Aggiungo inoltre che nel setup() ho inizializzato prima la scheda SD e poi il modulo RF, perché facendo al contrario, spesso l'inizializzazione della scheda SD falliva.
Ho trovato alcune informazioni qui sul forum che dicevano che probabilmente il conflitto è dovuto al fatto che le frequenze dei segnali di clock dei due dispositivi sono settati a valori diversi.
Sinceramente non so se il problema sia "solo" questo. Non sono infatti riuscito a modificare tali frequenze in modo da renderle uguali. Nella libreria dell'nRF24L01 ho trovato il parametro da modificare, ma non riesco a trovare a che frequenza è settata la scheda SD.
Grazie a tutti in anticipo