Delphin911
Member
Народ, с этой проблемой разобрался. Перезагрузка почему-то была только когда я не подключал сигнал CS от дисплея. Сейчас вроде все подобрал куда какие выходы подключить. Все работает и в обычном режиме в режиме глубокого сна. Но есть одно НО. На TX у меня сидит светодиод, который показывает состояние датчика движения (Serial никак не задействован в коде). Так вот в режиме глубокого сна я его и не назначаю, но этот светодиод почему-то при отработке кода или при засыпании, уж не знаю когда, зажигается в пол силы и горит всегда. Как от этого избавиться - не знаю. Вот код, который срабатывает при загрузке (это часть setup)? rjulf ecnhjqcndj hf,jnftn jn frrevekznjhf/
Вот еще схему финальную на всякий приложу:
Код:
else {//если нет напряжения 220В
//Serial.begin(74880);
//Инициируем SD-карту
//digitalWrite(POWER_PIN, HIGH);
SD.begin(CS_PIN_SDC);
hasSD = true;
//Работаем с внутренней памятью (пишем, что загрузка шла в режиме отсутствия питания
EEPROM.begin(EEPROM_SIZE);// инициализируем EEPROM-память заданного ранее размера
last_power_state = EEPROM.read(1);
if (last_power_state == true) {
EEPROM.write(1, false);
EEPROM.write(0, false);
EEPROM.commit();
}
//Стартуем библиотеку Wire.h
Wire_init();
//Считываем данные времени
timeS = GetTime();
addToLog(timeS);
{
//Запускаем датчик BME280
String st = "ID-000. 1. Initialzing sensor BME280...";
addToLog(st);
bme280_init();
//Запускаем датчик AHT10 на 38
st = "ID-000. 2. Initialazing sensor AHT10";
addToLog(st);
AHT10_init();
//Запускаем датчик HDC1080
st = "ID-000. 3. Initialazing sensor HDC1080";
addToLog(st);
HDC1080_init();
}
//----------------------------------------------------------------------------------
//Собираем данные с датчиков
Getpressure();
GettIn1();
Gethumidity1();
GettIn2();
Gethumidity2();
GettIn3();
Gethumidity3();
//Пишем данные в БД
yyyymmdd = String(cyear) + String(cmonthnum / 10) + String(cmonthnum % 10) + String(cdayofmonth / 10) + String(cdayofmonth % 10);
addToBD(yyyymmdd, temperatureString1, temperatureString2, temperatureString3, humidityString1, humidityString2, humidityString3, pressureString);
{String st = "ID-000. 5. Data added to DB";
addToLog(st);}
//----------------------------------------------------------------------------------
//Отрабатываем добавление в базу данных за каждые 3 часа
midcount = EEPROM.read(2);
if (chour % 3 == 0 && cmin >= 0 && cmin < 30 && midcount == false) {
int ss1;
{
String st = "ID-0001-1)Begin! " + OutTm;
addToLog(st);
}
//Из функции setPars() берем значение имени файла, куда будем писать данные, год, месяц, день и часы, данные за которые будем брать
const String instr = setPars();
const int z1 = instr.indexOf(",");
const int z2 = instr.indexOf(",", z1 + 1);
const int z3 = instr.lastIndexOf(",");
const String FN = instr.substring(0, z1);
const String a_hours1 = instr.substring(z1 + 1, z2);
const String a_hours2 = instr.substring(z2 + 1, z3);
const String a_hours3 = instr.substring(z3 + 1);
const String a_year = FN.substring(7, 9);
const int a_month = (FN.substring(9, 11)).toInt();
const int a_day = (FN.substring(11, 13)).toInt();
String fd = readFile(FN);
{
String str_begin1 = "{\"d\":[";
str_begin1 += String(a_day);
str_begin1 += ",";
str_begin1 += String(a_month);
str_begin1 += ",";
str_begin1 += a_year;
str_begin1 += ",";
String str_begin2 = str_begin1 + a_hours2;
String str_begin3 = str_begin1 + a_hours3;
str_begin1 += a_hours1;
ss1 = fd.indexOf(str_begin1);
if (ss1 < 0) {ss1 = fd.indexOf(str_begin2);}
if (ss1 < 0) {ss1 = fd.indexOf(str_begin3);}
}
float s_tIn1 = 0;
float s_tIn2 = 0;
float s_tIn3 = 0;
float s_humidity1 = 0;
float s_humidity2 = 0;
float s_humidity3 = 0;
float s_pressure = 0;
{
String st = "ID-0001-2)Input pars - " + instr;
addToLog(st);
}
if (fd.indexOf("FALSE") != 0 && fd != "") {
{
String st = "ID-0001-3)File was read";
addToLog(st);
}
String FD = "[";
const int z3 = fd.lastIndexOf(",");
const String FD1 = fd.substring(ss1, z3);
FD += FD1;
FD += "]";
char dataJson[FD.length() + 1];
strcpy(dataJson, FD.c_str());
DynamicJsonBuffer jsonBuffer;
JsonArray& root = jsonBuffer.parseArray(dataJson);
const int all_data = root.size();
if (all_data != 0) {
String st = "ID-0001-4)Number of records - " + all_data;
addToLog(st);
for (int l = 0; l < all_data; l++) {
JsonVariant v = root[l].as<const JsonObject&>();
if (v.success()) {
s_tIn1 += v["d"][5].as<float>();
s_tIn2 += v["d"][6].as<float>();
s_tIn3 += v["d"][7].as<float>();
s_humidity1 += v["d"][8].as<float>();
s_humidity2 += v["d"][9].as<float>();
s_humidity3 += v["d"][10].as<float>();
s_pressure += v["d"][11].as<float>();
}
}
char av_temperatureString1[5], av_temperatureString2[5], av_temperatureString3[5], av_humidityString1[5], av_humidityString2[5], av_humidityString3[5], av_pressureString[6];
const float sa_tIn1 = s_tIn1 / all_data;
dtostrf(sa_tIn1, 4, 1, av_temperatureString1);
const float sa_tIn2 = s_tIn2 / all_data;
dtostrf(sa_tIn2, 4, 1, av_temperatureString2);
const float sa_tIn3 = s_tIn3 / all_data;
dtostrf(sa_tIn3, 4, 1, av_temperatureString3);
const float sa_humidity1 = s_humidity1 / all_data;
dtostrf(sa_humidity1, 4, 1, av_humidityString1);
const float sa_humidity2 = s_humidity2 / all_data;
dtostrf(sa_humidity2, 4, 1, av_humidityString2);
const float sa_humidity3 = s_humidity3 / all_data;
dtostrf(sa_humidity3, 4, 1, av_humidityString3);
const float sa_pressure = s_pressure / all_data;
dtostrf(sa_pressure, 5, 1, av_pressureString);
yyyymm = String(cyear) + String(cmonthnum / 10) + String(cmonthnum % 10);
if (addToBD(yyyymm, av_temperatureString1, av_temperatureString2, av_temperatureString3, av_humidityString1, av_humidityString2, av_humidityString3, av_pressureString)) {
String st = "ID-000. 5. Data 3 hours added to DB";
addToLog(st);
EEPROM.write(2, true);
EEPROM.commit();
st = "ID-000. 6.)Flag for adding data every 3 hour disabled";
addToLog(st);
}
else {
String st = "ID-000. 5.)The attampt to add to BD was unseccess - " + OutTm;
addToLog(st);
}
} else {
String st = "ID-000. 5.)Number of records = 0, stop adding.";
addToLog(st);
}
}
}
if (chour % 3 != 0 && cmin >= 0 && cmin < 30 && midcount == true) {
EEPROM.write(2, false);
EEPROM.commit();
String st = "ID-000. 7.)Flag for adding data every 3 hour enabled" + OutTm;
addToLog(st);
}
//----------------------------------------------------------------------------------
{
String st = "ID-000|----REBOOT----|"+OutTm;
addToLog(st);
}
ESP.deepSleep(18e8); //30 минут
//ESP.deepSleep(600e6); //10 минут
}
Вложения
-
353.9 KB Просмотры: 5