Salve, questo è il mio primo post.
So che non è proprio educazione iniziare con una richiesta ma ho cercato un sacco in rete la risposta al mio quesito e, nonostante il problema sia già stato posto, non ho trovato una soluzione.
Quindi:
L'idea era quella di fare una stazioncina meteo:
- temperatura interna e pressione con il sensore BMP085
- temperatura esterna e umidità presi da un sensore esterno di una vecchia stazione IROX con un ricevitore a 433MHz
- caricamento dati in un db mySQL (e poi pagina PHP per grafici ecc.)
e fino qui tutto ok. La stazione funziona abbastanza stabilmente.
Il passo successivo sarebbe stato quello di salvare i dati sulla SD, soprattutto per evitare "buchi" nei momenti in cui la rete non funziona.
E qui sono sorti i problemi: - se inserisco la scheda microSD non funziona più la rete
- se inserisco la scheda microSD e disattivo il ricevitore 433MHz funziona tutto.
all'inizio pensavo un problema di interrupt.
Però ho così configurato:
BMP085 --> A4,A5 (che non crea mai problemi)
VirtualWire Data --> D3 (interrupt 1)
credendo che la ethernet usasse i pin D2 (interrupt 0), D4 (SD), D10, D11, D12, D13.
quindi non ci dovrebbero essere problemi.
Dove sbaglio?
Sottolineo che non sono molto esperto nè di elettronica nè di C. Giusto per fare capire metto il codice del setup
void setup() {
Serial.begin(9600);
if (!sd.begin(4)) {
Serial.println("ERRORE SD");
//return;
}else{
Serial.println("Done");
}
Serial.println("Inizio a ricevere i dati");
SensorReceiver::init(1 , showTempHumi); //funziona con 1 ma non va più SD e ETH0
Serial.println("Sto ricevendo i dati");
if(Ethernet.begin(mac)){
Serial.println("OK rete");
Serial.println(Ethernet.localIP());
}else{
Serial.println("ERRORE rete");
}
// Inizializzo UDP
delay(5000);
Udp.begin(localPort);
Serial.println("Leggo orario...");
setSyncProvider(getNtpTime);
oldMillis = millis();
digitalClockDisplay();
}
Ringrazio subito chi mi vorrà dare una mano.
Giuppelmo