Hi,
after having successfully realized dataloggers with ESP32 and BME280 with RTCDS3231 and a microSDcard module, I'm trying to use an ESP8266 with integrated 0.96" OLED as a datalogger collecting data from BME280 sensor and timestamp from RTC DS3231.
This type of board uses for OLED screen pin 14 for SDA and pin 12 for SCL.
I was able to display on the screen timestamp from DS3231 and data from BME280, putting the MCU in deepsleep and then awaking it after a fixed interval.
However when I try to save data on a SD card I get different types of error.
In fact, if I use as SPI pins CS 15, SCK 14, MISO 12 and MOSI 13 the upload fails and I get the message
A fatal esptool.py error occurred: Failed to connect to ESP8266: Timed out waiting for packet header
If I use as pins CS 11, SCK 6, MISO 7 and MOSI 8 the upload works but the serial monitor doesn't show anything and, after pressing the reset button, it shows a very long line of strange characters followed by the message "Initializing SD card" (result of a Serial.print command in my code)
since this moment there is a continuous rebooting with the message
ets Jan 8 2013, rst cause: 4, boot mode: (3,7)
wdt reset
load 0x4010f000,len 3424, room 16
tail 0
chksum ox2e
load 0x3ff20b8, len 40, room 8
tail 0
chksum 0x2bb
csum ox2b
v00047c90
-ld.
Since I am a newbie, I tried by googling to understand the meaning of this message and I think to have understood that it's the result of the watchdog timer working and is a "hardware" error ( the number 4 in rst cause ) and should be related to SD card (boot mode: (3,7).
However i have absolutely no idea how to solve this situation and I'm asking for help.
I'm enclosing my code and you will notice that I'm using the library SdFat.h since ,when I try to use - as it was usual for me - SD.h library I get a horrible bunch of errors that I've never seen before and are overwhelming for me ( I searched for an explanatioon and it looks like related to the way in which Arduino chooses which library to use between those installed but I'm not able to solve this problem).
HERE ARE THE ERRORS
In file included from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatLib.h:22,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/SdFat.h:27,
from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:35,
from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD\src/SD.h:25,
from C:\Users\Morra\Desktop\ANDORA_3_dicembre\ESP8266_u8g2_BME280_DS3231_SD_CARD\ESP8266_u8g2_BME280_DS3231_SD_CARD.ino:31:
c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/ArduinoFiles.h:118:7: error: redefinition of 'class fs::File'
118 | class File : public FatFile, public Stream {
| ^~~~
In file included from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD\src/SD.h:24,
from C:\Users\Morra\Desktop\ANDORA_3_dicembre\ESP8266_u8g2_BME280_DS3231_SD_CARD\ESP8266_u8g2_BME280_DS3231_SD_CARD.ino:31:
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266/FS.h:52:7: note: previous definition of 'class fs::File'
52 | class File : public Stream
| ^~~~
In file included from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatLib.h:24,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/SdFat.h:27,
from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:35,
from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD\src/SD.h:25,
from C:\Users\Morra\Desktop\ANDORA_3_dicembre\ESP8266_u8g2_BME280_DS3231_SD_CARD\ESP8266_u8g2_BME280_DS3231_SD_CARD.ino:31:
c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatFileSystem.h: In member function 'fs::File FatFileSystem::open(const char*, uint8_t)':
c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatFileSystem.h:84:13: error: 'class fs::File' has no member named 'open'
84 | tmpFile.open(vwd(), path, mode);
| ^~~~
In file included from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD\src/SD.h:25,
from C:\Users\Morra\Desktop\ANDORA_3_dicembre\ESP8266_u8g2_BME280_DS3231_SD_CARD\ESP8266_u8g2_BME280_DS3231_SD_CARD.ino:31:
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: At global scope:
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:47:50: error: 'SD_SCK_MHZ' was not declared in this scope
47 | SDFSConfig(uint8_t csPin = 4, uint32_t spi = SD_SCK_MHZ(10)) : FSConfig(FSId, false), _csPin(csPin), _part(0), _spiSettings(spi) { }
| ^~~~~~~~~~
In file included from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD\src/SD.h:25,
from C:\Users\Morra\Desktop\ANDORA_3_dicembre\ESP8266_u8g2_BME280_DS3231_SD_CARD\ESP8266_u8g2_BME280_DS3231_SD_CARD.ino:31:
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'virtual bool sdfs::SDFSImpl::info64(fs::FSInfo64&)':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:97:37: error: 'class FatVolume' has no member named 'bytesPerCluster'; did you mean 'blocksPerCluster'?
97 | info.blockSize = _fs.vol()->bytesPerCluster();
| ^~~~~~~~~~~~~~~
| blocksPerCluster
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'virtual bool sdfs::SDFSImpl::begin()':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:156:2: error: 'FsDateTime' has not been declared
156 | FsDateTime::setCallback(dateTimeCB);
| ^~~~~~~~~~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'size_t sdfs::SDFSImpl::blocksPerCluster()':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:176:27: error: 'class FatVolume' has no member named 'sectorsPerCluster'
176 | return _fs.vol()->sectorsPerCluster();
| ^~~~~~~~~~~~~~~~~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'size_t sdfs::SDFSImpl::clusterSize()':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:185:27: error: 'class FatVolume' has no member named 'bytesPerCluster'; did you mean 'blocksPerCluster'?
185 | return _fs.vol()->bytesPerCluster();
| ^~~~~~~~~~~~~~~
| blocksPerCluster
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: At global scope:
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:264:48: error: 'File32' was not declared in this scope
264 | SDFSFileImpl(SDFSImpl fs, std::shared_ptr fd, const char name)
| ^~~~~~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:264:54: error: template argument 1 is invalid
264 | SDFSFileImpl(SDFSImpl fs, std::shared_ptr fd, const char name)
| ^
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:401:21: error: 'File32' was not declared in this scope
401 | std::shared_ptr _fd;
| ^~~~~~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:401:27: error: template argument 1 is invalid
401 | std::shared_ptr _fd;
| ^
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'virtual int sdfs::SDFSFileImpl::availableForWrite()':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:279:29: error: base operand of '->' is not a pointer
279 | return _opened ? _fd->availableSpaceForWrite() : 0;
| ^~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'virtual size_t sdfs::SDFSFileImpl::write(const uint8_t, size_t)':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:284:29: error: base operand of '->' is not a pointer
284 | return _opened ? _fd->write(buf, size) : -1;
| ^~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'virtual int sdfs::SDFSFileImpl::read(uint8_t, size_t)':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:289:29: error: base operand of '->' is not a pointer
289 | return _opened ? _fd->read(buf, size) : -1;
| ^~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'virtual void sdfs::SDFSFileImpl::flush()':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:295:16: error: base operand of '->' is not a pointer
295 | _fd->sync();
| ^~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'virtual bool sdfs::SDFSFileImpl::seek(uint32_t, fs::SeekMode)':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:306:27: error: base operand of '->' is not a pointer
306 | return _fd->seekSet(pos);
| ^~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:308:27: error: base operand of '->' is not a pointer
308 | return _fd->seekEnd(-pos); // TODO again, odd from POSIX
| ^~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:310:27: error: base operand of '->' is not a pointer
310 | return _fd->seekCur(pos);
| ^~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'virtual size_t sdfs::SDFSFileImpl::position() const':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:321:29: error: base operand of '->' is not a pointer
321 | return _opened ? _fd->curPosition() : 0;
| ^~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'virtual size_t sdfs::SDFSFileImpl::size() const':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:326:29: error: base operand of '->' is not a pointer
326 | return _opened ? _fd->fileSize() : 0;
| ^~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'virtual bool sdfs::SDFSFileImpl::truncate(uint32_t)':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:335:19: error: base operand of '->' is not a pointer
335 | return _fd->truncate(size);
| ^~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'virtual void sdfs::SDFSFileImpl::close()':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:341:16: error: base operand of '->' is not a pointer
341 | _fd->close();
| ^~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'virtual bool sdfs::SDFSFileImpl::isFile() const':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:369:29: error: base operand of '->' is not a pointer
369 | return _opened ? _fd->isFile() : false;;
| ^~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'virtual bool sdfs::SDFSFileImpl::isDirectory() const':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:374:29: error: base operand of '->' is not a pointer
374 | return _opened ? _fd->isDir() : false;
| ^~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'virtual time_t sdfs::SDFSFileImpl::getLastWrite()':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:380:13: error: 'DirFat_t' was not declared in this scope
380 | DirFat_t tmp;
| ^~~~~~~~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:381:21: error: request for member 'get' in '((sdfs::SDFSFileImpl)this)->sdfs::SDFSFileImpl::_fd', which is of non-class type 'int'
381 | if (_fd.get()->dirEntry(&tmp)) {
| ^~~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:381:38: error: 'tmp' was not declared in this scope; did you mean 'temp'?
381 | if (_fd.get()->dirEntry(&tmp)) {
| ^~~
| temp
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'virtual time_t sdfs::SDFSFileImpl::getCreationTime()':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:391:13: error: 'DirFat_t' was not declared in this scope
391 | DirFat_t tmp;
| ^~~~~~~~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:392:21: error: request for member 'get' in '((sdfs::SDFSFileImpl)this)->sdfs::SDFSFileImpl::_fd', which is of non-class type 'int'
392 | if (_fd.get()->dirEntry(&tmp)) {
| ^~~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:392:38: error: 'tmp' was not declared in this scope; did you mean 'temp'?
392 | if (_fd.get()->dirEntry(&tmp)) {
| ^~~
| temp
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: At global scope:
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:409:70: error: 'File32' was not declared in this scope
409 | SDFSDirImpl(const String& pattern, SDFSImpl* fs, std::shared_ptr dir, const char dirPath = nullptr)
| ^~~~~~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:409:76: error: template argument 1 is invalid
409 | SDFSDirImpl(const String& pattern, SDFSImpl fs, std::shared_ptr dir, const char dirPath = nullptr)
| ^
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:518:21: error: 'File32' was not declared in this scope
518 | std::shared_ptr _dir;
| ^~~~~~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:518:27: error: template argument 1 is invalid
518 | std::shared_ptr _dir;
| ^
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In destructor 'virtual sdfs::SDFSDirImpl::~SDFSDirImpl()':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:420:13: error: base operand of '->' is not a pointer
420 | _dir->close();
| ^~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'virtual bool sdfs::SDFSDirImpl::next()':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:484:13: error: 'File32' was not declared in this scope
484 | File32 file;
| ^~~~~~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:485:13: error: 'file' was not declared in this scope
485 | file.openNext(_dir.get(), O_READ);
| ^~~~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:485:32: error: request for member 'get' in '((sdfs::SDFSDirImpl)this)->sdfs::SDFSDirImpl::_dir', which is of non-class type 'int'
485 | file.openNext(_dir.get(), O_READ);
| ^~~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:491:17: error: 'DirFat_t' was not declared in this scope
491 | DirFat_t tmp;
| ^~~~~~~~
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:492:36: error: 'tmp' was not declared in this scope; did you mean 'temp'?
492 | if (file.dirEntry(&tmp)) {
| ^~~
| temp
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h: In member function 'virtual bool sdfs::SDFSDirImpl::rewind()':
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:511:13: error: base operand of '->' is not a pointer
511 | dir->rewind();
| ^~
In file included from C:\Users\Morra\Desktop\ANDORA_3_dicembre\ESP8266_u8g2_BME280_DS3231_SD_CARD\ESP8266_u8g2_BME280_DS3231_SD_CARD.ino:31:
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD\src/SD.h: At global scope:
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD\src/SD.h:207:24: error: redefinition of 'uint16_t FAT_YEAR(uint16_t)'
207 | static inline uint16_t FAT_YEAR(uint16_t fatDate) {
| ^~~~~~~~
In file included from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatFile.h:32,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/ArduinoFiles.h:28,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatLib.h:22,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/SdFat.h:27,
from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:35,
from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD\src/SD.h:25,
from C:\Users\Morra\Desktop\ANDORA_3_dicembre\ESP8266_u8g2_BME280_DS3231_SD_CARD\ESP8266_u8g2_BME280_DS3231_SD_CARD.ino:31:
c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatStructs.h:643:24: note: 'uint16_t FAT_YEAR(uint16_t)' previously defined here
643 | static inline uint16_t FAT_YEAR(uint16_t fatDate) {
| ^~~~~~~~
In file included from C:\Users\Morra\Desktop\ANDORA_3_dicembre\ESP8266_u8g2_BME280_DS3231_SD_CARD\ESP8266_u8g2_BME280_DS3231_SD_CARD.ino:31:
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD\src/SD.h:210:23: error: redefinition of 'uint8_t FAT_MONTH(uint16_t)'
210 | static inline uint8_t FAT_MONTH(uint16_t fatDate) {
| ^~~~~~~~~
In file included from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatFile.h:32,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/ArduinoFiles.h:28,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatLib.h:22,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/SdFat.h:27,
from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:35,
from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD\src/SD.h:25,
from C:\Users\Morra\Desktop\ANDORA_3_dicembre\ESP8266_u8g2_BME280_DS3231_SD_CARD\ESP8266_u8g2_BME280_DS3231_SD_CARD.ino:31:
c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatStructs.h:651:23: note: 'uint8_t FAT_MONTH(uint16_t)' previously defined here
651 | static inline uint8_t FAT_MONTH(uint16_t fatDate) {
| ^~~~~~~~~
In file included from C:\Users\Morra\Desktop\ANDORA_3_dicembre\ESP8266_u8g2_BME280_DS3231_SD_CARD\ESP8266_u8g2_BME280_DS3231_SD_CARD.ino:31:
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD\src/SD.h:213:23: error: redefinition of 'uint8_t FAT_DAY(uint16_t)'
213 | static inline uint8_t FAT_DAY(uint16_t fatDate) {
| ^~~~~~~
In file included from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatFile.h:32,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/ArduinoFiles.h:28,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatLib.h:22,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/SdFat.h:27,
from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:35,
from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD\src/SD.h:25,
from C:\Users\Morra\Desktop\ANDORA_3_dicembre\ESP8266_u8g2_BME280_DS3231_SD_CARD\ESP8266_u8g2_BME280_DS3231_SD_CARD.ino:31:
c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatStructs.h:659:23: note: 'uint8_t FAT_DAY(uint16_t)' previously defined here
659 | static inline uint8_t FAT_DAY(uint16_t fatDate) {
| ^~~~~~~
In file included from C:\Users\Morra\Desktop\ANDORA_3_dicembre\ESP8266_u8g2_BME280_DS3231_SD_CARD\ESP8266_u8g2_BME280_DS3231_SD_CARD.ino:31:
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD\src/SD.h:216:23: error: redefinition of 'uint8_t FAT_HOUR(uint16_t)'
216 | static inline uint8_t FAT_HOUR(uint16_t fatTime) {
| ^~~~~~~~
In file included from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatFile.h:32,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/ArduinoFiles.h:28,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatLib.h:22,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/SdFat.h:27,
from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:35,
from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD\src/SD.h:25,
from C:\Users\Morra\Desktop\ANDORA_3_dicembre\ESP8266_u8g2_BME280_DS3231_SD_CARD\ESP8266_u8g2_BME280_DS3231_SD_CARD.ino:31:
c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatStructs.h:677:23: note: 'uint8_t FAT_HOUR(uint16_t)' previously defined here
677 | static inline uint8_t FAT_HOUR(uint16_t fatTime) {
| ^~~~~~~~
In file included from C:\Users\Morra\Desktop\ANDORA_3_dicembre\ESP8266_u8g2_BME280_DS3231_SD_CARD\ESP8266_u8g2_BME280_DS3231_SD_CARD.ino:31:
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD\src/SD.h:219:23: error: redefinition of 'uint8_t FAT_MINUTE(uint16_t)'
219 | static inline uint8_t FAT_MINUTE(uint16_t fatTime) {
| ^~~~~~~~~~
In file included from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatFile.h:32,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/ArduinoFiles.h:28,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatLib.h:22,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/SdFat.h:27,
from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:35,
from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD\src/SD.h:25,
from C:\Users\Morra\Desktop\ANDORA_3_dicembre\ESP8266_u8g2_BME280_DS3231_SD_CARD\ESP8266_u8g2_BME280_DS3231_SD_CARD.ino:31:
c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatStructs.h:685:23: note: 'uint8_t FAT_MINUTE(uint16_t)' previously defined here
685 | static inline uint8_t FAT_MINUTE(uint16_t fatTime) {
| ^~~~~~~~~~
In file included from C:\Users\Morra\Desktop\ANDORA_3_dicembre\ESP8266_u8g2_BME280_DS3231_SD_CARD\ESP8266_u8g2_BME280_DS3231_SD_CARD.ino:31:
C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD\src/SD.h:222:23: error: redefinition of 'uint8_t FAT_SECOND(uint16_t)'
222 | static inline uint8_t FAT_SECOND(uint16_t fatTime) {
| ^~~~~~~~~~
In file included from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatFile.h:32,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/ArduinoFiles.h:28,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatLib.h:22,
from c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/SdFat.h:27,
from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SDFS\src/SDFS.h:35,
from C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD\src/SD.h:25,
from C:\Users\Morra\Desktop\ANDORA_3_dicembre\ESP8266_u8g2_BME280_DS3231_SD_CARD\ESP8266_u8g2_BME280_DS3231_SD_CARD.ino:31:
c:\Users\Morra\Documents\Arduino\libraries\SdFat\src/FatLib/FatStructs.h:695:23: note: 'uint8_t FAT_SECOND(uint16_t)' previously defined here
695 | static inline uint8_t FAT_SECOND(uint16_t fatTime) {
| ^~~~~~~~~~
Multiple libraries were found for "SD.h"
Used: C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\SD
Not used: C:\Users\Morra\AppData\Local\Arduino15\libraries\SD
Not used: C:\Users\Morra\Documents\Arduino\libraries\SD
Not used: C:\Users\Morra\Documents\Arduino\libraries\SD-master
Multiple libraries were found for "SdFat.h"
Used: C:\Users\Morra\Documents\Arduino\libraries\SdFat
Not used: C:\Users\Morra\Documents\Arduino\libraries\SdFat-_Adafruit_Fork
Not used: C:\Users\Morra\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\ESP8266SdFat
exit status 1
Compilation error: exit status 1
HERE IS THE CODE
#include <SPI.h>
#include <Wire.h>
#include <Arduino.h>
#include <U8x8lib.h>
#include "RTClib.h"
RTC_DS3231 rtc;
#define SDA 4
#define SCL 5
#define OLED_SDA 14
#define OLED_SCL 12
U8X8_SSD1306_128X64_NONAME_SW_I2C u8x8( /* clock=*/ OLED_SCL, /* data=*/ OLED_SDA, /* reset=*/ U8X8_PIN_NONE); // All Boards without Reset of the Display
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme; // I2C
float temp;
float hum;
#define sensor_data(temp,hum);
#include <SdFat.h>
#define CS_PIN 11
SdFat SD;
// Create a file to store the data
File myFile;
void setup() {
Wire.begin(4,5);
Serial.begin(115200);
delay(1000);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
else {}
if (rtc.lostPower()) {
Serial.println("RTC lost power, lets set the time!");
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
DateTime now = rtc.now();
char timeStamp[9];
sprintf(timeStamp, "%02i:%02i:%02i", now.hour(), now.minute(), now.second());
bme.begin(0x76, &Wire);
u8x8.begin();
u8x8.setPowerSave(0);
temp = bme.readTemperature();
hum = bme.readHumidity();
// setup for the SD card
Serial.print("Initializing SD card...");
if(!SD.begin(CS_PIN)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
loggingTime();
loggingTemperature();
displayReadings();
SD_writing();
u8x8.setPowerSave(1);
ESP.deepSleep(180e6);
}
void loggingTime() {
DateTime now = rtc.now();
char dateString[11];
sprintf(dateString, "%04i-%02i-%02i ", now.year(), now.month(), (now.day()));
char timeString[9];
sprintf(timeString, "%02i:%02i:%02i", now.hour(), now.minute(), now.second());
}
void loggingTemperature() {
temp = bme.readTemperature();
hum = bme.readHumidity();
Serial.print("Temperature_BME280 = ");
Serial.print(bme.readTemperature());
Serial.println(" *C");
Serial.print("Humidity_BME280 = ");
Serial.print(bme.readHumidity());
Serial.println(" %");
DateTime now = rtc.now();
char timeStamp[9];
sprintf(timeStamp, "%02i:%02i:%02i", now.hour(), now.minute(), now.second());
Serial.println(timeStamp);
Serial.println("Saving Data on SD");
Serial.println("Going to sleep for 3 min");
}
void displayReadings() {
DateTime now = rtc.now();
char timeStamp[9];
sprintf(timeStamp, "%02i:%02i:%02i", now.hour(), now.minute(), now.second());
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.setCursor(0,0);
u8x8.print(timeStamp);
u8x8.setCursor(0,2);
u8x8.print("BME280 DATA");
u8x8.setCursor(0,4);
u8x8.print("Temp = ");
u8x8.print(bme.readTemperature());
u8x8.print(" C");
u8x8.setCursor(0,5);
u8x8.print("Hum = ");
u8x8.print(bme.readHumidity());
u8x8.print(" %");
u8x8.setCursor(0,7);
u8x8.print("sleep for 3 min");
delay(3000);
u8x8.refreshDisplay();
}
void SD_writing() {
DateTime now = rtc.now();
char dateString[11];
sprintf(dateString, "%04i-%02i-%02i ", now.year(), now.month(), (now.day()));
char timeString[9];
sprintf(timeString, "%02i:%02i:%02i", now.hour(), now.minute(), now.second());
myFile = SD.open("DATA.txt", FILE_WRITE);
if (myFile) {
myFile.print(timeString);
myFile.println(";");
myFile.close();
}
myFile = SD.open("DATA.txt", FILE_WRITE);
if (myFile) {
myFile.print(temp);
myFile.println(";");
myFile.close();
}
myFile = SD.open("DATA.txt", FILE_WRITE);
if (myFile) {
myFile.println(hum);
myFile.close();
}
}
void loop(void) {
}
Sorry for the long "question" but I'm completely blocked. Thanks for your help