Hi,
The below code is to get the temperature from AM2315C and store that in the SD Card(RTC for time). There are other things like call feature which I have not yet added.
Once the code reaches to check the SD Card, ESP32 goes into restart loop with the following error:
17:38:10.938 -> A10 : 0x00000005 A11 : 0x00001a3c A12 : 0x000000df A13 : 0x00060a23
17:38:10.938 -> A14 : 0x00060a20 A15 : 0x00000001 SAR : 0x00000010 EXCCAUSE: 0x0000001c
17:38:10.938 -> EXCVADDR: 0x0000000c LBEG : 0x40087d0d LEND : 0x40087d2f LCOUNT : 0xffffffff
17:38:10.972 ->
17:38:10.972 ->
17:38:10.972 -> Backtrace: 0x400d46c4:0x3ffc5590 0x400d4310:0x3ffc55b0 0x400d1cee:0x3ffc55e0 0x400d7e42:0x3ffc5620
If I remove the following code, it works fine without the SD card storage:
if (!SD.begin()) {
Serial.println("Card Mount Failed");
return;
#include "FS.h"
#include "SD.h"
#include "SPI.h"
#include "Wire.h"
#include "RTClib.h"
#include <Adafruit_AHTX0.h>
#include <WiFi.h>
#include "DHT.h"
int HH,MM,DD,c = 0;
RTC_DS3231 rtc;
Adafruit_AHTX0 aht;
String date1;
String time1;
String filename;
String path;
String PHONE = "9841111111";
sensors_event_t humidity, temp;
float t, h;
void getpath() {
path = "/" + filename;
Serial.print("Path: ");
Serial.println(path);
}
void getdate() {
DateTime now = rtc.now();
date1 = String (now.timestamp(DateTime::TIMESTAMP_DATE));
Serial.print("Date: ");
Serial.println(date1);
DD = now.day();
HH = now.hour();
MM = now.minute();
//time1 = String((rtc.getTimeStr());
}
void getFileName() {
File close();
filename = date1 + ".csv";
Serial.print("File name: ");
Serial.println(filename);
time1 += String(DD);
time1 += " -";
time1 += String(HH);
time1 += " -";
time1 += String(MM);
Serial.println(time1);
}
void writeFile(fs::FS &fs, const char * path, const char * message) {
Serial.printf("Writing file: %s\n", path);
File file = fs.open(path, FILE_WRITE);
if (!file) {
Serial.println("Failed to open file for writing");
return;
}
if (file.print(message)) {
Serial.println("File written");
} else {
Serial.println("Write failed");
}
file.close();
}
void appendFile(fs::FS &fs, const char * path , const char * message) {
Serial.printf("Appending to file: %s\n", path);
File file = fs.open(path, FILE_APPEND);
if (!file) {
Serial.println("Failed to open file for appending");
return;
}
if (file.print(message)) {
Serial.println("Message appended");
} else {
Serial.println("Append failed");
}
file.close();
}
void writeCallfile(String PH){
String dataString = "";
dataString += "Call to - ";
dataString += PH;
dataString += "at";
dataString += String(time1);
dataString += "\r\n";
Serial.println("dataString-");
Serial.println(dataString);
appendFile(SD, path.c_str(), dataString.c_str());
}
void writeTGfile(String PH){
String dataStringTG = "";
dataStringTG += "Sent TG Message to - ";
dataStringTG += PH;
dataStringTG += "at";
dataStringTG += String(time1);
dataStringTG += "\r\n";
Serial.println("dataStringTG-");
Serial.println(dataStringTG);
appendFile(SD, path.c_str(), dataStringTG.c_str());
}
void setup() {
Serial.begin(115200);
if (! aht.begin()) {
Serial.println("Could not find AHT? Check wiring");
while (1) delay(10);
}
delay(1000);
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
if (!SD.begin()) {
Serial.println("Card Mount Failed");
return;
}
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
delay(200);
}
getdate();
delay(500);
getFileName();
delay(500);
getpath();
delay(500);
writeFile(SD, path.c_str(), "Log Details \r\n");
Serial.println("Done");
delay(500);
}
void loop() {
aht.getEvent(&humidity, &temp);
t = temp.temperature;
h = humidity.relative_humidity;
Serial.print(" Temp = ");
Serial.println(t);
Serial.print(" Humidity = ");
Serial.println(h);
/*
if ((t>30)&& (t<32)){
writeCallfile(PHONE);
Serial.println("Writing to Card for call");}
if (t>32){
writeTGfile(PHONE);
Serial.println("Writing to Card for TG");
}
*/
delay(2000);
}