Sto creando una stazione meteo con una scheda esterna ed una interna con dht 11 in entrambe le schede. Una è un arduino uno l'altra un esp 32 D1R32, la scheda Tx invia i dati alla scheda Rx ma la scheda Rx non legge i dati e non scrive sulla scheda sd. La comunicazione tra le due schede funziona. Ho fatto svariati prove e studi ma non sono giunto alla conclusione credo che ci sia un impossibbilità Hardware a questo punto. Quanlcuno mi può dare una mano a capire il problema grazie ...
#include <SPI.h>
#include <RF24.h>
#include <DHT.h>
#include <SD.h>
const int ssPinDevice1 = 5; // Pin SS per il dispositivo 1
const int ssPinDevice2 = 10; // Pin SS per il dispositivo 2
#define DHTPIN 9
#define DHTTYPE DHT11
RF24 radio(4, 5); // CE, CSN
DHT dht(DHTPIN, DHTTYPE);
struct SensorData {
float temperatura;
float umidita;
};
SensorData receivedDataBuffer; // Temporary buffer to store received data
bool newDataAvailable = false;
void setup() {
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(1, 0xF0F0F0F0E1LL); // Indirizzo di origine
radio.startListening();
dht.begin();
if (!SD.begin(10)) {
Serial.println("Initialization of SD card failed!");
while (1);
}
pinMode(ssPinDevice1, OUTPUT);
digitalWrite(ssPinDevice1, HIGH);
pinMode(ssPinDevice2, OUTPUT);
digitalWrite(ssPinDevice2, HIGH);
}
void loop() {
if (radio.available()) {
digitalWrite(ssPinDevice1, LOW);
radio.read(&receivedDataBuffer, sizeof(SensorData));
newDataAvailable = true;
digitalWrite(ssPinDevice1, HIGH);
}
if (newDataAvailable) {
Serial.print("Temperatura Esterna (Buffer): ");
Serial.print(receivedDataBuffer.temperatura);
Serial.print(" °C, Umidità Esterna (Buffer): ");
Serial.print(receivedDataBuffer.umidita);
Serial.println(" %");
// Reset the flag
newDataAvailable = false;
// Now write the data to SD card
writeDataToSD(receivedDataBuffer);
}
}
void writeDataToSD(SensorData &data) {
// Scrivi i dati su SD
File dataFile = SD.open("sensor_data.txt", FILE_WRITE | O_APPEND);
if (dataFile) {
dataFile.print("Temperatura Esterna: ");
dataFile.print(data.temperatura);
dataFile.print(" °C, Umidità Esterna: ");
dataFile.print(data.umidita);
dataFile.println(" %");
dataFile.close();
} else {
Serial.println("Error opening file on SD card.");
}
}
Ti segnalo che, nella sezione in lingua Inglese, si può scrivere solo in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato.
... aggiungo ... evitate di utilizzare la traduzione automatica fatta dal browser ... vi impedisce di capire la lingua della sezione dove andate a scrivere ...
Non mi scrive niente il monitor seriale. Ho provato adesso con un altro modulo a 3,3 v tutto collegato a 3,3 v la parte nfr24l01 e la scheda sd in modo tale che non ci siano problemi sui livelli, ma niente la stessa problematica
Grazie il post si può chiudere ho trovato la soluzione da solo. Ecco la soluzione ho inserito un modulo sd da 3,3 v nfr24l01 collegato a 5v ma con l'apposito modulo per nfr24l01 e un condensatore elettrolitico da 47 uF a 3,3 non legge i dati. Ma utilizzando nfr24l01 a 5 v funziona tutto. posto lo sketch Tx e Rx in modo tale che aiuti la community